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

合集下载

医院门诊排队管理规章制度细则

医院门诊排队管理规章制度细则

医院门诊排队管理规章制度细则近年来,由于人口增加和医疗需求的增长,医院门诊排队问题日益突出。

为了有效管理门诊排队,提高医疗服务效率,我院制定了一系列门诊排队管理规章制度细则。

一、排队顺序管理:1. 登记和分诊:所有患者来院后,需前往登记处进行登记,登记处人员将对患者进行初步分诊,按疾病严重程度和急诊就诊需求进行分类。

分诊完成后,患者将获得一个排队号码,依据号码快捷就诊。

2. 分类窗口排队:根据不同的科室和专科,将患者分别引导至相应的窗口排队。

有特殊需要的患者(如孕妇、老年人或残疾人)可向工作人员说明并获得优先就诊待遇。

二、排队纪律管理:1. 不得插队:医院将严厉打击插队行为,任何患者发现有插队行为,可向工作人员举报。

一经查实,插队者将受到相应的惩罚并被重新安排排队。

2. 不得闲聊大声喧哗:在排队等候时,请保持安静,不得大声喧哗,严禁在院内吸烟。

医院将提供充足的座椅和阅读资料,供患者在排队时放松心情。

3. 不得占用他人位置:在等候就诊时,请不要将个人物品占用其他人的位置。

若患者离开等候区域,需事先交代清楚,由他人代为守位,以确保排队顺序不受干扰。

三、排队信息管理:1. 排队信息发布:医院将在候诊区设置电子显示屏或通过广播系统发布患者的排队号码和就诊窗口,患者应密切关注相关信息,提前站起等候就诊。

2. 信息查询:患者可通过自助查询终端或向工作人员咨询,获取排队信息以及等候时间等相关情况。

医院将通过不同的渠道提供准确和及时的排队信息,以方便患者就诊。

四、排队时间管理:1. 合理安排就诊时间:医院将通过科学的排诊制度,合理安排医生的就诊时间,以减少患者的等待时间。

同时,医院也会提供网上预约和电话预约等便捷的就诊方式,以提高整体医疗服务效率。

2. 确保患者的合理就诊时间:门诊就诊时间将根据患者的就诊需求和医生的工作安排来确定,患者可根据自身病情选择合适的时间段来就诊,以便快速有序地进行医疗服务。

五、排队环境管理:1. 提供舒适的候诊环境:医院将致力于提供舒适的候诊环境,保持候诊区的清洁整齐,并提供空调、饮水机等设施,使患者在候诊时感到舒适。

2023-医院分诊排队叫号系统建设方案V1-1

2023-医院分诊排队叫号系统建设方案V1-1

医院分诊排队叫号系统建设方案V1医院分诊排队叫号系统建设方案V1随着社会的不断发展,人们对医疗服务质量的要求也越来越高。

传统的医疗服务模式已经不能满足人们的需要,需要通过新技术来完善医疗服务。

在传统的医院服务模式中,患者需要到医院门诊部队排队等候叫号,等待时间长,叫号效率低下。

因此,为了更好地满足患者需求,提高医院服务质量,需要建立一套医院分诊排队叫号系统。

该系统的建设方案如下:1. 系统目标该系统主要目标是通过引入先进的计算机技术和信息化手段,实现医院门诊部队患者分诊、排队、叫号等业务流程的现代化管理,提高医院门诊服务效率,简化患者办理手续的流程,缩短患者等候时间,提高患者满意度。

2. 系统结构该系统由患者端、医生端和管理端三个部分组成。

患者端:患者通过患者自助终端机或手机APP进行预约、取号等操作,可以实现房间、医生、科室的查询和选择,并可以自行打印取号小票。

医生端:医生通过医生工作站看到患者基本信息、排队状况等,及时调整排队顺序,向患者提供医疗服务。

管理端:系统管理员通过管理端掌握医院的服务状况,如排队人数、医生工作状况、系统异常等。

同时,管理员还可以设置医院服务标准、患者信息管理及节假日、医院停诊等信息。

3. 建设步骤第一步:系统准备阶段确定系统建设方案,制定开发计划,建立项目管理团队。

第二步:系统需求调研阶段对医院门诊部队的服务流程进行调查和分析,了解医院的实际情况,收集患者意见,明确需求。

第三步:系统设计阶段制定系统功能需求说明书和技术方案说明书,针对设计方案,确定系统结构和模块,搭建开发环境,设计数据库结构和界面。

第四步:系统开发和测试阶段按照设计方案和计划,进行系统编码、测试和调试,使用测试数据和场景对系统进行整体测试和单元测试。

第五步:系统上线阶段完成各项功能,进行系统整体测试,进行数据采集和搜集,修复系统中出现的问题,保证系统正常运行。

同时,进行用户培训和技术支持,向管理部门提供相关报文、接口等信息。

缩短患者诊疗等候时间措施及规定

缩短患者诊疗等候时间措施及规定

缩短患者诊疗等候时间措施及规定为切实提高诊疗效率,优化门诊就诊流程,缓解病人多而排长队等候的现象,我院采取以下措施缩短病人等候时间。

