ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:82.63KB ,
资源ID:26292334      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26292334.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(病人就医管理系统.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

病人就医管理系统.docx

1、病人就医管理系统一、设计题目 编写一个程序定义行医类,反映病人到医院看病,排队看医生的情况,在病人排队过程中,主要发生两件事:(1) 病人到达诊室,将病历本交给护士,排到等待队列中候诊。(2) 护士从等待队列中取出一位病人的病历,该病人进入诊室就诊。要求程序采用菜单方式,其选项及功能说明如下:(1) 排队-输入病人的病历号,加入到病人排队队列中(2) 就诊-病人排队队列中最前面的病人就诊,并将其从队列中删除。(3) 查看排队-从队首到队尾列出所有的排队病人的病历号。(4) 下班-退出运行。二、需求分析1)运行环境(软、硬件环境)软件:Microsoft Visual Studio/Micros

2、oft Visual C+6.0; 硬件:计算机硬件系统(包括键盘等)2)输入的形式和输入值的范围输入形式:通过键盘键入测试数据输入值范围:字符型(char) 医生,护士 字符数组 病人病历号3)输出的形式描述 输入通过显示计算机屏显示,医生选择相应功能之后,显示屏会显示出各种对应信息。4)功能描述 病人到诊室,交给护士自己的病历表之后,护士登记病人的病历号,同时纳入队列中进行排队等待。当等到该病历号的病人进入诊室进行就诊时,系统删除前一位病人的病历号,同时下一位病人进入等待就诊阶段。如此反复,当时间到达下班时间之后,系统停止运行,医生操作退出系统!此过程中,医生可以随时调动系统数据,查看需要

3、就诊的病人病历号及病人人数,此过程使用队列的遍历函数予以实现。5)测试数据分别选择验证相应功能的数据进行实验数据测试。测试排队功能数据:(选择1)病历号:100,101,102,103测试输入错误时,系统显示:(选择12)测试就诊功能数据:(选择2)测试查看队列功能数据:(选择3)测试下班功能数据:(选择4)三、概要设计1)抽象数据类型定义描述(对各类的成员及成员函数进行抽象描述,参见书或ppt 及实验) template class Nodepublic: T data; /数据域 Node *next; /指针域;template class LinkQueuepublic: LinkQu

4、eue(); /构造函数,初始化一个空的链队列 LinkQueue(); /析构函数,释放链队中各结点的存储空间 void InQueue(T x); /将元素x入队 T OutQueue(); /将队头元素出队 T GetQueue(); /取链队列的队头元素 int Empty() if(front=NULL) return 1; return 0; /判断链队列是否为空void Traverse(); /遍历函数private: Node *front, *rear; /队头和队尾指针;2)功能模块设计(如主程序模块设计)头文件类: 第一,结点类; 第二,链队列类;第三,行医类:主函数3

5、)模块层次调用关系图四、详细设计实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算法。结点类:template class Nodepublic: T data; /数据域 Node *next; /指针域;链队列类:template class LinkQueuepublic: LinkQueue(); /构造函数,初始化一个空的链队列 LinkQueue(); /析构函数,释放链队中各结点的存储空间 void InQueue(T x); /将元素x入队 T OutQueue(); /将队头元素出队 T GetQueue(); /取链队列的队头元素 int Empty

6、() if(front=NULL) return 1; return 0; ; /判断链队列是否为空 void Traverse(); /遍历函数private: Node *front, *rear; /队头和队尾指针;template LinkQueue:LinkQueue() front=rear=NULL;template void LinkQueue:InQueue(T x) Node *s; s=new Node; s-data=x; /申请一个数据域为x的结点s s-next=NULL; if(front=NULL)/空队列,新结点既是队头,又是队尾 front=rear=s;

7、else rear-next=s; /将结点s插入到队尾 rear=s; template T LinkQueue:OutQueue() Node *p; T x; if (front=NULL) cout队空data; /暂存队头元素 front=front-next; /将队头元素所在结点摘链 if (front=NULL) rear=front; delete p; return x;template void LinkQueue:Traverse() Node *p; p=front; cout正在排队的病人显示:endl; while(p!=NULL) coutdatanext; c

8、outendl;行医类:class Hospitalizeprivate: LinkQueue queue; / 病人队列public: Hospitalize(); / 无参数的构造函数 Hospitalize(); / 析构函数 void StandInALine(); / 排队 void Cure(); / 就诊 void Display(); / 查看排队;void Hospitalize:StandInALine() int num; / 病历号 coutnum; / 输入排队病人 queue.InQueue(num); / 将病历号加入到病人排队队列中void Hospitaliz

