最新C语言课程设计总结报告1.doc

上传人:1595****071 文档编号:34721960 上传时间:2022-08-18 格式:DOC 页数:35 大小:293.50KB
返回 下载 相关 举报
最新C语言课程设计总结报告1.doc_第1页
第1页 / 共35页
最新C语言课程设计总结报告1.doc_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《最新C语言课程设计总结报告1.doc》由会员分享,可在线阅读,更多相关《最新C语言课程设计总结报告1.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC语言课程设计总结报告1C语言课程设计总结报告1 C语言课程设计总结报告题 目 银行排队系统 指导教师 院 系 工学院 专 业 班 级 网络 学 号 姓 名 成绩 七月八日 表1 进度安排表C语言课程设计进度表选题名称:案例八 银行排队系统班级: 网络 学号: 姓名: 任课教师: 一、 系统设计 起始时间及计划完成时间:7月5号至7月7号二、 系统实现 起始时间及计划

2、完成时间:7月7号至7月8号三、测试 起始时间及计划完成时间:7月8号至7月9号表2 中期报告表C语言课程设计中期报告(系统设计)选题名称:案例八 银行排队系统班级:网络 学号: 姓名: 任课教师: 起始时间及计划完成时间: 7.6-7.7一、 题目(问题)描述顾客到达银行时能拿到排队号码,并能知道需要等待的人数。如果是VIP客户直接进入VIP窗口,无须加入普通客户的等待。可以查看每个银行窗口正在给几号顾客办理业务。顾客离开银行时,有评价窗口银行职员服务的平台。二、 问题分析 本系统分为以下6个功能模块:顾客到达、顾客离开、查看业务办理、查看排队情况、系统查询、退出。顾客到达可以通过排队系统进

3、行取号,并记录时间。vip客户输入正确的密码后直接进入VIP窗口,无须加入普通客户的等待;顾客离开界面有评分系统,输入办理的柜台号可进行评分,并记录离开时间,然后输出办理所需时间和柜台平均分;查看业务办理界面可以查看每个银行窗口正在给几号顾客办理业务;查看排队情况可以知道需要等待的人数及其编号;系统查询可以看到几个客户办理了业务,及其时间和普通客户,vip客户人数。三、 系统设计 1 程序总体结构 2 界面设计 主菜单: 欢迎光临XX银行 1 顾客到达 2 顾客离开 3 查看业务办理 4 查看排队情况 5 系统查询 6 退出 现在时刻:Sat Jul 07 11:28:04 2018请输入要进

4、行操作的序号:(提示:请按回车键进行下一步操作)跟据提示输入1-6,转到下一个页面。-目录第一章 系统功能说明1第二章 程序结构121程序结构说明122重要数据说明223函数清单2第三章 使用说明731安装手册732使用手册7第四章 系统设计难点及其解决方法1041顾客的到达和离开10第五章 不足之处10第一章 系统功能说明本程序可实现银行排队功能,对客户进行排序、业务管理,并能对错误的输入进行提示,对溢出进行判断并提示错误的功能。为了实现“银行排队系统”的各项功能,首先要设计一个含有多个菜单的主控制菜单子程序,以链接系统的各项子功能,方便客户使用本系统。本系统采用队列存储银行排队中的顾客信息

5、。其中:用数组存放办理业务的窗口;用链式队列存放排队顾客的信息。系统分成六个功能模块。一 主菜单。显示五个功能模块。二 顾客到达。分为VIP客户和普通客户进行拿号排队,普通用户进入逻辑队列。VIP客户通过VIP认证函数认证后直接到VIP柜台办理业务,跳出该循环。三 顾客离开。顾客离开时,将顾客从从列队中删除,并提供让客户对银行窗口职员评价的平台。此时时间函数结束,输出其使用时间。然后执行柜台评分函数四 查看业务办理。可以查看每个业务窗口正在给第几个顾客办理业务。五 查看排队情况。通过逻辑队列查看当前顾客前有多个顾客在排队等待。六 系统查询。可以查询本系统为多个普通客户和VIP客户办理过业务。顾

