欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言课程设计总结报告(共25页).doc

    • 资源ID:19365595       资源大小:155.50KB        全文页数:25页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言课程设计总结报告(共25页).doc

    精选优质文档-倾情为你奉上 C语言课程设计总结报告题 目 银行排队系统 指导教师 院 系 工学院 专 业 班 级 网络 学 号 姓 名 成绩 七月八日 表1 进度安排表C语言课程设计进度表选题名称:案例八 银行排队系统班级: 网络 学号: 姓名: 任课教师: 一、 系统设计 起始时间及计划完成时间:7月5号至7月7号二、 系统实现 起始时间及计划完成时间:7月7号至7月8号三、测试 起始时间及计划完成时间:7月8号至7月9号表2 中期报告表C语言课程设计中期报告(系统设计)选题名称:案例八 银行排队系统班级:网络 学号: 姓名: 任课教师: 起始时间及计划完成时间: 7.6-7.7一、 题目(问题)描述顾客到达银行时能拿到排队号码,并能知道需要等待的人数。如果是VIP客户直接进入VIP窗口,无须加入普通客户的等待。可以查看每个银行窗口正在给几号顾客办理业务。顾客离开银行时,有评价窗口银行职员服务的平台。二、 问题分析 本系统分为以下6个功能模块:顾客到达、顾客离开、查看业务办理、查看排队情况、系统查询、退出。顾客到达可以通过排队系统进行取号,并记录时间。vip客户输入正确的密码后直接进入VIP窗口,无须加入普通客户的等待;顾客离开界面有评分系统,输入办理的柜台号可进行评分,并记录离开时间,然后输出办理所需时间和柜台平均分;查看业务办理界面可以查看每个银行窗口正在给几号顾客办理业务;查看排队情况可以知道需要等待的人数及其编号;系统查询可以看到几个客户办理了业务,及其时间和普通客户,vip客户人数。三、 系统设计 1 程序总体结构 2 界面设计 主菜单: 欢迎光临XX银行 1 顾客到达 2 顾客离开 3 查看业务办理 4 查看排队情况 5 系统查询 6 退出 现在时刻:Sat Jul 07 11:28:04 2018请输入要进行操作的序号:(提示:请按回车键进行下一步操作)跟据提示输入1-6,转到下一个页面。专心-专注-专业目录第一章 系统功能说明本程序可实现银行排队功能,对客户进行排序、业务管理,并能对错误的输入进行提示,对溢出进行判断并提示错误的功能。为了实现“银行排队系统”的各项功能,首先要设计一个含有多个菜单的主控制菜单子程序,以链接系统的各项子功能,方便客户使用本系统。本系统采用队列存储银行排队中的顾客信息。其中:用数组存放办理业务的窗口;用链式队列存放排队顾客的信息。系统分成六个功能模块。一 主菜单。显示五个功能模块。二 顾客到达。分为VIP客户和普通客户进行拿号排队,普通用户进入逻辑队列。VIP客户通过VIP认证函数认证后直接到VIP柜台办理业务,跳出该循环。三 顾客离开。顾客离开时,将顾客从从列队中删除,并提供让客户对银行窗口职员评价的平台。此时时间函数结束,输出其使用时间。然后执行柜台评分函数四 查看业务办理。可以查看每个业务窗口正在给第几个顾客办理业务。五 查看排队情况。通过逻辑队列查看当前顾客前有多个顾客在排队等待。六 系统查询。可以查询本系统为多个普通客户和VIP客户办理过业务。顾客的到达是通过队列实现的。每增加一个顾客就增加一个元素和一个编号,其中设置了一个判断的操作,如果是VIP客户,输入卡号密码就可以直接到VIP柜台办理;如果是普通客户则归入队列。顾客的离开包含了一个时间函数和评分函数。在顾客离开时,时间函数结束显示顾客办理业务所需时间。配分函数通过IF函数判断输入是否正确,然后用将分数累加再均除得到柜台的平均评分。业务办理是一个For循环函数,分别将顾客对应柜台,已查看办理情况。排队情况则是队列中剩余的元素个数。第二章 程序结构21程序结构说明该银行排队程序大体结构如图2-1所示。图2-1 银行排队程序大体结构程序结构如图所示,通过主菜单可直接进入另外也可通过主菜单进入顾客到达、顾客离开、查看业务办理、查看排队情况、系统查询、退出模块的界面。进而进行操作。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循环语句,解决顾客到达事件算法,其中调用了void Enter(Linkqueue *Q, int elem) 进队算法函数。 比较顾客数和柜台号 引入需要比较的两个的值第一个值为L.len,第二个为nL.len<n?i+; L.len+;L.len+;i+;L.len+;YesNos->data = elem;s->next = NULL;Q->rear->next = s;Q->rear = s;定义指针*s并赋一个空间结束该柜台的顾客为Xvoid Enter进队算法函数图2-2 到达函数 2void likai(int x) /该函数包含了两个If判断函数,并调用了Dlqueue函数解决顾客离开事件算法。 比较输入柜台号和总柜台数引入需要比较的两个的值第一个值为x,第二个为L.lenx>L.len?输入有误!请重新输入: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所示。柜台评分引入柜台号yy<1 | y>3?YesNo你输入的柜台号有误,请重新输入!你所办理业务的柜台为y结束图2-4 判断柜台函数4int pingfeng() /评分函数,判断输入的分数是否正确,并记录。 柜台评分引入分数yy<1 | y>5?YesNo你输入评分有误,请重新输入!你的评分为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 = 'a'Yes你的输入有误!YesNochk = getch();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运行程序的形式导出,只需双击打开并运行即可。主界面有关于功能的提示,运行时也有相关的输入提示和错误的提示,对界面的跳转和返回也有相关选项说明。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,到顾客离开界面,可进行评分和查看所用时间。-顾客离开界面-请输入离开顾客的柜台编号:1尊敬的1号柜台顾客您好!为了改善服务质量,请你对我们的服务进行评价。谢谢!请输入你所办理业务的柜台号(1-3):1 你所办理业务的柜台为1.请输入你评分(1-5): 1分非常不满意; 2分比较不满意; 3分一般满意; 4分比较满意; 5分非常满意。请输入:4 你的评分为4. 1号柜台的平均满意度为4.00。感谢你的评分,谢谢! 办理业务所用时间为61秒4)选择选项3,到达业务查询界面。业务查询界面正在办理业务的顾客编号为: 一号柜台 二号柜台 三号柜台5)选择选项4,到达排队查询界面。正在等候办理业务的顾客编号为:5 6您的前面一共有2人在排队,请您稍候!6)选择选项5,到达系统查询界面请输入你的卡号:000请您输入五位密码(并以空格键结束):*至今已有 2 位普通用户,1 位vip用户成功办理业务!7)选择选项6,推出系统。第四章 系统设计难点及其解决方法41顾客的到达和离开 窗口办理完一个客户的业务后,办理等候客户中排在最前面的客户的业务需要结束,这时候容易混淆,所以程序用了链式结构数组和队列,分了进对和出对两个并列子函数,和柜台,顾客两个并列变量,每来一个顾客和离开一个顾客都重新排列对列。标准银行排队叫号管理系统能有效地改善银行服务环境,提高银行工作人员工作效率。银排队叫号管理系统运行使用电脑直接控制叫号系统,可同步显示当前系统工作状况。第五章 不足之处 程序基本上实现了简单的排队功能,但是在人数较多或者突发情况较多的情况下还是无法快速解决问题的,尤其是新客户想办理成VIP用户时,应该给出一个特别单独的窗口,同时应对人员较多或者办理业务复杂时可以增添一个应急窗口。如果客户办理的业务简单时,可是指引客户去自助机办理,这样既可以节省自己排队时间,还可以提高银行的工作效率。界面的设置也不是很美观,只是用了简单的列表式布局。在程序上虽然已经对代码进行了尽可能的精简,但也并不是最优化的,因此还有待提高。源代码(运行环境:VC+):#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <conio.h>#include <time.h>#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 *next;struct Linkqueue /链式存储的等候队列的类型定义Lnode *front;Lnode *rear;Q;void Shuzu() /初始化线性的算法for (int i = 1; i <= n; i+)L.Ai = 0; /元素值为0,表示编号为I的窗口当前状态为空L.len = 0;void Initqueue() /初始化队列的算法Q.front = Q.rear = (Lnode *)malloc(sizeof(Lnode);Q.front->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 (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 <= L.len; i+)printf("%d号客户 ", L.Ai);printf("n");void print2() /输出队列算法int i = 0;printf("正在等候办理业务的顾客编号为:");Lnode *s = Q.front->next;while (s != NULL)printf("%d ", s->data);s = s->next;i+;printf("n您的前面一共有%d人在排队,请您稍候!", i);printf("n");void daoda(int x) /解决顾客到达事件算法int i = L.len + 1;if (L.len<n) /L.Ai = x;i+;L.len+;elseEnter(&Q, x);void likai(int x) /解决顾客离开事件算法int i = 0;doif (x>L.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("请输入你所办理业务的柜台号(1-3):n");scanf("%d", &y);if (y<1 | y>3)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 (y<1 | y>5)printf("你输入评分有误,请重新输入!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号柜台评分处理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)case 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 (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;default: 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();Initqueue();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 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("pause");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(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);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 = time(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 = 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);allsum += 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+;printf("*");if (i = 000 && cool0 = '1'&&cool1 = '1'&&cool2 = '1'&&cool3 = '1')printf("n至今已有 %d 位普通用户,%d 位vip用户成功办理业务!", w, vip1);getch();system("cls");break;return;getch();system("cls");case 6:return;getch();system("cls");default: printf("输入有误!请重新输入:n");getch();system("cls");

    注意事项

    本文(C语言课程设计总结报告(共25页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开