基于医院分诊系统的排队策
医院分诊排队管理系统

灵科医院分诊排队管理系统南京楚美电子科技有限公司讲解提纲建设意义系统特性设计系统服务系统结构管理功能系统特点病人方面E真正实现了“个人化”和“互换式”服务E给病人带来轻松愉快的心情E尊重人性,保护病人隐私权利E节约病人时间使用前使用后1、病人不知道自己在队列中的位置,不能安心候诊,容易产生焦急心理,还会不时地去询问导医,增加导医工作量;2、容易因就诊先后次序发生争抢,造成秩序混乱、环境嘈杂;2、因就诊秩序原因影响医生检查速度,病人候诊时间拖长;1、病人可清楚地知道自己在队列中的位置,可安心候诊,不再需询问导医;2、系统自动按序排队,病人无可争吵;3、医生检查速度加快,候诊时间减少,舒缓了病人候诊时的焦急心理;医生方面E有利于改善工作情绪E优化工作环境E提高工作效率E系统功能带来了工作的灵活和变通使用前使用后1、需干预病人的就诊秩序,增加工作量并影响检查速度;2、医生工作量不能平均分配,速度快的医生查的病人多;3、因工作效率受到影响,工作时间延长。
1、只需安心做检查工作,无需做任何其它工作;2、检查速度和工作效率得到提高,缩短工作时间,可按时上、下班;3、工作量得到平均分配;管理者方面E实时了解病人流量和排队信息E科学设置岗位,提高服务效率E进行准确的量化考核,提高医生的积极性E提高服务质量E提高管理水平E树立良好形象,增加经济效益讲解提纲建设意义系统特性设计系统服务系统结构管理功能系统特点Ø同时支持集中挂号与科室挂号。
Ø真正实现一号制就诊。
Ø操作终端可采用物理操作终端或虚拟操作终端,也可同时采用。
Ø采用SQL数据库处理排队数据,功能强大。
Ø采用先进语音合成技术,支持病人姓名呼叫和任意语音播放功能。
可自动识别多音节字、音调自动调节、消除机械发音贴近真人发音。
Ø支持号票自动识别登录系统和号票自动识别呼叫病人的功能。
Ø如采用诊疗磁卡挂号,系统可通过与HIS系统之间的数据接口读取病人挂号信息和资料信息,实现刷卡取号,并可刷卡登录检查/缴费队列。
2023-医院分诊排队叫号系统建设方案V1-1

医院分诊排队叫号系统建设方案V1医院分诊排队叫号系统建设方案V1随着社会的不断发展,人们对医疗服务质量的要求也越来越高。
传统的医疗服务模式已经不能满足人们的需要,需要通过新技术来完善医疗服务。
在传统的医院服务模式中,患者需要到医院门诊部队排队等候叫号,等待时间长,叫号效率低下。
因此,为了更好地满足患者需求,提高医院服务质量,需要建立一套医院分诊排队叫号系统。
该系统的建设方案如下:1. 系统目标该系统主要目标是通过引入先进的计算机技术和信息化手段,实现医院门诊部队患者分诊、排队、叫号等业务流程的现代化管理,提高医院门诊服务效率,简化患者办理手续的流程,缩短患者等候时间,提高患者满意度。
2. 系统结构该系统由患者端、医生端和管理端三个部分组成。
患者端:患者通过患者自助终端机或手机APP进行预约、取号等操作,可以实现房间、医生、科室的查询和选择,并可以自行打印取号小票。
医生端:医生通过医生工作站看到患者基本信息、排队状况等,及时调整排队顺序,向患者提供医疗服务。
管理端:系统管理员通过管理端掌握医院的服务状况,如排队人数、医生工作状况、系统异常等。
同时,管理员还可以设置医院服务标准、患者信息管理及节假日、医院停诊等信息。
3. 建设步骤第一步:系统准备阶段确定系统建设方案,制定开发计划,建立项目管理团队。
第二步:系统需求调研阶段对医院门诊部队的服务流程进行调查和分析,了解医院的实际情况,收集患者意见,明确需求。
第三步:系统设计阶段制定系统功能需求说明书和技术方案说明书,针对设计方案,确定系统结构和模块,搭建开发环境,设计数据库结构和界面。
第四步:系统开发和测试阶段按照设计方案和计划,进行系统编码、测试和调试,使用测试数据和场景对系统进行整体测试和单元测试。
第五步:系统上线阶段完成各项功能,进行系统整体测试,进行数据采集和搜集,修复系统中出现的问题,保证系统正常运行。
同时,进行用户培训和技术支持,向管理部门提供相关报文、接口等信息。
医院八个排队制度模板

