基于医院分诊系统的排队策略.docx
- 文档编号:18348456
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:18
- 大小:185.89KB
基于医院分诊系统的排队策略.docx
《基于医院分诊系统的排队策略.docx》由会员分享,可在线阅读,更多相关《基于医院分诊系统的排队策略.docx(18页珍藏版)》请在冰点文库上搜索。
基于医院分诊系统的排队策略
数据结构课程设计报告
题目:
基于医院分诊系统的排队策略
学生XX:
钟**
学号:
1021111311
班级:
10211113
指导教师:
X军
2012年6月01日
一、课程设计目的
本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能
二、需求分析概述
1、近年来,随着医疗事业的发展,医院的规模不断扩大,科室门类划分的也越来越细,随之而来的是病人排队挂号和看病变的繁琐,等待时间变长,为此,需要制定一种良好的排队策略,减少病人的等待时间,提高医院的服务质量。
2、为了真实实现分诊的功能,在程序里面加入了功能列表菜单和一些选择提示。
3、该程序主要运用到链表和一下常用的算法、排序。
这个程序主要体现在链表的表头和表尾进行操作。
4、规定一个固定容量的候诊区,候诊区里的排队操作操作采用存储链表的头指针和尾指针。
可以那规定的规则进行模拟排队。
5、以下为主要的功能列表:
(1)、病人选择挂号功能
病人选择该功能时,系统会随机为你选择挂号的号牌,并且会记录你的挂号的就诊级别。
(2)、病人选择医生就诊号
当病人挂号完毕后,可以进入下一个功能,去选择你所需的医生就诊号,并且记录下医生就诊号(区分专家号和普通号)。
(3)、病人诊断所需时间提示
病人挂号和选择就诊号完毕后,进入候诊区进行等待,此时为保证对病人的透明度,可提前通知病人还需要等待的时间,时间为更加切合实际,采用每个病人单独随机产生。
(4)、病人病情所需诊断次数
根据在之前选择的就诊级别,医生会给此类病人就诊两次,以保证病人在现实用的健康保证。
(5)、病人最终诊断详情查询
可以查询到病人挂号的和所选择的医生就诊号等一系列的病情流程查询,使得该程序更具有人性化。
三、总体设计
整体框架:
根据程序列出的功能菜单,在每个功能下对每一个操作进行实现,一环扣一环,使得该程序的整体更具有合理化。
1)问题的具体分析:
1、医院门诊分为普通号和专家号,普通号一个可是有数为医生,专家号一个可是仅有一个医生,并且将普通好和专家号相互独立,以方便模拟。
2、我们将病人分为A类和B类,对于A类病人,我们仅进行一次诊断,即用户挂号后进入队列,在进行一次诊断后即完成诊治。
B类病人需要进行两次诊断和一次检查,在完成一次诊断后,医生开出检查意见,病人进行检查,完成后病人需返回科室进行第二次诊断,在第二次完成后即完成诊治。
3、我们将病人的产生使用一般的随机数生成,同理,病人的诊治时间也使用确定的时间,各类病人的数量都对应了实际的各科室接诊病人的限制。
4、对于由于到达时间过晚,部分病人将无法完成诊断,我们将忽略这部分病人。
2)解决问题策略的制定:
诊队列模式:
每个诊室队列只对应一个诊区候诊队列,我们将之记作Q,一般排队规则是:
①刚完成挂号的病人,添加在Q的末尾;②按医嘱完成体检的病人,直接插入在Q的首部。
功能实现主体:
尽可能根据真实的医院分诊的各个功能下手,实现每一个功能下的环节,然后使得具体的操作更加的合理化。
图片大体功能菜单框架:
四、详细设计
病人的就诊操作主要做到挂号和医生就诊选择不会出现重复占用,很里安排就诊时间以及租到尽可能快的操作。
提高效率完成功能。
医生主要设立排队规则,例如,一个候诊区具有规定的候诊数量,不能太大,也不能太小
医生对每个病人的诊断时间采用随机产生(程序对数据的需要,现实中看具体的诊断需要)
医院主要是做病人和医生之间的就诊连接那一块,使得通过就诊号和挂号之间做到合理的对口,当然,主要是病人去选择自己所需的医生,对症就诊。
Houpitais类:
定义头指针和尾指针分别用于存储队头和队尾的地址。
定义就诊次数成员函数,对病人所需就诊次数进行安排
定义就诊等待时间函数,合理安排病人等待时间。
通过该类可以对排队所需进行操作。
Patients类:
定义就诊级别类对病人的病情就行分为A、B级别,使得病人合理选择专家号或者普通号。
定义产生随机挂号函数,随机产生固定X围的挂号信息。
定义所需的数据变量进行存储数据。
该类主要针对病人挂号信息。
Doctor类:
定义产生随机的专家就诊号函数,产生合理的就诊专家号。
定义产生随机的普通就诊号函数,产生合理的就诊普通号。
该类主要针对医生就诊号信息。
通过上述对类的定义就可以实现分诊操作的功能,通过算法对分诊思想的具体实现,做到合理,便捷。
五、实现部分
Hopitials类的实现代码:
#include
#include
#include
#include"hospitals.h"
#include"patients.h"
#include"doctor.h"
usingnamespacestd;
voidhospitals_1:
:
hospitals_1print()
{
cout<<"========================================================"< cout<<"=欢迎来到医院智能分诊系统="< cout<<"=------------------------------------------------------="< cout<<"=以下为分诊具体功能实现: ="< cout<<"=1.病人选择挂号="< cout<<"=2.病人选择医生就诊号(A.专家号B.普通号)="< cout<<"=3.病人候诊所需时间安排="< cout<<"=4.病人病情所需诊断次数="< cout<<"=5.病人最终诊断病例信息查询="< cout<<"=------------------------------------------------------="< cout<<"=祝您: 生活愉快! 身体健康! ="< cout<<"========================================================"< } voidhospitals_1: : times(hospitals_1&p) { cout<<"就诊次数: "; for(inti=0;i<10;i++) { if(p.sty[i]=='A') p.times_1[i]=1; elseif(p.sty[i]=='B') p.times_1[i]=2; cout< } cout< } voidhospitals_1: : waittime(hospitals_1&p) { intti; srand(time(0)); ti=rand()%10+10; cout<<"候诊时间: "; for(inti=0;i<10;i++) { p.time_1[i]=ti*(i+1); cout< } cout< } voidhospitals_1: : check(hospitals_1&p) { intj=0,temp; cout<<"请输入您的个人挂号信息: "; cin>>j; for(inti=0;i<10;i++) { if(j==ran[i]) { temp=p.z[i]; cout<<"================================病人分诊信息表=================================="< cout<<"--病人挂号--病人就诊号--病人就诊级别--病人就诊模式--病人诊断次数--病人等待时间--"< if(sty[i]=='A') cout<<"--"< elseif(sty[i]=='B') cout<<"--"< cout<<"-------------------------------------------------------------------------------"< } } } voidhospitals_1: : headinqueue_1(hospitals_1&q,intn) { hospitals_1*s,*r; intc; s=NULL; for(c=0;c { r=newhospitals_1; r->data=q.ran[c]; 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; cout< } voidhospitals_1: : hequeue_1(hospitals_1&q,intx2) { hospitals_1*w; w=newhospitals_1; w->data=x2; q.reer_Q->next=w; w=q.reer_Q; cout< } inthospitals_1: : gethead_1(hospitals_1q) { returnq.head_Q->data; } boolhospitals_1: : empty_1(hospitals_1q) { if(q.head_Q->next==NULL) returntrue; else returnfalse; } inthospitals_1: : hospitals_1function(hospitals_1&p,intb) { intm; intn=b; cout<<"请依次正确操作分诊系统(选择功能序号): "; cin>>m; switch(m) { case1: ++n; if(n==1) {p.random();p.style();} else {n--;} break; case2: ++n; if(n==2) {p.random_p();p.random_z();} else {n--;} break; case3: ++n; if(n==3) {p.waittime(p);} else {n--;} break; case4: ++n; if(n==4) {p.times(p);} else {n--;} break; case5: ++n; if(n==5) {p.check(p);} else {n--;} break; } returnn; } Doctor类的实现代码: #include #include #include #include"doctor.h" usingnamespacestd; voiddoctor: : random_z() { srand(time(0)); cout<<"专家门诊号: "; for(intk=0;k<10;k++) { z[k]=rand()%100+50; cout< } cout< } voiddoctor: : random_p() { srand(time(0)); cout<<"医师门诊号: "; for(inth=0;h<10;h++) { p[h]=rand()%50; cout< } cout< } Patients类的实现代码: #include #include #include #include"doctor.h" usingnamespacestd; voiddoctor: : random_z() { srand(time(0)); cout<<"专家门诊号: "; for(intk=0;k<10;k++) { z[k]=rand()%100+50; cout< } cout< } voiddoctor: : random_p() { srand(time(0)); cout<<"医师门诊号: "; for(inth=0;h<10;h++) { p[h]=rand()%50; cout< } cout< } Mian主体部分代码: #include #include"hospitals.h" #include"patients.h" #include"doctor.h" usingnamespacestd; intmain() { intnum,d=1,b=0; charexp,axp; hospitals_1x1; x1.hospitals_1print(); lamp: b=0; do { d=x1.hospitals_1function(x1,b); b++; if(d! =b) { system("cls"); x1.hospitals_1print(); cout<<"候诊区已满! 请重新正确选择分诊系统功能! "< b=0; } cout<<"是否结束分诊系统? (Y/N)"; cin>>exp; }while(exp=='N'||exp=='n'); system("cls"); x1.hospitals_1print(); cout<<"是否重新选择分诊? (Y/N): "; cin>>axp; if(axp=='Y'||axp=='y') gotolamp; else exit(0); cout< x1.headinqueue_1(x1,10);//50是候诊区的容量 x1.enqueue_1(x1,200);//200是病人的挂号插入队头 x1.hequeue_1(x1,300);//300是病人的挂号插入队尾 num=x1.gethead_1(x1); cout<<"就诊队头: "< cout<<"祝您身体健康! "< return0; } 六、程序测试 主界面: 功能列表菜单 功能 (1) 病人选择挂号: 功能 (2) 病人选择医生就诊号: 功能(3) 病人候诊所需时间安排: 功能(4) 病人病情所需诊断次数: 功能(5) 病人最终诊断病例信息查询: 1. 2. 七、总结 通过自己单独对该程序进行分析实现,发现不论做任何程序都是需要很大的个人能力,因为如果你想吧程序做的完美就必须要比别人突出,所以就会有很多难题需要你自己进行学习,通过不断的学习更加完善自己。 提高自己的个人综合能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 医院 系统 排队 策略
![提示](https://static.bingdoc.com/images/bang_tan.gif)