基于医院分诊系统的排队策略_第1页
基于医院分诊系统的排队策略_第2页
基于医院分诊系统的排队策略_第3页
基于医院分诊系统的排队策略_第4页
基于医院分诊系统的排队策略_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

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

5、列只对应一个诊区候诊队列,我们将之记作Q,般排队 规则是:刚完成挂号的病人,添加在Q的末尾;按医嘱完成体检的病人,直接插 入在Q的首部。功能实现主体:尽可能根据真实的医院分诊的各个功能下手,实现每一个功能下的环节,然后使得具体 的操作更加的介理化。图片大体功能菜单框架:欢迎来到医院智能分诊系统助选选候<專 体人人人人人 具病病病病病 诠.分为下以息 号安次信 诊间断例 -就时诊病 卿星熏断 实挂医專诊B 普通号)祝您;生活愉快!身体健康!四、详细设计病人的就诊操作主要做到挂号和医生就诊选择不会出现重复占用,很里安排就诊时间以及 租到尽可能快的操作。提高效率完成功能。医生主要

6、设立排队规则,例如,一个候诊区具有规泄的候诊数量,不能太大,也不能太小 医生对每个病人的诊断时间采用随机产生(程序对数据的需要,现实中看具体的诊断需要)医院主要是做病人和医生之间的就诊连接那一块,使得通过就诊号和挂号之间做到合理的 对口,当然,主要是病人去选择自己所需的医生,对症就诊。Houpitais 类:左义头指针和尾指针分别用于存储队头和队尾的地址。 左义就诊次数成员函数,对病人所需就诊次数进行安排 左义就诊等待时间函数,合理安排病人等待时间。ttiFndeF _hos1_ ttdeFine _hos1_ #include"doctorttinclude"patien

7、ts.h,'class hospitals_1:public doctor,public patient/一级分诊模式public:旨旨hospitals_1 *head_Q; hospitals_1;int data;int times_110;int time_110; hospitals! *next; uoid times(hogpitalsl &p); uoid waittime(hospitals_1 &p); uoid hospitals_1print();int hospitals_1function(hospitals_1 &p,int b&g

8、t;:void headinqueue_1 (hospitals_1 &q ,int n)</头:固法仓建单链表 void enqueue(hospitals fcq,int x1);/元素k插入到表尾。 void hequeue_1 (hospitals_1 ftq,int x2) ;/TEMy插入至0表买。 int gethead_1(hospitals3 q);/得到臥表头元素 bool empty_1(hospitals_1 q);void check(hospitals_1 &q);ttendiF通过该类可以对排队所需进行操作。Patients 类:左义就诊级别

9、类对病人的病情就行分为A、B级别,使得病人合理选择专家号或者普通 号。左义产生随机挂号函数,随机产生固左X围的挂号信息。左义所需的数据变量进行存储数据。zj.ttifndef _pa_ftdefine pa_class patientpublic :char st40;int ran9:int tine_11 &void randora();int stle();;ttendif该类主要针对病人挂号信息。Doctor 类:泄义产生随机的专家就诊号函数,产生合理的就诊专家号。 泄义产生随机的普通就诊号函数,产生合理的就诊普通号。wiTnaet _aoc_ itdef ine doc_ c

10、l-ass doctorpublic:int z10;int p20;uoid random_z();uoid random_p();;®endiF该类主要针对医生就诊号信息。通过上述对类的泄义就可以实现分诊操作的功能,通过算法对分诊思想的具体实现, 做到合理,便捷。五、实现部分Hopitials类的实现代码:#in clude<iostream>#in clude<time.h>#in clude<stdio.h>#include”hospitals.h”#include,patients.h,'#include"doctor.

11、 h'1using namespace std;void hospitals_1:hospitals_1print() cout<<,=,«e ndl; cout«H=欢迎来到医院智能分诊系统="<<encH;cout<<,=u<<endl;cout«H=以下为分诊具体功能实现:=M«endl;cout«u=1 病人选择挂号=M«endl;cout«H=2.病人选择医生就诊号(A.专家号B.普通号)="«endl;cout«H=3

