《排队叫号系统软件设计毕业设计论文(32页).doc》由会员分享,可在线阅读,更多相关《排队叫号系统软件设计毕业设计论文(32页).doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-排队叫号系统软件设计毕业设计论文-第 29 页排队叫号系统软件设计 摘 要医院作为向患者提供医疗护理服务的机构在公民的日常生活中起着举足轻重的作用,随着门诊就诊患者的增多原有的人工导医管理系统已经无法满足现在的就诊要求。为了减少患者就诊排队的等待时间,本文提出了一种依托于网络平台技术的智能门诊导医系统,目的是节省患者排队时间、提高患者就诊效率、辅助提高医疗服务质量,最终为患者看病创造一个良好的就诊环境。排队叫号系统主要分为患者自助取号模块、实时就诊情况显示模块、医生叫号模块组成:患者自助取号模块主要作用是在患者完成挂号前往就诊时,首先由自助服务终端读取当前患者的编号信息,然后为患者下发打印当
2、前排队等候号码;实时就诊情况显示模块的作用是导医系统将即将接受诊治的患者信息依据事先发好的号码进行排序,然后在候诊区外的大屏幕上显示出来;医生叫号模块主要的作用是当医生完成当前病患的诊断工作后,由医生利用叫号终端发出指令,然后在候诊区域进行广播,叫下一位患者前去诊室就诊。为实现上述功能本文主要介绍了医院智能医院导医系统的意义与作用、系统的整体设计流程、系统的详细设计方法以及系统的实现情况:硬件方面依托于医院现有网络结构、计算机数据管理平台外加辅助终端进行号码分发、就诊显示、叫号等工作;软件方面采用C语言,在Linux环境下编译,链接后台数据库文件进行患者信息的录入、显示、呼叫等功能,界面简单易
3、于操作。关键词:门诊,排队叫号,计算机网络,数据库,C语言。AbstractHospital as providing medical care to patients with institutions play a decisive role in the daily lives of citizens in the patients at the clinic, with the increase of the original manual guide medical management system has been unable to meet the medical requi
4、rements now. In order to reduce the waiting time of patients with queuing, the intelligent outpatient presents a depends on network platform technology guide medical system, the purpose is to save the patients waiting time, improve efficiency, help patients to improve the quality of medical service,
5、 the final treatment to create a good environment for treatment for patients.Intelligent medical guidance system is mainly divided into patients self-service module, display module, real-time diagnosis doctor calling module: Patients self-service module mainly in patients completed the registration
6、to the treatment, first read the number information current patient by the self-service terminal, and then were issued to print the current queue number; real-time diagnosis display module is used for guiding system will be acceptable to patients based on the information of diagnosis and treatment o
7、f prior good number sorted, then in the waiting area outside the big screen; the doctor called module main function is when the doctor to complete the current disease diagnosis, doctors use a directive issued by the the terminal, and then broadcast in the waiting area, called the next patient to the
8、 consulting room.In order to realize the above functions this paper introduces intelligent hospital clinic medical system, the significance and function of the overall system design process, system design and system implementation: Hardware Based on the existing network structure, the hospital compu
9、ter data management platform and auxiliary terminal number distribution, medical display, called the work; software using C language design of the host computer operation interface, with links to information database input, display, call and other functions, the interface is simple and easy to opera
10、te.Keywords:Outpatient, Queue and call the name,Computer network,Database,C language.目 录排队叫号系统软件设计IAbstractII目 录IV第1章 绪 论V1.1 课题背景与意义V1.2国能外发展趋势.1.2.1 国内应用情况VI1.2.1 国内应用情况VI第2章 排队叫号系统整体设计VIII2.1 整体设计框架VIII2.2.1 患者自助取号功能IX2.2.2 实时就诊情况显示功能IX2.2.3 医生呼叫就诊患者号码功能X3.1 前台软件功能介绍123.1.1 客户端排号功能实现过程123.1.2 服务器
11、叫号功能实现过程123.2 界面设计过程133.3 主要实现代码133.2 后台数据库25总 结28致 谢30参考文献31附 录A33 第1章 绪 论1.1课题设计的背景与意义医院作为向患者提供医疗护理服务的机构在公民的日常生活中起着举足轻重的作用。随着社会的进步与公民健康意识的提高,人们对自身的健康问题尤为关心,无论大病小病只要身感不适大部分人都会去医院求助医生,这就导致医院的医疗水平、医疗环境等问题在医患关系中变得尤为突出。患者通常希望去最好的医院找最好的大夫,同时也希望在一个舒适、安静的环境中完成整个就医过程。现阶段我国的医疗机构主要有以下几种情况,小型医院由于医生的水平以及检查设备的限
12、制,通常都是医生等待患者,而大型医院通常都是患者排队等待医生的诊治,无论是门诊看病还是各种检查每个环节通常都是大排长龙,去医院看病到检查通常要好几天才可以完成整个过程,在这样大规模的就诊来访量的前提下,医院很难为患者提供一个良好的就医环境。为了解决候诊区域人员混乱、嘈杂等问题,本文提出了一种依托于网络平台技术的智能门诊导医系统,目的是节省患者排队时间、提高患者就诊效率、辅助提高医疗服务质量,最终为患者看病创造一个安静文明的就诊环境。1.2 国内外研究现状以及发展趋势1.2.1 国内应用情况排队叫号系统现阶段在国内应用比较广泛,经由1998年到2001年起步阶段、2001到2003年发展阶段至今
13、高速发展阶段,逐渐应用在银行、电信等行业的业务窗口处使用。例如在银行,通常储户在自助终端根据自己办理的业务类型(存取款业务、VIP大客户业务等)取得排队号码纸,号码纸上通常显示储户获取的排队号码、储户之前还有多少用户在办理业务等,如遇到企业与个人VIP大客户,系统还会为其安排优先办理。这种排队叫号终端的应用,很好的缓解了银行窗口单位业务量大,排队混乱的问题,既提升了银行的服务质量也保证了每位储户办理业务的安全性。1.2.2 国外应用情况排队叫号技术最早出现在欧美等国家,导医技术初始阶段主要是分诊护士对患者人工呼叫,随着科技的进步、计算机技术的不断发展,智能导医系统应用逐渐广泛,目前已具备多种功
14、能如语音提示、语音呼叫、呼叫终端综合显示平台;发号功能也有触摸屏取号、按键取号、特殊识别取号等等。目前国内部分大型医院及体检机构有使用智能导医系统,越来越多的医院、体检中心有对这种系统的需求,智能排队叫号功能在导医系统中有很好的应用前景。1.3 课题目的及意义 本课题是人们在日常生活中经常遇到的,就像医院、银行等很多服务部门我们都会不可避免的亲身经历过排队的体验,这些与我们紧紧相关,设计本课题能够解决我们最直接的日常问题,在当今各行各业的信息化、智能化建设越来越普及的形势下,整个社会对各个行业的办事效率的要求越来越高,既要满足被服务人员的服务需求,又要提升服务质量,提高服务效率。现在人们不仅仅
15、要求服务机构满足业务上的需要,还要求尽量减少人们的等待时间,而服务机构本身由于竞争的需要,也要求提高其办事效率和服务的形象。通过排队叫号系统,解决了上述很多繁杂的问题,为人们创造了一个良好的环境,有利于社会的发展进步4。通过本课题,我对之前所学的知识进行了巩固,使我在所学的微型计算机原理、单片机课程、C语言等的基础上实现对实际问题的分析、研究和具有初步解决此类问题的能力,能够对现代生活中的智能化过程控制技术有着进一步的了解,并为今后从事工业控制领域的相关工作提供帮助。可见,研究本课题具有很大的实际意义。1.4 课题的研究内容智能门诊导医系统主要分为患者自助取号模块、实时就诊情况显示模块、医生叫
16、号模块组成:患者自助取号模块主要作用是在患者完成挂号前往就诊时,首先由自助服务终端读取当前患者的编号信息,然后为患者下发打印当前排队等候号码;实时就诊情况显示模块的作用是导医系统将即将接受诊治的患者信息依据事先发好的号码进行排序,然后在候诊区外的大屏幕上显示出来;医生叫号模块主要的作用是当医生完成当前病患的诊断工作后,由医生利用叫号终端发出指令,然后在候诊区域进行广播,叫下一位患者前去诊室就诊。为实现上述功能本文主要介绍了医院智能门诊导医系统的意义与作用、系统的整体设计流程、系统的详细设计方法以及系统的实现情况:硬件方面依托于医院现有网络结构、计算机数据管理平台外加辅助终端进行号码分发、就诊显
17、示、叫号等工作;软件方面采用C语言设计,链接后台数据库进行患者信息的录入、显示、呼叫等功能,界面简单易于操作。有效缓解了医生工作受患者影响、患者就诊、检查杂乱无序等问题。第2章 排队叫号系统整体设计本章首先对医院的业务流程进行分析,提取出智排队叫号系统的基本需求,然后依据需求分析结果完成系统的整体结构设计。为了改善门诊就诊的环境,提高医院的服务水平,我们有必要开发一套智能的医导系统来辅助原有的人工医导的管理模式,为此我们首先对医院门诊部门的工作业务流程进行分析与调研,然后从中升华分析出合理的系统需求,在Linux环境下,按要求编写所需对应功能的程序。 搭建C/S构架(TCP IPV4),根据流
18、程图编写程序,服务器端建立线程,定义各种需求对应的全局变量。按实际需求,处理对应数据。最后进行编译与调试。2.1 整体设计框架 显示友好提示提示对应功能 客户端取号终端叫号 图2.1 方案一系统框图2.2.1 患者自助取号功能为了解决大型医院人工分诊混乱嘈杂等问题,根据医生与分诊护士的需求与现有门诊接诊情况,提出一种患者自助式排队候诊系统,该系统在自助取号阶段应该包括以下模块:(1)患者信息分析功能对于初诊还是复诊的患者系统最好能通过合理的算法给出一个优化的分析方案,合理安排候诊区域的患者排队情况。(2)患者取号排队功能患者通过自助系统将就诊卡号扫描后,系统应该根据数据库中患者就诊情况进行分析
19、,选择一个合适的优化算法,对候诊患者的排队方式给出一个最佳的排序建议,据此判断结果由自助终端自动打印出患者的排队号码。2.2.2 实时就诊情况显示功能(1)诊区外当前就诊情况显示提示功能智能门诊导医系统采用的是患者自助式的刷卡取号排队模式,很大程度上减少了分诊护士的工作量,对分诊以及呼叫患者的工作有系统自动分析完成,当患者刷卡取号后,只需要关注诊区外的屏幕显示信息,即可知道当前患者的就诊情况,下一位患者的姓名,当前排队的总人数等信息。(2)护士对患者排队情况的简单维护功能。由于自助取号系统的辅助,分诊护士的工作简化很多,护士由原来的分诊工作执行者转变为了排队叫号系统的维护者,当诊区外的显示屏显
20、示出现故障、乱序、无显示等情况时,分诊护士应该采取相应措施,使系统复位从新工作,如遇护士无法修复的问题,护士应该软件硬件提供方联系进行维修。(3)手工分诊与优先排队功能当自动分诊系统运行过程中出现故障时,为了使医院正常的工作可以进行,应该由当前护士将自动分诊切换到人工分诊。对于一些有特殊服务需求的病患,如老、弱、病、残、孕等情况,系统应该留有VIP模块,为这些人优先安排检查。2.2.3 医生呼叫就诊患者号码功能 医生呼叫就诊患者号码模块应具备以下功能:(1)自动呼叫功能:当前患者诊治结束后,有医生通过呼叫终端的按钮直接呼叫下一位就诊患者。(2)人工呼叫功能:为医生留有权限,医生可以根据当前排队
21、信息手动选择下一位被呼叫的患者。此功能应用起来要考虑实际情况,医生有权干预,但是由于医生的看诊情况实时的显示在候诊区域,因此医生不要无原因的使用该权限修改看诊顺序,避免造成候诊区域的混乱。第3章 排队叫号系统的实现与测试本章首先对医院的业务流程进行分析,提取出智能医导系统的基本需求,然后依据需求分析结果分别完成系统的前台和后台的软件设计。3.1 前台软件功能介绍程序中,分别实现了客户端和服务器的排号功能和叫号功能,客户端排号功能表现为,显示排序号,排队剩余人数。服务器端实现对不同队列的叫号功能,并在界面显示对应提示。3.1.1 客户端排号功能实现过程定义初始人数和排队剩余人数,按初始界面提示的
22、不同功能,对排队人数进行累加操作,然后显示出排队序号和队伍中人数。int counter = 0;int first_person = 0;int vip_counter = 0;int vip_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客户的判断,然后输出对应数据,并
23、显示相应友好提示。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 注释:导入对应头文件。#define myperr(x) perror(x);exit(0)注释:预定义错误判断
24、。void main()int sockfd, ret;sockfd = socket(AF_INET, SOCK_STREAM, 0);if(sockfd = -1)myperr(socket);struct sockaddr_in servaddr;memset(&servaddr, 0, sizeof(servaddr);servaddr.sin_family = AF_INET;servaddr.sin_port = htons(short)4008);注释:IPV4地址结构,并转换成16位网络字节序struct hostent* server;server = gethostbyna
25、me(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, (struct sockaddr*)&servaddr, sizeof(servaddr);注释:给出固定地址结构参数。if(ret = -1)myperr(connect);char buf128;ch
26、ar buf_ret1024;注释:定义传递数组。int read_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,
27、read_ret);printf(号,到服务窗口n);注释:显示对应友好提示。fflush(stdout);注释:释放空间。3.3.2 服务器主要实现代码#include #include #include /#include #include #include #include #include #include #define myperr(x) perror(x);exit(0)注释:头文件导入。int counter = 0;int first_person = 0;int vip_counter = 0;int vip_first_person = 0;int flg = 0;注释:
28、定义全局变量。void main()int sockfd,sel;pid_t pid_s;pid_s = fork();注释:创建子进程。if(pid_s = 0)while(1)printf(tttt*沈阳盛京医院*n);printf(ttttttt请选择所需服务n);printf(tttt1.普通挂号 2.办理住/出院 3.取药 4.复诊 5.VIP会员n);printf(tttt*沈阳盛京医院*n);注释:完成界面显示功能。scanf(%d,&sel);注释:接收选择选号。if(sel 2)/超级选项flg = 1;getchar();vip_counter+;printf(n);pri
29、ntf(n);printf(n);printf(|序号B%d 排队人数%d|n, vip_counter, vip_counter-vip_first_person-1);printf(n);printf(n);printf(n);注释:vip数据处理过程。elsegetchar();counter+;printf(n);printf(n);printf(n);printf(|序号A%d 排队人数%d|n, counter, counter-first_person-1);printf(n);printf(n);printf(n);注释:正常数据处理过程。else if(pid_s 0)int
30、 sockfd, nsock;int ret;struct sockaddr_in servaddr, cliaddr;/struct hostent* 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 = htons(short)4008);/hostall = gethostbyname();servaddr.si
31、n_addr.s_addr = INADDR_ANY;ret = bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr);注释:与客户端构架连接。if(ret = -1)myperr(bind);ret = listen(sockfd, 100);if(ret = -1)myperr(listen);int len;pthread_t tid;注释:创建线程,以及实现要球功能。/while(1)len = sizeof(cliaddr);nsock = accept(sockfd, (struct sockaddr*)&cliadd
32、r, &len);void* fun(void* arg);void* funB(void* arg);if(flg = 0)pthread_create(&tid, NULL, fun, (void*)nsock);elsepthread_create(&tid, NULL, funB, (void*)nsock);注释:现成实现函数实现。void* fun(void* arg)int nsock = (int)arg;char buf128,num64;int read_ret;pid_t pid;while(1)memset(num, 0, sizeof(num);sprintf(num
33、, A%d, first_person);write(nsock, num, strlen(num);first_person+;void* funB(void* arg)int nsock = (int)arg;char buf128,num64;int read_ret;pid_t pid;/while(1)memset(num, 0, sizeof(num);sprintf(num, B%d, vip_first_person);write(nsock, num, strlen(num);vip_first_person+;3.2 后台数据库文件存储数据,服务器与客户端对同一文件进行读写
34、,完成数据的存储,更新以及保存。软件运行时,要依托数据库文件,如果服务器与客户端不能正常访问数据库文件,系统会报出对应错误。 以下代码块是用来连接数据库的通讯过程,要连接MYSQL,必须建立MYSQL实例,通过mysql_init初始化方能开始进行连接.typedef struct st_mysql NET net; /* Communication parameters */ gptr connector_fd; /* ConnectorFd for SSL */ char *host,*user,*passwd,*unix_socket, *server_version,*host_inf
35、o,*info,*db; unsigned int port,client_flag,server_capabilities; unsigned int protocol_version; unsigned int field_count; unsigned int server_status; unsigned long thread_id; /* Id for connection in server */ my_ulonglong affected_rows; my_ulonglong insert_id; /* id if insert on table with NEXTNR */
36、my_ulonglong extra_info; /* Used by mysqlshow */ unsigned long packet_length; enum mysql_status status; MYSQL_FIELD *fields; MEM_ROOT field_alloc; my_bool free_me; /* If free in mysql_close */ my_bool reconnect; /* set to 1 if automatic reconnect */ struct st_mysql_options options; char scramble_buf
37、f9; struct charset_info_st *charset; unsigned int server_language; MYSQL;这个结构代表返回行的一个查询的(SELECT, SHOW, DESCRIBE, EXPLAIN)的结果。返回的数据称为“数据集”,用过数据库的朋友应该对数据库中查询后得到的结果集不会陌生,在C的API里对应的就是MYSQL_RES了,从数据库读取数据,最后就是从MYSQL_RES中读取数据。typedef struct st_mysql_res my_ulonglong row_count; unsigned int field_count, cur
38、rent_field; MYSQL_FIELD *fields; MYSQL_DATA *data; MYSQL_ROWS *data_cursor; MEM_ROOT field_alloc; MYSQL_ROW row; /* If unbuffered read */ MYSQL_ROW current_row; /* buffer to current row */ unsigned long *lengths; /* column lengths of current row */ MYSQL *handle; /* for unbuffered reads */ my_bool e
39、of; /* Used my mysql_fetch_row */ MYSQL_RES; 总 结 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。我的题目是文章处理系统的设计,对于我们这些新手来说,这是很大的考验,我一千次一万次的问自己,怎么才能找到课堂所学与实际应用的最佳结合点?怎么才能让自己的程序在篇幅上简单,在使用价值上丰富?怎样让自己的业余更靠近专业?怎样让自己的计划更具有
40、序性,而不会忙无一用?机会是老师,学校,以及无数代教育工作者给的,而能力是自己的,耐性是需要的。经过自己的琢磨,听取了师姐,师兄们的建议,还查阅了很多书籍,才做到了心中有数,才了解了C语言课程设计的真正用意培养自学能力,养成程序编辑的好习惯。我从来不相信车到山前必有路的说法,认为那只是懒惰者自寻懒惰的借口,我要积极,要把握,要努力。回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的
41、,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在郭老师的辛勤指导下,终于游逆而解。同时,在郭老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示
42、忠心的感谢在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。老天不会让我太过顺利,他在这最后的时刻设置的障碍,是要考验我的能力,他要置我于死地?在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。没有了柳暗花明的一天,那么我怎么能说经受住了考验?谢谢老师的那句话,她说:人力有所不能及,然而,人的精神是不会败倒的。我鼓起
43、勇气,到处问,到处查资料,黄天不负有心人,在一篇文章上,终于看到了我所特别要求的函数,我实现了组合是关键的理论。不得不说这是精神的胜利,是永不言败的精神让我的程序重见天日。谢谢给我指点迷津的老师。6月18日,我们的课程设计结束了,但是它留给我的印象是不可磨灭的。无论我以后会不会涉及到C语言程序编译的研究,我想,我至少掌握了一种系统的研究方法,我们学习的目的就在于运用,我们运用这种研究方法的时候会很多,我最后要感谢课程设计,它的确教会我很多。 致 谢 本次毕业设计的主要内容已经完成,首先要非常感谢我的指导老师杨老师。从最初的选题到最后的论文的定稿,都是在杨老师的精心指导下才得以顺利完成的,在这个过程中,杨老师投入了大量的精力,给予我很多有益的指导和帮助,经常督促我独立思考,但也为我指点迷津,耐心讲解,帮助我开拓研究思路,并积极地鼓励我,给我完成设计的很大信心,杨老师严谨的治学态度、敏锐的学术思维、精益求精的工作态度、朴实、随和的