1.实行分层(1、2、3、6楼)门诊挂号及缴费,以分流病人。

门诊总服务台人员、导诊护士及挂号收费人员提前30分钟上班,缩短病人挂号排队时间。

2.门诊各楼层标识醒目,减少患者因寻找浪费时间。

3.注重医院信息化建设,通过信息化手段有效缩短病人等待检查结果时间:(1)门诊1-6楼设有自助挂号机,以方便病人。

(2)检验科正在完善自助化验单报告打印系统,方便患者及时拿取检验报告;门诊医师工作站可以查询当天化验报告。

(3)超声医学科设置叫号系统,改进就诊秩序,减少等候时间。

(2015年11月门诊部叫号系统调试成功,正式启用,有效缩短了患者的候诊时间)。

4.做好预约诊疗工作,加大预约诊疗的宣传力度,提高社会知晓率,让患者选择预约就诊,缩短等候时间。

开展多渠道预约诊疗(现场、网络及电话、微信、诊间等)服务,引导患者不同时间段就诊,减少就诊高峰峰值,通过有序诊疗缩短患者等待的时间。

5.影像检查、超声检查、化验检查等实行24小时服务制度,通过全天候提供检查保证患者随到随做,防止积压患者,以有效缩短患者等待检查结果时间。

6.各医技科室及辅助检查科室必须保证在规定时限内发出报告(疑难病例除外)。

所有医技科室及其它辅助检查科室都设专人负责检查结果查询。

7.检验标本安排专人及时送检,缩短病人等待检查结果时间。

8.所有诊室病人必须通过分诊护士分诊排队,门诊医生每次只能叫一个患者进入诊室就诊,不得同时呼叫多个病人,保证门诊就诊秩序与质量,通过缩短患者就诊时间以减少患者等待检查结果的时间。

9.优化门诊就医环境,设置座椅、休息区、报刊阅读架等设施,保证门诊就诊秩序与质量。

10.双休日、节假日普通门诊及部分专家、专科门诊正常开放,逐渐完善多学科综合门诊,为患者提供方便。

医院八个排队制度模板

医院八个排队制度模板

医院八个排队制度模板一、导言为维护医院秩序,保障患者权益,提高医疗服务质量,根据国家卫生健康委员会《医疗机构管理条例》及相关法律法规,结合我院实际情况,制定本排队制度。

二、排队制度模板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. 恶意插队、扰乱医院秩序的患者,工作人员有权将其带离现场,并报请医院相关部门处理。

医院-排队叫号方案

医院-排队叫号方案

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取号➢取号/分诊如不与挂号系统联网,则病人挂完号到达分诊台后由导医录入病人姓名、年龄等个人资料并进行分诊,打印号票给病人。

医院分诊排队叫号系统建设方案

医院分诊排队叫号系统建设方案
9
妇产、超声二次 叫号管理
10
体检叫号管理功能
11
体检叫号管理功能
12
出入院流程
13
药房发药、退药
14
候诊信息显示
15
横屏显示
系统按序自动安排患者到最合适的或患者自己所选择的医生处就诊, 真正实现了“个人”化服务和“互换式”服务; 避免发生排错号、插队等现象,减少许多不必要的纠纷; 营造平等、合理、有序的良好环境,给患者带来轻松愉快的心情,不 再有患者拥堵在诊室门口的现象发生; 尊重人性,保护患者隐私权利; 患者可以充分利用等候时间做其它事,节约患者的时间。
7
刷卡--二次叫号管理功能
流程: 患者挂号---等候区等候----呼叫后前来刷卡---刷卡后,等候二次呼 叫—进诊室去就诊 检查患者(过号): 检查回来的患者----刷卡签到---进入队列--—当前位 置后第三位
8
先刷卡—一次叫号管理功能
流程: 患者挂号---先前来刷卡---刷卡后,等候呼叫—进诊室去就诊 检查患者(过号): 检查回来的患者----刷卡签到---进入队列--—当前位 置后第三位
门诊医技流程管理系统
1
1
以患产者品看病主的要流分程为类中心
2
以患者看病的流程为中心
3
以患者看病的流程为中心
4
普通、专家诊区
X医院
复旦大学附属中山医院
功能:诊区大屏显示分诊信息,诊间小 屏显示就诊、候诊以及医生信息 区别1:超薄,无缝 55寸 横置 尺寸
区别2:无
门诊叫号管理拓扑图
6
叫号管理流程
图例:儿科医院
19
医院排队叫号效果图
20
20
诊室前液晶显示
21

患者就诊排队制度

患者就诊排队制度

患者就诊排队制度一、背景和目的为了有效管理医院内患者的就诊流程,并提高医疗服务的质量和效率,特订立本患者就诊排队制度。

本制度旨在规范和优化患者就诊过程,充分利用医疗资源,供应更好的医疗服务,确保患者的权益和医院的正常运营。

二、适用范围本制度适用于医院的门诊部门和相关服务窗口,包含但不限于挂号、缴费、分诊、科室候诊等环节。

