版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘 要 排队评价系统是广泛应用于部队、政府、金融、医院、邮政、通信、工商、税务、保险等多个领域。为减少长期以来,人们在服务大厅里办理各项业务排队等候,极大的不方便办理业务的顾客,为改善服务质量、树立良好形象,解决劳累的排队现象,能够很好的解决客户在办理业务中所遇到的排队、等候、拥挤和混乱等现象,真正创造舒适、公平、友好的等候环境而提供的服务终端。本课题研究的目的是研制一款排队评价系统,它主要由服务器、键盘、客户端、扬声器等部分构成。系统利用Windows8作为服务器,WinRT作为客户端,通过TCP协议进行数据传输和处理。客户在用来排队的服务器编号排队等候,业务员按键盘呼叫下一位客户,窗口客户
2、端显示客户信息和窗口号,业务完成并评价服务,同时将评价信息保存。同时免除了令客户不舒服的站立式排队,这种现代化的高科技产品彻底解决了医院普遍存在的站立等候,服务无序的问题,深化并完善了服务的质量。本系统采用Windows系统控制,利用客户端触摸屏显示,扬声器提示的人机交互界面,模拟排队管理系统,科学地处理各种排队情况。操作简便,控制灵活,显示清晰。 关键字:无线排队;服务评价;WinRT;Windows8AbstractQueuing and evaluation system is widely used in the fields of military, government, fina
3、nce, postal, hospital, communication, industry and other areas. In order to reduce people for the business in the service hall waiting in line, which is not convenient for business customers, establish a good image and improve the quality of service, solve the queuing phenomenon, tired, can be a ver
4、y good solution to customers in the process of business in line, waiting, crowded and chaotic phenomena, really create a comfortable, fair, friendly environment and the service terminal provided for customers. The purpose of this research is to develop a queuing system, which mainly consists of serv
5、er, client, keyboard, speakers and other parts. System uses Windows8 as a server, WinRT as the client, data transmission and processing through the TCP protocol. Customers waiting in the server number used to line up, the clerk at the keyboard to call a customer client, window display customer infor
6、mation and the window, after business, and store the evaluation information. At the same time from the customers are not comfortable standing in line, the modern high-tech products, completely solve the common hospital stand waiting, service disorder problems, deepen and improve the service quality.
7、 Using the Windows system to control the system, the touch screen display, a loudspeaker that man-machine interface.Key words:Wireless queuing; Service and evaluation; WinRT; Windows 8目 录1 绪论11.1 课题背景11.2 国内外现状及其水平11.3 课题研究的目的和意义22 可行性分析42.1 经济可行性42.2 技术可行性42.2.1 C/S架构42.2.2 WinRT系统53 需求分析及概要设计63.1
8、系统组成63.2 系统应实现功能63.3 系统运行开发环境及语言73.3.1 系统运行环境73.3.2 系统开发环境83.3.3 系统开发语言84 详细设计及编码94.1 服务器设计94.1.1 服务器前台界面设计94.1.2 服务器后台代码设计114.2 客户端设计224.2.1 客户信息显示模块设计234.2.2 广告计时模块设计294.2.3 服务评价模块设计325 设置及简单测试385.1 软件设置和系统配置385.2 运行测试39结 论42致 谢43参考文献44附录A 英文原文45附录B 中文翻译591 绪论1.1 课题背景 近年来,随着我国社会经济的持续快速发展,资金流动加快,服务
9、行业的不断增加,加之我国政府正在努力构建和谐社会、服务型政府,大量的用户越来越频繁的光顾金融系统、电信、医疗、政府办事大厅等服务部门,时代的发展给这些服务型行业提出新的服务理念,也给这些行业和部门带来了巨大的压力。伴随着经济全球化的大浪潮,各行各业之间的竞争逐渐加剧、每个服务行业业务量在不断增长,业务种类也日益增多,排队等候已成为人们经常面临的实际问题。在银行、医院、电信、税务、工商等营业大厅里,前拥后挤、杂乱无章的排队等候,己是司空见惯的现象,很多窗口也因而秩序混乱,为保护用户隐私而设置的“l米线”也形同虚设。一方面客户因为长时间的站立排队透支体力和精力而疲惫不堪,另一方面工作人员也为长时间
10、遭受众多客户的围绕而不胜其烦,影响了服务质量。因此,改善服务质量、树立良好的企业形象,解决客户劳累的排队现象、创造人性化服务环境已成为急需解决的问题。长时间的站立排队使用户疲惫和厌烦,用户渴望尊重隐私,期望“个性化服务”,只排一个队,只接受“一对一服务”。对服务部门来讲,使用排队评价系统是提高服务质量,提升服务形象,吸引顾客的有利措施。随着信息技术的突飞猛进,智能排队管理系统应运而生。无线排队评价系统是一种综合运用计算机技术、网络技术、多媒体技术、通信控制技术等的高新技术产品,此系统完全模拟人群的排队过程,实现了计算机系统代替客户进行排队的过程。使用排队评价系统后,用户在票号机上取票后,在休息
11、区舒适地等待,听到呼叫后才去对应的窗口办理事务,服务人员面对一个安静的环境,面对一个客户,可以专心办理业务,提高了工作效率,服务完成后用户可以对服务进行评价。操作简便,控制灵活,显示清晰,制作成本低,性价比较高。1.2 国内外现状及其水平排队评价系统是很常见的服务设备,它广泛应用于银行、医院、电信、税务及企事业服务机构。顾客通过取号、自动叫号、动态数据实时监控和效率管理等方法在前台,可以起到工作人员的叫号功能,做到秩序、文明、公平、舒适。在后台领导可通过评价记录得知前台的各项情况。如:各部门的工作情况、各员工的工作状况和客户等候情况等等,以便领导合理安排人员和实行奖惩制度。如今国际上的排队叫号
12、系统发展主要表现在以下几方面:(1)虚拟、物理呼叫器任选。两种配置中的任一种均只利用现有的电脑网络线即可,省却另外单独布线的烦恼,节约了工程布线费用的开支。虚拟呼叫器配置非常适合电脑已联网情况下使用,物理呼叫器较适合不需电脑的科室使用。根据实际配置情况,虚拟和物理呼叫器可在合适的情况下互换。(2)后台查看。可以实现高层管理人员足不出户,即可实时了解服务质量情况,便于适时调动人员、方便管理。(3)高度集成。所有主要器件都内置控制板、微处理器CPU、网络接口。(4)排队叫号系统已经开始向功能齐全、外观时尚且轻便小巧等特点开始发展。国内外同类设计:(1)基于ARM的微控制器的排队叫号系统。设计采用P
13、hilip LPC2134的排队叫号系统中,键盘作为人机接口界面,是嵌入式系统的关键组成部分,液晶显示屏幕作为输出部分。(2)基于单片机的排队叫号系统。系统分为两个模块:抽号模块和叫号模块,其控制核心大部分为AT89C52单片机,抽号模块采用LCD液晶显示器,这样显示数据直观,便于客户理解,叫号模块采用数码管显示,此模块只需显示当前所叫号数,因此采用数码管显示清楚,直观,客户容易看清当前所叫号数,抽号模块输入只需使用一个抽号按键即可,便于客户操作,叫号模块包括叫号键和清零键,工作人员除了可以叫号外,可以随时按清零键,复位排队系统。1.3 课题研究的目的和意义排队评价系统随处可见,也就是我们在生
14、活中经常看到的排队机,它给用户带来了很大的方便。取号服务器,实现了取号排队的功能,至于实际的应用需要硬件与软件的结合。本系统的最终目标是:实现叫号机的基本功能,即用户到达后可以叫号,工作人员使用系统可以对用户叫号以便进行业务办理,管理员对用户及工作人员的相关信息进行统计计。本课题能够让我在所学的软件工程、C#语言和XAML语言的基础上实现对实际问题的分析、研究的能力和具有初步解决此类问题的能力。通过本课题的完成,能够对现代生活中的智能化过程控制技术有着进一步的了解和熟悉,并为今后从事工业控制领域的相关工作提供帮助。由于当今各行各业的信息化、智能化建设越来越普及,整个社会对各个行业的办事效率的要
15、求越来越高,尤其是服务性行业,既要满足被服务人的服务需求,又要提高服务质量,提高服务效率,例如医院门诊、银行业务等。本系统即解决了以上问题,并且实现了目前最新Windows系统上的排队评价功能的软件可以供大家学习交流。2 可行性分析2.1 经济可行性无线排队评价系统的开发可以解决各行各业中因排队长,排队乱等问题带来的不必要的麻烦,人工管理排队既浪费人力,又不能从根本上解决排队长排队乱的问题,而且容易引起争执。其它排队评价系统需要的硬件相对复杂,无论安装还是实际维护都比较麻烦。本系统的开发周期短,耗费资金较少,且有一定的实用价值,各类企事业单位都可以使用。2.2 技术可行性2.2.1 C/S架构
16、C/S(Client/Server)架构,即大家熟知的客户端和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,这也就是目前应用系统的发展方向,适用于局域网。C/S 结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。客户端完成数据处理,数据表示以及用户接口功能;服务器端完成DBMS的核心功能。这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。C/S结构的优点是能充分
17、发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。具体表现在以下两点:(1)应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻
18、。(2)数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在C/S体系下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。2.2.2 WinRT系统Windows
19、 Runtime简称WinRT,新的WinRT 同样也包括传统 Win32、COM 和 .NET Framework API 子集,开发者还可以用 HTML5 和 CSS3 API 进行开发。其它微软编程框架如 .NET Framework 或 Windows C Runtime 库都可以访问 WinRT API。 x86 应用需要重写才能运行于 ARM 架构,而新的 Metro 风格应用可直接运行。win81的分支有win8,win8pro和winRT。win8和win8 pro基本没什么区别,而win8和winRT的区别在于。win8可以在自己的电脑上进行升级,支持安装第三方软件.像普通的
20、PC操作系统一样,而winRT作为一个移动设备系统而开发。Windows RT专注于ARM平台。平板电脑可随身携带。它们不仅轻薄,还带有电池,可延长你的使用时间。启动迅速,可以稳定地连接到电子邮件、社交网络和应用,让你随时随地获知最新资讯。另外,它还随附 Office Home & Student 2013 RT 预览版,即使你在旅途中,也不会影响工作效率。Windows RT 只预安装在精选平板和电脑上,并且只能运行内置应用或你从 Windows 应用商店中下载的应用。当涉及到用户界面的开发的时候,可以使用HTML与CSS样式或使用XAML的你的应用程序的用户界面。当你回到界面层,就
21、可以用HTML & CSS或者是XAML UI,用HTML& Css做出来的界面就是Web了,而是一个Windows应用,早在Vista开始就有了类似的应用,Windows7上做了改进,叫做Gadgets ,Windows 8就进化到了Metero UI,和C+、.NET并驾齐驱了。3 需求分析及概要设计3.1 系统组成l 服务器在排队区附近,取号后实现按号自动排队,显示客户所取编号和当前等待排队的人数。控制扬声器呼叫客户到指定窗口办理业务,并在屏幕显示呼叫信息。数据库存储客户评价信息。l 客户端在业务窗口外,面向客户,业务员只能通过固定按钮呼叫客户。显示用户编号和窗口号,实现
22、业务计时和评价。l 其它LED显示屏(用服务器或客户端显示器代替),扬声器等。3.2 系统应实现功能本系统最终实现的是取号排队、评价服务功能,硬件是用笔记本电脑代替,共分为两个软件,点击排队的服务器软件、工作人员窗口的客户端软件。系统最终能够实现用户取号排队,工作人员呼叫用户办理业务,统计用户评价工作人员服务的信息,并储存统计结果,以便查看和统计。实现现实生活中银行、医院等企事业单位排队办理业务并评价的过程。具体功能如下:(1) 客户可以通过排队机端(服务器)点击取号(设备原因,只显示号码,不出票单),然后排队等待。(2) 业务员办理完当前业务后,点击呼叫按钮(这里用键盘代替实现),通过服务器
23、端的扬声器呼叫下一位客户,并将客户信息和窗口号显示在屏幕上(用服务器屏幕代替)。如果没有客户排队,服务器语音提示。(3) 客户听到呼叫到服务窗口,窗口端显示客户号码和窗口号,用户点击确认后,开始业务计时并办理业务,客户端显示时间和广告图片,图片可以自动切换。(4) 服务结束时,业务员点击按键后,客户端可以进入评价界面,可默认评价是一般,有好评和差评可选择(最后选择的进入记录),评价界面还有可帮助提高服务质量的评价原因,有态度不好、业务不熟和效率不高三项,可以不选,不选则数据库该字段为空。(5) 客户评价完,点击确认评价按钮,业务用时、评价信息存储到服务器端的Access数据库中的评价表1中。客
24、户端界面回到等待呼叫客户界面并等待业务员按键呼叫。系统如图3.1所示:客户端(评价器)服务器(排队机)客户 取号业务员 连接并发送窗口号 按键取号 客户 取号 接受连接并发送编号 服务开始客户 取号客户 传送评价信息 结束并评价评价信息存入数据库图3.1 系统示意图3.3 系统运行开发环境及语言3.3.1 系统运行环境l 硬件环境服务器端:立式触摸一体计算机,无线网卡,扬声器等。客户端:ARM芯片平板专用电脑。l 软件环境服务器端:系统为Windows7及以上,Microsoft.NET Framework 4.5 SDK。客户端:系统为WinRT。3.3.2 系统开发环境Visual Stu
25、dio 2012是微软公司推出的开发环境,Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。是最流行的Windows平台应用程序开发环境。Visual Studio 2012作为一个集成解决方案,适用于无论是个人或者各种规模的开发团队。Visual Studio 2012实现了同事间的无缝协作,提高了生产效率与专注度,最终好的点子变成了优秀的现实应用。可以使用灵活敏捷的规划工具(如容量规划、任务板和积压工作管理)来按照您自己的进度实现增量开发技术和敏捷方法。使用高级建模、发
26、现和体系结构工具可描述您的系统并帮助确保实现您的体系结构构想。 Visual Studio 2012 是一个综合性产品系列,适用于每一位希望升级或创建精彩应用程序的组织、团体和个人开发人员。 VS2012 通过整合先前单个产品中的功能并为每个版本加入新的强大功能,简化了产品系列,并且,它更加适合用于开发 Windows8 专用程序。3.3.3 系统开发语言C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不
27、同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用户界面而创建的一种新的描述性语言。XAML提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面,而这种实现方式和ASP.NET中的"代码后置"模型非常类似。XAML是一种解析性的语言,尽管它也可以被编译。它的优点是简化编程式上的用户创建过程,应用时要添加代码等。本系统采用W
28、inRT和Windows窗体程序,其中WinRT采用C#和XAML结合的方式编写,窗体程序采用C#编写。4 详细设计及编码4.1 服务器设计服务器是在排队区座位附近或靠近门口的地方放置,以便客户点击取号后,实现按号自动排队,客户到等候区座位等候叫号。排队机(即服务器)屏幕初始化时显示的是欢迎文字,当用户点击排队按钮时,屏幕显示该客户点击后系统自动产生的编号,即客户的编号,该编号在系统内是以队列形式存储的,同时显示当前等待排队的人数,用来提示客户排队情况。这是服务器的排队机功能。上一位客户评价业务后,业务员点击按钮呼叫下一位客户,该信号由按键通知客户端,客户端通过无线TCP通信通知服务器,并将窗
29、口号信息发送给服务器,服务器接收到信号后,将在等待排队的客户编号队列出队一个编号,然后将客户编号回复给客户端,并在服务器屏幕上显示刚出队的该客户编号和呼叫的窗口号,与此同时服务器控制扬声器发出语音,呼叫该编号的客户到指定呼叫窗口办理业务,如果当前没有客户排队,服务器控制扬声器告知没有客户在排队等待。当业务员办理完当前业务后,通过无线TCP通信将客户端的客户评价服务的信息发送到服务器端,服务器接收到评价信息,将评价信息添加到指定的数据库的评价表中,存储客户评价信息,可供查看、统计和分析。4.1.1 服务器前台界面设计打开Visual Studio 2012,选择文件-新建-项目,出现新建项目对话
30、框,选择已安装-模板-其它语言-Visual C#,选择Windows窗体应用程序,名称为:Queuemachine窗体,如图4.1所示,其它默认,点击确认项目创建完成。这时Visual Studio自动生成了窗体的基本代码,这时窗体可以运行,但是只是一个空窗体。首先在form1(设计)中设置Size属性为1366*768,即窗体大小为1366*768分辨率屏幕,ControlBox设置为false,是来使窗体没有系统的菜单框,即没有最大、最小化和关闭按钮,窗体背景用属性BackgroundImage,来设置窗体背景图片,Text设置图4.1 新建工程为“排队系统”,就是窗口标题,窗体的属性设
31、置完成。接下来向窗体添加控件,服务器界面很简单,一个label控件,一个textbox控件,还有一个button控件。Label控件属性设置:autosize:Ture,随字体长度改变。location:518,196,size:330,35,Name:label1,backcolor:activecaptiontext,font:宋体,26.25pt,forecolor:buttonface,text:欢迎您使用排队系统,服务器初始化时显示的欢迎文字,textalign:middlecenter,居中显示。Textbox控件,name:textBox1,text:点击下面按钮排队,提示用户排
32、队机的使用方法,其它属性与label属性类似,这里不一一赘述。Button控件属性设置也与前两者类似,name:button1。text:点击排队,是button按钮上显示的文字。与前两者区别较大的是button有一个click事件,即click:button1_Click,即为点击该按钮的产生的事件函数。到此为止服务器前台界面就设计完毕了。初始化效果如图4.2所示。要想实现服务器的各项功能必须依靠后台的逻辑代码来实现,接下来的任务就是后台的逻辑代码设计。图4.2 服务器(排队机)前台界面4.1.2 服务器后台代码设计后台代码需要实现的功能:1. 排队及提示功能:客户点击排队按钮实现排队,屏幕
33、产生相应的提示信息;2. 叫号及提示功能:响应窗口的TCP链接,接收窗口发来的窗口,向该窗口发送排队的客户编号,屏幕显示相应信息,与此同时语音提示客户到该窗口办理业务,如果当前无人排队,语音提示业务员;3. 处理评价信息功能:通过无线TCP通信接收客户评价服务的信息,服务器接收到评价信息后,将评价信息添加到指定的数据库的评价表中,存储客户评价信息,可供查看、统计和分析等操作。1、排队及提示功能实现排队、提示功能实现了机器代替人的站立排队,在编程语言的数据结构中,队列入队与出队与人的排队过程相同,排队是先到先服务,队列是先进先出,所以排队的过程就用队列的入队和出队模拟代替。为充分利用向量空间,克
34、服“假溢出”现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量,存储在其中的队列称为循环队列。由上面的信息我们了解到,采用循环队列有两方面好处:一个是可以防止系统内存资源被大量占有,加大了系统开销,从而会导致系统的负荷增加,处理能力下降。另一个是可以防止“假溢出”现象,保证了服务器的安全稳定的运行,安全稳定对于服务器来说是非常重要的。为了保证系统高效、安全、稳定,队列采用循环队列。接下来要做的就是设计一个循环队列的类,以便实现排队的模拟。循环队列设计思想是:首先写一个新类,名字叫CircularQueue,返回类型为object,参数为32位整型,队列类中有count、l
35、ength、front、rear和elements五个变量,类型都为32位整型,分别是循环队列容量、队列长度、队列的对头、队列的队尾和数组名(控制数组实现队列)。循环队列构造函数带参数32位整型c,使count等于c,即初始化函数可以设置数组长度,从而实现设置队列的长度,length、front和rear都为0。有一个属性Length,用于返回length队列长度值。方法有四个,EnQueue是入队方法,入队时先判断当前length的值是否等于count,如果等于则表示队列已经满了,并抛出异常,提示重新设置队列的长度,实际使用应该设置稍大一些,防止这种情况发生,接下来判断length是否等于0
36、,如果length等于0,则这时front与rear相等,是同一个数组地址,那么将入队值给此时的front队头,如果length不为0,则将队尾rear加1,长度length加1,然后将要入队编号赋值给队尾rear的数组成员,这里有一个地方应该注意,就是当rear等于count的时候,数组长度为count,等于count实际上是超过了数组长度,这时rear应该赋值为0,这样就实现了客户编号的入队和队满抛异常的处理。DeQueue是出队方法,返回值类型为32位整型,相对入队没有异常处理,因为主程序的方法中判断队列空,如果队列为空则不执行出队操作,因此没有异常情况发生,出队函数执行出队时,先将数组
37、front成员值取出给整形i,然后判断length的值,如果length的值不为1则front加1,实际数组中存储时是先存的数地址在数组的小地址的元素中,后存储的元素地址较大,所以这里是加1,如果length为1时,front值保持不变,因为当length为1时front与rear值相等,其数组所表示的元素是一个,这是与数组为空时相同,如果front再加1,那么front值就会大于rear,这时再入队编号时,第一个存入数值的没问题,第二个值将会覆盖了第一个值,导致错误,这种情况我们就是这样处理,出队后length减去1,还有一种情况就是和入队时情况类似,当front等于count时,即超过了数
38、组长度,这时front应该赋值为0。还有两个方法分别是判断队列空和队列满的IsEmpty和IsFull函数,原理是判断length为0和为count,则分别返回true或false。虽然判断队列满和队列空函数没有在主函数中调用,但为了队列类基本功能的完整,还是加上了这两个函数,这样队列就设计完成。接下来在主函数就可已使用这个循环队列的类来建立队列、入队和出队等操作了。有了循环队列,排队的实现就很简单了,前面界面设计时有一个按钮按钮的名字叫button1,它有一个事件函数名字是button1_Click,在这里就对它进行具体的实现,button1_Click事件相当于是主函数Form1的一个函数
39、,与其它函数不同的是这个函数不是由其它函数调用时执行发生,而是由界面按钮点击时执行。函数体很简单,主要的就是两条语句,第一句是count自增,这里的count与队列里的count当然不是一个,因为它们的作用域不同,都是局部变量,这里的count是form类中定义的一个整型数,功能就是用来存储当前客户的信息,用来给客户产生的一个一对一的代号,即客户编号,count中存储的编号就是我们要实现操作控制的一个重点数据,count初始化为0,当用户点击按钮时,count自增一个数就是当前排队人的编号了,所以不会产生重复,而且是连续的正整数也是几乎所有的排队系统使用的方法。第二句是number.EnQue
40、ue(count),这里number就是实例化的队列名,EnQueue(count)是循环队列的入队方法,传入的参数正是上一句代表客户编号的count变量,这样就实现了客户的排队,下面还有三条语句,一个是捕获入队异常(队列满时继续入队)的语句,实现方法是显示一个对话框显示循环队列抛出的异常信息,接下来的语句是控制服务器屏幕显示排队时的提示信息,一个是显示在textbox控件中的“您的号码是:count代表的数”,控制格式为三位数,左面不够补0,label控件中显示的“您前面还有”加队列长度length加“人排队。”,这样提示信息也完成了。到此为止排队功能实现,接下来的任务就是实现叫号及提示功能
41、,就是呼叫客户到窗口和现实提示信息及语音的过程。重点代码:/循环队列 public class CircularQueue private Int32 count; private Int32 length; private Int32 front; private Int32 rear; private Int32 elements; public CircularQueue(Int32 c) elements = new Int32c; length = 0; front = 0; rear = 0; count = c; public Int32 Length get return le
42、ngth; public Boolean EnQueue(Int32 i) if (length = count) throw new Exception("排队无效,请通知工作人员。队列溢出,重新设置队列长度!"); else if (length = 0) elementsfront = i; length+; else rear+; length+; if (rear = count) rear = 0; elementsrear = i; return true; public Int32 DeQueue() Int32 i = elementsfront; if
43、(length != 1) front+; if (front = count) front = 0; length-; return i; public Boolean IsEmpty() if (length = 0) return true; else return false; public Boolean IsFull() if (length = count) return true; else return false; 2、叫号及提示功能实现叫号、提示功能实现的是业务员点击按钮后,系统自动叫号的功能,将排在前面的客户呼叫到窗口,进行业务办理,业务员并不用花精力关心具体的叫号过程
44、,其中重要的数据有呼叫客户的窗口号,被叫客户的编号,叫号及提示功能就围绕着这两个数据的操作来进行实现的,下面来看看具体的实现方法。表面看似简单,但是具体实现起来费了很多精力,原因是因为WinRT通信类与以往的.Net通信类改动较大,而且需要两次通信,分别实现接收窗口号和发送客户编号,由于WinRT中所使用的类出现较晚,对于大家还不是很熟悉,WinRT的设备目前也并不流行,所以有关书籍资料很少,同时当通信出错时,不能确定错误是在哪里发生的。服务器端所实现叫号及提示功能是通过listen方法设计实现的,如何实现叫号功能呢?其实就是窗口号和客户编号数据通过网络通信协议在服务器与客户端之间传输后处理来
45、实现的,这里涉及到通信协议,通信常用的通信协议主要包括TCP/IP、NETBEUI和IPX/SPX三种协议,最常用的就是TCP/IP协议了,它的子协议包括TCP、IP、UDP、ARP、ICMP等,这里选用TCP协议,在实现叫号及提示功能时服务器是处于被动地位的,即它应该处在一个准备的状态,这个状态就是侦听状态,等待客户端的链接,既然需要TCP通信那么首先应该定义一个用来侦听的对象,它的类型TcpListener,设置名字为m_Listener,初始值为null,等待实例化,用途是为后面要实例化侦听来自 TCP 网络客户端的连接确定一个名字,这个定义在Form1类的开始,是一个全局变量,下面我们
46、开始侦听的实现,在listen方法的开始我们就应该开始监听,将刚才用来侦听的m_Listener做一个实例化,实例化时指定了两个参数,一个是网际协议的IP地址,它表示本地 IP 地址,另一个就是端口号,用来侦听传入的连接尝试的端口,分别设置它们为IPAddress.Any和4545,即任何本地IP地址,端口号为4545,在这之前应该做一个判断,如果m_Listener为空才执行此操作,侦听IP和端口设置好了但是还没有让它开始侦听,那么下一条语句就是用m_Listener实例调用start方法开始侦听,这样监听操作就启动了,还应该实现循环监听,链接不是一次,所以要在方法的最外层加上循环while
47、语句,这样就实现了循环监听。现在只是实现了响应客户端的TCP链接,但是不能干什么,下面开始设计它的操作,就是对上面提到的两个数据进行传输和一些处理操作。在上面实例化了监听m_Listener,它作用是监听,现在还要定义一个TcpClient类,用来接收传入客户端连接,命名为m_Client,接受方法是监听类的AcceptTcpClientAsync方法,将其返回值赋值给这个m_Client对象,AcceptTcpClientAsync与其它方有点不同,就是方法调用前加上了关键字await即类似于异步操作,使程序可以继续执行不必一直等待链接,而不去做其它工作,通过这个方法就可以接收传入的链接,下
48、面就可以通过m_Client进行对客户端的链接进行操作了,这里对它操作是执行SendandReceiveMessage方法,客户端连接的传入和对其操作都放在一个异常处理try-catch结构中,以便捕获异常并在屏幕上显示提示信息,信息显示在label1控件中。看一下SendandReceiveMessage方法的用途和实现方法,SendandReceiveMessage这个方法并不是系统自带的,设计它的目的就是向客户端发送客户编号和接受客户端发来的窗口号,并带有显示提示信息和语音叫号等控制功能。首先在这个方法中有一个using语句,using关键字咋这里的作用就是当using语句中的资源使用完
49、成后就自动释放,实现了系统自动回收资源的功能,提高系统性能,那么在using语句中的是什么呢?就是网络访问的基础数据流,有了这个流我们就可以它进行读操作和写操作了,在主体语句中开始数据的收发和提示工作,首先应该做一个判断,确定现在队列中有没有客户编号,如果没有就说明当前时刻没有人排队,判断方法就是取循环队列的Length属性,如果为0则无人排队,同时语音提示业务员当前无人排队,textBox1中显示初始化的字符串,现在问题是如何让服务器控制扬声器说话,其实并不麻烦,只需要实例化一个名字为SpeechSythesizer的类,这个类是用来提供对已安装的语音合成引擎的功能的访问,就是windows
50、的语音合成功能,使用它的speak方法就可以使用语音提示了,在这个方法中提示当前没有客户排队,这个条件语句就实现了无人排队的处理功能。接着看看有人排队的情况,上面无人排队情况放在if语句中,当有人排队时这些处理就放在else语句中,在条件else语句开始时就是将客户编号出队,放在send整形变量中,等待准备将其发送到客户端,下面就实现发送操作,首先将send转化为字符串使用的是ToString方法,然后将其转化为byte数组等待发送,byte数组名为buffer,接下来用NetworkStream类里的Write方法将buffer发送给客户端,这里我们先发送的是buffer的长度来通知客户端此
51、时有人排队,后发送它本身存储的字符串(客户编号),都是使用Write方法,它需要三个参数,第一个参数是类型为 Byte 的数组,该数组包含要写入 System.Net.Sockets.NetworkStream 的数据,第二个参数是一个整型数,代表数组中开始写入数据的位置,第三个参数就是要写入的字节数,根据自己要发送的内容写好后,就可以实现发送了。在这里让屏幕显示一个提示信息,就是在label1中显示当前排队的人数,通过查询队列的长度就可以得知排队人数并显示提示。现在发送客户编号功能就完成了,接下来就是接收客户端发送来的窗口号,接收窗口号用的是另一个类,实际上也可以用上面的NetworkStr
52、eam类中的read方法,但是有一个更简单的类可以使用,就是StreamReader类,它实现一个 System.IO. TextReader,使其以一种特定的编码从字节流中读取字符,其实上面的发送也有相应的简便方法StreamWriter类,为了多学习数据在网络上的传输方法,就使用了两种不同的收发类,StreamReader类使用方法是初始化时要求传递一个参数,这个参数就是上面所实例化的对象,所属的类是NetworkStream,即stream对象实例,这样就告诉系统要对哪个流进行读取了,读取的过程很简单,就是一个ReadLine方法,然后将都取的字符串添加到提示信息中就可以了,提示信息与上
53、面的类似,就是在屏幕上显示哪个客户到哪个窗口,提示信息显示在textBox1中,并同时语音播报出来,播报方法和前面提到语音提示方法用法一样,用speak方法将字符串读出来,到这里还有一点应该说明的就是应该将用来接收客户传入的链接释放放掉,不然下次链接时,或者其它客户端连接时会产生异常,因为服务器随时准备客户端的链接,所以每个客户端不能在不使用服务器的时刻占用服务器,所以用TcpClient的Close方法将其释放。这样叫号及提示功能就实现了,接下来要实现的就是处理评价信息功能。重点代码:using (NetworkStream stream = clientSend.GetStream() /队列里没有号 if (number.Length = 0) clientSend.Close(); SpeechSynthesizer synth = new SpeechSynthesizer(); textBox1.Text = "点击下面按钮排队" synth.Speak(&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会议记录规范填写制度
- 高级育婴员试题及答案
- 封面新闻招聘试题及答案
- 门禁消毒制度规范
- 电厂食堂制度规范
- 规范物业出租制度
- 规范入党仪式制度
- 规范合同审批制度
- 规范值班报告制度
- 配菜出品制度规范
- 2025年辽铁单招考试题目及答案
- 医疗行业数据安全事件典型案例分析
- 2026年生物医药创新金融项目商业计划书
- 湖南名校联考联合体2026届高三年级1月联考化学试卷+答案
- 井下爆破安全培训课件
- 2026年安全员证考试试题及答案
- 山东省潍坊市2024-2025学年二年级上学期期末数学试题
- 空气源热泵供热工程施工方案
- 合伙车辆分车协议书
- 2026届潍坊市重点中学高一化学第一学期期末教学质量检测试题含解析
- 中国马克思主义与当代2024版教材课后思考题答案
评论
0/150
提交评论