ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:74.94KB ,
资源ID:4202567      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4202567.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(医院排队叫号系统.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

医院排队叫号系统.docx

1、医院排队叫号系统医院排队叫号系统无锡太湖学院C+课程设计报告 课 程: C+课程设计 系 别: 信机系 班 级: 计算机科学与技术(软件)113班 学 号: 1121073、1121082、1121085、1121088 袁震宇、葛嘉明、罗炜烨、季军(排名不分先姓 名: 后) 选题名称: 医院排队叫号系统的设计与实现 选题难易级别: A级/B级/C 起止时间: 2012年1月 指导教师: 詹重咏 一(课程设计的目的及要求 . 3 1.1目的 . 3 1.2需求的分析 . 3 二(课程设计的具体实现 . 3 2.1以下为主要的功能列表 . 3 2.2基本框架 . 4 2.3流程图: . 5 2.

2、4详细设计 . 6 三.结束语 . 7 四(源代码 . 8 五(参考文献 . 17 一(课程设计的目的及要求 1.1目的: 近年来,随着医疗事业的发展,医院的规模不断扩大,科室门类划分的也越来越细,随之而来的是病人排队挂号和看病变的繁琐,等待时间变长,为此,需要制定一种良好的排队策略,减少病人的等待时间,提高医院的服务质量。 1.2需求的分析: (1)、为了真实实现分诊的功能,在程序里面加入了功能列表菜单和一些选择提示。 (2)、该程序主要运用到链表和队列。这个程序主要体现在链表的表头和表尾进行操作。 (3)、规定一个固定容量的候诊区进入策略一模拟功能,候诊区里的排队操作采用存储链表的头指针和

3、尾指针。可以按规定的规则进行模拟排队。 二(课程设计的具体实现 2.1以下为主要的功能列表: (1)、进入医生窗口创建功能 开始前,医院必须先创建医生窗口来确定现在有多少普通医生和专家医生在就诊,以方便是否满足病人的要求,可安排好是否有足够医生,以方便就诊。 (2)、进入策略一病人挂号功能 病人选择该功能时,按照策略一,系统会记录为你挂号的号牌,并且会记录你的挂号的就诊级别。 当病人挂号完毕后,可以进入下一个功能,去选择你所需的医生就诊号,并且记录下医生就诊号(区分专家号和普通号)。 (3)、进入策略一模拟功能 病人挂号和选择就诊号完毕后,进入候诊区进行等待,开始模拟策略一的就诊,记录每个病人

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

5、病人的诊断时间,此时为保证对病人的透明度,可提前通知病人还需要等待的时间,时间为更加切合实际,采用每个病人单独随机产生。根据在之前选择的就诊级别,医生会给此类病人就诊两次,以保证病人在现实用的健康保证。 (6)、进入策略一医生检查窗口 选择该功能后,按照策略一的模拟记录的诊断信息,医生可查询是否还有病人还需就诊。 (7)、进入策略二医生检查窗口 选择该功能后,按照策略二的模拟记录的诊断信息,医生可查询是否还有病人还需就诊和就诊区和候诊区是否有病人等待。 (8)、退出系统 完成所有功能后,选择该功能可以退出该系统。 2.2基本框架: 1. 我们假设医院实行八小时工作制,一天工作八小时,即480分

6、钟。 2. 医院门诊分为普通号和专家号,普通号一个科室有数位医生,专家号一个科室仅有一个医生,并且将普通好和专家号相互独立,以方便模拟。 3. 我们将病人分为A类和B类,对于A类病人,我们仅进行一次诊断,即用户挂号后进入队列,在进行一次诊断后即完成诊治。B类病人需要进行两次诊断和一次检查,在完成一次诊断后,医生开出检查意见,病人进行检查,完成后病人需返回科室进行第二次诊断,在第二次完成后即完成诊治。 4. 虽然实际中在一定时间内病人的产生应该按照泊松分布,由于参数设定的困难,我们将病人的产生使用一般的随机数生成,同理,病人的诊治时间也使用确定的时间。 5. 实际中,每位医生每天接诊的人数是有一

7、定限制的,尤其是专家门诊。但考虑病人来源的数据无论自实际数据库,还是来自根据实际情况的随机模拟数据,各类病人的数量都对应了实际的各科室接诊病人的限制。 6. 对于由于到达时间过晚,部分病人将无法完成诊断,我们将忽略这部分病人。 两种策略的制定: 一级分诊队列模式: 每个诊室队列只对应一个诊区候诊队列,我们将之记作Q,一般排队规则是:?刚完成挂号的病人,添加在Q的末尾;?按医嘱完成体检的病人,直接插入在Q的首部。这种排队规则广泛应用于中小医院。 二级分诊队列模式: 每个诊室队列对应一个诊区候诊队列和一个候诊厅候诊队列,我们将前者记作Q1,后者记作Q2。一般情况下,因为诊区空间限制,Q1的人数限制

8、在2、3人左右;而候诊厅空间较大,所以对Q2的人数不作限制。一般排队规则是:?刚完成挂号的病人,添加在Q2的末尾;?按医嘱完成体检的病人,直接插入在Q2的首部;?医师始终对Q1中的首位病人诊治,每位病人诊治结束时,若Q2不空,则Q2的首位病人脱离Q2,进入Q1的尾部。这种排队规则广泛应用于大中型医院。 2.3流程图: 进入医生窗口创建 进入策略一病人挂号 进入策略一模拟 Main() 进入策略二病人挂号 进入策略二模拟 进入策略一医生检查窗口 进入策略一医生检查窗口 退出系统 2.4详细设计 病人的就诊操作主要做到挂号号码和医生就诊号码选择不会出现重复占用,合理安排就诊时间以及租到尽可能快的操

9、作。提高效率完成功能。 医生主要设立排队规则,例如,一个候诊区具有规定的候诊数量,不能太大,也不能太小 医生对每个病人的诊断时间采用随机产生(程序对数据的需要,现实中看具体的诊断需要) 医院主要是做病人和医生之间的就诊连接那一块,使得通过就诊号和挂号之间做到合理的对口,当然,主要是病人去选择自己所需的医生,对症就诊。 link 类: 定义链表类,函数中定义病人的挂号类型,挂号序列,和医生类型 Queue 类: 定义队列的头尾指针; 定义队列的初始队列函数; 定义队列的出队,入队函数; 定义取对头函数和判断队列是否为空和输出的函数; 定义友元类custom; Custom类: 定义病人的随机产生

10、和等待队列 Doctor 类: 定义医生的创建窗口函数; 定义医生的普通医生和专家的类型; 定义医生检查窗口; Manage 类: 定义策略一和策略二的模拟信息函数; 定义策略一和策略二的医生检查窗口函数; 三.结束语 通过将近一周的课程设计,感受颇深。课程设计的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。对我们计算

11、机专业的本科生来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识 这次我的题目是基于医院分诊系统的排队策略,众所周知, 医院排队在日常生活中处处可见,所以这次的课程设计很有实际价值,利用理论知识,运用到实际生活中。通过一周的努力,不仅仅让我对学过的知识加深了印象,并认识到了理论必须联系实际来解决问题,分析问题。 四(源代码 #include #include #include #include #include using namespace std; const

12、int m=100; char stickm; class link public: string data; char stickxing; char xinghao; link *next; ; class queue public: link*front,*rear; void iniqueue(queue&s); void enqueue(queue&s,char x); void enqueue(queue&s,string x,char y); void enqueue1(queue&s,string x,char y); void dlqueue(queue&s); string

13、 gethead1(queue&s); char gethead2(queue&s); char gethead3(queue&s); int empty(queue&s); void print(queue&s); friend 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

14、(x=1|x=2) p-xinghao=x; else cout请输入病人挂号序号:numnum; p-data=num; p-stickxing=x; cout病人要挂普通号还是专家号:a(表示普通号) b(表示专家号)p-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.r

15、ear-next; s.rear-next=p; s.rear=p; else if(y=a) p-data=x; p-stickxing=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&

16、s) if(s.front=s.rear) return NULL; else return s.front-next-data; char queue:gethead2(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

17、.front-next; if(p-next=NULL) s.front-next=NULL; s.front=s.rear; else s.front-next=p-next; delete p; int queue:empty (queue&s) if(s.front=s.rear) return 1; else return 0; class custom public: void productstick(int n); void makewaitlist(queue &custom1,int n); void makewaitlist1(queue &custom2,queue&Q,

18、int n); ; void custom:productstick (int n) char stickclass; int x; srand(time(NULL); for(int i=1;i=n;i+) x=int(rand()%2; if(x) stickclass=a; else stickclass=b; sticki=stickclass; void custom:makewaitlist(queue &custom1,int n) custom1.iniqueue(custom1); for(int i=1;i=n;i+) custom1.enqueue(custom1,sti

19、cki); void custom:makewaitlist1(queue&Q1,queue&Q2,int n) Q1.iniqueue(Q1); Q2.iniqueue(Q2); for(int i=1;i=n;i+) if(i=2) Q1.enqueue(Q1,sticki); else Q2.enqueue(Q2,sticki); class doctor public: void proctordoctor(queue &doctoren); void servestick(queue &doctoren,queue&customque); void srvestickfinish(q

20、ueue&doctoren,queue&customque); char jibei; ; void doctor:proctordoctor (queue&doctoren) char x; int n; doctoren.iniqueue(doctoren); cout请输入普通医生和一个专家人数:nn; for(int i=1;i=n;i+) cout请输入1表示普通医生,2表示一个专家x; jibei=x; doctoren.enqueue(doctoren,jibei); void doctor:servestick (queue &doctoren,queue&customque)

21、 queue storage; int y; char ch; if(doctoren.empty(doctoren) cout没有空闲医生可服务请等待:endl; else string x2=customque.gethead1(customque); ch=doctoren.gethead3(doctoren); doctoren.dlqueue(doctoren); storage.iniqueue (storage); storage.enqueue(storage,ch); coutx2号正在诊断之中:请耐心等待!:endl; srand(time(NULL); y=int(ran

22、d(); Sleep(3000+y); void doctor:srvestickfinish (queue&doctoren,queue&customque) string x; x=customque.gethead1(customque); coutx号病人诊断完成endl; customque.dlqueue(customque); doctoren.enqueue(doctoren,jibei); class manage public: void strategy1(queue&customque,queue&doctorque,custom&customren,doctor&do

23、ctorman,queue&checkstick); void strategy2(queue&customque,queue&Q,queue&doctorque,custom&customren,doctor&doctorman,queue&checkstick); void doctorcheck(queue&checkstick,queue&customque); void doctorcheck1(queue&checkstick,queue&cQ2); int couttime(); ; int manage: couttime() int x; time_t now_time; n

24、ow_time = time(NULL); struct tm now = *localtime(&now_time); x=now.tm_sec; return x; void manage:strategy1(queue&customque,queue&doctorque,custom&customren,doctor&doctorman,queue&checkstick) string x; static int count1=0; int time1,time2; if(!customque.empty(customque) x=customque.gethead1(customque

25、); time1=0; if(customque.gethead2(customque)=a|customque.gethead2(customque)=c) doctorman.servestick(doctorque,customque); doctorman.srvestickfinish(doctorque,customque); time2=couttime(); cout诊断花费time2-time1分钟endl; count1=count1+(time2-time1); else doctorman.servestick(doctorque,customque); checkst

26、ick.enqueue(checkstick,x,c); doctorman.srvestickfinish(doctorque,customque); time2=couttime(); cout诊断花费time2-time1分钟endl; count1=count1+(time2-time1); else cout策略一的花费总的时间为count1分钟endl; cout诊室区没有病人等待!endl; void manage:strategy2(queue&Q1,queue&Q2,queue&doctorque,custom&customren1,doctor&doctorman,queu

27、e&checkstick) string x,num1;char yy; static int count2=0;int time1,time2; if(!Q1.empty(Q1) x=Q1.gethead1(Q1); time1=0; if(Q1.gethead2(Q1)=a|Q1.gethead2(Q1)=c) doctorman.servestick(doctorque,Q1); doctorman.srvestickfinish(doctorque,Q1); time2=couttime(); cout诊断花费time2-time1分钟endl; count2=count2+(time2-

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1