《卓勇银行排队系统的设计方案与实现》由会员分享,可在线阅读,更多相关《卓勇银行排队系统的设计方案与实现(54页珍藏版)》请在金锄头文库上搜索。
1、怀化学院计算机系数据结构课程设计报告书银行排队系统的设计与实现学生姓名:卓 勇学号:1106402034年级专业及班级:2018级计算机工程系2班指导老师及职称:黄隆华讲师专业:计算机科学与技术专业湖南怀化提交日期:2018年6月目录摘要1关键词 11 前言 22 设计分析 22.1需求分析22.2 设计意义和目的32.3主要知识点32.4整体框架43、实现方法54、调试问题385、系统的使用说明书396、结论44参考文献 45致谢 45I / 49银行排队系统的设计与实现学 生:卓 勇指导老师:黄隆华(怀化学院计算机工程系,怀化 418008摘 要 :随着经济的快速发展,银行的业务量逐渐增加
2、,银行柜台的压力越来越大,排队等 待的现象也就越来越多,客户在排队中产生矛盾的可能性也随之增加,银行排长队现象成为困扰 银行和用户的难题。为了更好地服务客户,减少排队中不合理的现象,许多银行采用了自动取号 排队的系统,本课程设计设计并实现了银行排队取号的模拟系统。模拟了取号、排队、服务、及 管理等部分功能,在模拟过程中用到了队列、结构体、文件的操作以及链表等知识点。系统中采 用了注册登陆取号机制,有效的防止了倒票现象的发生,系统能够记录用户及工作人员的相关信 息,管理员通过对用户及工作人员信息的统计和分析,可以进一步优化银行营业厅的排队问题, 提高银行业务办理效率。本文用流程图等方式对系统进行
3、了需求分析,确定了系统的功能。系统 用 TXT 文件模拟数据库,运用 c 和 c+ 语言实现系统全部功能,并在最后对系统进行过测试,可 以保证系统的稳定性和可靠性。关键词:银行排队业务;队列;链表;数据结构1 前言数据结构一直以来是一门比较有难度的学科,关于数据结构的学习,我认为要学 好数据结构,要比较熟练的掌握各种基本的结构操作,如二叉树,链表。就必须要多 练习、多实践。这次的课设计就是给我们提供了一个实践的平台,可以让我们更好的 掌握数据结构,进一步巩固这方面的知识。数据结构课程作为计算机的一门关键课 程,所牵涉到计算机算法方面的问题是必然的,我希望通过这次课程设计的练习能让 自己在这次的
4、设计中有多方面的提高,能更好的掌握相关的知识。我的选题的信息描述:根据输入文件银行业务窗口信息:现金、非现金业务)为客户设计一个排队系 统,该系统以银行业务窗口登录后,可以提取一个号码进行业务处理,处理完后,可 以选择下一个号码进行业务处理。普通用户登录后,可以选择所需业务,然后抽取一 个号码作为其业务处理序号。2 设计分析实现的平台是VC6.0,所用要的语言是c/c+,用到的关键数据结构知识是队列与 链表。2.1 需求分析根据客户办理业务的需求,银行设有“现金业务”、“非现金业务”, 2 种业务 的办理。本程序将根据客户选择要办理的业务类型,等候办理业务的客户进行队伍编 排。操作员处理各种业
5、务,控制每位客户的业务办理时间。管理员可以查看、添加、 修改、删除操作员信息,还可以查看业务的详情,操作员业绩等,管理员中设有超级 管理员,比一般管理员增加了对一般管理的添加、查看、修改、删除等功能。1、客户注册自己的永久性登陆账号,然后再登陆系统选择要办理的业务类型, 取号排队,程序会把当前队列中的信息存放在.txt文件中。2、操作员登录进入系统,操作员会根据窗口的不同优先对不同类型的业务类型 信息进行处理,每处理完一个号码,系统记录当前已处理的信息,办理业务的时间由 操作员控制。3、管理员登录进入系统,可以查看业务的详情,操作员业绩,对操作员进行管 理等功能。2.2 设计意义和目的 银行排
6、队系统的设计与实现是一个实际运用性非常强的系统 , 是针对银行特点专门研制开发出的、适用于各银行的理想的客户解决方案。该系统可 以根据客户的流量即时调整工作人员及服务窗口的数量,最大程度减少客户等候时间 ,很好地解决客户在接受服务过程中所遇到的各种排队、等候、拥挤和混乱现象。同 时也能统计客户情况及职员的工作状况,为企业管理层提供有效的管理手段和决策依 据。使用银行排队系统,一方面可消除用户长时间“站队”的辛苦、对“站错队”、“插队 ”的抱怨,避免发生排错队和混乱嘈杂的现象,减少许多不必要的纠纷,全面改善服 务质量和企业形象,另一方面更可以依据统计数据调整业务分配、挖掘潜力、合理安 排窗口服务
7、,减少群众的等候时间,提高办事效率。2.3 主要知识点 银行排队系统的设计与实现主要用到的数据结构知识点是队列与链表,队列先进 先出的特点刚好符合现实中排队的特点,链表是用来存放客户的信息。下面是我要用到的队列与链表的定义:typedef struct LNode/ 链表定义ywdetails data1。zcxx data。LNode *next。 LNode,*LinkList。typedef struct QNode/ 队列定义int data。QNode *next。 *QueuePtr。struct LinkQueueQueuePtr front, rear。2.4 整体框架I主界面
8、客超 级 管 理 员户面操 作 员 界 面登陆r、客户注册LJ退出管 理 员 界 面1、现金业务2、非现金业务3、修改密码4、返回0、退出1、处理现金业务2、处理非现金业 务3、返回0、退出、官理操作贝信息2、查看业务详情3、查看某天的业务4、查看操作员业绩5、返回0、退出、管理一般管理员12、管理操作员信息3、管理客户信息4、查看业务详情5、查看某天的业务6、查看操作员业绩7、返回0、退出 丿本数据结构课程设计利用数据结构中队列的知识,用 C 语言实现了先来先服务的 思想。3、实现方法有了需求分析,就需要具体的实现。首先是主界面的现实,主界面可以写在主函 数中,但是为了方便后面的函数调用,主
9、界面我用了一个独立的函数来书写,主界面 上显示欢迎的光临等欢迎话语,和登陆、注册、退出程序的功能功能选择按钮,在输 入按钮时,我采用string类型的字符串,虽然采用string类型的字符串在判断功能选择 时增加了代码的量,但是它可以有效的对用户不小心输入多个字符时情况的处理。面是我的主界面函数:void show(欢迎界面窗口system(cls。string n。printf(n。printf(n。printf( printf( I I#J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J
10、* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* 1 -* Tprintf(*n。printf(*n。printf(*欢迎光临, 工商银行!*n。printf(*n。printf(*n。printf(*1 :登陆 2 :注册*n。printf(*0 :退出*n。printf(*n。printf(pri
11、ntf(7 #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* V printf(” 请输入您的选择:n。 printf(”f。cin n。if (n = 0/输入“0”退出程序exit(0。else if (n = 1 /输入“1”进入登陆界面 LongIn(。else if (n = 2 /输入“2”进入注册界面SignIn(。else/输入有误printf( 您的
12、输入有误! n。_sleep(1000。 show(。来到主界面后,用户要使用本系统就需要先进行注册,然后再登陆来使用系统的 相应功能。在进入到注册界面时,我先询问了用户是否确定进行注册,并设置了返回 按钮,可以方便用户不小心按错之后返回主界面来选择他她)想要使用的功能。在 用户输入用户名后,我先把现有的注册信息从文件存储进链表中,用来判断输入的用 户名是否已经有人用了,解决了用户名不能重用的问题。在密码输入时采用了加密程 序,防止了密码的外泄。面是密码输入的保护程序:下面是实现注册功能的函数void Signln(注册函数 基本完成。system(cls。 /清屏int n, i, k。k标
13、记,0表示用户名还没有注册过,1 表示用户名已被注册string m。/m为“0”回上一级菜单string pwd。/用来存放返回的输入的密码string password(/密码输入显示*的保护模式输入函数 char c。int i=0。string pas。while (c=getch(!=rif (c=b /处理退格键 putch(c。putch( 。putch(c。if (!pas.empty(pas=pas.erase(pas.size(-1,1。 else if(isprint(c只用可显示字符做密码putch(*。 pas+=c。cout endl。/coutpasendl。/自
14、己输出进行测试用的return pas。charkh_name40。存放输入的用户名 charkh_pwd40。 /存放输入的密码 LinkList L。/定义链表L =(LinkListmalloc(sizeof(LNode。 /给链 表初始化if (!Lexit(0。L-next = NULL。printf(n。printf(#J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* I I#J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J*