




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、东华理工大学软件学院软件工程系 数据结构课程设计报告题目:基于医院分诊系统的排队策略学生姓名:钟*学号:1021111311班级:10211113指导教师:*2012年6月01日、课程设计目的本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能二、需求分析概述1、近年来,随着医疗事业的发展,医院的规模不断扩大,科室门类划分的也越来越细,随之而来的是病人排队挂号和看病变的繁琐,等待时间变长,为此,需要制定一种良好的排队策略,减少病人的等待时间,提高医院的服务质量。2、为了
2、真实实现分诊的功能,在程序里面加入了功能列表菜单和一些选择提示。3、该程序主要运用到链表和一下常用的算法、排序。这个程序主要体现在链表的表头和表尾进行操作。4、规定一个固定容量的候诊区,候诊区里的排队操作操作采用存储链表的头指针和尾指针。可以那规定的规则进行模拟排队。5、以下为主要的功能列表:、病人选择挂号功能病人选择该功能时,系统会随机为你选择挂号的号牌,并且会记录你的挂号的就诊级别。、病人选择医生就诊号当病人挂号完毕后,可以进入下一个功能,去选择你所需的医生就诊号,并且记录下医生就诊号(区分专家号和普通号)。、病人诊断所需时间提示病人挂号和选择就诊号完毕后,进入候诊区进行等待,此时为保证对
3、病人的透明度,可提前通知病人还需要等待的时间,时间为更加切合实际,采用每个病人单独随机产生。、病人病情所需诊断次数根据在之前选择的就诊级别,医生会给此类病人就诊两次,以保证病人在现实用的健康保证。、病人最终诊断详情查询可以查询到病人挂号的号码和所选择的医生就诊号等一系列的病情流程查询,使得该程序更具有人性化。三、总体设计整体框架:根据程序列出的功能菜单,在每个功能下对每一个操作进行实现,一环扣一环,使得该程序的整体更具有合理化。1)问题的具体分析:1、医院门诊分为普通号和专家号,普通号一个可是有数为医生,专家号一个可是仅有一个医生,并且将普通好和专家号相互独立,以方便模拟。2、我们将病人分为A
4、类和B类,对于A类病人,我们仅进行一次诊断,即用户挂号后进入队列,在进行一次诊断后即完成诊治。B类病人需要进行两次诊断和一次检查,在完成一次诊断后,医生开出检查意见,病人进行检查,完成后病人需返回科室进行第二次诊断,在第二次完成后即完成诊治。3、我们将病人的产生使用一般的随机数生成,同理,病人的诊治时间也使用确定的时间,各类病人的数量都对应了实际的各科室接诊病人的限制。4、对于由于到达时间过晚,部分病人将无法完成诊断,我们将忽略这部分病人。2)解决问题策略的制定:诊队列模式:每个诊室队列只对应一个诊区候诊队列,我们将之记作Q,般排队规则是:刚完成挂号的病人,添加在Q的末尾;按医嘱完成体检的病人
5、,直接插入在Q的首部。功能实现主体:尽可能根据真实的医院分诊的各个功能下手,实现每一个功能下的环节,然后使得具体的操作更加的合理化。图片大体功能菜单框架:理星熏断盖医專诊功选选候瘡垠体人人人人人具病病病病病摻2_3_4_5_欢迎来到医院智能分诊系统艮普通号)就诊号(A.专家号筮断次藪義洌信息查询祝您*生活愉快!身体健康!7CZI四、详细设计病人的就诊操作主要做到挂号号码和医生就诊号码选择不会出现重复占用,很里安排就诊时间以及租到尽可能快的操作。提高效率完成功能。医生主要设立排队规则,例如,一个候诊区具有规定的候诊数量,不能太大,也不能太小医生对每个病人的诊断时间采用随机产生(程序对数据的需要,
6、现实中看具体的诊断需要)医院主要是做病人和医生之间的就诊连接那一块,使得通过就诊号和挂号之间做到合理的对口,当然,主要是病人去选择自己所需的医生,对症就诊。Houpitais类:定义头指针和尾指针分别用于存储队头和队尾的地址。定义就诊次数成员函数,对病人所需就诊次数进行安排定义就诊等待时间函数,合理安排病人等待时间。ttiFndeFttdeFinehu5l#includec!uctifr_httincludepatients_hclassJ!spitals_1:publicdoctor,publicpatipnl:一级分诊模式public:JiGspitals_1豪ho3(i_Q更幷IiGsp
7、itals_1*reer(I;字進扌昔軒intdata;inttimes_11:inttime1-|;hospitalg_1*next;voidtimGg(hogpitals_1;widwaittine(hospitals&p);widhospitalsprint);inthospitalslfunctivn(hospitals1&p,intb);入到表尾。voidheadinqueued(hospitals1&q,intn);头插法创建单链表voidenqueue1(hospitals1,intx1);/元Uaidhequeue1(hospitals1,intx2);/元intgethead
8、_1(hu5pital5_1q);/得到咲羔头元素t)u碍1empty1(hospitals1q);uoidcheckChi.!spitals_1&q);ttendif通过该类可以对排队所需进行操作。Patients类:定义就诊级别类对病人的病情就行分为A、B级别,使得病人合理选择专家号或者普通号。定义产生随机挂号号码函数,随机产生固定范围的挂号信息。定义所需的数据变量进行存储数据。Itifndef_pa_pa_pit:?.entpublic:ch-arst49;intr-an40;.nttine119voidrandoni();intstylet);fiendif该类主要针对病人挂号信息。D
9、octor类:定义产生随机的专家就诊号函数,产生合理的就诊专家号定义产生随机的普通就诊号函数,产生合理的就诊普通号。wn.nsjet_aoc_define_doc_cl-eissdoctorpublic:intzia;intp2a.;voidrandoEitz();uoidrandompC;4tendif该类主要针对医生就诊号信息。通过上述对类的定义就可以实现分诊操作的功能,通过算法对分诊思想的具体实现做到合理,便捷。五、实现部分Hopitials类的实现代码:#include#include#include#includehospitals.h#includepatients.h#inclu
10、dedoctor.husingnamespacestd;voidhospitals_1:hospitals_1print()cout=endl;cout=欢迎来到医院智能分诊系统=endl;cout=endl;cout=以下为分诊具体功能实现:=endl;cout=1.病人选择挂号=endl;cout=2病人选择医生就诊号(A.专家号B.普通号)=endl;cout=3.病人候诊所需时间安排=endl;cout=4.病人病情所需诊断次数=endl;cout=5.病人最终诊断病例信息查询=endl;cout=endl;cout=祝您:生活愉快!身体健康!=endl;cout=endl;voidh
11、ospitals_1:times(hospitals_1&p)coutvv就诊次数:”;for(inti=0;i10;i+)if(p.styi=A)p.times_1i=1;elseif(p.styi=B)p.times_1i=2;coutp.times_1i;coutendl;voidhospitals_1:waittime(hospitals_1&p)intti;srand(time(0);ti=rand()%10+10;coutvv候诊时间:”;for(inti=0;i10;i+)p.time_1i=ti*(i+1);coutp.time_1i;coutj;for(inti=0;iv10
12、;i+)if(j=rani)temp=p.zi;coutvv=病人分诊信息表=vvendl;coutvv-病人挂号-病人就诊号-病人就诊级别-病人就诊模式-病人诊断次数-病人等待时间-vvendl;if(styi=A)vvp.ranivv-vvtempvvcoutvv-vv-vvp.styivv-vvp.times_1ivv-分钟-vvendl;elseif(styi=B)coutvv-vvp.ranivv-vvtempvvvv-vvp.styivv-vvp.times_1ivv-分钟-vvendl;vv专家号vvp.time_1ivvvv普通号vvp.time_1ivvcoutvvvvend
13、l;voidhospitals_1:headinqueue_1(hospitals_1&q,intn)hospitals_1*s,*r;intc;s=NULL;for(c=0;cvn;c+)r=newhospitals_1;r-data=q.ranc;r-next=s;if(c=0)q.reer_Q=r;s=r;q.head_Q=s;voidhospitals_1:enqueue_1(hospitals_1&q,intx1)hospitals_1*t;t=newhospitals_1;t-data=x1;t-next=q.head_Q;q.head_Q=t;coutdatadata=x2;q.
14、reer_Q-next=w;w=q.reer_Q;coutdatadata;boolhospitals_1:empty_1(hospitals_1q)if(q.head_Q-next=NULL)returntrue;elsereturnfalse;inthospitals_1:hospitals_1function(hospitals_1&p,intb)intm;intn=b;coutvv请依次正确操作分诊系统(选择功能序号):;cinm;switch(m)case1:+n;if(n=1)p.random();p.style();elsen-;break;case2:+n;if(n=2)p.r
15、andom_p();p.random_z();elsen-;break;case3:+n;if(n=3)p.waittime(p);elsen-;break;case4:+n;if(n=4)p.times(p);elsen-;break;case5:+n;if(n=5)p.check(p);elsen-;break;returnn;Doctor类的实现代码:#include#include#include#includedoctor.husingnamespacestd;voiddoctor:random_z()srand(time(0);coutvv专家门诊号:”for(intk=0;k10
16、;k+)zk=rand()%100+50;coutzk;coutendl;voiddoctor:random_p()srand(time(0);coutvv医师门诊号:”;for(inth=0;h10;h+)ph=rand()%50;coutph;coutendl;Patients类的实现代码:#include#include#include#includedoctor.husingnamespacestd;voiddoctor:random_z()srand(time(0);coutvv专家门诊号:;for(intk=0;k10;k+)zk=rand()%100+50;coutvvzkvv;
17、coutvvendl;voiddoctor:random_p()srand(time(0);coutvv医师门诊号:;for(inth=0;hv10;h+)ph=rand()%50;coutvvphvv;东华理工大学软件学院软件工程系 东华理工大学软件学院软件工程系 coutendl;Mian主体部分代码:#include#includehospitals.h#includepatients.h#includedoctor.husingnamespacestd;intmain()intnum,d=1,b=0;charexp,axp;hospitals_1x1;x1.hospitals_1pri
18、nt();lamp:b=0;dod=x1.hospitals_1function(x1,b);b+;if(d!=b)system(cls);x1.hospitals_1print();coutvv候诊区已满!请重新正确选择分诊系统功能!vvendl;b=0;coutvv是否结束分诊系统?(Y/N);cinexp;while(exp=N|exp=n);system(cls);x1.hospitals_1print();coutvv是否重新选择分诊?(Y/N):;cinaxp;if(axp=Y|axp=y)gotolamp;elseexit(0);coutvvendl;xl.headinqueue_l(xl,10);/50是候诊区的容量xl.enqueue_l(xl,200);/200是病人的挂号插入队头x1.hequeue_1(x1,300);/300是病人的挂号插入队尾num=xl.gethead_l(xl);coutv就诊队头:vvnumvvendl;coutvv祝您身体健康!vvendl;return0;六、程序测试主界面:功能列表菜单=以下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 迷你琼脂糖水平电泳槽行业深度研究报告
- 热电厂项目实施计划
- 第三单元 创建交互动画 第11课 制作按钮 制作具有动态效果的按钮 教学设计 2023-2024学年人教版初中信息技术八年级上册
- 农业种植苗木配送合同范本
- 四级有氧舞蹈 第六课时 教学设计-2024-2025学年高一上学期体育与健康人教版必修第一册
- 二零二五年度企业安全风险评估雇佣安全免责协议
- 2025年度生物科技企业劳动合同解除及生物技术研发协议
- 化妆品项目转让居间合同
- 新能源厂房装修合同
- Unit4 Breaking Boundaries 单元教学设计-2024-2025学年高中英语外研版(2019)选择性必修第二册
- 2024年社区工作者考试必背1000题题库附答案(满分必刷)
- 江苏省连云港市灌南华侨高级中学2024届高三第二次模拟考试数学试卷含解析
- 毕业旅游活动设计与实施方案
- 政企业务部门培训
- 2024年高考历史:全3册核心知识梳理和大事年表
- 非标设备方案
- 2024-2026招商信诺人寿中国健康指数白皮书
- 教师如何进行跨学科教学
- 电梯日管控、周排查、月调度内容表格
- 生理学全套课件
- 汽车租赁投标书范本
评论
0/150
提交评论