排队叫号系统软件设计毕业设计论文.docx
《排队叫号系统软件设计毕业设计论文.docx》由会员分享,可在线阅读,更多相关《排队叫号系统软件设计毕业设计论文.docx(28页珍藏版)》请在冰豆网上搜索。
![排队叫号系统软件设计毕业设计论文.docx](https://file1.bdocx.com/fileroot1/2023-1/31/948a632c-80c4-4402-bcd7-45ff2d8b7099/948a632c-80c4-4402-bcd7-45ff2d8b70991.gif)
排队叫号系统软件设计毕业设计论文
毕业设计论文
排队叫号系统软件设计
摘要
医院作为向患者提供医疗护理服务的机构在公民的日常生活中起着举足轻重的作用,随着门诊就诊患者的增多原有的人工导医管理系统已经无法满足现在的就诊要求。
为了减少患者就诊排队的等待时间,本文提出了一种依托于网络平台技术的智能门诊导医系统,目的是节省患者排队时间、提高患者就诊效率、辅助提高医疗服务质量,最终为患者看病创造一个良好的就诊环境。
排队叫号系统主要分为患者自助取号模块、实时就诊情况显示模块、医生叫号模块组成:
患者自助取号模块主要作用是在患者完成挂号前往就诊时,首先由自助服务终端读取当前患者的编号信息,然后为患者下发打印当前排队等候号码;实时就诊情况显示模块的作用是导医系统将即将接受诊治的患者信息依据事先发好的号码进行排序,然后在候诊区外的大屏幕上显示出来;医生叫号模块主要的作用是当医生完成当前病患的诊断工作后,由医生利用叫号终端发出指令,然后在候诊区域进行广播,叫下一位患者前去诊室就诊。
为实现上述功能本文主要介绍了医院智能医院导医系统的意义与作用、系统的整体设计流程、系统的详细设计方法以及系统的实现情况:
硬件方面依托于医院现有网络结构、计算机数据管理平台外加辅助终端进行号码分发、就诊显示、叫号等工作;软件方面采用C语言,在Linux环境下编译,链接后台数据库文件进行患者信息的录入、显示、呼叫等功能,界面简单易于操作。
关键词:
门诊,排队叫号,计算机网络,数据库,C语言。
Abstract
Hospitalasprovidingmedicalcaretopatientswithinstitutionsplayadecisiveroleinthedailylivesofcitizensinthepatientsattheclinic,withtheincreaseoftheoriginalmanualguidemedicalmanagementsystemhasbeenunabletomeetthemedicalrequirementsnow.Inordertoreducethewaitingtimeofpatientswithqueuing,theintelligentoutpatientpresentsadependsonnetworkplatformtechnologyguidemedicalsystem,thepurposeistosavethepatientswaitingtime,improveefficiency,helppatientstoimprovethequalityofmedicalservice,thefinaltreatmenttocreateagoodenvironmentfortreatmentforpatients.
Intelligentmedicalguidancesystemismainlydividedintopatientsself-servicemodule,displaymodule,real-timediagnosisdoctorcallingmodule:
Patientsself-servicemodulemainlyinpatientscompletedtheregistrationtothetreatment,firstreadthenumberinformationcurrentpatientbytheself-serviceterminal,andthenwereissuedtoprintthecurrentqueuenumber;real-timediagnosisdisplaymoduleisusedforguidingsystemwillbeacceptabletopatientsbasedontheinformationofdiagnosisandtreatmentofpriorgoodnumbersorted,theninthewaitingareaoutsidethebigscreen;thedoctorcalledmodulemainfunctioniswhenthedoctortocompletethecurrentdiseasediagnosis,doctorsuseadirectiveissuedbythetheterminal,andthenbroadcastinthewaitingarea,calledthenextpatienttotheconsultingroom.
Inordertorealizetheabovefunctionsthispaperintroducesintelligenthospitalclinicmedicalsystem,thesignificanceandfunctionoftheoverallsystemdesignprocess,systemdesignandsystemimplementation:
HardwareBasedontheexistingnetworkstructure,thehospitalcomputerdatamanagementplatformandauxiliaryterminalnumberdistribution,medicaldisplay,calledthework;softwareusingClanguagedesignofthehostcomputeroperationinterface,withlinkstoinformationdatabaseinput,display,callandotherfunctions,theinterfaceissimpleandeasytooperate.
Keywords:
Outpatient,Queueandcallthename,Computernetwork,Database,Clanguage.
1.2国能外发展趋势............................................
第1章绪论
1.1课题设计的背景与意义
医院作为向患者提供医疗护理服务的机构在公民的日常生活中起着举足轻重的作用。
随着社会的进步与公民健康意识的提高,人们对自身的健康问题尤为关心,无论大病小病只要身感不适大部分人都会去医院求助医生,这就导致医院的医疗水平、医疗环境等问题在医患关系中变得尤为突出。
患者通常希望去最好的医院找最好的大夫,同时也希望在一个舒适、安静的环境中完成整个就医过程。
现阶段我国的医疗机构主要有以下几种情况,小型医院由于医生的水平以及检查设备的限制,通常都是医生等待患者,而大型医院通常都是患者排队等待医生的诊治,无论是门诊看病还是各种检查每个环节通常都是大排长龙,去医院看病到检查通常要好几天才可以完成整个过程,在这样大规模的就诊来访量的前提下,医院很难为患者提供一个良好的就医环境。
为了解决候诊区域人员混乱、嘈杂等问题,本文提出了一种依托于网络平台技术的智能门诊导医系统,目的是节省患者排队时间、提高患者就诊效率、辅助提高医疗服务质量,最终为患者看病创造一个安静文明的就诊环境。
1.2国内外研究现状以及发展趋势
1.2.1国内应用情况
排队叫号系统现阶段在国内应用比较广泛,经由1998年到2001年起步阶段、2001到2003年发展阶段至今高速发展阶段,逐渐应用在银行、电信等行业的业务窗口处使用。
例如在银行,通常储户在自助终端根据自己办理的业务类型(存取款业务、VIP大客户业务等)取得排队号码纸,号码纸上通常显示储户获取的排队号码、储户之前还有多少用户在办理业务等,如遇到企业与个人VIP大客户,系统还会为其安排优先办理。
这种排队叫号终端的应用,很好的缓解了银行窗口单位业务量大,排队混乱的问题,既提升了银行的服务质量也保证了每位储户办理业务的安全性。
1.2.2国外应用情况
排队叫号技术最早出现在欧美等国家,导医技术初始阶段主要是分诊护士对患者人工呼叫,随着科技的进步、计算机技术的不断发展,智能导医系统应用逐渐广泛,目前已具备多种功能如语音提示、语音呼叫、呼叫终端综合显示平台;发号功能也有触摸屏取号、按键取号、特殊识别取号等等。
目前国内部分大型医院及体检机构有使用智能导医系统,越来越多的医院、体检中心有对这种系统的需求,智能排队叫号功能在导医系统中有很好的应用前景。
1.3课题目的及意义
本课题是人们在日常生活中经常遇到的,就像医院、银行等很多服务部门我们都会不可避免的亲身经历过排队的体验,这些与我们紧紧相关,设计本课题能够解决我们最直接的日常问题,在当今各行各业的信息化、智能化建设越来越普及的形势下,整个社会对各个行业的办事效率的要求越来越高,既要满足被服务人员的服务需求,又要提升服务质量,提高服务效率。
现在人们不仅仅要求服务机构满足业务上的需要,还要求尽量减少人们的等待时间,而服务机构本身由于竞争的需要,也要求提高其办事效率和服务的形象。
通过排队叫号系统,解决了上述很多繁杂的问题,为人们创造了一个良好的环境,有利于社会的发展进步[4]。
通过本课题,我对之前所学的知识进行了巩固,使我在所学的微型计算机原理、单片机课程、C语言等的基础上实现对实际问题的分析、研究和具有初步解决此类问题的能力,能够对现代生活中的智能化过程控制技术有着进一步的了解,并为今后从事工业控制领域的相关工作提供帮助。
可见,研究本课题具有很大的实际意义。
1.4课题的研究内容
智能门诊导医系统主要分为患者自助取号模块、实时就诊情况显示模块、医生叫号模块组成:
患者自助取号模块主要作用是在患者完成挂号前往就诊时,首先由自助服务终端读取当前患者的编号信息,然后为患者下发打印当前排队等候号码;实时就诊情况显示模块的作用是导医系统将即将接受诊治的患者信息依据事先发好的号码进行排序,然后在候诊区外的大屏幕上显示出来;医生叫号模块主要的作用是当医生完成当前病患的诊断工作后,由医生利用叫号终端发出指令,然后在候诊区域进行广播,叫下一位患者前去诊室就诊。
为实现上述功能本文主要介绍了医院智能门诊导医系统的意义与作用、系统的整体设计流程、系统的详细设计方法以及系统的实现情况:
硬件方面依托于医院现有网络结构、计算机数据管理平台外加辅助终端进行号码分发、就诊显示、叫号等工作;软件方面采用C语言设计,链接后台数据库进行患者信息的录入、显示、呼叫等功能,界面简单易于操作。
有效缓解了医生工作受患者影响、患者就诊、检查杂乱无序等问题。
第2章排队叫号系统整体设计
本章首先对医院的业务流程进行分析,提取出智排队叫号系统的基本需求,然后依据需求分析结果完成系统的整体结构设计。
为了改善门诊就诊的环境,提高医院的服务水平,我们有必要开发一套智能的医导系统来辅助原有的人工医导的管理模式,为此我们首先对医院门诊部门的工作业务流程进行分析与调研,然后从中升华分析出合理的系统需求,在Linux环境下,按要求编写所需对应功能的程序。
搭建C/S构架(TCPIPV4),根据流程图编写程序,服务器端建立线程,定
义各种需求对应的全局变量。
按实际需求,处理对应数据。
最后进行编译与调试。
2.1整体设计框架
显示友好提示
提示对应功能
图2.1方案一系统框图
2.2.1患者自助取号功能
为了解决大型医院人工分诊混乱嘈杂等问题,根据医生与分诊护士的需求与现有门诊接诊情况,提出一种患者自助式排队候诊系统,该系统在自助取号阶段应该包括以下模块:
(1)患者信息分析功能
对于初诊还是复诊的患者系统最好能通过合理的算法给出一个优化的分析方案,合理安排候诊区域的患者排队情况。
(2)患者取号排队功能
患者通过自助系统将就诊卡号扫描后,系统应该根据数据库中患者就诊情况进行分析,选择一个合适的优化算法,对候诊患者的排队方式给出一个最佳的排序建议,据此判断结果由自助终端自动打印出患者的排队号码。
2.2.2实时就诊情况显示功能
(1)诊区外当前就诊情况显示提示功能
智能门诊导医系统采用的是患者自助式的刷卡取号排队模式,很大程度上减少了分诊护士的工作量,对分诊以及呼叫患者的工作有系统自动分析完成,当患者刷卡取号后,只需要关注诊区外的屏幕显示信息,即可知道当前患者的就诊情况,下一位患者的姓名,当前排队的总人数等信息。
(2)护士对患者排队情况的简单维护功能。
由于自助取号系统的辅助,分诊护士的工作简化很多,护士由原来的分诊工作执行者转变为了排队叫号系统的维护者,当诊区外的显示屏显示出现故障、乱序、无显示等情况时,分诊护士应该采取相应措施,使系统复位从新工作,如遇护士无法修复的问题,护士应该软件硬件提供方联系进行维修。
(3)手工分诊与优先排队功能
当自动分诊系统运行过程中出现故障时,为了使医院正常的工作可以进行,应该由当前护士将自动分诊切换到人工分诊。
对于一些有特殊服务需求的病患,如老、弱、病、残、孕等情况,系统应该留有VIP模块,为这些人优先安排检查。
2.2.3医生呼叫就诊患者号码功能
医生呼叫就诊患者号码模块应具备以下功能:
(1)自动呼叫功能:
当前患者诊治结束后,有医生通过呼叫终端的按钮直接呼叫下一位就诊患者。
(2)人工呼叫功能:
为医生留有权限,医生可以根据当前排队信息手动选择下一位被呼叫的患者。
此功能应用起来要考虑实际情况,医生有权干预,但是由于医生的看诊情况实时的显示在候诊区域,因此医生不要无原因的使用该权限修改看诊顺序,避免造成候诊区域的混乱。
第3章排队叫号系统的实现与测试
本章首先对医院的业务流程进行分析,提取出智能医导系统的基本需求,然后依据需求分析结果分别完成系统的前台和后台的软件设计。
3.1前台软件功能介绍
程序中,分别实现了客户端和服务器的排号功能和叫号功能,客户端排号功能表现为,显示排序号,排队剩余人数。
服务器端实现对不同队列的叫号功能,并在界面显示对应提示。
3.1.1客户端排号功能实现过程
定义初始人数和排队剩余人数,按初始界面提示的不同功能,对排队人数进行累加操作,然后显示出排队序号和队伍中人数。
intcounter=0;
intfirst_person=0;
intvip_counter=0;
intvip_first_person=0;
初始值都赋值为0。
分为正常队伍,和vip队伍。
printf("—————————————————\n");
printf("|序号B%d排队人数%d|\n",vip_counter,vip_counter-vip_first_person-1);
printf("—————————————————\n");
排队序号的显示格式和对应数据的具体操作。
3.1.2服务器叫号功能实现过程
接收客户端数据,首先进行正常用户和vip客户的判断,然后输出对应数据,并显示相应友好提示。
printf("请%s",buf_ret);
//write(1,buf_ret,read_ret);
printf("号,到服务窗口\n");
3.2界面设计过程
用printf构建简单界面,给出对应提示。
如图3.1所示:
3.1界面显示示意图。
3.3主要实现代码
主要包块客户端和服务区两个模块的代码,并解释代码实现的功能。
3.3.1客户端主要实现代码
#include
#include
#include
#include
#include
#include
#include
注释:
导入对应头文件。
#definemyperr(x)perror(x);exit(0)
注释:
预定义错误判断。
voidmain()
{
intsockfd,ret;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
myperr("socket");
}
structsockaddr_inservaddr;
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons((short)4008);
注释:
IPV4地址结构,并转换成16位网络字节序
structhostent*server;
server=gethostbyname("127.0.0.1");
if(server==NULL)
{
herror("gethostbyname");exit(0);
}
servaddr.sin_addr.s_addr=*(uint32_t*)server->h_addr;
//inet_pton(AF_INET,"192.168.0.169",&servaddr.sin_addr.s_addr);
ret=connect(sockfd,(structsockaddr*)&servaddr,sizeof(servaddr));
注释:
给出固定地址结构参数。
if(ret==-1)
{
myperr("connect");
}
charbuf[128];
charbuf_ret[1024];
注释:
定义传递数组。
intread_ret;
while
(1)
{
//scanf("%s",buf);
//write(sockfd,buf,strlen(buf));
printf("****************\n");
printf("按回车开始下一个\n");
printf("****************\n");
注释:
客户端给出提示界面。
getchar();
注释:
接收回车。
memset(buf_ret,0,sizeof(buf_ret));
注释:
读写前,清空数组。
read_ret=read(sockfd,buf_ret,sizeof(buf_ret));
printf("请%s",buf_ret);
//write(1,buf_ret,read_ret);
printf("号,到服务窗口\n");
注释:
显示对应友好提示。
fflush(stdout);
注释:
释放空间。
}
}
3.3.2服务器主要实现代码
#include
#include
#include
//#include
#include
#include
#include
#include
#include
#definemyperr(x)perror(x);exit(0)
注释:
头文件导入。
intcounter=0;
intfirst_person=0;
intvip_counter=0;
intvip_first_person=0;
intflg=0;
注释:
定义全局变量。
voidmain()
{
intsockfd,sel;
pid_tpid_s;
pid_s=fork();
注释:
创建子进程。
if(pid_s==0)
{
while
(1)
{
printf("\t\t\t\t***********************沈阳盛京医院*************************\n");
printf("\t\t\t\t\t\t\t请选择所需服务\n");
printf("\t\t\t\t1.普通挂号2.办理住/出院3.取药4.复诊5.VIP会员\n");
printf("\t\t\t\t***********************沈阳盛京医院*************************\n");
注释:
完成界面显示功能。
scanf("%d",&sel);
注释:
接收选择选号。
if(sel>2)
{
//超级选项
flg=1;
getchar();
vip_counter++;
printf("\n");
printf("\n");
printf("—————————————————\n");
printf("|序号B%d排队人数%d|\n",vip_counter,vip_counter-vip_first_person-1);
printf("—————————————————\n");
printf("\n");
printf("\n");
}
注释:
vip数据处理过程。
else
{
getchar();
counter++;
printf("\n");
printf("\n");
printf("—————————————————\n");
printf("|序号A%d排队人数%d|\n",counter,counter-first_person-1);
printf("—————————————————\n");
printf("\n");
printf("\n");
}
注释:
正常数据处理过程。
}
}
elseif(pid_s>0)
{
intsockfd,nsock;
intret;
structsockaddr_inservaddr,cliaddr;
//structhostent*hostall;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
myperr("socket");
}
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port