9、e:Cure() if(queue.Empty() cout现已没有病人在排队了!endl; else int a; a=queue.OutQueue(); / 病人排队队列中最前面的病人就诊,并将其从队列中删除 couta号病人现在就医!endl; void Hospitalize:Display() queue.Traverse(); / 从队首到队尾列出所有的排队病人的病历号 coutendl;五、调试分析包括调试过程中遇到的问题及解决的方法、算法的时间空间复杂性分析、经验体会。本实验中遇到问题:Q1:结点类中的成员设为私有导致后面的链队列类不可使用结点类的相关寒暑;A1:将结点类中的成

10、员变量或成员函数全部设为公有;或者是将结点类设置为链队列的友元类。本实验的时间复杂度为0(n),空间复杂度为0(1);本实验经验体会:一个良好的开端对于程序的成功运行具有至关重要的作用。第一节课上,老师说,“有的同学如果想直接在VC上编写程序,而未经过之前的算法等相关准备的话是很难写成功的!”的确,想想自己平时编写程序的时候,如果直接就在VC上编写的话,程序写得很慢,效率会很低!所以,这个实验中,我尝试着按照老师讲的,首先分析了程序的相关要求,联系自己平时所学知识,很快把程序主体架构写出来了,这大大方便了后续的相关工作。在第二节课上,按照要求把相关函数详细代码写出,所以程序第二节课就写好了。所

11、以,这个实验之后,我逐渐明白了在程序编写之前,做好适当的准备是至关重要的。本实验中,通过上网查找和和同学讨论等方式,这个实验增强了自学能力,有助于提高自己的实践能力,运用知识的能力。六、用户使用说明详细列出每一步的操作说明。 第一,病人进入诊室,护士收集病历号并输入至本系统。即选择菜单栏中的“1”,从而实现将病人纳入到队列中去。 第二,当轮到某病历号的病人就诊时,医生可以通过查看未就诊,依然在队列中的病人的病历号,然后选择“2”,实现对该病人的就诊。 第三,该病人就诊完毕,系统删除该病人的信息,即病人出队,下一位病人可以进入就诊阶段。同时,医生可以通过功能键“3”,选择查看病人队列。 第四,当

12、病人队列已无元素,医生下班了,就可以通过选择功能键“4”,从而实现对系统的关闭,系统停止运行。七、测试结果 菜单显示: 排队: 就诊: 查看队列: 下班退出系统:八、附录:程序设计源代码#include#include#includeusing namespace std;template class Nodepublic: T data; /数据域 Node *next; /指针域;template class LinkQueuepublic: LinkQueue(); /构造函数,初始化一个空的链队列 LinkQueue(); /析构函数,释放链队中各结点的存储空间 void InQueu

13、e(T x); /将元素x入队 T OutQueue(); /将队头元素出队 T GetQueue(); /取链队列的队头元素 int Empty() if(front=NULL) return 1; return 0; ; /判断链队列是否为空 void Traverse(); /遍历函数private: Node *front, *rear; /队列头指针,尾指针;template LinkQueue:LinkQueue() front=rear=NULL; /初始化为空template void LinkQueue:InQueue(T x) Node *s; s=new Node; s-

14、data=x; /申请一个数据域为x的结点s s-next=NULL; if(front=NULL)/空队列,新结点既是队头,又是队尾 front=rear=s; else rear-next=s; /将结点s插入到队尾 rear=s; template T LinkQueue:OutQueue() Node *p; T x; if (front=NULL) cout队空data; /暂存队头元素 front=front-next; /将队头元素所在结点摘链 if (front=NULL) rear=front; delete p; return x;template void LinkQue

15、ue:Traverse() Node *p; p=front; cout*正在排队的病人显示(按照病历号):endl; while(p!=NULL) coutdatanext; coutendl;/医生工作class Hospitalizeprivate: LinkQueue queue; / 病人队列public: Hospitalize(); / 无参数的构造函数 Hospitalize(); / 析构函数 void StandInALine(); / 排队 void Cure(); / 就诊 void Display(); / 查看排队;void Hospitalize:StandInA

16、Line() int num; / 病历号 coutnum; / 输入排队病人 queue.InQueue(num); / 将病历号加入到病人排队队列中void Hospitalize:Cure() if(queue.Empty() cout现已没有病人在排队了!endl; else int a; a=queue.OutQueue(); / 病人排队队列中最前面的病人就诊,并将其从队列中删除 couta号病人现在就医!endl; void Hospitalize:Display() queue.Traverse(); / 从队首到队尾列出所有的排队病人的病历号 coutendl;/主函数voi

17、d main() Hospitalize a; int n; while (n!= 4) cout*endl; cout*你好!欢迎进入病人就医管理系统!endl; cout 1. 排队-输入病人的病历号,加入到病人队列中! endl; cout 2. 就诊-病人排队队列中最前面的病人就诊,并将其从队列中删除! endl; cout 3. 查看排队-从队首到队尾列出所有的排队病人的病历号! endl; cout 4. 下班-退出运行! endl; cout*endl; cout n; if(n4) cout*输入错误!请重新选择-endl; coutendl; / 选择功能 switch(n) case 1: a.StandInALine(); / 排队-输入病人的病历号,加入到病人队列中 break; case 2: a.Cure(); / 就诊-病人排队队列中最前面的病人就诊,并将其从队列中删除 break; case 3: a.Display(); / 查看排队-从队首到队尾列出所有的排队病人的病历号 break; system(pause);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1