C语言课程设计总结报告题目银行排队系统指导教师院系工学院专业班级网络【学号姓名成绩七月八日"表1 进度安排表表2 中期报告表通客户,vip客户人数。
三、.四、系统设计1.程序总体结构2.界面设计主菜单:—————————————欢迎光临XX银行—————————————、1 顾客到达2 顾客离开3 查看业务办理4 查看排队情况5 系统查询6 退出现在时刻:Sat Jul 07 11:28:04 2018…目录第一章系统功能说明 (1)第二章程序结构 (1)2.1程序结构说明 (1)2.2重要数据说明 (2)2.3函数清单 (2)第三章使用说明 (7)3.1安装手册 (7)3.2使用手册 (7)第四章系统设计难点及其解决方法 (10)4.1顾客的到达和离开 (10)第五章不足之处 (10)第一章系统功能说明本程序可实现银行排队功能,对客户进行排序、业务管理,并能对错误的输入进行提示,对溢出进行判断并提示错误的功能。
为了实现“银行排队系统”的各项功能,首先要设计一个含有多个菜单的主控制菜单子程序,以链接系统的各项子功能,方便客户使用本系统。
本系统采用队列存储银行排队中的顾客信息。
其中:用数组存放办理业务的窗口;用链式队列存放排队顾客的信息。
系统分成六个功能模块。
一.主菜单。
显示五个功能模块。
二.顾客到达。
分为VIP客户和普通客户进行拿号排队,普通用户进入逻辑队列。
VIP客户通过VIP认证函数认证后直接到VIP柜台办理业务,跳出该循环。
三.顾客离开。
顾客离开时,将顾客从从列队中删除,并提供让客户对银行窗口职员评价的平台。
此时时间函数结束,输出其使用时间。
然后执行柜台评分函数四.查看业务办理。
可以查看每个业务窗口正在给第几个顾客办理业务。
五.查看排队情况。
通过逻辑队列查看当前顾客前有多个顾客在排队等待。
六.系统查询。
可以查询本系统为多个普通客户和VIP客户办理过业务。
顾客的到达是通过队列实现的。
每增加一个顾客就增加一个元素和一个编号,其中设置了一个判断的操作,如果是VIP客户,输入卡号密码就可以直接到VIP柜台办理;如果是普通客户则归入队列。
顾客的离开包含了一个时间函数和评分函数。
在顾客离开时,时间函数结束显示顾客办理业务所需时间。
配分函数通过IF函数判断输入是否正确,然后用将分数累加再均除得到柜台的平均评分。
业务办理是一个For循环函数,分别将顾客对应柜台,已查看办理情况。
排队情况则是队列中剩余的元素个数。
第二章程序结构2.1程序结构说明该银行排队程序大体结构如图2-1所示。
程序结构如图所示,通过主菜单可直接进入另外也可通过主菜单进入顾客到达、顾客离开、查看业务办理、查看排队情况、系统查询、退出模块的界面。
进而进行操作。
2.2重要数据说明xe 的程序进入主界面 ---------欢迎光临XX 银行-------------- 1 顾客到达 2 顾客离开 3 查看业务办理4 查看排队情况5 系统查询6 退出现在时刻:Mon Jul 09 14:30:47 2018请输入要进行操作的序号:(提示:请按回车键进行下一步操作) 柜台评分 引入分数y y<1 || y>5 Yes No 你输入评分有误,请重新输入! 你的评分为y 结束 比较顾客数和柜台号引入需要比较的两个的值第一个值为,第二个为n <n i++; ++; Yes No s->data = elem; s->next = NULL; Q->rear->next = s; Q->rear = s; 定义指针*s 并赋一个空间结束该柜台的顾客为X void Enter 进队算法函数 VIP 认证 引入VIP 顾客变量a ,数组ch[3],卡号i 。
i == a00 && ch[0] =='a'&&ch[1] == 'a'&&ch[2]== 'a'&&ch[3] == 'a' Yes 你的输入有误!YesNoch[k] = getch();k++; printf("*");尊敬的VIP 用户您好,请您直接到VIP 区办理业务!No 结束评分算法 引入的变量柜台z ,分数y Sum(z) += y; I(z)++; ave(z) = sum(z) / i(z); z 号柜台的平均满意度为ave(z)感谢你的评分,谢谢!!! 结束图2-5 主评分函数 柜台评分 引入柜台号yy<1 || y>3 Yes No 你输入的柜台号有误,请重新输入! 你所办理业务的柜台为y 结束 比较输入柜台号和总柜台数引入需要比较的两个的值 第一个值为x ,第二个为 x> 输入有误!请重新输入: Yes Noi == x 尊敬的%d 号柜台顾客您好! [i] = 0; ; 调用Dlqueue 函数 结束 Yes No for (i = 0; i <= ; i++) != =0 NoYes 图2-1 银行排队程序大体结构图2-3 离开函数图2-4 判断柜台函数2)面有6个选项,选择选项1,到顾客到达界面--------------顾客到达界面--------------请选择你的用户类型:VIP用户请按1;普通卡用户请按2.请输入:若为普通用户则拿号,若为VIP客户,通过卡号和密码认证后直接到VIP柜台办理,无需拿号。
3)选择选项2,到顾客离开界面,可进行评分和查看所用时间。
--------------顾客离开界面--------------请输入离开顾客的柜台编号:1尊敬的1号柜台顾客您好!为了改善服务质量,请你对我们的服务进行评价。
谢谢!请输入你所办理业务的柜台号(1-3):1你所办理业务的柜台为1.请输入你评分(1-5):1分…………非常不满意;2分…………比较不满意;3分…………一般满意;4分…………比较满意;5分…………非常满意。
请输入:4你的评分为4.1号柜台的平均满意度为。
感谢你的评分,谢谢!!!办理业务所用时间为61秒4)选择选项3,到达业务查询界面。
——————————————业务查询界面——————————————正在办理业务的顾客编号为:一号柜台二号柜台三号柜台5)选择选项4,到达排队查询界面。
正在等候办理业务的顾客编号为:5 6您的前面一共有2人在排队,请您稍候!6)选择选项5,到达系统查询界面请输入你的卡号:000请您输入五位密码(并以空格键结束):*****至今已有 2 位普通用户,1 位vip用户成功办理业务!7)选择选项6,推出系统。
第四章系统设计难点及其解决方法4.1顾客的到达和离开窗口办理完一个客户的业务后,办理等候客户中排在最前面的客户的业务需要结束,这时候容易混淆,所以程序用了链式结构数组和队列,分了进对和出对两个并列子函数,和柜台,顾客两个并列变量,每来一个顾客和离开一个顾客都重新排列对列。
标准银行排队叫号管理系统能有效地改善银行服务环境,提高银行工作人员工作效率。
银排队叫号管理系统运行使用电脑直接控制叫号系统,可同步显示当前系统工作状况。
第五章不足之处程序基本上实现了简单的排队功能,但是在人数较多或者突发情况较多的情况下还是无法快速解决问题的,尤其是新客户想办理成VIP用户时,应该给出一个特别单独的窗口,同时应对人员较多或者办理业务复杂时可以增添一个应急窗口。
如果客户办理的业务简单时,可是指引客户去自助机办理,这样既可以节省自己排队时间,还可以提高银行的工作效率。
界面的设置也不是很美观,只是用了简单的列表式布局。
在程序上虽然已经对代码进行了尽可能的精简,但也并不是最优化的,因此还有待提高。
源代码(运行环境:VC++):#include <>#include <>#include <>#include <>#include <>#define n 3int vip1 = 0;int y, z;float sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0, sum5 = 0;float i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0;float ave1 = 0, ave2 = 0, ave3 = 0, ave4 = 0, ave5 = 0;struct List{int A[n + 1]; n", y);return y;}int pingfeng() n", y);return y;}void mygrade() n");printf("请输入:");scanf("%d", &a);if (a == 1){vip(a);getch();}else{v++; n", v);daoda(v);if (v == 1){a1 = time(NULL); n", difftime(end, a1));}else if (x = 2){end = time(NULL);A[1] = difftime(end, a2);printf(" 您办理业务所用时间为% 秒.\n", difftime(end, a2));}else if (x = 3){end = time(NULL);A[2] = difftime(end, a3);printf(" 您办理业务所用时间为% 秒.\n", difftime(end, a3));}else if (x = 4){end = time(NULL);A[3] = difftime(end, a4);printf(" 您办理业务所用时间为% 秒.\n", difftime(end, a4));}else if (x = 5){end = time(NULL);A[4] = difftime(end, a5);printf(" 您办理业务所用时间为% 秒.\n", difftime(end, a5));}else if (x = 6){end = time(NULL);A[5] = difftime(end, a6);printf(" 您办理业务所用时间为% 秒.\n", difftime(end, a6));}else if (x = 7){end = time(NULL);A[6] = difftime(end, a7);printf(" 您办理业务所用时间为% 秒.\n", difftime(end, a7));}else if (x = 8){end = time(NULL);A[7] = difftime(end, a8);printf(" 您办理业务所用时间为% 秒.\n", difftime(end, a8));}else if (x = 9){end = time(NULL);A[8] = difftime(end, a9);printf(" 您办理业务所用时间为% 秒.\n", difftime(end, a9));}else if (x = 10){end = time(NULL);A[9] = difftime(end, a10);printf(" 您办理业务所用时间为% 秒.\n", difftime(end, a10));}allsum += A[0];getch();system("cls");break;}case 3:{system("cls");printf("\n——————————————业务查询界面——————————————\n\n");print1();getch();break;}case 4:{system("cls");printf("\n——————————————排队查询界面——————————————\n\n");print2();getch();system("cls");break;}case 5:{system("cls");printf("\n——————————————系统查询界面——————————————\n\n");char cool[3];int i = 0, k = 0;printf("请输入你的卡号:");scanf("%d", &i);printf("请您输入五位密码(并以空格键结束):");while (cool[k - 1] != ' '){cool[k] = getch();k++;printf("*");}if (i == 000 && cool[0] == '1'&&cool[1] == '1'&&cool[2] == '1'&&cool[3] == '1'){printf("\n至今已有%d 位普通用户,%d 位vip用户成功办理业务!", w, vip1);}getch();system("cls");break;}return;getch();system("cls");case 6:return;getch();default: printf("输入有误!请重新输入:\n");getch();system("cls");}}}~。