您的当前位置:首页正文

一种基于Linux智能排队系统的设计与实现

2024-09-04 来源:步旅网
第34卷第2期 2013年4月 通化师范学院学报(自然科学) JOURNAL OF TONGHUA NORMAL UNIVERSITY Vo1.34№2 Apr.2013 一种基于Linux智能排队系统的设计与实现 李金友,杨林,齐颖 (通化师范学院计算机学院,吉林通化134001) 摘要:目前,随着我国电子化信息化的日益推广,排队系统已被广泛地应用到社会的各个服务领域,该文运用排队理论分 析了排队系统的三个组成部分、性能的指针和模型,设计出排队系统模型.运用C++语言完成接口设计以及排队系统指针的 计算程序,利用QT完成界面设计. 关键词:排队系统;服务器;客户;线程 中图分类号:TP31 文献标志码:A文章编号:1008—7974(2013)02—0030—03 智能排队系统又称排队机(Queue Management System)、叫号机、排号机、号票机、发号机、取号机。 示屏信息到相应的窗口办理业务.具体原理图如图 1所示. 罾音呼I l智Il叫缛稿l毙■l  l I l 在一些银行、服务大厅、医院等场所随处可见.在国 外排队系统已有多年的历史,被广泛用于需要排队 等候的各个领域;在我国排队系统的出现时间较短, 但得到了快速发展.早期排队系统以单片机为主,近 些年来随着电子市场的发展,逐渐被完整的计算机 系统所替代. l州终■II鲁能一'Il I N l ——‘IlL ——] 3e 嵌入式I 障鼻lL主机1 3e 】[r l啪lI量 屏l I N I 1 智能排队系统工作原理 智能排队系统主要分服务器和叫号终端两部 分,它的工作原理主要由以下三个方面构成:一是服 务器端.它根据用户办理的业务选择对应的服务,从 取号打印机打印服务序号,票号上有相应的服务类 lI J j} 匍堑望垫I  Il L显示屏lED I . r,l l I 圈1 智能排队系统原理图 2系统分析 一个排队系统包括六要素: 型、排队序号、当前现有等待人数、时间等信息,然后 到相应的客户等待休息区等待.二是叫号终端.即每 个服务窗口配有一个排号叫号终端,分别通过网络 与排队服务器连接,多个窗口的排号叫号终端通过 (1)客户到达过程:耐心客户/非耐心客户、客 户到达时间间隔可以看作一个随机变量、用一个随 机过程描述客户到达模式、平稳/非平稳到达模式. (2)服务过程:状态无关/状态相关、服务时间 网络连接到排队主机服务器.三是智能分号显示屏. 当服务窗口的工作人员开始服务时,通过叫号终端 发送呼叫请求,排队服务主机回应呼叫终端的呼叫 可看作一个随机变量、平稳 #平稳服务时间. (3)服务器数量:单个/多个服务器、多服务器 多队列或多服务器单队列. (4)系统容量:客户部能立即获得服务时选择 等待/离开、有限/无限个等待位. (5)顾客源数量:有 无限. 信息,并根据结果处理队列,响应客户端请求,给叫 号终端屏分配服务号,并语音给出语音提示:“请 XX号顾客到XX号窗口”,用户根据语音提示和显 } 收稿日期:2013-01—15 作者简介:李金友(1972一),男,吉林通化人,硕士,通化师范学院计算机学院副教授. 基金项目:吉林省教育厅科技项目(吉教科合字[20121第527号);通化师范学院院级项目(JY2012076) ・30・ (6)排队规则:优先级、抢占优彤非抢占优先. InitQueue(&Other); 3系统功能改进 与传统的排队系统相比较,主要改进了以下两 个方面的内容: 第一,实现过号加号功能.常见的排队系统中, 有的客户由于诸多原因错过叫号时间,只能再进行 叫号等待.文中所设计的系统在对待此类问题实现 了加号功能,对错过的客户按一定的时间阀值,系统 自动加入到排队队列中,时间的阀值可以根据需要 while(1){ et=rread(clientfd,buf,sizeof(buf)一1); if(ret<=O) eturrn; if(strcmp(buf,”0”)==0){ i=i+1;if(i==1000){ i=1; }m=i; EnQueue(&Vip,i); 进行设置,错过的客户,不用再进行叫号,在客户端 屏幕会显示错过用户的加号顺序,按提示进行等待 即可. 第二,实现叫号无纸打号排队功能.常见的排队 系统中,实现打印小票凭票排队功能.全国统计下 来,一年要浪费许多纸张,将是很大的浪费,不符合 现在的环保要求.该系统对该功能进行了改进,不打 印小票,客户可以根据屏幕显示号码等待排序,为了 防止错误,可以对每个客户系统自动进行拍照,工作 人员可以根据LED屏幕上用户照片判断是否是该 号码客户. 4系统实现 软件系统设计主要分为服务器、叫号终端两个 主要部分,每个部分均包含根据事先约定的通信协 议设计的通信软件,系统使用的是先来先服务排队 规则. (1)服务器端代码实现.1inuxC++多线程设计 是基于Linux系统下的多线程程序设计,包括多个 任务程序的设计,并发程序的设计,网络程序的设计 等.LinuxC++系统下的多线程遵循POSIX线程接 口,通常称为pthread.编写LinuxC++下的多线程 程序时,需要使用头系统提供的文件pthread.h,连 接时需要使用系统库libpthread.a. 服务器核心部分代码simpleServer.C如下: void}thread(void arg){ im i=0: intj=1000; int k=3000; char buf[2]; char buff[5]; int ret=0; int m=0; int a; int clientfd=}(int )arg; InitQueue(&Vip); InitQueue(&Norma1); PrintQueue(&Vip); } if(stermp(buf,”1”)==0){ j++; if(j==3000){ j=1001; } m=j; EnQueue(&Normal,j); ‘ } if(stermp(bur,”2”)==O){ k++: if(k==5000){ k=3001; } m=k; EnQueue(&Other,k); } if(strcmp(buf,”V”)==0){ DeQueue(&Vip,&m); } if(s ̄cmp(buf,”N”)==0){ DeQueue(&Normal,&m); } if(strcmp(bur,”0”)==0){ DeQueue(&Other,&m); }bzero(buff,sizeof(buf)); spfinff(buf,”%d”,m); write(elientfd,buf,strlen(buf)); } (2)客户端核心部分代码: void myqueue::cash_button(){ char buf[1000]; bzere(bur,sizeof(bur)); write(fd,”0”,1); erad(fd,buf,sizeof(bur)一1);/}确定协议・/ prinff(”%s\n”,buf); QString tarp; (下转第34页) ・31・ 单元中的值,因此主函数中两个变量的值并没有被 的参数传递.事实上,无论参数的类型如何,参数间 交换.例3中各变量值的变化情况如图3所示. 的数据传递方式都是单向的,即只能由实参传递给 圈: …… ■囊 囡 白 l‘I 形参,值传递和地址传递的区别仅在于传递的数据 lit…目生———————+. 一 类型不同. 囡 蛔 田 囡p2/ 囡 :/ 囡p2/ 参考文献: [1]董汉丽.c语言程序设计[M].大连:大连 ̄3t'r大学出版社, 圈3参数为指针类型且交换指针变量本身时备变■变化情况 2009. 3结语 [2]谭浩强.c程序设计(第四版)[M].北京:清化大学出版社, c语言中,一般将函数参数的传递方式分为值 2OlO. [3]董鑫正.c语言教学中函数参数传递问题的探讨[J].电脑 传递和地址传递两种,这只是根据参数类型的不同 知识与技术,2012(7). 而进行的一种分类.值传递指参数为普通类型时的 [4]马新.c语言函数间参数传递机制的探讨[J].白城师范学 参数传递,而地址传递一般指参数的实质是地址类 院学报,2008(6). (责任编辑:王前) Discussion on C Language Function Parameter Passing ——Taking Exchange Problems嬲Example SONG Mei——ying (Lishi Normal Campus,Lvliang College,Lvliang,Shartxi 033000,China) Abstract:The paper discusses the C language function parameter passing.C language function implements modular programming to achieve a certain function by function calls.When calling function with parameters, there is data transfer between the calling function and the called function.Whether it is passed by value and passed by address,the data transfer between the parameters ale one—way,and passed only from the actual parameters to the formal parameter. Key words:function call;one—way transfer;value passing;address passing (上接第31页) QString string(buf); 块的软件设计与实现进行了较为完整的概括,在一 tmp=”您的现金业务号码为”+string+”位顾客请到休 些类似的技术应用上都有借鉴性. 息区等待”; 参考文献: showlabel一>setText(tmp); [1]王策,张连芳,董森,等.基于Linux的嵌入式系统开发[J]. } 计算机应用,2002(7). 5结语 [2]黄卓君.解决银行排队难题的根本出路何在[J].南方金融, 本文基于Linux智能排队系统排队的若干问题 2007(7). [3]王庆瑞。数据结构教程[M].北京:希望电子出版社,2002. 的讨论,主要是针对项目整体设计进行说明,确定系 [4]赵祖龙.基于Qt/Embedded的嵌入式跨平台聊天系统设计 统服务器和客户端的设计与实现方法,并对各个模 [J].信息技术,2010(12). (责任编辑:王前) Design and Implementation of an Intelligent Queuing System Based on Linux LI Jin—you,YANG Lin,QI Ying (Colelge of Computer,Tonghua Normal University,Tonghua,Jilin 134002,Chian) Abstract:With the increasing promotion of China ̄electronic information technology。the queuing system has been widely applied to val3ou8 social services areas.The paper analyzed three components of hte queuing,the opinter of performance and model by using the queuing theory to design the queuing system model,using C++language to complete the interface design as well sa the calculation procedure of the queuing sys‘ tern pointer,using QT to complete the interface desing. Key words:queuing system;server;client;thread ・34・ 

因篇幅问题不能全部显示,请点此查看更多更全内容