:基于医院分诊系统及排队策

上传人:油条 文档编号:28024633 上传时间:2018-01-14 格式:DOC 页数:20 大小:216.50KB
返回 下载 相关 举报
:基于医院分诊系统及排队策_第1页
第1页 / 共20页
:基于医院分诊系统及排队策_第2页
第2页 / 共20页
:基于医院分诊系统及排队策_第3页
第3页 / 共20页
:基于医院分诊系统及排队策_第4页
第4页 / 共20页
:基于医院分诊系统及排队策_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《:基于医院分诊系统及排队策》由会员分享,可在线阅读,更多相关《:基于医院分诊系统及排队策(20页珍藏版)》请在金锄头文库上搜索。

1、 题目:基于医院分诊系统的排队策略1需求分析说明1. 问题的提出:近年来,随着医疗事业的发展,医院的规模不断扩大,科室门类划分的也越来越细,随之而来的是病人排队挂号和看病变的繁琐,等待时间变长,为此,需要制定一种良好的排队策略,减少病人的等待时间,提高医院的服务质量。2.以下为主要的功能列表:(1)、进入医生窗口创建功能开始前,医院必须先创建医生窗口来确定现在有多少普通医生和专家医生在就诊,以方便是否满足病人的要求,可安排好是否有足够医生,以方便就诊。(2)、进入策略一病人挂号功能病人选择该功能时,按照策略一,系统会记录为你挂号的号牌,并且会记录你的挂号的就诊级别。当病人挂号完毕后,可以进入下

2、一个功能,去选择你所需的医生就诊号,并且记录下医生就诊号(区分专家号和普通号) 。(3)、进入策略一模拟功能 病人挂号和选择就诊号完毕后,进入候诊区进行等待,开始模拟策略一的就诊,记录每个病人的诊断时间,此时为保证对病人的透明度,可提前通知病人还需要等待的时间,时间为更加切合实际,采用每个病人单独随机产生。根据在之前选择的就诊级别,医生会给此类病人就诊两次,以保证病人在现实用的健康保证。(4)、进入策略二病人挂号功能 病人选择该功能时,按照策略二,系统会记录为你挂号的号牌,并且会记录你的挂号的就诊级别。当病人挂号完毕后,可以进入下一个功能,去选择你所需的医生就诊号,并且记录下医生就诊号(区分专

3、家号和普通号) 。(5)、 进入策略一模拟功能病人挂号后 ,病人挂号和选择就诊号完毕后,进入候诊区进行等待,规定一个固定容量的诊区候诊区和不限制容量的候诊区开始模拟策略二的就诊,记录每个病人的诊断时间,此时为保证对病人的透明度,可提前通知病人还需要等待的时间,时间为更加切合实际,采用每个病人单独随机产生。根据在之前选择的就诊级别,医生会给此类病人就诊两次,以保证病人在现实用的健康保证。(6) 、进入策略一医生检查窗口选择该功能后,按照策略一的模拟记录的诊断信息,医生可查询是否还有病人还需就诊。(7) 、进入策略二医生检查窗口选择该功能后,按照策略二的模拟记录的诊断信息,医生可查询是否还有病人还

4、需就诊和就诊区和候诊区是否有病人等待。(8) 、退出系统完成所有功能后,选择该功能可以退出该系统。3.需求的分析:(1)、为了真实实现分诊的功能,在程序里面加入了功能列表菜单和一些选择提示。(2)、该程序主要运用到链表和队列。这个程序主要体现在链表的表头和表尾进行操作。(3)、规定一个固定容量的候诊区进入策略一模拟功能,候诊区里的排队操作采用存储链表的头指针和尾指针。可以按规定的规则进行模拟排队。二总体设计基本框架:1. 我们假设医院实行八小时工作制,一天工作八小时,即 480 分钟。2. 医院门诊分为普通号和专家号,普通号一个可是有数为医生,专家号一个可是 仅有一个医生,并且将普通好和专家号

5、相互独立,以方便模拟。3. 我们将病人分为 A 类和 B 类,对于 A 类病人,我们仅进行一次诊断,即用户挂号后进入队列,在进行一次诊断后即完成诊治。B 类病人需要进行两次诊断和一次检查,在完成一次诊断后,医生开出检查意见,病人进行检查,完成后病人需返回科室进行第二次诊断,在第二次完成后即完成诊治。4. 虽然实际中在一定时间内病人的产生应该按照泊松分布,由于参数设定的困难,我们将病人的产生使用一般的随机数生成,同理,病人的诊治时间也使用确定的时间。5. 实际中,每位医生每天接诊的人数是有一定限制的,尤其是专家门诊。但考虑病人来源的数据无论自实际数据库,还是来自根据实际情况的随机模拟数据,各类病

