资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
题目:基于医院分诊系统的排队策略 1 需求分析说明1. 问题的提出: 近年来,随着医疗事业的发展,医院的规模不断扩大,科室门类划分的也越来越细,随之而来的是病人排队挂号和看病变的繁琐,等待时间变长,为此,需要制定一种良好的排队策略,减少病人的等待时间,提高医院的服务质量。2.以下为主要的功能列表: ()、进入医生窗口创建功能 开始前,医院必须先创建医生窗口来确定现在有多少普通医生和专家医生在就诊,以方便是否满足病人的要求,可安排好是否有足够医生,以方便就诊。 (2)、进入策略一病人挂号功能病人选择该功能时,按照策略一,系统会记录为你挂号的号牌,并且会记录你的挂号的就诊级别。 当病人挂号完毕后,可以进入下一个功能,去选择你所需的医生就诊号,并且记录下医生就诊号(区分专家号和普通号)。 (3)、进入策略一模拟功能 病人挂号和选择就诊号完毕后,进入候诊区进行等待,开始模拟策略一的就诊,记录每个病人的诊断时间,此时为保证对病人的透明度,可提前通知病人还需要等待的时间,时间为更加切合实际,采用每个病人单独随机产生。根据在之前选择的就诊级别,医生会给此类病人就诊两次,以保证病人在现实用的健康保证。(4) 、进入策略二病人挂号功能 病人选择该功能时,按照策略二,系统会记录为你挂号的号牌,并且会记录你的挂号的就诊级别。 当病人挂号完毕后,可以进入下一个功能,去选择你所需的医生就诊号,并且记录下医生就诊号(区分专家号和普通号)。(5) 、 进入策略一模拟功能 病人挂号后 ,病人挂号和选择就诊号完毕后,进入候诊区进行等待,规定一个固定容量的诊区候诊区和不限制容量的候诊区开始模拟策略二的就诊,记录每个病人的诊断时间,此时为保证对病人的透明度,可提前通知病人还需要等待的时间,时间为更加切合实际,采用每个病人单独随机产生。根据在之前选择的就诊级别,医生会给此类病人就诊两次,以保证病人在现实用的健康保证。(6) 、进入策略一医生检查窗口 选择该功能后,按照策略一的模拟记录的诊断信息,医生可查询是否还有病人还需就诊。(7) 、进入策略二医生检查窗口选择该功能后,按照策略二的模拟记录的诊断信息,医生可查询是否还有病人还需就诊和就诊区和候诊区是否有病人等待。(8) 、退出系统 完成所有功能后,选择该功能可以退出该系统。3.需求的分析:(1)、为了真实实现分诊的功能,在程序里面加入了功能列表菜单和一些选择提示。()、该程序主要运用到链表和队列。这个程序主要体现在链表的表头和表尾进行操作。(3)、规定一个固定容量的候诊区进入策略一模拟功能,候诊区里的排队操作采用存储链表的头指针和尾指针。可以按规定的规则进行模拟排队。二总体设计基本框架:1. 我们假设医院实行八小时工作制,一天工作八小时,即40分钟。2. 医院门诊分为普通号和专家号,普通号一个可是有数为医生,专家号一个可是 仅有一个医生,并且将普通好和专家号相互独立,以方便模拟。3 我们将病人分为类和B类,对于A类病人,我们仅进行一次诊断,即用户挂号后进入队列,在进行一次诊断后即完成诊治。B类病人需要进行两次诊断和一次检查,在完成一次诊断后,医生开出检查意见,病人进行检查,完成后病人需返回科室进行第二次诊断,在第二次完成后即完成诊治。4 虽然实际中在一定时间内病人的产生应该按照泊松分布,由于参数设定的困难,我们将病人的产生使用一般的随机数生成,同理,病人的诊治时间也使用确定的时间。5. 实际中,每位医生每天接诊的人数是有一定限制的,尤其是专家门诊。但考虑病人来源的数据无论自实际数据库,还是来自根据实际情况的随机模拟数据,各类病人的数量都对应了实际的各科室接诊病人的限制。6. 对于由于到达时间过晚,部分病人将无法完成诊断,我们将忽略这部分病人。两种策略的制定:一级分诊队列模式: 每个诊室队列只对应一个诊区候诊队列,我们将之记作Q,一般排队规则是:刚完成挂号的病人,添加在Q的末尾;按医嘱完成体检的病人,直接插入在的首部。这种排队规则广泛应用于中小医院。二级分诊队列模式: 每个诊室队列对应一个诊区候诊队列和一个候诊厅候诊队列,我们将前者记作Q,后者记作Q。一般情况下,因为诊区空间限制,Q1的人数限制在2、3人左右;而候诊厅空间较大,所以对Q的人数不作限制。一般排队规则是:刚完成挂号的病人,添加在Q2的末尾;按医嘱完成体检的病人,直接插入在Q2的首部;医师始终对Q中的首位病人诊治,每位病人诊治结束时,若Q不空,则Q2的首位病人脱离Q,进入Q的尾部。这种排队规则广泛应用于大中型医院。要实现的功能设计: 进入医生窗口创建 进入策略一病人挂号 进入策略一模拟Mai() 进入策略二病人挂号 进入策略二模拟 进入策略一医生检查窗口 进入策略一医生检查窗口 退出系统 功能菜单图片:3 详细设计病人的就诊操作主要做到挂号号码和医生就诊号码选择不会出现重复占用,很里安排就诊时间以及租到尽可能快的操作。提高效率完成功能。 医生主要设立排队规则,例如,一个候诊区具有规定的候诊数量,不能太大,也不能太小医生对每个病人的诊断时间采用随机产生(程序对数据的需要,现实中看具体的诊断需要) 医院主要是做病人和医生之间的就诊连接那一块,使得通过就诊号和挂号之间做到合理的对口,当然,主要是病人去选择自己所需的医生,对症就诊。Link 类: 定义链表类,函数中定义病人的挂号类型,挂号序列,和医生类型Qu类:定义队列的头尾指针;定义队列的初始队列函数;定义队列的出队,入队函数;定义取对头函数和判断队列是否为空和输出的函数;定义友元类utom;Cusom类:定义病人的随机产生和等待队列ctor 类:定义医生的创建窗口函数;定义医生的普通医生和专家的类型;定义医生检查窗口;Mnage类:定义策略一和策略二的模拟信息函数;定义策略一和策略二的医生检查窗口函数;4 实现部分#includ#nude#icueime.h#iclue#inudestingsng namespace st;const int m=10;cha tickm;las lnkpublic:sring ata;c tikxing;char xghao;lnk *next;clas uupubli: lik*fro,*ra; voi iieue(queue&s); void uee(queue&s,a x); vidnqueue(que&,ting x,char y);void qee1(queu&s,strn ,ha y); oddque(queue); string gethad1(queues); cha gethead2(qeue&);chr gethead3(queue&s); int empt(quee&s); void print(queue&); rin class cust;voidqueue:niueue(queue&s) link *p; p=new ink; p-ex=NUL; s.fonp; srar=p; void uue:enquee(queue&s,char ) ln*p; strng num; tri num1; ew lik; if(x=|=2) pxighao=; else cout请输入病人挂号序号:umnum; p-datanm; psticingx; co病人要挂普通号还是专家号:a(表示普通号) (表示专家号)pxh; pne=s.eanet; s.a-nt=p; .rr=; oid queue:enqueue(queu&s,stinx,hary) lnk *p; strng um; stringnum; p=newlink; if(y=c) pdata=x; p-stickxing=y; p-next=.rearnext; s.rear-ext; srear=p; els if(y=) p-ata;p-tcxing=y; -ext=s.fnt-next; s.front-ext=p; viueu::ene(queue&s,strng x,cha ) link*p; stngnum; string um1; =new li; p-data; p-sticxng=y; p-net=s.rearnxt; s.enep; s.ear=p; srig uue:gethead1(quue& )
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号