根据医院分诊系统的排队策略.doc

上传人:一*** 文档编号:4529989 上传时间:2021-09-27 格式:DOC 页数:13 大小:353.50KB
返回 下载 相关 举报
根据医院分诊系统的排队策略.doc_第1页
第1页 / 共13页
根据医院分诊系统的排队策略.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《根据医院分诊系统的排队策略.doc》由会员分享,可在线阅读,更多相关《根据医院分诊系统的排队策略.doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、. . 数据结构课程设计报告 题目:基于医院分诊系统的排队策略 学生姓名: 钟 * * 学 号: 1021111311 班 级: 10211113 指导教师: 张军 2012年 6 月 01 日一、课程设计目的本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能二、需求分析概述1、 近年来,随着医疗事业的发展,医院的规模不断扩大,科室门类划分的也越来越细,随之而来的是病人排队挂号和看病变的繁琐,等待时间变长,为此,需要制定一种良好的排队策略,减少病人的等待时间,提高医院

2、的服务质量。2、为了真实实现分诊的功能,在程序里面加入了功能列表菜单和一些选择提示。3、该程序主要运用到链表和一下常用的算法、排序。这个程序主要体现在链表的表头和表尾进行操作。4、规定一个固定容量的候诊区,候诊区里的排队操作操作采用存储链表的头指针和尾指针。可以那规定的规则进行模拟排队。5、以下为主要的功能列表:(1)、病人选择挂号功能 病人选择该功能时,系统会随机为你选择挂号的号牌,并且会记录你的挂号的就诊级别。 (2)、病人选择医生就诊号 当病人挂号完毕后,可以进入下一个功能,去选择你所需的医生就诊号,并且记录下医生就诊号(区分专家号和普通号)。 (3)、病人诊断所需时间提示 病人挂号和选

3、择就诊号完毕后,进入候诊区进行等待,此时为保证对病人的透明度,可提前通知病人还需要等待的时间,时间为更加切合实际,采用每个病人单独随机产生。(4)、病人病情所需诊断次数 根据在之前选择的就诊级别,医生会给此类病人就诊两次,以保证病人在现实用的健康保证。(5)、病人最终诊断详情查询 可以查询到病人挂号的号码和所选择的医生就诊号等一系列的病情流程查询,使得该程序更具有人性化。 三、总体设计整体框架:根据程序列出的功能菜单,在每个功能下对每一个操作进行实现,一环扣一环,使得该程序的整体更具有合理化。 1)问题的具体分析: 1、医院门诊分为普通号和专家号,普通号一个可是有数为医生,专家号一个可是仅有一

4、个医生,并且将普通好和专家号相互独立,以方便模拟。2、我们将病人分为A类和B类,对于A类病人,我们仅进行一次诊断,即用户挂号后进入队列,在进行一次诊断后即完成诊治。B类病人需要进行两次诊断和一次检查,在完成一次诊断后,医生开出检查意见,病人进行检查,完成后病人需返回科室进行第二次诊断,在第二次完成后即完成诊治。3、 我们将病人的产生使用一般的随机数生成,同理,病人的诊治时间也使用确定的时间,各类病人的数量都对应了实际的各科室接诊病人的限制。4、 对于由于到达时间过晚,部分病人将无法完成诊断,我们将忽略这部分病人。2)解决问题策略的制定:诊队列模式: 每个诊室队列只对应一个诊区候诊队列,我们将之

5、记作Q,一般排队规则是:刚完成挂号的病人,添加在Q的末尾;按医嘱完成体检的病人,直接插入在Q的首部。功能实现主体: 尽可能根据真实的医院分诊的各个功能下手,实现每一个功能下的环节,然后使得具体的操作更加的合理化。图片大体功能菜单框架: 四、详细设计 病人的就诊操作主要做到挂号号码和医生就诊号码选择不会出现重复占用,很里安排就诊时间以及租到尽可能快的操作。提高效率完成功能。 医生主要设立排队规则,例如,一个候诊区具有规定的候诊数量,不能太大,也不能太小医生对每个病人的诊断时间采用随机产生(程序对数据的需要,现实中看具体的诊断需要) 医院主要是做病人和医生之间的就诊连接那一块,使得通过就诊号和挂号

6、之间做到合理的对口,当然,主要是病人去选择自己所需的医生,对症就诊。Houpitais类: 定义头指针和尾指针分别用于存储队头和队尾的地址。 定义就诊次数成员函数,对病人所需就诊次数进行安排 定义就诊等待时间函数,合理安排病人等待时间。 通过该类可以对排队所需进行操作。Patients类: 定义就诊级别类对病人的病情就行分为A、B级别,使得病人合理选择专家号或者普通号。 定义产生随机挂号号码函数,随机产生固定范围的挂号信息。 定义所需的数据变量进行存储数据。 该类主要针对病人挂号信息。Doctor类: 定义产生随机的专家就诊号函数,产生合理的就诊专家号。 定义产生随机的普通就诊号函数,产生合理

