欢迎来到天天文库
浏览记录
ID:55175062
大小:108.50 KB
页数:11页
时间:2020-04-30
《病人就医管理系统.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一、设计题目编写一个程序定义行医类,反映病人到医院看病,排队看医生的情况,在病人排队过程中,主要发生两件事:(1)病人到达诊室,将病历本交给护士,排到等待队列中候诊。(2)护士从等待队列中取出一位病人的病历,该病人进入诊室就诊。要求程序采用菜单方式,其选项及功能说明如下:(1)排队------输入病人的病历号,加入到病人排队队列中(2)就诊-------病人排队队列中最前面的病人就诊,并将其从队列中删除。(3)查看排队------从队首到队尾列出所有的排队病人的病历号。(4)下班---------退出运行。二、需求分析1)运行环境(软、硬件环境)软件:MicrosoftVisual
2、Studio//MicrosoftVisualC++6.0;硬件:计算机硬件系统(包括键盘等)2)输入的形式和输入值的范围输入形式:通过键盘键入测试数据输入值范围:①字符型(char)医生,护士②字符数组病人病历号3)输出的形式描述输入通过显示计算机屏显示,医生选择相应功能之后,显示屏会显示出各种对应信息。4)功能描述病人到诊室,交给护士自己的病历表之后,护士登记病人的病历号,同时纳入队列中进行排队等待。当等到该病历号的病人进入诊室进行就诊时,系统删除前一位病人的病历号,同时下一位病人进入等待就诊阶段。如此反复,当时间到达下班时间之后,系统停止运行,医生操作退出系统!此过程中,医生
3、可以随时调动系统数据,查看需要就诊的病人病历号及病人人数,此过程使用队列的遍历函数予以实现。5)测试数据分别选择验证相应功能的数据进行实验数据测试。测试排队功能数据:(选择1)病历号:100,101,102,103测试输入错误时,系统显示:(选择12)测试就诊功能数据:(选择2)测试查看队列功能数据:(选择3)测试下班功能数据:(选择4)三、概要设计1)抽象数据类型定义描述(对各类的成员及成员函数进行抽象描述,参见书或ppt及实验)①templateclassNode{public:Tdata;//数据域Node*next;//指针域};②template4、lassT>classLinkQueue{public:LinkQueue();//构造函数,初始化一个空的链队列~LinkQueue(){};//析构函数,释放链队中各结点的存储空间voidInQueue(Tx);//将元素x入队TOutQueue();//将队头元素出队TGetQueue();//取链队列的队头元素intEmpty(){if(front==NULL)return1;return0;};//判断链队列是否为空voidTraverse();//遍历函数private:Node*front,*rear;//队头和队尾指针};2)功能模块设计(如主程序模块设计)①5、头文件②类:第一,结点类;第二,链队列类;第三,行医类:③主函数3)模块层次调用关系图四、详细设计实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算法。结点类:templateclassNode{public:Tdata;//数据域Node*next;//指针域};链队列类:templateclassLinkQueue{public:LinkQueue();//构造函数,初始化一个空的链队列~LinkQueue(){};//析构函数,释放链队中各结点的存储空间voidInQueue(Tx);//将元素x入队TOutQue6、ue();//将队头元素出队TGetQueue();//取链队列的队头元素intEmpty(){if(front==NULL)return1;return0;};//判断链队列是否为空voidTraverse();//遍历函数private:Node*front,*rear;//队头和队尾指针};templateLinkQueue::LinkQueue(){front=rear=NULL;}templatevoidLinkQueue::InQueue(Tx){Node*s;s=newNode;s->data=x;//申请7、一个数据域为x的结点ss->next=NULL;if(front==NULL)//空队列,新结点既是队头,又是队尾{front=rear=s;}else{rear->next=s;//将结点s插入到队尾rear=s;}}templateTLinkQueue::OutQueue(){Node*p;Tx;if(front==NULL){cout<<"队空"<data;//暂存队头元素fro
4、lassT>classLinkQueue{public:LinkQueue();//构造函数,初始化一个空的链队列~LinkQueue(){};//析构函数,释放链队中各结点的存储空间voidInQueue(Tx);//将元素x入队TOutQueue();//将队头元素出队TGetQueue();//取链队列的队头元素intEmpty(){if(front==NULL)return1;return0;};//判断链队列是否为空voidTraverse();//遍历函数private:Node*front,*rear;//队头和队尾指针};2)功能模块设计(如主程序模块设计)①
5、头文件②类:第一,结点类;第二,链队列类;第三,行医类:③主函数3)模块层次调用关系图四、详细设计实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算法。结点类:templateclassNode{public:Tdata;//数据域Node*next;//指针域};链队列类:templateclassLinkQueue{public:LinkQueue();//构造函数,初始化一个空的链队列~LinkQueue(){};//析构函数,释放链队中各结点的存储空间voidInQueue(Tx);//将元素x入队TOutQue
6、ue();//将队头元素出队TGetQueue();//取链队列的队头元素intEmpty(){if(front==NULL)return1;return0;};//判断链队列是否为空voidTraverse();//遍历函数private:Node*front,*rear;//队头和队尾指针};templateLinkQueue::LinkQueue(){front=rear=NULL;}templatevoidLinkQueue::InQueue(Tx){Node*s;s=newNode;s->data=x;//申请
7、一个数据域为x的结点ss->next=NULL;if(front==NULL)//空队列,新结点既是队头,又是队尾{front=rear=s;}else{rear->next=s;//将结点s插入到队尾rear=s;}}templateTLinkQueue::OutQueue(){Node*p;Tx;if(front==NULL){cout<<"队空"<data;//暂存队头元素fro
此文档下载收益归作者所有