6、客的到达是通过队列实现的。每增加一个顾客就增加一个元素和一个编号,其中设置了一个判断的操作,如果是VIP客户,输入卡号密码就可以直接到VIP柜台办理;如果是普通客户则归入队列。顾客的离开包含了一个时间函数和评分函数。在顾客离开时,时间函数结束显示顾客办理业务所需时间。配分函数通过IF函数判断输入是否正确,然后用将分数累加再均除得到柜台的平均评分。业务办理是一个For循环函数,分别将顾客对应柜台,已查看办理情况。排队情况则是队列中剩余的元素个数。第二章 程序结构21程序结构说明该银行排队程序大体结构如图2-1所示。图2-1 银行排队程序大体结构程序结构如图所示,通过主菜单可直接进入另外也可通过主

7、菜单进入顾客到达、顾客离开、查看业务办理、查看排队情况、系统查询、退出模块的界面。进而进行操作。22重要数据说明/-全局变量-intVIP1=0;/VIP客户计数floatsum1=0,sun2=0,sun3=0,sum4=0,sum5=0;/n号窗口的服务客户总人数/-函数结果状态代码-#define n 3/-数组的结构体定义-structList/-链表结点的结构体定义-struct Lnode/-链式队列的结构体定义-struct Linkqueue23函数清单/-基本的函数原型说明-1void daoda(int x) /该函数为一个If循环语句,解决顾客到达事件算法,其中调用了vo

8、id Enter(Linkqueue *Q, int elem) 进队算法函数。 比较顾客数和柜台号 引入需要比较的两个的值第一个值为L.len,第二个为nL.lendata = elem;s-next = NULL;Q-rear-next = s;Q-rear = s;定义指针*s并赋一个空间结束该柜台的顾客为Xvoid Enter进队算法函数图2-2 到达函数 2void likai(int x) /该函数包含了两个If判断函数,并调用了Dlqueue函数解决顾客离开事件算法。 比较输入柜台号和总柜台数引入需要比较的两个的值第一个值为x,第二个为L.lenxL.len?输入有误!请重新输入

9、:YesNoi = x?尊敬的%d号柜台顾客您好!L.Ai = 0;L.len-;调用Dlqueue函数结束YesNofor (i = 0; i = L.len; i+)Q.front != Q.rear =0?NoYes图2-3 离开函数 3int guitai() /判断输入的柜台号是否正确函数,包含一个If判断语句该函数大体流程如图2-4所示。柜台评分引入柜台号yy3?YesNo你输入的柜台号有误,请重新输入!你所办理业务的柜台为y结束图2-4 判断柜台函数4int pingfeng() /评分函数,判断输入的分数是否正确,并记录。 柜台评分引入分数yy5?YesNo你输入评分有误,请重

10、新输入!你的评分为y结束 5int pingfeng() /主评分函数,判断输入的分数是否正确并进行评分的平均。该函数大体流程如图2-5所示评分算法引入的变量柜台z,分数ySum(z) += y;I(z)+;ave(z) = sum(z) / i(z);z号柜台的平均满意度为ave(z)感谢你的评分,谢谢!结束图2-5 主评分函数6void vip(int x) /vip用户认证函数该函数大体流程如图2-6所示。VIP认证引入VIP顾客变量a,数组ch3,卡号i。i = a00 & ch0 = a&ch1 = a&ch2 = a&ch3 = aYes你的输入有误!YesNochk = getc

11、h();k+;printf(*);printf(*);尊敬的VIP用户您好,请您直接到VIP区办理业务!No结束结束图2-6 vip用户认证函数/-输出说明函数说明-7void daoda(int x);/ 进队算法函数8void likai(int x);/ 离开函数9int guitai(); /判断柜台函数10.int pingfeng() ; /评分函数,11.int pingfeng() ; /主评分函数12.void vip(int x); /vip用户认证函数第三章 使用说明31安装手册该计算机程序无需安装,已由exe运行程序的形式导出,只需双击打开并运行即可。主界面有关于功能的