12、.病人候诊所需时间安排="<<endl;cout«H=4.病人病情所需诊断次数="<<endl;cout«H=5.病人最终诊断病例信息査询="<<endl;cout<<"="<<endl;cout«H=祝您: 生活愉快!身体健康!="<<endl;cout<<,=,«e ndl;void hospitals_1 :times(hospitals_1 ftp)cout«H就诊次数:for(int i=0;

13、i<10;i+)if(p.styi=,A,)p.times_1 i=1;else if(p.styi=,B,)p times_1 i=2;cout<<p.times_1 i<<Hcout<<endl;void hosp让als_1:waittime(hosp让alsjl &p)int ti;srand(time(O);ti=rand()%10+10;cout«M候诊时间:H;for(int i=0;i<10;i+)p.time_1 i=ti*(i+1);cout<<p.time_1 i«"cout

14、«endl;void hospitals_1:check(hosp让als_1 &p)int j=0,temp;cout«u输入您的个人挂号信息二cin>>j;for(int i=0;i<10;i+)if(j=ra ni)temp=p.zi;cout«,=病人分诊信息表=,«endl;coutU 病人挂号病人就诊号-病人就诊级别病人就诊模式-病人诊断次数if(styi=,A,)M«p .ran i«u M«temp<<cout«,L ,«M 一,«p.sty

15、i«,-,«p.times_1 i<<"-分钟-"«endl;else if(styi=B,)cout«M-"<< p. rani«M -"<<temp<<,«M 一"<<p.styi«"分钟-J,«endl;-病人等待时间-w«endl;,«M 专家号普通号cout«""«endl;void hospitals_1:headinqueu

16、e_1 (hosp让als_1 &q,int n)hospitals_1 *s,*r;int c;s=NULL;for(c=0;c <n; C+)r二new hosp让als_1; r->data=q.ran c; r->next=s;if(c=O)q.reer_Q=r;s=r;q. head_Q=s;void hospitals_1 :enqueue_1 (hospitals_1 &q,int x1)hospitals/ *t;t二nev hospitals/;t->data=x1;t->next=q.head_Q;q. head_Q=t;cou

17、t < <q. head_Q-> data«e ndl;void hospitals_1 :hequeue_1 (hospitals_1 &q,int x2)hospitals/ *v;v/=nev hospitals_1;v/->data=x2;q reer_Q->next=w;w二q. reer_Q;cout<<q.reer_Q->data<<e ndl;int hosp让als_1:gethead_1(hospitals_1 q)return q.head_Q->data;bool hospitals_1

18、 :empty_1 (hosp让als_1 q)if(q.head_Q->next=NULL)return true;elsereturn false;int hospitals_1:hosp让als_1function(hospitals_1 &p,int b)int m;int n=b;cout<<"请依次正确操作分诊系统(选择功能序号):"; cin>m;switch(m)case 1:+n;if(n=1)p.random();p.style();elsen-;break;case 2:+n;if(n=2)p.random_P() ;

19、P ra ndom_z();elsen-;break;case 3:+n;if(n=3) p.vvaittime(p);elsen-;break;case 4:+n;if(n=4) p.times(p);elsen-;break;case 5:+n;if(n=5) p.check(p);else 5-; break; return n;Doctor类的实现代码:#in clude<iostream>#include<stdio.h>#in clude<time.h> #includeMdoctor. h'1 using namespace std;

20、void doctor: :random_z() srand(time(O); cout«H专家门诊号: for(int k=O;k<1O;k+) zk=rand()%100+50; cout«zk«"cout<<e ndl;void doctor:random_p()srand(time(0);cout«H医师门诊号:for(int h=0;h<10;h+) ph=rand()%50; cout«ph<<ncout<<endl;Patients类的实现代码:#in clude<i

21、ostream>#in clude<stdio.h>#in clude<time h>#in clude"doctor.h"using namespace std; void doctor: :random_z()srand(time(0);cout«"专家门诊号:”; for(int k=0;k<10;k+) zk=rand()%100+50;cout«zk«"cout<<e ndl;void doctor: :random_p()srand(time(0);cout

22、1;H医师门诊号: for(int h=0;h<10;h+) ph=rand()%50; cout«ph<<"cout<<endl;Mian主体部分代码:#in clude<iostream>#includeMhospitals.hM#include,patients.hH#include,doctor.h,'using nannespace std;int main()int nunn,d=1,b=O;char exp,axp;hospitals/ x1;xl.hosp print();lamp:b=0;dod=x1.ho

23、sp function (x? ,b);b+;if(d!=b)system Cels'1);x1 .hospitals_1 print();cout«喉诊区已满!请重新正确选择分诊系统功能! "<<endl; b=0;cout«M是否结束分诊系统? (Y/N) M;cin»exp;vhile(exp=,N,| | exp=,n,);system(”cls”);x1iospitals_1print();cout<<"是否重新选择分诊? (Y/N):"cin> >axp;if(axp=Y| |a

24、xp二二V)goto lamp;elseexit(O);cout<<endl;x1 .headinqueue_1 (x1,10);/50 是候诊区的容量x1.enqueued(x1,200);/200是病人的挂号插入队头 x1.hequeue_1(x1,3OO);/3OO是病人的挂号插入队尾 num=x1 g ethead_1 (x1);cout<<"就诊队头:,«num«endl;cout<<"祝您身体健康! "«endl;return 0;zj.六、程序测试主界面:功能列表菜单戏迎来到医院智能分诊系统专 询 A-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论