6、人的数量都对应了实际的各科室接诊病人的限制。6. 对于由于到达时间过晚,部分病人将无法完成诊断,我们将忽略这部分病人。两种策略的制定:一级分诊队列模式: 每个诊室队列只对应一个诊区候诊队列,我们将之记作 Q,一般排队规则是:刚完成挂号的病人,添加在 Q 的末尾; 按医嘱完成体检的病人,直接插入在 Q 的首部。这种排队规则广泛应用于中小医院。二级分诊队列模式: 每个诊室队列对应一个诊区候诊队列和一个候诊厅候诊队列,我们将前者记作 Q1,后者记作 Q2。一般情况下,因为诊区空间限制, Q1 的人数限制在 2、3 人左右;而候诊厅空间较大,所以对 Q2 的人数不作限制。一般排队规则是:刚完成挂号的病

7、人,添加在 Q2 的末尾;按医嘱完成体检的病人,直接插入在 Q2的首部;医师始终对 Q1 中的首位病人诊治,每位病人诊治结束时,若 Q2 不空,则Q2 的首位病人脱离 Q2,进入 Q1 的尾部。这种排队规则广泛应用于大中型医院。要实现的功能设计:进入策略一病人挂号进入策略一模拟Main()进入策略二病人挂号进入策略二模拟进入策略一医生检查窗口进入策略一医生检查窗口退出系统进入医生窗口创建功能菜单图片:3详细设计病人的就诊操作主要做到挂号号码和医生就诊号码选择不会出现重复占用,很里安排就诊时间以及租到尽可能快的操作。提高效率完成功能。医生主要设立排队规则,例如,一个候诊区具有规定的候诊数量,不能

8、太大,也不能太小医生对每个病人的诊断时间采用随机产生(程序对数据的需要,现实中看具体的诊断需要)医院主要是做病人和医生之间的就诊连接那一块,使得通过就诊号和挂号之间做到合理的对口,当然,主要是病人去选择自己所需的医生,对症就诊。Link 类:定义链表类,函数中定义病人的挂号类型,挂号序列,和医生类型Queue 类:定义队列的头尾指针;定义队列的初始队列函数;定义队列的出队,入队函数;定义取对头函数和判断队列是否为空和输出的函数;定义友元类 custom;Custom 类:定义病人的随机产生和等待队列Doctor 类:定义医生的创建窗口函数;定义医生的普通医生和专家的类型;定义医生检查窗口;Ma

9、nage 类:定义策略一和策略二的模拟信息函数;定义策略一和策略二的医生检查窗口函数;4实现部分#include#include#include#include#includeusing namespace std;const int m=100;char stickm;class linkpublic:string data;char stickxing;char xinghao;link *next;class queuepublic:link*front,*rear;void iniqueue(queuevoid enqueue(queuevoid enqueue(queuevoid e

10、nqueue1(queuevoid dlqueue(queuestring gethead1(queuechar gethead2(queuechar gethead3(queueint empty(queuevoid print(queuefriend class custom;void queue:iniqueue (queue&s)link *p;p=new link;p-next=NULL;s.front=p;s.rear=p;void queue:enqueue(queue&s,char x) link *p;string num;string num1;p=new link;if(

11、x=1|x=2)p-xinghao=x;else coutnum;p-data=num;p-stickxing=x; coutp-xinghao;p-next=s.rear-next;s.rear-next=p;s.rear=p;void queue:enqueue(queue&s,string x,char y) link *p;string num;string num1;p=new link;if(y=c)p-data=x;p-stickxing=y;p-next=s.rear-next;s.rear-next=p;s.rear=p;else if(y=a) p-data=x;p-sti

12、ckxing=y;p-next=s.front-next;s.front-next=p;void queue:enqueue1(queue&s,string x,char y) link *p;string num;string num1;p=new link;p-data=x;p-stickxing=y;p-next=s.rear-next;s.rear-next=p;s.rear=p;string queue:gethead1(queue& s)if(s.front=s.rear)return NULL;else return s.front-next-data;char queue:ge

13、thead2(queue& s) if(s.front=s.rear)return NULL;else return s.front-next-stickxing;char queue:gethead3(queue& s)if(s.front=s.rear)return NULL;else return s.front-next-xinghao;void queue:dlqueue(queue&s)link *p;p=s.front-next;if(p-next=NULL)s.front-next=NULL;s.front=s.rear;else s.front-next=p-next;del

14、ete p;int queue:empty (queue&s)if(s.front=s.rear)return 1;elsereturn 0;class custompublic:void productstick(int n);void makewaitlist(queue void makewaitlist1(queue ;void custom:productstick (int n) char stickclass;int x;srand(time(NULL);for(int i=1;in;for(int i=1;ix;jibei=x;doctoren.enqueue(doctoren

15、,jibei); void doctor:servestick (queue &doctoren,queue&customque) queue storage; int y;char ch;if(doctoren.empty(doctoren)coutw;switch(w)case 1: coutn;customren.productstick(n);coutn; customren.productstick(n);cout病人入队挂号endl;customren1.makewaitlist1(Q1,Q2,n);Sleep(1000);system(cls);break;case 5: g.strategy2(Q1,Q2,doctorque,customren1,doctorman,checkstick1);Sleep(8000);system(cls);break;case 6: g.doctorcheck(checkstick,customque);Sleep(3000);system(cls);break;case 7:g.doctorcheck1(checkstick1,Q2);Sleep(3000);system(cls);break;system(cls); 5程序测试主界面:功能一

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

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号