●试题一
阅读下列说明和数据流图,回答问题1~问题3。
【说明】
某医院收费系统的主要功能是收取病人门诊的各项费用。系统的收费功能分为3个方面:病历收费、挂号收费和根据处方单内容收取检查或药物费用。
1.病人初次来该医院看病,首先购买病历,记录病人基本情况。
2.病人看病前要挂号。根据病人的病历和门诊部门(内科、外科等),系统提供相应的挂号单和处方单,并收取费用。
3.病人根据处方单进行进一步检查或取药前需交纳各项费用。系统首先根据病人基本情况检查处方单中病历号是否正确,记录合格的处方单,并提供收据。
4.所有收费都必须依据定价表中的定价来计算,且所有收费都必须写入收费记录中。
医院收费系统的顶层图如图2所示;医院收费系统的第O层DFD图如图3所示。其中,加工1的细化图如图4所示,加工2的细化图如图5所示。
假定顶层图是正确的,"定价表"文件已由其他系统生成。
【数据流图】
图2医院收费系统的顶层图
图3医院收费系统的0层图
图4医院收费系统的加工1子图
图5医院收费系统的加工2子图
【问题1】
指出哪张图的哪些文件可以不必画出。
【问题2】
数据流图4中缺少2条数据流,请直接在图中添加。
【问题3】
数据流图5中缺少4条数据流,请直接在图中添加。
●试题六
阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。
【程序6说明】
本程序实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数有:
createList():创建按指数降序链接的多项式链表,以表示多项式。
reverseList():将多项式链表的表元链接顺序颠倒。
multiplyList(List L1,List L2):计算多项式L1和多项式L2的乘积多项式。
【程序6】
#include
class List;
class ltem{
friend class List;
private:
double quot;
int exp;
Item*next;
public:
Item(double_quot,int_exp)
{ (1) ;}
};
class List{
private:
Item*list;
public:
List(){list=NULL;}
void reverseList();
void multiplyList(List L1,List L2);
void createList();
};
void List::createList()
{Item*p,*u,*pre;
int exp;
double quot;
list=NULL;
while (1) {
cout<<"输入多项式中的一项(系数、指数):"< cin>>quot>>exp: if(exp<0)break;//指数小于零,结束输入 if(quot==0)continue; p=list; while( (2) ){//查找插入点 pre=p;p=p->next;} if(p!=NULL&&exp==p->exp){ p->quot+=quot;continue;} u= (3) ; if(p==list) list=u; else pre->next=u; u->next=p;} } void List::reverseList() {Item*p,*u; if(list==NULL)return; p=list->next;list->next=NULL; while(p!=NULL){ u=p->next;p->next=list; list=p;p=u;} } void List::multiplyList(List L1,List L2) {Item*pLl,*pL2,*u; int k,maxExp; double quot; maxExp= (4) ; L2.reverseList();list=NULL; for(k=maxExp;k>=0;k--){ pL1=L1.list; while(pL1!=NULL&&pL1->exp>k)pL1=pL1->next; pL2=L2.list; while(pL2!=NULL&& (5) pL2=pL2->next; quot=0.0; while(pL1!=NULL&&pL2!=NULL){ if(pL1->exp+pL2->exp==k){ (6) ; pL1=pL1->next;pL2=pL2->next; }else if(pL1->exp+pL2->exp>k)pL1=pL1->next; else pL2=pL2->next; } if(quot!=0.0){ u=new Item(quot,k); u->next=list;list=u;} } reverseList();L2.reverseList(): } void main() {ListL1,L2,L; cout<<"创建第一个多项式链表\n";L1.createList(); cout<<"创建第二个多项式链表\n";L2.createList(); L.multiplyList(L1,L2); }
●试题七
【说明】
下面是一个Applet程序,其功能是根据给出的小时,分钟和秒数计算相等的秒数,即将1分钟化为60秒,依此类推。要求建立一个时间类,时间参数均作为类的成员变量,并且给出换算时间的方法,也作为这个类的成员函数,可以供外部对象进行调用。同时还需要在输出窗口中显示换算结果,并且将结果写到out3_3.txt文件中,本题给出确定的时间为4小时23分47秒,要求换算成以秒做单位的时间。
程序运行结果如图11所示。
图11
import javA.io.*;
import javA.awt.*;
import javA.applet.*;
/*
*/
public class ex7_7 extends Applet{
public void paint(Graphics g){
int nSum;
class myTime7_7{
public int h;
public int m;
public int s;
public int out;
public int caculateSecond(){
(1) ;
return out;
}
}
myTime7_7 objTime7_7 = new myTime7_7();
objTime7_7.h = 4;
objTime7_7.m = 23;
objTime7_7.s = 47;
nSum = objTime7_7. (2) ;
g.drawString ("时:"+objTime7_7.h, 20, 30);
g.drawString ("分:"+objTime7_7.m, 20, 50);
g.drawString ("秒:"+objTime7_7.s, 20, 70);
g.drawString ( (3) );
try {
FileOutputStream fos7_7 = new FileOutputStream("out7_7.txt");
BufferedOutputStream bos7_7=new BufferedOutputStream(fos7_7,1024);
PrintStream ps7_7=new PrintStream(bos7_7,false);
System.setOut(ps7_7);
System.out.println( (4) );
ps7_7.close();
} catch(IOException ioe) {
(5) (ioe);
}
}
}
ex7_7.html
code="ex7_7.class" width=800 height=400 >