12、提示,运行时也有相关的输入提示和错误的提示,对界面的跳转和返回也有相关选项说明。32使用手册1)为银行排队系统.exe的程序进入主界面 -欢迎光临XX银行- 1 顾客到达 2 顾客离开 3 查看业务办理 4 查看排队情况 5 系统查询 6 退出 现在时刻:Mon Jul 09 14:30:47 2018 请输入要进行操作的序号: (提示:请按回车键进行下一步操作)2)面有6个选项,选择选项1,到顾客到达界面-顾客到达界面-请选择你的用户类型:VIP用户请按 1; 普通卡用户请按 2.请输入:若为普通用户则拿号,若为VIP客户,通过卡号和密码认证后直接到VIP柜台办理,无需拿号。3)选择选项2,

13、到顾客离开界面,可进行评分和查看所用时间。-顾客离开界面-请输入离开顾客的柜台编号:1尊敬的1号柜台顾客您好!为了改善服务质量,请你对我们的服务进行评价。谢谢!请输入你所办理业务的柜台号(1-3):1 你所办理业务的柜台为1.请输入你评分(1-5): 1分非常不满意; 2分比较不满意; 3分一般满意; 4分比较满意; 5分非常满意。请输入:4 你的评分为4. 1号柜台的平均满意度为4.00。感谢你的评分,谢谢! 办理业务所用时间为61秒4)选择选项3,到达业务查询界面。业务查询界面正在办理业务的顾客编号为: 一号柜台 二号柜台 三号柜台5)选择选项4,到达排队查询界面。正在等候办理业务的顾客编

14、号为:5 6您的前面一共有2人在排队,请您稍候!6)选择选项5,到达系统查询界面请输入你的卡号:000请您输入五位密码(并以空格键结束):*至今已有 2 位普通用户,1 位vip用户成功办理业务!7)选择选项6,推出系统。第四章 系统设计难点及其解决方法41顾客的到达和离开 窗口办理完一个客户的业务后,办理等候客户中排在最前面的客户的业务需要结束,这时候容易混淆,所以程序用了链式结构数组和队列,分了进对和出对两个并列子函数,和柜台,顾客两个并列变量,每来一个顾客和离开一个顾客都重新排列对列。标准银行排队叫号管理系统能有效地改善银行服务环境,提高银行工作人员工作效率。银排队叫号管理系统运行使用电

15、脑直接控制叫号系统,可同步显示当前系统工作状况。第五章 不足之处 程序基本上实现了简单的排队功能,但是在人数较多或者突发情况较多的情况下还是无法快速解决问题的,尤其是新客户想办理成VIP用户时,应该给出一个特别单独的窗口,同时应对人员较多或者办理业务复杂时可以增添一个应急窗口。如果客户办理的业务简单时,可是指引客户去自助机办理,这样既可以节省自己排队时间,还可以提高银行的工作效率。界面的设置也不是很美观,只是用了简单的列表式布局。在程序上虽然已经对代码进行了尽可能的精简,但也并不是最优化的,因此还有待提高。源代码(运行环境:VC+):#include #include #include #in

16、clude #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 Listint An + 1; /顾客用来办理业务的N个窗口int len; /表示数组中的元素个数L;struct Lnode /链表结点类型int data;Lnode *ne

