




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ⅱ基于C++的排队管理系统的设计与实现摘要自21世纪以来,随着计算机信息技术的不断发展,计算机信息技术越来越广泛地被运用在数据管理应用,在其中扮演着重要的角色。在社会的经济等各方面不断发展的进程中,银行、海关等政府机构、医院等单位的服务对象数量也随之大量增长。上述单位对于高效、可靠的信息管理系统的需求日渐增长。银行大厅、税务大厅等排队管理系统,能够有效地将软件和硬件结合,减少顾客排队时间,更高效地管理业务。本文为实现排队管理系统,对系统进行了分析、设计并实现。通过对排队管理系统的发展及研究状况的调研,对银行排队现状的进行考察,本文据此进行了系统的功能需求分析与非功能需求分析;本文在设计中将系统分为取号、叫号、排号、信息统计、后台管理5个模块,分别对5个模块的实体类、数据访问类进行了设计;在分析与设计的基础上,本文采用集成开发工具,以C++应用程序编程语言,进行了系统的实现。在完成系统的设计后,本文设计了仿真测试用例,对系统进行测试。经过数次测试与问题改进,目前系统能够稳定运行,能够正确实现本文所设计的取号、叫号、数据统计以及后台管理功能。最后,本文归纳总结了在设计与实现排队管理系统过程中所习得的经验教训,并展望了排队管理系统未来的发展前景。关键词:排队管理系统C++排队叫号机制目录第一章引言 第一章引言1.1课题背景1.1.1课题内容排队管理系统指的是以计算机为平台,利用管理软件和信息技术,对等待办理业务的客户按照排队策略分配到指定窗口,并可通过后台进行人工管理的程序。排队管理系统目前在银行、海关等政府机构、医院等部门已经得到了广泛的应用。排队管理系统的使用能够帮助上述部门提高排队效率、减少客户的等待时间、减少客户与客户以及客户与办理人员之间的矛盾冲突、提高客户的满意程度。达到提升部门的综合管理水平的目的。本文所设计的排队管理系统模拟了银行排队管理系统,系统能够帮助银行提升在行业中的竞争力。在没有采用排队管理系统的业务大厅办理业务时,客户只能够站在队列中等候办理业务。除了忍受长时间站立所带来的疲惫焦躁,还可能会出现个别客户插队导致的言语甚至肢体冲突。业务大厅需要安排人员进行秩序维护、人流疏导。这对于业务大厅来说是额外的人力成本,但即便安排专人对队列进行管理,其效果也往往不尽人意。随着信息技术的不断发展,计算机已经被广泛应用到各种业务的办理中。根据不同的功能模块划分,排队管理系统的主要组成部分有:实现取号功能的自助取号机、打印机;实现叫号功能的叫号机、语音播报器、窗口LED显示屏和大厅综合显示屏;实现数据统计和后台管理的PC。以上软硬件通过网络互连,共同实现完整的排队管理系统的功能。在采用排队管理系统的业务大厅中,客户办理业务无需再站在队列中等候,其办理业务的流程如下:用户首先在自助取号机上选择所需要的办理的业务,并领取由自助取号机打印的排号单,随后客户便可以在休息区就坐等待叫号;业务员完成当前业务的办理后,按下叫号器的叫号按钮,此时窗口上的LED显示屏和大厅的综合显示屏会同时显示下一客户的号码和所办理业务的窗口,同时窗口所在的语音播报器也会呼叫下一客户到该窗口办理业务。客户根据业务大厅的显示屏和语音提示,前去指定的窗口办理业务。在上述流程中,业务大厅无需再安排专门人员对客户自行排队可能产生的问题进行处理,节省了人力成本。同时客户无需辛苦站着排队,可以根据排号单提示合理安排其他事宜,提升了客户的办理体验和满意程度。有助于业务大厅发展并留住更多的优质客户,提升业务大厅在行业中的竞争力。1.2课题任务2.2.1课题内容本课题的主要任务是设计并实现一个排队管理系统。由于在日常生活的实际使用场景中,排队管理系统功能的实现,需要由多种软硬件协同配合,通过网络互连来实现。本文考虑到与大学本科期间本专业所学内容的关联性,采用以软件模拟硬件功能的方式,通过软件之间的交互来实现系统的功能。2.2.1本人承担任务基于对排队管理系统的发展及研究状况的调研,以及对银行排队现状的考察,本文对系统进行了功能需求与非功能需求的分析。根据分析结果,本文对系统进行了功能模块设计,本文在设计中将系统的功能分为取号、叫号、排号、信息统计、后台管理5个模块,分别对5个模块的实体类、数据访问类进行了设计;在分析与设计的基础上,本文采用集成开发工具,以C++应用程序编程语言,进行了系统的实现。在完成系统的设计后,本文设计了仿真测试用例,对系统进行测试。并根据测试结果处理了系统存在的问题,对系统进行了改进。改进后的系统能够稳定运行,并正确实现本文所设计的取号、叫号、数据统计以及后台管理功能。1.3论文结构论文的组织结构分为引言、相关技术介绍、系统的需求分析、系统的总体设计、系统主要功能模块的详细设计与实现、系统测试和结束语共七个部分。具体是:第一章引言。本章通过对采用排队管理系统与否的业务大厅的排队现状进行对比,对排队管理系统的发展现状进行介绍,以简略说明课题的意义与价值。第二章相关技术介绍。本章介绍了在系统的实现中运用到的关键技术,结合系统实现的具体方法,分析并介绍了采用这些技术的原因。运用到的关键技术包括C++变成语言和Qt图形用户界面应用程序开发框架。第三章系统的需求分析。本章基于调研和考察的结果,对系统的功能需求和非功能需求进行总结和说明。本文中后续任务的推进与完成均是基于本章需求分析的结果。第四章系统的总体设计。本章介绍了为实现系统的需求设计中所得到的系统需要实现的功能,对系统进行的总体设计。总体设计包括了系统的功能设计和模块设计。第五章系统主要功能模块的详细设计与实现。本章介绍了系统各个模块的详细设计和实现,描述了系统的图形化界面,解释了系统运行的具体流程。第六章系统测试。本章展现了采用经设计后的仿真测试用例对系统进行测试结果,并对测试结果进行了分析和说明。第七章结束语。本章包含了对于系统未来发展的展望,以及在设计与实现系统的过程中遇到的问题、对问题采取的解决方法和从中学习到的经验教训。
第二章相关技术介绍2.1C++编程语言由于排队管理系统可能在不同的操作系统上运行,因此编程语言的选择需要考虑到可移植性。C++是一种被广泛使用的计算机程序设计语言。它是一种通用\o"程序设计语言"程序设计语言,支持\o"多重编程范式"多重编程模式,例如\o"过程化程序设计"过程化程序设计、\o"抽象化(计算机科学)"数据抽象、\o"面向对象编程"面向对象程序设计、\o"泛型程序设计"泛型程序设计和设计模式等。C++也是可以撰写跨平台应用软件的程序设计语言,为系统的可移植性提供了支持。C++语言发展大概可以分为三个阶段:第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的\o"面向对象程序设计"面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于\o"标准模板库"标准模板库(STL)和后来的\o"BoostC++Libraries"Boost等程序库的出现,\o"泛型程序设计"泛型程序设计在C++中占据了越来越多的比重。当然,同时由于\o"Java"Java、\o"C#"C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;第三阶段从2000年至今,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。由于C++拥有过多特性,在实际使用时不需要对其完全掌握,其完备的特性可以支持系统的架构和功能的实现。C++是一种面向对象的程序设计语言。相较于面向过程的语言而言,面向对象的语言面向对象是模型化的,通过类将实现程序功能的具体函数和属性封装,当需要使用这些函数和属性时,只需要调用类提供的接口;而面向过程的语言是流程化的,在程序开发过程中需要关注程序的具体实现步骤。面向对象的开发方式使得程序有着易维护、易复用、易扩展的优势,使得开发的过程更加便捷。2.2Qt图形用户界面应用程序开发框架银行排队管理系统面向的用户为银行客户、业务员以及管理员等非计算机专业相关人员。考虑到系统的可操作性,需要为系统用户提供便捷的图形用户界面。本文在采用C++作为程序编程语言的基础上,选择使用Qt来进行系统的图形用户界面开发。Qt
是一个1991年由QtCompany开发的跨平台C++图形用户界面应用程序开发框架,本文选择Qt进行开发主要是因为其拥有以下优势:1、优良的跨平台特性:Qt支持MicrosoftWindows、macOS、Linux、Android、IOS等操作系统。涵盖了银行排队管理系统可能被运行的几乎所有操作系统。为系统的可移植性提供了支持。2、面向对象Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。各个元件之间的协同工作变得十分简单。3、丰富的APIQt包括多达250个以上的C++类。本文采用C++作为编程语言,Qt包含的丰富API可以为C++提供支持。4、大量的开发文档在实际使用Qt进行开发的过程中,若存在对开发框架理解与应用存在问题,可以很便捷地从网络上查找到相关的开发文档资料。因此Qt的学习成本较低,是一种易于入门,可以很快基本掌握并实际运用的图形界面开发框架。2.3本章小结本章主要是对系统开发中采用的几种技术和选择这些技术的原因进行了分析和介绍。包括C++语言和Qt图形用户界面应用程序开发框架。C++因其跨平台、特性丰富、面向对象的特性,为不同银行业务大厅及不同操作系统之间的可移植性、为系统的架构设计和多种功能设计的实现提供了支持,使得开发更加便捷。Qt的跨平台、丰富API、面向对象的特性和大量的开发文档,同样为系统的可移植性和功能的实现提供了支持,使得开发过程更加便捷。第三章系统的需求分析系统的需求分析是系统设计的依据和方向。本章将通过对系统的用户角色、业务需求、功能需求和非功能需求等进行总结和说明,为系统的研究和设计提出要求并指明方向。3.1系统用户角色分析系统的用例图如图3-1所示。图3-1银行排队管理系统用例图用户的角色需求分析如下:银行排队管理系统包括银行客户、业务员和管理员。使用排队管理系统的业务大厅中,各用户角色的交互如下:银行客户在自助取号机上选择所需要的办理的业务,等待办理业务;业务员为客户办理业务,在完成当前业务办理后通过叫号系统呼叫下一客户;管理员通过后台系统管理指定窗口的业务员开始与暂停办理业务,管理指定窗口的业务员办理的业务类型,查看指定窗口的客户排队状况,获得客户排队状况的统计数据。3.2系统业务需求分析银行业务大厅中普遍根据服务客户类型的不同,将窗口划分为普通窗口和VIP窗口。随着金融业的快速发展,银行间的竞争日益剧烈,银行想要提升综合实力与市场竞争力,就需要通过更为优质的服务,来发展并留住更多的优质客户。近年来,各银行大多将月均或日均存款量达到一定标准的客户视为该银行的优质客户,并为其设立了VIP客户,同时通过提供VIP窗口等方法向优质客户提供特殊的、优质的和个性化的服务,为银行发展和保留优质客户,提高银行的竞争力起到了一定的作用。普通窗口和VIP窗口的区别如下。1、普通窗口普通窗口可办理非VIP客户的所有业务类型,在VIP窗口处于非空闲状态时,为了尽可能节省VIP客户的排队等待时间,普通窗口可由后台管理系统设置为能够办理VIP业务。根据业务大厅的实际排队现状,管理员可通过后台管理系统指定各个窗口的开关,以达到动态配置业务大厅人力资源,减少客户排队时间,提升客户排队体验的同时减少资源浪费。2、VIP窗口VIP窗口只能办理VIP业务。VIP客户在取号机取号后,优先到VIP窗口办理业务。在VIP窗口处于非空闲时,为了尽可能见减少VIP客户的排队时间,VIP客户可到普通客户插队优先办理业务。通过对排队管理系统在银行业务大厅的应用的实际情况进行调查,本文列出了排队管理系统目前主要存在的,不利于改善用户体验、提升银行在行业中的竞争力的问题有如下几点。3.2.1VIP客户难以获得优质服务银行设置VIP客户的初衷是给优质客户提供更加个性化的专属服务。在我国经济发展的过程中,能够达到银行设定的VIP客户标准的客户越来越多,随着VIP客户和业务量的迅速增加,出现了VIP客户不得不像普通客户一样在VIP窗口等待同样甚至更久的时间的现象。这样的结果导致了大量优质客户的流失,显然与设立VIP的初衷相去甚远。另外,VIP客户得不到优质服务的原因不只是由于VIP客户数量的大幅增加,也有银行无法做到VIP服务窗口数量和VIP客户数量之间匹配的原因。高峰时VIP用户和普通用户商量基本相同,此时若不为VIP客户增加更多的服务窗口,不为VIP客户提供优先于普通客户的服务,VIP客户的排队等候时间甚至会超过普通客户。因此,排队管理系统需要能够以让VIP客户插队、为VIP客户开设更多窗口等方式,来提升对VIP客户的服务质量,以期达到银行设立VIP客户的初衷,为银行留住更多的优质客户。3.2.2普通客户排队时间较长随着我国社会经济的发展,前往银行办理业务的客户数量也日渐增长。客户流量大是一个在很长的一段时间内无法改变的客观事实。要降低客户的等待时间,只有通过银行业务大厅投入更多人力成本,增设业务办理窗口,让业务大厅可以同时处理更多业务;或者提升业务员办理熟练程度,简化业务办理流程,减少单个业务的办理时间。本文中的排队管理系统将为银行业务大厅提供增设窗口的方法。3.2.3取号机预估等待时间不准确客户在取号机上选择好所需办理的业务后,现有的排队管理系统为用户提供的预估等候时间在打印的小票上包含了用户的业务单号,以及截止至取票时的等待人数和大概等待时间。根据调查,当前排队管理系统大多将叫号业务设置为个人业务、对公业务、VIP业务这三种较为概括性的业务类型。由于各类型业务办理耗时的不同,且排队时可能会出现VIP插队的情况。将业务简略地分为三种类型的设置方式,会导致客户的实际等候时间和小票显示等待时间出入较大,缺乏参考价值。因此,排队管理系统需要更为合理地设置业务类型的种类,让客户在取号时能够得到更为准确的预估排队等候时间。更为准确的预估排队时间,可以让系统更为准确地根据排号原则对客户进行排号,有利于减少客户的等待时长。同时,客户根据更准确的预估排队时间,可以更为合理地安排其他事宜,都有助于提升客户的业务办理体验,提高客户的满意度;有利于提升银行在行业中的竞争力。3.3系统功能需求分析系统的功能分析如下:1、取号功能,系统需要有一个与能够与银行客户进行交互的图形化界面。客户在取号界面中选择需要办理的业务,随后系统能够调用排号子系统将客户排入对应窗口的队列中。2、叫号功能,系统需要能够读取当前各窗口队列信息,业务员在办理完当前客户的业务后能够经由叫号机呼叫下一客户到该窗口办理业务。3、数据统计功能,系统需要能够记录并储存各不同业务的数量,平均办理时间等有利于提高管理效率的数据,在管理员登录权限后便可查看统计数据。4、后台管理功能,系统需要能够查看各窗口的开关情况以及服务的业务类型是否为VIP,管理员在权限后可以通过系统人工地对窗口进行增删,更改服务的客户类型。系统需要能够读取当前各窗口队列信息,在管理员登录权限后可通过队列管理显式地查看当前的队列情况。同时,管理员需要能够对管理员登录密码进行修改。3.4系统非功能需求分析银行大厅排队叫号系统的非功能性需求如下:1、性能需求系统为实时性系统,应保证稳定运行,在大业务量时保证系统不发生卡顿现象。2、可靠性需求必须保证用户排号数据的准确可靠保存和叫号可靠性。当系统出现故障时,能够在较短的时间内迅速恢复系统。3、可操作性需求界面清晰简洁,逻辑性强,银行顾客能够很快找到自己所要办理的业务类型;叫号按钮要设置在业务员最为方便操作的地方。4、可维护性。系统应具备可维护性。5、可移植性。系统应兼容多种主流操作系统,具备平台可移植性。6、适应性。系统可适用于各银行的不同网点,并可根据各网点可根据实际情况调整相关功能。3.5本章小结本章对排队管理系统的用户角色、业务需求分析、功能需求分析以及非功能需求分析进行了介绍。系统面向的用户角色是银行客户、业务员和管理员,系统需要能够被上述群体较为便捷地使用。通过对现有业务及运行情况进行调查,我们认为各银行目前需解决的问题主要是VIP客户等待时间过久、普通客户排队过长和等待时间提示不准确等。因此,在设计中,系统应至少实现取票、叫号、数据统计和后台管理等功能,进而实现银行普通客户、VIP客户、后台数据统计和银行业务窗口管理的优化管理和排列。考虑到银行的特殊性和后续开发需求,系统还应具备良好的性能、可靠性、可操作性、可维护性、可移植性和适用性以确保系统的正常使用和维护。在系统开发之前,我们还对数据的精确性、时间特性提出了要求,为系统在投入使用后的稳定运行提供了充分的保障。第四章系统的总体设计软件的设计和开发是一个系统性的工程。本章将主要对系统的设计目标、功能模块设计等进行详细的描述和说明。实际应用中的排队管理系统都是由多种软件硬件协同配合实现,考虑到与本科阶段所学内容的关联性,本文所设计的排队管理系统中采用以软件模拟替代硬件的方法。4.1系统设计目标银行排队管理系统需要达到减少客户排队时间、提升客户业务办理体验、节省业务大厅人力资源、提升银行的行业竞争力的总体目标。系统面向银行客户、业务员、管理员这三类用户角色。系统需要通过优化VIP客户对待策略、优化排号原则、优化业务类型的设置,以解决银行目前存在的VIP客户无法得到更为优质的服务、普通客户排队时间过长,预估排队等待时间提示不准确的问题。系统需要能够实现取号功能、叫号功能、数据统计功能和后台管理功能。同时,系统还应保证稳定运行、不发生卡顿,保证可靠性和便捷的可操作性。4.2系统功能模块设计为了对系统的功能设计能够更加全面完善、为了后续的系统实现的模块化能够有基础及依据,本文对系统的功能进行了模块化的设计。系统的功能模块划分如图4-1所示,本文将系统的功能划分为了5个模块,具体是:1、取号模块:该模块面向银行客户。用于提供对客户取票,获得预估等待时间的功能支持。2、排号模块:该模块是取号模块的子模块,采用一定的排号策略将客户加入到排队队列中。3、叫号模块:该模块面向银行业务大厅窗口的业务员,提供对业务员叫号的功能支持。4、后台管理模块:该模块面向银行业务大厅的管理员,用于管理员对银行业务办理队列状况的管理。管理员需要输入用户名和密码登录后台管理系统后才可使用该功能模块,管理员登录后台管理系统后可对登录密码进行修改。5、数据统计模块:该模块面向银行业务大厅的管理员,需要登录后台管理界面后才可查看,但其功能独立于后台管理模块。用于统计银行业务数据,并提供统计图表供管理员对银行业务办理状况进行评估。图4-1银行排队管理系统功能模块图本文对系统各个功能模块的总体设计如下1.取号模块当客户在取号系统中选了需办理业务后,系统会为客户生成一个业务单号。后续的业务办理中,排队管理系统将使用业务单号作为客户的身份识别。在排号模块将客户排入队列后,系统会根据已有的不同业务平均耗时的统计数据,以及用户所选择的办理业务类型,为客户提供一个预估耗时。由于现有的排队管理系统大多将客户可办理的业务类型分为个人业务、对公业务和VIP业务三种,较为粗略的分类方式导致预估等候时间通常不准确。本文将客户可办理业务细化为七种不同的类型:存款、汇款;取款、转账;理财;挂失、换卡;外币;开户、销户;对公现金。更为细化的业务类型让排队管理系统可以为客户提供更准确的预估排队时间,让客户可以更自由地安排其他事宜,改善了客户的业务办理体验。在取号模块为客户分配了业务单号后,利用该业务单号,根据一定的排号策略将客户排入队列中。由于目前的银行业务大厅存在的VIP等待时间过长,无法获得优质的个性化服务的问题,系统需要能够尽可能让VIP客户优先获得服务,提升VIP客户对银行业务办理的满意程度,为银行留住更多的优质客户。本文设计了一种可以尽可能减少VIP客户排队等待时间的排号策略。普通客户在取号时,系统会查询当前业务大厅各窗口的业务办理情况,将客户排入等待时间最短的队列中。当VIP客户在取号时,系统会优先将VIP客户排入VIP窗口的队列中,若VIP窗口此时有正在办理的业务,则系统会比较各个窗口当前业务的剩余办理时间。若其他普通窗口的剩余办理时间更短,则系统会将VIP客户插入到剩余办理时间最短的普通窗口中,待当前业务办理完成后则直接轮到VIP客户办理业务。否则,系统将VIP客户排到VIP窗口队列中。2、叫号模块叫号模块可以读取经由排号模块修改的排队队列。当窗口当前办理业务完成后,业务员通过叫号模块呼叫队列中的一下客户到该窗口办理业务。在以软件模拟硬件的设计实现方式下,本文简化了叫号模块的设计。业务员实际投入使用中的排队管理系统中所处理的事务有叫号和具体业务的办理。本文的设计中,业务员只处理叫号事务,因此将业务员叫号视为一个自动执行的动作。即当窗口当前办理业务完成后,系统读取排队队列并呼叫队列中下一个客户到该窗口办理业务。叫号的方式有语音播报和显示屏提示两种方式,呼叫客户的业务单号,提醒客户到指定窗口办理业务。3、数据统计模块数据统计模块需要管理员在进入后台管理界面后查看。系统可以统计并计算出可以用于决策的指标,比如不同业务的平均办理时间,不同业务的办理数量及在总业务中的占比等。系统根据上述数据制成图表供管理员查看。应用此数据,银行管理者可以对网点的窗口设置做出优化,系统还可根据此数据为管理则提供决策参考建议。4、后台管理模块后台管理模块需要管理员输入密码登录账户后才可以使用。该模块的功能如下:管理员登陆。管理员可以通过后台管理模块的登陆界面登陆系统,获取系统权限。更改管理员账号信息。管理员可以在已登录系统的前提下更改登录密码,以增强系统安全性。显示实时排队信息。在后台管理界面管理员可以随时查看到该业务大厅各个窗口的实时排队情况。设置服务窗口状态。管理员在登录账号的前提下,可以设置各个服务窗口的开关状态以及服务的客户类型。提示增删服务窗口。系统可以根据网点的实时排队情况及时的给出窗口增减建议。在办理某种业务的客户等待人数较多,系统会自动给出新增临时窗口的建议。由于目前的银行业务大厅存在的VIP等待时间过长,无法获得优质的个性化服务,以及普通客户排队时间较长的问题。管理员可以根据系统提供的实时排队信息,根据自身的业务经验对当前业务大厅的排队状况进行判断,选择是否手动增加窗口,或将普通窗口改为VIP窗口,以减少客户的等待时长并为VIP客户提供更加优质的服务。同时,当业务大厅中排队人数较少而开启过多窗口,管理员也可以通过后台管理模块手动关闭窗口,以达到人力资源的使用和业务规模的匹配。做到既不枉耗人力,又能够在业务高峰到来时迅速投入资源,提高工作效率和银行顾客的满意度。4.3本章小结本章主要就系统总体设计进行了描述,对系统的设计目标、功能模块设计等进行了详细的说明,为系统的详细设计与实现提供了模块化和程序化的基础及依据。第五章系统主要功能模块的详细设计与实现本章将通过对系统各个模块的程序设计和系统实现过程进行描述,对系统整体的设计与实现进行详细的说明。5.1取号模块的详细设计与实现取号模块的主要工作流程总结如下:1、由系统自动生成或程序操作者通过点击图形界面的排号机和业务按钮手动生成银行客户。2、系统根据排号策略将客户置入队列中。3、系统根据客户的生成方式选择是否打印排号单。在采用软件模拟硬件系统的排队管理系统中,模拟客户的来源分为两种:一种是由系统持续随机生成,另一种是由程序操作者手动生成,具体如下:自动生成的模拟客户由一个单独运行的线程,根据程序设计的随机时间间隔范围持续地生成。线程每隔一段随机生成的时间,就调用一次CreateRandBus()函数,根据QTime中的当前时间来设定随机的业务类型和客户类型。然后业务数据分配对象m_cen调用CreateBus()函数为客户分配窗口。程序操作者点击模拟取号机,进入模拟取号界面并选择办理的业务类型。在操作者按下选择业务类型的按钮时,取号管理对象dlg调用函数onClickBus(),获取业务类型初始值nType和客户类型bIsVIP,紧接着onClickBus()函数调用函数onCreateBus(),在参数传递中将nType通过强制类型转化为枚举中对应的业务类型type。此时业务数据分配类m_busCen接收到信号,并用信号槽函数onAddBus(),在信号槽函数中,调用函数CreateBus()为客户分配窗口。CreateBus()函数所需要的参数type和isVip由取号管理对象dlg的函数onClickBus()提供。另一个参数bShowTicket表示是否需要打印排号单。由系统自动生成客户的过程中,参数bShowTicket被设置为false,而手动取号的客户生成过程中,参数bShowTicket被设置为true。CreateBus()函数会定义一个新的业务对象bus,业务对象的客户类型为VIP则查询VIP窗口等待时间,然后查询普通窗口的等待时间,否则直接查询普通窗口等待时间。依据设计中所提到的排号策略,将业务对象bus插入到指定窗口的队列m_bus的最前端或加入到队列的末尾。上述过程已经实现了客户的取号和对客户排号的功能,此时若业务对象bus的参数bShowTicket为true,即是由手动生成的对象,则通过弹出窗口显示由取号机生成的排号单。5.2叫号模块的详细设计与实现叫号模块的主要工作流程总结如下:1、系统检测各窗口的开关状态。2、所有开启的窗口检测自己队列的状况,并在根据实际情况显示屏上输出空闲信号、办理中及剩余办理时间、或者呼叫客户办理业务。在采用软件模拟硬件系统的排队管理系统中,业务员的叫号操作已经被自动化。叫号模块的实现主要在于窗口及其显示屏的图形化。在线程中,数据分配对象m_cen循环调用update()函数,对窗口的显示信息是否需要更新做检测。update()函数遍历所有窗口,若窗口是开启的,则业务窗口对象列表中,该窗口对应的元素m_qlCounter[i]调用update()函数,根据该窗口的队列的一个元素m_bus[0]和队列的元素数量m_bus.count()来判断窗口当前办理业务的状况,并对队列m_bus进行更改,然后使用QString对象qsBus输出窗口的显示屏对应的信息。当队列为空时,显示屏输出“空闲中”。若队首业务尚未开始办理,则窗口开始办理业务,队首窗口队列对象m_bus[0]调用函数StartBusinese(),记录下业务开始办理时间,并修改自己的状态m_state为DOING,即正在办理中。若队首业务已经完成办理,则呼叫下一客户到窗口办理,队首窗口队列对象m_bus[0]调用函数EndBusinese()将自己的状态改为END,即完成办理,然后系统将m_bus[0]出队,根据队列中是否还有元素选择输出“空闲中”或“呼叫x号办理业务”,其中x指代客户的业务单号。若队首业务正在办理中,则输出“x正在把办理s,剩余ds”其中x指代客户的业务单号,s指代业务类型,d指代完成业务办理还需要的时间。5.3数据统计模块的详细设计与实现数据统计模块的主要工作流程如下:1、系统统计并存储不同业务类型的数量和平均办理时长的数据。2、管理员登录后台管理界面。3、系统在后台管理界面中展示图表。系统使用QMap将业务类型和客户人数、办理时长相映射。采用QPieSeries将QMap中的映射关系以饼图的方式输出。5.4后台管理模块的详细设计与实现后台管理模块中实现了较多系统的功能,具体是:管理员的登录和修改密码,查看窗口排队状况以及增删窗口和更改窗口服务客户类型,。本文将分别对上述功能的详细设计和实现进行介绍。5.4.1管理员登录本功能的主要工作流程如下:1、管理员输入用户名和密码。2、系统验证用户名与密码。3、管理员成功登入后台管理系统或登录失败。当程序操作员点击进入后台按钮时,密码管理对象dlg调用其构造函数BankPWDlg(),根据该函数中的处理,当操作员按下登录按钮时,dlg接收刅信号并调用onClickLogin()函数。在该函数中,系统会读取操作员输入的内容并将其分别储存到用户名qsUser和密码qsPW两个QString对象中。然后系统调用GetUserAccount()函数,读取配置文件当中储存好的正确的用户名和密码,并将其与qsUser和qsPW分别对比,完全匹配时则管理员登录成功,可以进行后台管理操作。否则管理员登录失败,需要重新输入用户名和密码、5.4.2管理员修改密码本功能的主要流程如下:1、管理员输入新的密码。2、新密码经系统判断符合要求后修改成功,否则修改失败。当程序操作员点击修改密码按钮时,后台管理对象调用onClickChgPW()函数,读取输入的密码,若新密码长度不少于6位,则系统修改文件,清空输入框中已输入的新密码,修改密码成功。否则修改密码失败,同时系统提示新密码不少于6位。5.4.3查看排队状况本功能的主要流程如下:1、系统持续检测窗口队列的变化情况。2、管理员登入后,可以选择自己想要查看的窗口。3、系统获得管理员选择的窗口号,输出窗口信息和窗口的队列情况。线程中后台管理对象m_admin会持续调用update()函数来检测窗口队列的元素数量,当数量发生改变时,就需要显示更新后的队列。当管理员进入后台管理界面后,OnShowCounter()函数就会被调用,在该函数中,窗口队列对象m_bus调用函数GetBankCounter()获得指向窗口对象中,该窗口所在的元素counter。然后调用GetBusList()函数,获取窗口的队列信息。若管理员通过下拉菜单选择了另一个想要查看的窗口,则后台管理对象m_admin接收信号并调用onChgCouterIndex()函数,对当前窗口nIndex进行修改,随后调用OnShowCounter()函数并执行后续步骤。窗口指针counter调用IsOpen()函数和IsVip()函数来获取当前所查看窗口的开关状态和服务客户类型。然后系统将窗口的队列信息循环输出。5.4.4窗口管理本功能的主要流程如下:1、管理员登入后,可以选择自己想要更改的窗口。2、管理员通过勾选框来更改窗口开关状态或窗口服务客户类型当管理员通过勾选框发出了改变窗口开关状态或改变窗口服务客户类型(是否VIP)的信号时,后台管理对象收到信号并调用onOpenChg()或onVIPChg()函数。若管理员通过下拉菜单选择了另一个想要修改的窗口,则后台管理对象接收信号并调用函数onChgCouterIndex(),对当前窗口nIndex进行修改,随后调用onOpenChg()或onVIPChg()函数。在这两个函数中。窗口队列对象m_bus调用函数GetBankCounter()获得指向窗口对象中,该窗口所在的元素。窗口调用函数SetOpen()或SetVip()来更改窗口,函数的所需的参数由函数Qt::checked()检查勾选框的情况来提供。5.5图形用户界面实现系统的图形用户界面采用Qt编写。总体上分为主窗口mainwindow、取号界面bankticketdevdlg、登录界面bankpwdlg和后台管理界面bankadmindlg四个部分。各界面的实现具体如下:5.5.1主界面的实现如图5-1所示,主界面包含了服务大厅和功能区两个子界面。图5-1系统的主界面在服务大厅中,每个窗口图像以及图像上的文字组成一个业务窗口。业务窗口的第一行文字表示窗口状态显示屏,展示窗口的开关状态与服务客户的类型。第二行文字表示叫号显示屏,展示窗口的队列状况以及叫号信息。功能区中有两个按钮,“取号机”按钮和“进入后台”按钮,点击可分别进入取号界面和登录界面。5.5.2取号界面的实现在主界面点击“取号机”按钮即可进入如图5-2所示的取号界面。图5-2系统的取号界面客户可以在取号界面点选所需要办理的业务,业务类型包括“存款”、“取款”、“汇款”、“转账”、“理财”、“挂失”、“换卡”、“外币”、“开户”、“销户”、“对公现金”。5.5.3登录界面的实现在主界面点击“进入后台”按钮,即可进入如图5-3所示的登录界面图5-3系统的登录界面在登录界面中,管理员通过输入正确的用户名和密码,并点击“登录”按钮,进入后台管理界面。若输入用户名、密码错误或用户名不存在,系统会提示登录失败,管理员可重新输入用户名和密码尝试登录,或点击“取消”按钮退出登录界面。5.5.3后台管理界面的实现管理员在登录界面输入正确的用户名和密码并登录后,可进入如图5-4所示的后台管理界面图5-4系统的后台管理界面在后台管理界面中,管理员可以查看数据统计报表,以及每个窗口的当前队列情况。可以修改登录密码。可以手动增删窗口,以及改变窗口服务的客户类型。后台管理界面中的统计报表采用饼图展示了不同业务的数量和平均耗时。窗口队列查看中,列出了队列中每一个客户的排队号、业务类型以及客户类型是否为VIP。队列队首的客户是当前正在办理业务或正准备开始办理业务的客户,从第二个客户开始为等待办理业务的客户。这些数据报表和队列状况的可以协助管理员更为高效地管理银行业务大厅。管理员向后台管理界面右上角的修改密码文本框中输入新密码,按下“确认”按钮后,即可更改密码。系统会根据密码的位数来判定修改密码是否成功。新密码应至少有6位。管理员通过勾选或取消勾选“开启”、“VIP”这两个勾选框,可以手动增删窗口或改变窗口的服务客户类型是否为VIP。5.6本章小结本章主要对系统各功能模块的详细设计和实现进行了说明。通过对系统各功能模块的流程和实际操作界面等进行描述,详细地解释了系统的整体实现思想及过程。随着各相关功能模块的构建和完善,系统已完成了软件上的实现。第六章系统的测试6.1系统测试方法介绍由于本文中的系统设计了间隔一定时间自动生成客户功能。对程序设计的生成时间间隔进行调整,可以获得大量的仿真测试用例。通过手动生成客户,也可以获得仿真测试用例。将仿真测试用例输入系统中,查看系统的运行结果,即可对系统进行测试。6.2系统的功能测试功能测试是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。6.2.1取号与排号功能系统中的客户生成有两种方式,首先对系统自动生成客户的功能进行测试,测试结果如图6-1所示。启动排队管理系统后,程序操作员未点击任何按钮,此时普通窗口1显示1000正在办理汇款,说明系统可以自动生成客户。图6-1系统自动生成客户功能测试结果点击取号机,进入图6-2所示的取号界面,选择第一项业务存款,系统用弹出窗口向客户提供一张图6-3所示的模拟排号单。图6-2排队管理系统取号界面图6-3排队管理系统模拟排号单一段时间后2号窗口的业务办理完毕,同时如图6-4所示,该窗口的显示屏上出现“呼叫1008办理业务”的字样。客户1008所到的办理窗口和业务与排号单上显示的相符。说明系统可以通过模拟取号机手动生成客户。图6-4手动生成客户功能测试结果以上的测试也说明了系统可以正确实现对普通用户的排号,本文接下来将对VIP客户的优先排号策略进行测试。为了更好的测试效果,提高程序中的VIP率并减少自动生成客户的间隔时间,测试结果如图6.5所示。排队号为1042和1040的VIP客户排在了排队号为1022、1025、1033的普通客户之前,处在整个队列的队首之后,即正在等待当前办理业务的客户完成办理,表明在VIP窗口非空闲状态下,若存在普通窗口的当前业务办理剩余时间小于VIP窗口,则系统会将VIP分配到业务办理剩余时间最小的普通窗口。图6.5VIP优先策略测试结果以上测试表明系统可以正确实现取号与排号功能6.2.2叫号功能如图6.4所示,本文在对系统的取号与排号功能的测试中观察到,业务窗口上的显示屏可以正确现实其开关状态与服务客户类型,可以正确显示窗口的当前业务办理状况:即当窗口队列中无人时显示窗口空闲;当窗口队列的队首客户正在办理业务时,显示当前办理业务的客户排队号以及剩余时间;当窗口队列的队首客户完成办理后,若窗口队列不为空,则呼叫下一客户到当前窗口办理业务。测试表明系统可以正确实现叫号功能。6.2.3数据统计功能如图6-6所示,在进入后台管理界面后,管理员可以通过系统生成的图表查看各种业务的占比和平均办理耗时。测试表明系统可以正确实现数据统计功能。图6-6数据统计功能测试结果6.2.4管理员登录与修改密码功能点击进入后台按钮,在如图6-7所示的登录界面中输入正确的用户名和密码,点击“登录”按钮,则可以成功进入后台管理界面。图6-7管理员登录界面在管理员界面右上角修改密码的文本编辑框中输入新密码,如图6-8和图6-9所示,当输入的密码不小于6位时,可以成功修改密码。再次登录后台管理系统时需要输入修改后的新密码。图6-8修改密码失败图6-9修改密码成功以上测试表明系统可以正确实现管理员登录与修改密码功能。6.2.5查看窗口队列功能如图6-5所示,本文在对系统的取号与排号功能的测试中已经使用到了查看窗口队列功能。测试表明系统可以正确实现查看窗口队列功能。6.2.6窗口管理功能排队管理大厅的窗口初始开关设置与服务客户类型设置如图6-10所示。图6-10窗口初始设置管理用输入用户名和密码登陆后台管理系统,对窗口进行如下更改:关闭窗口1,开启窗口3,开启窗口3并将其设置为VIP窗口。设置的具体操作如图6-11所示。图6-11窗口设置改动经改动后的窗口设置如图6-12所示,改动后结果与图6.12中对窗口设置的改动相符。测试表明系统可以正确实现窗口管理功能。图6-12窗口管理功能测试结果6.3系统的性能测试通过模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。程序中自动生成客户的间隔时间函数为QTime::currentTime().addSecs(1+rand()%3),将其记为t=1+x(0≤x<a)对该函数进行改动,取不同的间隔时间,以测试系统的负载能力。经测试,系统在a取5、3、1时均能长时间正常运行,而在取t=1时,在运行一段不确定的时间后会出现卡顿、闪退等问题。由于本系统是基于软件模拟实现的,在实际的银行业务大厅中,不会出现本文中所设置的非常短的客户取号时间间隔。因此
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西省宜春市高安市达标名校2024-2025学年初三9月份两校联考语文试题含解析
- 山东省五莲县联考2024-2025学年初三五校联谊期中考试试卷数学试题含解析
- 铜仁地区沿河土家族自治县2025年三年级数学第二学期期末质量跟踪监视模拟试题含解析
- 山东省菏泽市牡丹区重点名校2024-2025学年初三4月中考仿真模拟联考生物试题含解析
- 山西省大同铁路第一中学2025年高三下学期4月份月考生物试题含解析
- 地下探测井成井劳务分包合同
- 个人车辆借用合同
- 企业股东借款合同样本
- 2025届山东省菏泽市单县第一中学高三下学期质量检测(五)历史试题(含答案)
- 中学初中信息技术 1.2《修饰文章》教学设计
- 签名设计课件
- 科室医院感染风险评估表
- 品质异常处罚细则及奖罚制度
- 物联网概论第二章产品电子编码EPC课件
- DB3212∕T 1098-2022 小微企业安全生产托管服务规范
- 诊所备案申请表格(卫健委备案)
- 环境土壤学PPT课件
- 办公生活区临时设施施工方案
- GB∕T 40262-2021 金属镀膜织物 金属层结合力的测定 胶带法
- 视频监控vcn3000系列技术白皮书
- 小学三年级西师大版数学下册计算题专题练习题
评论
0/150
提交评论