医院八个排队制度模板一、导言为维护医院秩序,保障患者权益,提高医疗服务质量,根据国家卫生健康委员会《医疗机构管理条例》及相关法律法规,结合我院实际情况,制定本排队制度。
二、排队制度模板1. 分诊排队制度(1)患者到达医院后,首先到分诊台进行挂号,根据病情选择相应科室。
(2)分诊护士根据患者病情及挂号顺序,引导患者到对应诊室排队等候。
(3)患者按排队顺序进入诊室,有序进行诊疗。
2. 检查排队制度(1)患者完成检查科室挂号后,领取检查单。
(2)根据检查项目,患者在检查室外排队等候。
(3)检查工作人员按照排队顺序,安排患者进行检查。
3. 取药排队制度(1)患者凭处方到药房排队取药。
(2)药房工作人员按照排队顺序,为患者配药、发放药品。
(3)患者按排队顺序依次取药,有序离开药房。
4. 缴费排队制度(1)患者根据医生开具的处方,到收费窗口排队缴费。
(2)收费窗口工作人员按照排队顺序,为患者办理缴费手续。
(3)患者按排队顺序缴费,有序离开收费窗口。
5. 入院排队制度(1)患者凭医生开具的住院证,到住院处排队办理入院手续。
(2)住院处工作人员按照排队顺序,为患者办理入院手续。
(3)患者按排队顺序入院,有序安排病房。
6. 手术排队制度(1)患者凭医生开具的手术通知单,到手术室排队等候手术。
(2)手术室工作人员按照排队顺序,安排患者进行手术。
(3)患者按排队顺序依次进入手术室,有序进行手术。
7. 急诊排队制度(1)急诊患者到达医院后,直接到急诊分诊台进行挂号。
(2)急诊分诊护士根据患者病情及挂号顺序,引导患者到对应急诊科室排队等候。
(3)患者按排队顺序进入急诊科室,有序进行诊疗。
8. 门诊叫号排队制度(1)患者到达门诊科室后,在叫号系统处进行挂号。
(2)叫号系统根据患者挂号顺序,生成排队号码。
(3)患者按叫号顺序进入诊室,有序进行诊疗。
三、违规处理1. 违反以上排队制度的患者,工作人员有权对其进行劝阻和制止。
2. 恶意插队、扰乱医院秩序的患者,工作人员有权将其带离现场,并报请医院相关部门处理。
星神科技医院分诊排队叫号系统方案

星神科技医院分诊叫号系统解决方案广州星神电子科技有限公司2016年8月广州星神电子科技有限公司 第 2 页目 录第一章 公司简介 ............................................................................................... 3 第二章 系统概述 ............................................................................................... 4 第三章系统介绍 (5)一、就诊业务流程 ............................................................................................................... 5 二、系统结构 ........................................................................................................................ 9 第四章 报价清单 ............................................................. 错误!未定义书签。
第五章售后服务和培训计划 ......................................... 错误!未定义书签。
一、售后服务承诺 ........................................................................ 错误!未定义书签。
二、培训计划 ................................................................................. 错误!未定义书签。
门诊分诊排队叫号系统建设方案