17、xt;struct Linkqueue /链式存储的等候队列的类型定义Lnode *front;Lnode *rear;Q;void Shuzu() /初始化线性的算法for (int i = 1; i next = NULL;void Enter(Linkqueue *Q, int elem) /进队算法Lnode *s;s = (Lnode *)malloc(sizeof(Lnode);s-data = elem;s-next = NULL;Q-rear-next = s;Q-rear = s;int Dlqueue(Linkqueue *Q) /出队算法Lnode *t;int x;if

18、 (Q-front = Q-rear)printf(队列为空!n);exit(1);elset = Q-front-next;Q-front-next = t-next;x = t-data;free(t);return x;void print1() /输出数组算法int i;printf(正在办理业务的顾客编号为: 一号柜台 二号柜台 三号柜台n);printf( );for (i = 1; i next;while (s != NULL)printf(%d , s-data);s = s-next;i+;printf(n您的前面一共有%d人在排队,请您稍候!, i);printf(n);

19、void daoda(int x) /解决顾客到达事件算法int i = L.len + 1;if (L.lenL.len)printf(输入有误!n请重新输入:);scanf(%d, &x);elsefor (i = 0; i = L.len; i+)if (i = x)printf(尊敬的%d号柜台顾客您好!n, x);L.Ai = 0;L.len-;if (Q.front != Q.rear)int y = Dlqueue(&Q);L.Ai = y;L.len+; while (i = 0);int guitai() /判断输入的柜台号是否正确int y = 0;printf(请输入你所

20、办理业务的柜台号(1-3):n);scanf(%d, &y);if (y3)printf(你输入的柜台号有误,请重新输入!n);printf(请输入你所办理业务的柜台号(1-3):n);scanf(%d, &y);elseprintf( 你所办理业务的柜台为%d.n, y);return y;int pingfeng() /判断输入的分数是否正确int y = 0;printf(请输入你评分(1-5):n 1分非常不满意;n 2分比较不满意;n 3分一般满意;n 4分比较满意;n 5分非常满意。n);printf(请输入:);scanf(%d, &y);if (y5)printf(你输入评分有

21、误,请重新输入!n);printf(请输入你的评分(1-5):n);scanf(%d, &y);elseprintf( 你的评分为%d.n, y);return y;void mygrade() /主评分函数printf(为了改善服务质量,请你对我们的服务进行评价。谢谢!n);z = guitai();y = pingfeng();switch (z) /柜台评分处理case 1: /1号柜台评分处理sum1 += y;i1+;ave1 = sum1 / i1;printf( %d号柜台的平均满意度为%0.2f。感谢你的评分,谢谢!n, z, ave1);break;case 2: /2号柜台

22、评分处理sum2 += y;i2+;ave2 = sum2 / i2;printf( %d号柜台的平均满意度为%0.2f。感谢你的评分,谢谢!n, z, ave2);break;case 3: /3号柜台评分处理sum3 += y;i3+;ave3 = sum3 / i3;printf( %d号柜台的平均满意度为%0.2f。感谢你的评分,谢谢!n, z, ave3);break;default: printf(你的输入有误,请重新输入!n);getch();void vip(int x) /vip用户认证int i, a;a = x;char ch3;int k = 0;switch (a)c

23、ase 1:printf(请输入你的卡号:);scanf(%d, &i);printf(请您输入五位密码(并以空格键结束):);while (chk - 1 != )chk = getch();k+;printf(*);if (i = 100 & ch0 = 1&ch1 = 1&ch2 = 1&ch3 = 1)printf(n尊敬的VIP用户您好,请您直接到VIP区办理业务!n);vip1+;else if (i = 200 & ch0 = 2&ch1 = 2&ch2 = 2&ch3 = 2)printf(n尊敬的VIP用户您好,请您直接到VIP区办理业务!n);vip1+;else if (

24、i = 300 & ch0 = 3&ch1 = 3&ch2 = 3&ch3 = 3)printf(n尊敬的VIP用户您好,请您直接到VIP区办理业务!n);vip1+;else if (i = 400 & ch0 = 4&ch1 = 4&ch2 = 4&ch3 = 4)printf(n尊敬的VIP用户您好,请您直接到VIP区办理业务!n);vip1+;else if (i = 500 & ch0 = 5&ch1 = 5&ch2 = 5&ch3 = 5)printf(n尊敬的VIP用户您好,请您直接到VIP区办理业务!n);vip1+;else printf(n你的输入有误!n);break;d

25、efault: break;void time() /时间函数time_t timep;time(&timep);printf( 现在时刻:%s, ctime(&timep);void main() /主函数system(color 1f); /屏幕颜色设定system(mode con: cols=90 lines=35);time_t a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, end;int allsum=0;double A10 = 0,0,0,0,0,0,0,0,0,0 ;int c, x, v = 0, w = 0;Shuzu();Initqu

26、eue();double sum = 0;while (1)printf(n欢迎光临XX银行n);printf(n n);printf( 1 顾客到达n);printf( 2 顾客离开n);printf( 3 查看业务办理n);printf( 4 查看排队情况n);printf( 5 系统查询n);printf( 6 退出nn);time();printf(n n);printf(请输入要进行操作的序号:);printf(n (提示:请按回车键进行下一步操作)n);scanf(%d, &c);switch (c)case 1:system(cls);printf(n顾客到达界面nn);int

27、k = 0;int a;printf(请选择你的用户类型:VIP用户请按 1;n 普通卡用户请按 2.n);printf(请输入:);scanf(%d, &a);if (a = 1)vip(a);getch();elsev+; /普通卡顾客计数printf(尊敬的普通卡用户,你的业务号为%d.n, v);daoda(v);if (v = 1)a1 = time(NULL); /v=1的客户到达时间system(pause);else if (v = 2)a2 = time(NULL);system(pause);else if (v = 3)a3 = time(NULL);system(pau

28、se);else if (v = 4)a4 = time(NULL);system(pause);else if (v = 5)a5 = time(NULL);system(pause);else if (v = 6)a6 = time(NULL);system(pause);else if (v = 7)a7 = time(NULL);system(pause);else if (v = 8)a8 = time(NULL);system(pause);else if (v = 9)a9 = time(NULL);system(pause);else if (v = 10)a10 = time

29、(NULL);system(pause);elseprintf(请稍候拿号,谢谢!);system(pause);system(cls);break;case 2:system(cls);printf(n顾客离开界面nn);printf(请输入离开顾客的柜台编号:n);scanf(%d, &x);likai(x);mygrade();w+;if (x = 1)end = time(NULL);A0 = difftime(end, a1);printf( 您办理业务所用时间为 %0.2f 秒.n, difftime(end, a1);else if (x = 2)end = time(NULL)

30、;A1 = difftime(end, a2);printf( 您办理业务所用时间为 %0.2f 秒.n, difftime(end, a2);else if (x = 3)end = time(NULL);A2 = difftime(end, a3);printf( 您办理业务所用时间为 %0.2f 秒.n, difftime(end, a3);else if (x = 4)end = time(NULL);A3 = difftime(end, a4);printf( 您办理业务所用时间为 %0.2f 秒.n, difftime(end, a4);else if (x = 5)end = t

31、ime(NULL);A4 = difftime(end, a5);printf( 您办理业务所用时间为 %0.2f 秒.n, difftime(end, a5);else if (x = 6)end = time(NULL);A5 = difftime(end, a6);printf( 您办理业务所用时间为 %0.2f 秒.n, difftime(end, a6);else if (x = 7)end = time(NULL);A6 = difftime(end, a7);printf( 您办理业务所用时间为 %0.2f 秒.n, difftime(end, a7);else if (x =

32、8)end = time(NULL);A7 = difftime(end, a8);printf( 您办理业务所用时间为 %0.2f 秒.n, difftime(end, a8);else if (x = 9)end = time(NULL);A8 = difftime(end, a9);printf( 您办理业务所用时间为 %0.2f 秒.n, difftime(end, a9);else if (x = 10)end = time(NULL);A9 = difftime(end, a10);printf( 您办理业务所用时间为 %0.2f 秒.n, difftime(end, a10);a

33、llsum += A0;getch();system(cls);break;case 3:system(cls);printf(n业务查询界面nn);print1();getch();system(cls);break;case 4:system(cls);printf(n排队查询界面nn);print2();getch();system(cls);break;case 5:system(cls);printf(n系统查询界面nn);char cool3;int i = 0, k = 0;printf(请输入你的卡号:);scanf(%d, &i);printf(请您输入五位密码(并以空格键结束):);while (coolk - 1 != )coolk = getch();k+;pr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 成人自考

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