问答题


【说明】
某医院收费系统的主要功能是收取病人门诊的各项费用。系统的收费功能分为3个方面:病历收费、挂号收费和根据处方单内容收取检查或药物费用。
1.病人初次来该医院看病,首先购买病历,记录病人基本情况。
2.病人看病前要挂号。根据病人的病历和门诊部门(内科、外科等),系统提供相应的挂号单和处方单,并收取费用。
3.病人根据处方单进行进一步检查或取药前需交纳各项费用。系统首先根据病人基本情况检查处方单中病历号是否正确,记录合格的处方单,并提供收据。
4.所有收费都必须依据定价表中的定价来计算,且所有收费都必须写入收费记录中。
医院收费系统的顶层图如图3—2所示;医院收费系统的第0层D四图如图3—3所示。其中,加工1的细化图如图3—4所示,加工2的细化图如图3-5所示。
假定顶层图是正确的,“定价表”文件已由其他系统生成。
【数据流图】




【问题1】
指出哪张图的哪些文件可以不必画出。

【参考答案】

医院收费系统的0层图中“处方记录”[分析]在0层图中有0层图中“处方记录”是加工3“处方收费”的局部数据文件,所以不必画......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
阅读下列函数说明,将应填入 (n) 处的字句写在答卷纸的对应栏内。 【函数1说明】 函数compare(SqList A,SqList B)的功能是:设A=(al,…,am)和B=(b1,…,bn)均为顺序表,“比较”两个顺序表A和B的大小。设A’和B’分别为A和B中除去最大共同前缀后的子表(例如,A=(y,X,X,Z,X,Z),B=(y,x,x,z,y,x,x,2),则两者中最大的共同前缀为(y,x,x,2),在两表中除去最大共同前缀后的子表分别为A’=(X,Z)和B’=(y,x,x,2))。若A’=B’=空表,则 A=B:若A’=空表,而B’≠空表,或者两者均不为空表,且A’的首元小于B,的首元,则A<B;否则A>B。 提示:算法的基本思想为:若相等,则j+1,之后继续比较后继元素:否则即可得山比较结果。显然,j的初值应为0,循环的条件是j不超出其中任何一个表的范围。若在循环内不能得出比较结果,则循环结束时有3种可能出现的情况需要区分。 【函数1】 int compare(SqList A,SqList B) { 若A<B,则返回-1;若A=B,则返回o:若A>B,则返回1 j=0; while(j< (1) &&j<B.1ength) if( A.elem[j] < B.elem[j] ) return(-1); else if( A.elem[j] > B.elem[j] ) return(i); else (2) ff (A.length == B.length) return (0); else fi(A.length < B.length ) return(-1); else return(1); } compare 函数1的时间复杂度是 (3) 【函数2说明】 函数 exchange_L( SLink &L, int m )的功能是:用尽可能少的辅助空间将单链表中前 m个结点和后 n 个结点的互换。即将单链表(a1,a2,...,am,b1,b2,...,bn) 改变成 (b1,b2,...,bn,a1,a2,…,am)。 【函数2】 void exchange_L( SLink &L, int m ) { if( (4) && L->next) 链表不空且 m!=0 { p = L->next; k = 1; while( k< m && p ) 查找am所在结点 { p = (5) ; ++k; } if( (6) &&p->next) n!=0 时才需要修改指针 { ha = L->next; 以指针ha记a1 结点的位置 L->next = p->next; 将b1结点链接在头结点之后 p->next = NULL; 设am的后继为空 q: (7) ; 令q 指向b1结点 while(q->next)q= (8) ; 查的bn结点 q->next = (9) ; 将a1 结点链接到bn 结点之后 } } } 函数2的时间复杂度是 (10) 。