医院分诊排队叫号系统建设方案一、系统建设原则统一标准原则:在数据交换平台建设中,必须“统一规范、统一代码、统一接口”。
加强指导、组织和协调,规范数据平台的基本功能、数据模型和数据编码等信息标准。
性能稳定原则:数据中心平台应具有较强的数据处理能力,满足全院7*24小时服务的要求,保证医疗数据交换和资源共享的需要。
保证安全原则:系统运行的安全性和稳定性是业务系统正常运行的重要保障。
在系统设计和建设中要符合国家有关信息安全方面的法律、法规及技术要求,强化信息安全管理,制定和完善相关的应急处理预案,保证系统稳定运行。
经济实效原则:项目建设必须坚持经济实效的原则,注重投入产出效益,不盲目追赶技术超前,防止大起大落,以合理的投入,产出适宜的效果。
具扩展性、兼容性:项目的设计和实施应具有灵活的扩展能力,充分考虑国家相关标准和业务系统需求变化对数据格式、处理方式等带来的业务流程变动和模式调整。
易用性:软件系统应考虑实用性与先进性相结合,要体现易于理解掌握、操作简单、提示清晰、逻辑性强,直观简洁、帮助信息丰富等特点,并针对医院输入项目的特点对输入顺序专门定制,保证操作人员以最快速度和最少的击键次数完成工作。
安全性:(1)系统级安全:数据库设计时应阐明用何种方式保证系统安全。
(2)应用级安全(工作站的权限验证):操作员是否有权使用某系统,应用操作系统权限;系统具有抵御外界环境和人为操作失误的能力:有足够的防护措施,防止非法用户侵入;保证不因操作人员的误操作导致系统的崩溃等。
(3)操作员的权限验证:系统管理应能根据员工的职务和所承担的工作进行角色划分,通过角色划分进行权限分配,当操作人员超越权限进行登录时,系统应能拒绝并记录在系统日志中。
(4)数据加密:除了以上所属的登录/使用验证以外,系统还应能采取了对某些关键数据(如用户代码和密码)进行加密的方法,来提高安全性。
(5)数据安全管理机制:投标人应能有完整的数据安全管理措施。
医院-排队叫号方案

3.4排队叫号基于楼层科室分布情况,我们设计一个科室设置一个分诊台,对本科室进行分诊排队管理;语音合成器、呼叫信息显示屏、音箱数量则根据候诊区情况配置,显示呼叫本候诊区内的呼叫信息,同一个科室的多个候诊区显示呼叫信息内容相同。
1、我们建议等候区信息显示屏配置4*12的LED汉字显示屏,显示呼叫病人的科室、病人号码、姓名、诊室号,以清楚提示病人;信息显示屏图示如下:4*12的LED汉字显示屏信息显示屏也可根据各科室环境布局情况和显示内容配置LCD显示器,如下图:单屏显示排队叫号信息(如下图):分屏显示软件(如下图):可分屏显示排队叫号信息、就诊医生信息、诊室公告、医疗宣传片、动画片等诊室显示屏(选用):显示每个诊室的呼叫信息。
2、预留开放性接口能与医院的HIS、PACS系统结合和扩充。
3.4.1.常规门诊解决方案单科室就诊对内科、外科、五官科、眼科、骨科、消化科、皮肤科、泌尿科等常规门诊科室,解决方案为设置分诊台,配置分诊工作站,医生操作终端可为物理或虚拟操作终端。
病人挂完号到达相应科室后,由分诊台导医录入病人姓名、年龄、性别等个人资料和挂号的科室,并打印号票给病人,号票上内容为病人姓名(可选)、排队号、科室、候诊区、目前该队人数、预计的等候时间、日期、时间等,系统会根据导医录入的资料自动将病人号码排入队列中,导医还可将病人排入指定的医生队列中。
如系统与挂号系统联接,病人挂完号,其相应资料即会被传送到相应科室的分诊工作站,病人挂完号后到分诊台,导医可直接选取该条挂号数据进行分诊。
病人获得号票后即可在候诊区内候诊,偶尔留意一下信息显示屏和语音提示,当门诊医生呼叫到自己的号码时,信息显示屏会显示科室、病人号码、姓名、应去的诊室,“xxxx 号到XXXX科xx诊室就诊”,同时伴有“叮咚、请xxxx号到XXXX科xx诊室就诊”的语音提示,病人可依照提示前去相应科室的诊室医生处就诊。
常规门诊单科室就诊流程如下图所示:3.4.2.系统服务说明1病人就诊1.1取号➢取号/分诊如不与挂号系统联网,则病人挂完号到达分诊台后由导医录入病人姓名、年龄等个人资料并进行分诊,打印号票给病人。
医院医疗导诊系统解决方案