三、排队管理原则1.公平原则:全部患者均享有平等、公平的就诊权益,依照先来先服务的原则进行排队。

2.秩序原则:患者应依照规定的程序进行排队,不得插队、挤占或以其他方式影响正常排队秩序。

3.诊疗优先原则:对于紧急、疑难病例或急需就诊的患者,医院将依据情况进行优先处理。

四、排队机制1.挂号排队:–患者到达医院后,依照区域调配的挂号窗口进行挂号,挂号时系统记录患者的挂号信息和排队号码。

–患者在挂号口等待期间,可以通过公示屏或系统提示查询当前排队进展情况。

–患者到达就诊时间后,应自动前往相应科室等待就诊。

2.缴费排队:–排队前,患者需准备好相关费用,并在系统指定的窗口进行缴费手续。

–患者在缴费口等待期间,可以通过公示屏或系统提示查询当前排队进展情况。

–缴费时,患者应供应准确的就诊卡或病历号以便核对信息,并保持排队秩序。

3.分诊排队:–患者在挂号后,依据挂号信息在分诊窗口进行分诊,由专业医生依据病情程度划分优先级。

–分诊后,患者将获得指定科室的就诊编号,并前往相应科室等待。

4.科室候诊:–在科室候诊区,患者应依照科室候诊号码次序就座,不得占用他人座椅。

–科室候诊期间,患者可通过公示屏或系统提示了解当前叫号情况,做好就诊准备。

五、待遇和服务1.候诊环境:医院将供应舒适、安静、乾净的候诊环境,合理设置座椅和排队设施,确保患者的基本需求。

2.提示信息:医院将设立公示屏,显示当前的叫号情况和候诊进展,供应便捷的信息查询服务。

3.叫号方式:医院将采用语音叫号系统或电子显示屏方式进行叫号,患者应紧密关注提示信息,及时前往就诊。

医院分诊排队叫号系统方案

医院分诊排队叫号系统方案
4.实现分诊排队叫号系统的智能化、人性化,提升医院形象。
本方案旨在为医院提供一套合法合规、高效稳定的分诊排队叫号系统,以提高医疗服务质量,满足患者就诊需求。在项目实施过程中,需密切关注项目进展,及时调整和优化系统功能,确保项目目标的顺利实现。
"。那么,以下是根据您的要求制定的医院分诊排队叫号系统方案:
3.提升患者就诊体验,降低医患矛盾。
4.实现分诊排队叫号系统的智能化、人性化。
三、系统设计
1.系统架构
本系统采用分层架构,分为客户端、服务器端和数据层。
客户端:包括分诊台、诊室、自助机等设备,用于实现患者信息录入、叫号、查询等功能。
服务器端:负责处理客户端请求,实现数据交互、业务处理等功能。
数据层:存储患者信息、叫号信息等数据,为系统提供数据支持。
四、实施与运营
1.技术选型:采用成熟、稳定的技术框架,确保系统长期运行。
2.项目实施:分阶段、按计划推进,确保系统顺利上线。
3.培训与支持:对医护人员进行系统操作培训,提高使用效率。
4.运营维护:定期检查系统运行情况,及时处理故障,确保系统稳定运行。
五、总结
本医院分诊排队叫号系统方案从合法合规、人性化、高效稳定、灵活扩展等方面进行设计,旨在提高医疗服务质量,优化患者就诊体验。通过实施本方案,医院将实现就诊流程的规范化、信息化,提升整体运营效率。
-患者可实时查询排队进度,合理安排就诊时间。
-系统可根据实际情况调整排队顺序,如:优先处理急诊患者。
4.统计分析
-系统自动收集、统计就诊人次、等待时间、患者满意度等数据。
-为医院管理层提供决策依据,持续优化医疗服务质量。
5.系统管理
-对系统用户、角色、权限进行管理,确保信息安全。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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的尾部。

这种排队规则广泛使用于大中型医院。

要实现的功能设计:功能菜单图片:进入策略一病人挂号进入策略一模拟Main()进入策略二病人挂号进入策略二模拟进入策略一医生检查窗口进入策略一医生检查窗口退出系统进入医生窗口创建三.详细设计病人的就诊操作主要做到挂号号码和医生就诊号码选择不会出现重复占用,很里安排就诊时间以及租到尽可能快的操作。

提高效率完成功能。

医生主要设立排队规则,例如,一个候诊区具有规定的候诊数量,不能太大,也不能太小医生对每个病人的诊断时间采用随机产生(程序对数据的需要,现实中看具体的诊断需要)医院主要是做病人和医生之间的就诊连接那一块,使得通过就诊号和挂号之间做到合理的对口,当然,主要是病人去选择自己所需的医生,对症就诊。

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");}五.程序测试主界面:功能一进入医生窗口创建:功能二进入策略一的病人挂号:功能三进入策略一模拟功能四进入策略二的病人挂号:功能五进入策略二模拟:功能六进入策略一医生检查系统:功能七进入策略一医生检查系统:六.总结通过将近一周的课程设计,感受颇深。

相关文档
最新文档