7、的就诊普通号。 该类主要针对医生就诊号信息。 通过上述对类的定义就可以实现分诊操作的功能,通过算法对分诊思想的具体实现,做到合理,便捷。五、实现部分 Hopitials类的实现代码:#include#include#include#includehospitals.h#includepatients.h#includedoctor.husing namespace std;void hospitals_1:hospitals_1print()cout=endl;cout= 欢迎来到医院智能分诊系统 =endl;cout=-=endl;cout=以下为分诊具体功能实现: =endl;cout=

8、1.病人选择挂号 =endl;cout= 2.病人选择医生就诊号(A.专家号 B.普通号) =endl;cout= 3.病人候诊所需时间安排 =endl;cout= 4.病人病情所需诊断次数 =endl;cout= 5.病人最终诊断病例信息查询 =endl;cout=-=endl;cout= 祝您: 生活愉快!身体健康! =endl;cout=endl;void hospitals_1:times(hospitals_1 &p)cout就诊次数: ; for(int i=0;i10;i+) if(p.styi=A) p.times_1i=1; else if(p.styi=B) p.times

9、_1i=2; coutp.times_1i ;coutendl;void hospitals_1:waittime(hospitals_1 &p) int ti; srand(time(0); ti=rand()%10+10; cout候诊时间: ; for(int i=0;i10;i+) p.time_1i=ti*(i+1); coutp.time_1i ; coutendl;void hospitals_1:check(hospitals_1 &p)int j=0,temp;coutj;for(int i=0;i10;i+)if(j=rani) temp=p.zi; cout=病人分诊信息

10、表=endl; cout-病人挂号-病人就诊号-病人就诊级别-病人就诊模式-病人诊断次数-病人等待时间-endl; if(styi=A) cout- p.rani - temp - 专家号 - p.styi - p.times_1i - p.time_1i分钟 -endl; else if(styi=B) cout- p.rani - temp - 普通号 - p.styi - p.times_1i - p.time_1i分钟 -endl; cout-endl;void hospitals_1:headinqueue_1(hospitals_1 &q,int n)hospitals_1 *s,

11、*r;int c;s=NULL;for(c=0;cdata=q.ranc;r-next=s;if(c=0)q.reer_Q=r; s=r;q.head_Q=s;void hospitals_1:enqueue_1(hospitals_1 &q,int x1) hospitals_1 *t;t=new hospitals_1;t-data=x1;t-next=q.head_Q;q.head_Q=t;coutdatadata=x2;q.reer_Q-next=w;w=q.reer_Q;coutdatadata;bool hospitals_1:empty_1(hospitals_1 q)if(q.

12、head_Q-next=NULL)return true;elsereturn false;int hospitals_1:hospitals_1function(hospitals_1 &p,int b)int m;int n=b;coutm;switch(m)case 1:+n;if(n=1)p.random();p.style();elsen-;break;case 2:+n;if(n=2)p.random_p();p.random_z();elsen-;break;case 3:+n;if(n=3)p.waittime(p);elsen-;break;case 4:+n;if(n=4)

13、 p.times(p);elsen-;break;case 5:+n;if(n=5)p.check(p);elsen-;break;return n;Doctor类的实现代码:#include#include#include#includedoctor.husing namespace std;void doctor:random_z()srand(time(0);cout专家门诊号: ; for(int k=0;k10;k+)zk=rand()%100+50;coutzk ;coutendl;void doctor:random_p()srand(time(0);cout医师门诊号: ;fo

14、r(int h=0;h10;h+)ph=rand()%50; coutph ;coutendl;Patients类的实现代码:#include#include#include#includedoctor.husing namespace std;void doctor:random_z()srand(time(0);cout专家门诊号: ; for(int k=0;k10;k+)zk=rand()%100+50;coutzk ;coutendl;void doctor:random_p()srand(time(0);cout医师门诊号: ;for(int h=0;h10;h+)ph=rand(

15、)%50; coutph ;coutendl;Mian主体部分代码:#include#includehospitals.h#includepatients.h#includedoctor.husing namespace std;int main()int num,d=1,b=0;char exp,axp;hospitals_1 x1;x1.hospitals_1print();lamp:b=0; do d=x1.hospitals_1function(x1,b); b+; if(d!=b) system(cls); x1.hospitals_1print(); cout候诊区已满!请重新正确

16、选择分诊系统功能!endl; b=0; coutexp;while(exp=N|exp=n);system(cls);x1.hospitals_1print();coutaxp;if(axp=Y|axp=y) goto lamp;elseexit(0);coutendl;x1.headinqueue_1(x1,10);/50是候诊区的容量x1.enqueue_1(x1,200);/200是病人的挂号插入队头x1.hequeue_1(x1,300);/300是病人的挂号插入队尾 num=x1.gethead_1(x1);cout就诊队头:numendl;cout祝您身体健康!endl;return 0;六、程序测试主界面:功能列表菜单功能(1)病人选择挂号:功能(2)病人选择医生就诊号:功能(3)病人候诊所需时间安排:功能(4)病人病情所需诊断次数:功能(5)病人最终诊断病例信息查询:1.2.七、总结 通过自己单独对该程序进行分析实现,发现不论做任何程序都是需要很大的个人能力,因为如果你想吧程序做的完美就必须要比别人突出,所以就会有很多难题需要你自己进行学习,通过不断的学习更加完善自己。提高自己的个人综合能力。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