医院医疗导诊系统解决方案一、系统功能1.分诊模块:根据患者的病情、需求、地理位置等信息,将其分配至最适合的科室或医生,并实时显示科室候诊人数和目前就诊的情况,避免患者过度等候。
2.医生排班模块:综合考虑医生的专业背景、工作时间、就诊量等因素,对医生进行合理的排班安排,提高医疗资源利用率和就诊效率。
3.医院资源管理模块:通过对医院的各类资源进行标准化管理,包括科室、医生、设备、药品等,确保资源的充分利用和合理分配。
4.问诊模块:提供在线问诊服务,患者可以通过系统填写相关问诊信息,由医生进行远程在线诊断和指导。
5.就诊记录管理模块:对患者的就诊记录进行集中管理,便于医生查阅和分析,提供更好的医疗服务。
6.数据分析与统计模块:对医院医疗资源利用、患者就诊情况等进行数据分析和统计,为医院科学管理和决策提供参考。
二、系统实施步骤1.需求调研:与医院相关部门(包括医务、信息和管理部门)进行深入交流,了解医院现有情况和需求,并将其转化为系统功能和特性的需求。
2.系统设计:根据需求确定系统的整体架构和功能模块划分,设计出合理的数据库结构和界面布局,保证系统的稳定性和易用性。
3.系统开发:根据系统设计的规划,进行系统的开发和测试。
开发过程中要注重与医院相关人员的沟通和协调,及时反馈和修正系统的问题。
4.系统部署:将开发完成的系统部署到医院的网络环境中,测试系统的性能和稳定性,并进行必要的调整和优化。
5.培训和推广:对医院的相关人员进行系统培训,包括系统的使用和管理。
同时,进行宣传和推广,引导患者和医生使用系统,提高系统的使用率和影响力。
6.系统维护与升级:定期进行系统的维护和升级,及时处理系统中的问题和反馈,保证系统的稳定运行和持续改进。
三、系统优势1.提高医院服务效率:通过系统的分诊和排班功能,减少患者就诊的等待时间和排队时间,提高医疗服务效率,缓解医院资源压力。
2.提升患者体验:患者可以通过系统快速找到适合的医疗资源,并进行在线问诊,提升了患者的就诊体验和满意度。
医院分诊排队叫号系统方案

本方案旨在为医院提供一套合法合规、高效稳定的分诊排队叫号系统,以提高医疗服务质量,满足患者就诊需求。在项目实施过程中,需密切关注项目进展,及时调整和优化系统功能,确保项目目标的顺利实现。
"。那么,以下是根据您的要求制定的医院分诊排队叫号系统方案:
3.提升患者就诊体验,降低医患矛盾。
4.实现分诊排队叫号系统的智能化、人性化。
三、系统设计
1.系统架构
本系统采用分层架构,分为客户端、服务器端和数据层。
客户端:包括分诊台、诊室、自助机等设备,用于实现患者信息录入、叫号、查询等功能。
服务器端:负责处理客户端请求,实现数据交互、业务处理等功能。
数据层:存储患者信息、叫号信息等数据,为系统提供数据支持。
四、实施与运营
1.技术选型:采用成熟、稳定的技术框架,确保系统长期运行。
2.项目实施:分阶段、按计划推进,确保系统顺利上线。
3.培训与支持:对医护人员进行系统操作培训,提高使用效率。
4.运营维护:定期检查系统运行情况,及时处理故障,确保系统稳定运行。
五、总结
本医院分诊排队叫号系统方案从合法合规、人性化、高效稳定、灵活扩展等方面进行设计,旨在提高医疗服务质量,优化患者就诊体验。通过实施本方案,医院将实现就诊流程的规范化、信息化,提升整体运营效率。
-患者可实时查询排队进度,合理安排就诊时间。
-系统可根据实际情况调整排队顺序,如:优先处理急诊患者。
4.统计分析
-系统自动收集、统计就诊人次、等待时间、患者满意度等数据。
-为医院管理层提供决策依据,持续优化医疗服务质量。
5.系统管理
-对系统用户、角色、权限进行管理,确保信息安全。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:基于医院分诊系统的排队策略一.需求分析说明1.问题的提出:近年来,随着医疗事业的发展,医院的规模不断扩大,科室门类划分的也越来越细,随之而来的是病人排队挂号和看病变的繁琐,等待时间变长,为此,需要制定一种良好的排队策略,减少病人的等待时间,提高医院的服务质量。
2.以下为主要的功能列表:(1)、进入医生窗口创建功能开始前,医院必须先创建医生窗口来确定现在有多少普通医生和专家医生在就诊,以方便是否满足病人的要求,可安排好是否有足够医生,以方便就诊。
(2)、进入策略一病人挂号功能病人选择该功能时,按照策略一,系统会记录为你挂号的号牌,并且会记录你的挂号的就诊级别。
当病人挂号完毕后,可以进入下一个功能,去选择你所需的医生就诊号,并且记录下医生就诊号(区分专家号和普通号)。
(3)、进入策略一模拟功能病人挂号和选择就诊号完毕后,进入候诊区进行等待,开始模拟策略一的就诊,记录每个病人的诊断时间,此时为保证对病人的透明度,可提前通知病人还需要等待的时间,时间为更加切合实际,采用每个病人单独随机产生。
根据在之前选择的就诊级别,医生会给此类病人就诊两次,以保证病人在现实用的健康保证。
(4)、进入策略二病人挂号功能病人选择该功能时,按照策略二,系统会记录为你挂号的号牌,并且会记录你的挂号的就诊级别。
当病人挂号完毕后,可以进入下一个功能,去选择你所需的医生就诊号,并且记录下医生就诊号(区分专家号和普通号)。
(5)、进入策略一模拟功能病人挂号后,病人挂号和选择就诊号完毕后,进入候诊区进行等待,规定一个固定容量的诊区候诊区和不限制容量的候诊区开始模拟策略二的就诊,记录每个病人的诊断时间,此时为保证对病人的透明度,可提前通知病人还需要等待的时间,时间为更加切合实际,采用每个病人单独随机产生。
根据在之前选择的就诊级别,医生会给此类病人就诊两次,以保证病人在现实用的健康保证。
(6)、进入策略一医生检查窗口选择该功能后,按照策略一的模拟记录的诊断信息,医生可查询是否还有病人还需就诊。
(7)、进入策略二医生检查窗口选择该功能后,按照策略二的模拟记录的诊断信息,医生可查询是否还有病人还需就诊和就诊区和候诊区是否有病人等待。
(8)、退出系统完成所有功能后,选择该功能可以退出该系统。
3.需求的分析:(1)、为了真实实现分诊的功能,在程序里面加入了功能列表菜单和一些选择提示。
(2)、该程序主要运用到链表和队列。
这个程序主要体现在链表的表头和表尾进行操作。
(3)、规定一个固定容量的候诊区进入策略一模拟功能,候诊区里的排队操作采用存储链表的头指针和尾指针。
可以按规定的规则进行模拟排队。
二.总体设计基本框架:1. 我们假设医院实行八小时工作制,一天工作八小时,即480分钟。
2. 医院门诊分为普通号和专家号,普通号一个可是有数为医生,专家号一个可是仅有一个医生,并且将普通好和专家号相互独立,以方便模拟。
3. 我们将病人分为A类和B类,对于A类病人,我们仅进行一次诊断,即用户挂号后进入队列,在进行一次诊断后即完成诊治。
B类病人需要进行两次诊断和一次检查,在完成一次诊断后,医生开出检查意见,病人进行检查,完成后病人需返回科室进行第二次诊断,在第二次完成后即完成诊治。
4. 虽然实际中在一定时间内病人的产生应该按照泊松分布,由于参数设定的困难,我们将病人的产生使用一般的随机数生成,同理,病人的诊治时间也使用确定的时间。
5. 实际中,每位医生每天接诊的人数是有一定限制的,尤其是专家门诊。
但考虑病人来源的数据无论自实际数据库,还是来自根据实际情况的随机模拟数据,各类病人的数量都对应了实际的各科室接诊病人的限制。
6. 对于由于到达时间过晚,部分病人将无法完成诊断,我们将忽略这部分病人。
两种策略的制定:一级分诊队列模式: 每个诊室队列只对应一个诊区候诊队列,我们将之记作Q,一般排队规则是:①刚完成挂号的病人,添加在Q的末尾;②按医嘱完成体检的病人,直接插入在Q的首部。
这种排队规则广泛应用于中小医院。
二级分诊队列模式: 每个诊室队列对应一个诊区候诊队列和一个候诊厅候诊队列,我们将前者记作Q1,后者记作Q2。
一般情况下,因为诊区空间限制,Q1的人数限制在2、3人左右;而候诊厅空间较大,所以对Q2的人数不作限制。
一般排队规则是:①刚完成挂号的病人,添加在Q2的末尾;②按医嘱完成体检的病人,直接插入在Q2的首部;③医师始终对Q1中的首位病人诊治,每位病人诊治结束时,若Q2不空,则Q2的首位病人脱离Q2,进入Q1的尾部。
这种排队规则广泛应用于大中型医院。
要实现的功能设计:功能菜单图片:三.详细设计病人的就诊操作主要做到挂号号码和医生就诊号码选择不会出现重复占用,很里安排就诊时间以及租到尽可能快的操作。
提高效率完成功能。
医生主要设立排队规则,例如,一个候诊区具有规定的候诊数量,不能太大,也不能太小医生对每个病人的诊断时间采用随机产生(程序对数据的需要,现实中看具体的诊断需要)医院主要是做病人和医生之间的就诊连接那一块,使得通过就诊号和挂号之间做到合理的对口,当然,主要是病人去选择自己所需的医生,对症就诊。
Link 类:定义链表类,函数中定义病人的挂号类型,挂号序列,和医生类型Queue 类:定义队列的头尾指针;定义队列的初始队列函数;定义队列的出队,入队函数;定义取对头函数和判断队列是否为空和输出的函数;定义友元类custom;Custom类:定义病人的随机产生和等待队列Doctor 类:定义医生的创建窗口函数;定义医生的普通医生和专家的类型;定义医生检查窗口;Manage 类:定义策略一和策略二的模拟信息函数;定义策略一和策略二的医生检查窗口函数;四.实现部分#include<iostream>#include<ctime>#include<time.h>#include<windows.h>#include<string>using namespace std;const int m=100;char stick[m];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 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(x=='1'||x=='2')p->xinghao=x;else{cout<<"请输入病人挂号序号:num"<<endl;cin>>num;p->data=num;p->stickxing=x;cout<<"病人要挂普通号还是专家号:a(表示普通号) b(表示专家号)"<<endl;cin>>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.rear->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& s){if(s.front==s.rear)return NULL;elsereturn s.front->next->data;}char queue::gethead2(queue& s){if(s.front==s.rear)return NULL;elsereturn s.front->next->stickxing;}char queue::gethead3(queue& s){if(s.front==s.rear)return NULL;elsereturn 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;delete p;}int queue::empty (queue&s){if(s.front==s.rear)return 1;elsereturn 0;}class custom{public:void productstick(int n);void makewaitlist(queue &custom1,int n);void makewaitlist1(queue &custom2,queue&Q,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';stick[i]=stickclass;}}void custom::makewaitlist(queue &custom1,int n){custom1.iniqueue(custom1);for(int i=1;i<=n;i++)custom1.enqueue(custom1,stick[i]);}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,stick[i]);elseQ2.enqueue(Q2,stick[i]);}}class doctor{public:void proctordoctor(queue &doctoren);void servestick(queue &doctoren,queue&customque);void srvestickfinish(queue&doctoren,queue&customque);char jibei;};void doctor::proctordoctor (queue&doctoren){ char x;int n;doctoren.iniqueue(doctoren);cout<<"请输入普通医生和一个专家人数:n"<<endl;cin>>n;for(int i=1;i<=n;i++){ cout<<"请输入1表示普通医生,2表示一个专家"<<endl;cin>>x;jibei=x;doctoren.enqueue(doctoren,jibei);}}void doctor::servestick (queue &doctoren,queue&customque){ 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);cout<<x2<<"号"<<"正在诊断之中:请耐心等待!:"<<endl;srand(time(NULL));y=int(rand());Sleep(3000+y);}}void doctor::srvestickfinish (queue&doctoren,queue&customque){ string x;x=customque.gethead1(customque);cout<<x<<"号"<<"病人诊断完成"<<endl;customque.dlqueue(customque);doctoren.enqueue(doctoren,jibei);}class manage{public:voidstrategy1(queue&customque,queue&doctorque,custom&customren,doctor&doctorman,queue&ch eckstick);voidstrategy2(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;now_time = time(NULL);struct tm now = *localtime(&now_time);x=now.tm_sec;return x; }voidmanage::strategy1(queue&customque,queue&doctorque,custom&customren,doctor&doctorman,q ueue&checkstick){ string x;static int count1=0;int time1,time2;if(!customque.empty(customque)){ x=customque.gethead1(customque);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);checkstick.enqueue(checkstick,x,'c');doctorman.srvestickfinish(doctorque,customque);time2=couttime();cout<<"诊断花费"<<time2-time1<<"分钟"<<endl;count1=count1+(time2-time1);}}else{ cout<<"策略一的花费总的时间为"<<count1<<"分钟"<<endl;cout<<"诊室区没有病人等待!"<<endl;}}voidmanage::strategy2(queue&Q1,queue&Q2,queue&doctorque,custom&customren1,doctor&doctor man,queue&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-time1);}else{doctorman.servestick(doctorque,Q1);checkstick.enqueue(checkstick,x,'c');doctorman.srvestickfinish(doctorque,Q1);time2=couttime();cout<<"诊断花费"<<time2-time1<<"分钟"<<endl;count2=count2+(time2-time1);}}else if(!Q2.empty(Q2)){ cout<<"诊室区(Q1)没有病人等待! 请诊侯区(Q2)进入就诊:"<<endl;num1=Q2.gethead1(Q2);yy=Q2.gethead2(Q2);Q1.enqueue1(Q1,num1,yy);Q2.dlqueue(Q2);}else{ cout<<"策略二的花费总的时间为"<<count2<<"分钟"<<endl;cout<<"诊室区(Q1)和诊侯区(Q2)都没有病人等待!"<<endl;}}void manage::doctorcheck (queue&checkstick,queue&customque){ string x;if(!checkstick.empty(checkstick)){x=checkstick.gethead1(checkstick);cout<<x<<"号"<<"检查之中"<<endl;customque.enqueue1(customque,x,'a');Sleep(3000);cout<<x<<"号"<<"检查完成"<<endl;if(!checkstick.empty(checkstick))checkstick.dlqueue(checkstick);}else cout<<"没有病人要进行检查:"<<endl;}void manage::doctorcheck1(queue&checkstick,queue&Q2){ string x;if(!checkstick.empty(checkstick)){x=checkstick.gethead1(checkstick);cout<<x<<"号"<<"检查之中"<<endl;Q2.enqueue1(Q2,x,'a');Sleep(3000);cout<<x<<"号"<<"检查完成"<<endl;if(!checkstick.empty(checkstick))checkstick.dlqueue(checkstick); }else cout<<"没有病人要进行检查:"<<endl;}void main(){system("color A");queue Q1,Q2,customque,doctorque,checkstick,checkstick1;custom customren,customren1;doctor doctorman;manage g;int n;int w=1;checkstick.iniqueue(checkstick);checkstick1.iniqueue(checkstick1);while(w!=8){cout<<" ***********************************************"<<endl;cout<<" ** 基于医院排队分诊系统**"<<endl;cout<<" ** **"<<endl;cout<<" ** **"<<endl;cout<<" ** 1. 进入医生窗口创建**"<<endl;cout<<" ** 2. 进入策略一的病人挂号**"<<endl;cout<<" ** 3. 进入策略一模拟**"<<endl;cout<<" ** 4. 进入策略二的病人挂号**"<<endl;cout<<" ** 5. 进入策略二模拟**"<<endl;cout<<" ** 6. 进入策略一医生检查系统**"<<endl;cout<<" ** 7. 进入策略二医生检查系统**"<<endl;cout<<" ** 8. 退出系统**"<<endl;cout<<" ** **"<<endl;cout<<" ***********************************************"<<endl;cin>>w;switch(w){case 1:{ cout<<"医生窗口的生成:"<<endl;doctorman.proctordoctor(doctorque);Sleep(1000);system("cls");break;} case 2:{ cout<<"请输入要产生的人数:"<<endl;cin>>n;customren.productstick(n);cout<<"病人入队挂号"<<endl;customren.makewaitlist(customque,n);Sleep(1000);system("cls");break;} case 3:{ g.strategy1(customque,doctorque,customren,doctorman,checkstick);Sleep(6000);system("cls"); break;}case 4: { cout<<"请输入要产生的人数:"<<endl;cin>>n;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");}五.程序测试主界面:功能一进入医生窗口创建:功能二进入策略一的病人挂号:功能三进入策略一模拟功能四进入策略二的病人挂号:功能五进入策略二模拟:功能六进入策略一医生检查系统:功能七进入策略一医生检查系统:六.总结通过将近一周的课程设计,感受颇深。