




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书题目:银行排队系统班级:*姓名:*学号:*指导教师:*一、需求分析1 问题描述在传统的银行排队中,物理排队需要人工进行排号、取号等,显得很繁琐,因此这样的传统方式已经不能满足现代人们的需求。作为计算机专业人士,开发的软件银行排队系统能很好地取代了这样繁琐的工作,方便了银行工作人员的工作、减轻了他们的工作负担;也方便了办理业务的顾客,他们只需要通过系统取号、叫号等服务,就能简单实现办理业务,极大地简化了办理流程。2 基本任务通过实际调查分析,系统需要实现以下基本功能:(1)实现普通用户的取号、叫号、办理业务(办理窗口有4个)(2)实现VIP用户的特殊化业务办理(1个VIP办理窗口)(3)银行管理员对系统信息的管理二、概要设计为了完成需求分析的基本任务,主要从以下3个方面进行设计:1 主界面设计为了简化用户的操作,设计了一个多菜单选项主控菜单模块,实现了友好的用户界面。系统主控菜单如图1 图12 数据结构设计系统采用队列的链式结构实现顾客的“传统物理排队”。其中每个结点代表一位排队的用户,结点包含用户取号、对应的服务窗口信息3 系统功能设计(1)队列操作:void Initial(); /初始化队列int Is_Empty(); /队列是否为空void In_Queue(QNode * &s); /入队void Out_Queue(QNode * &t); /出队(2)函数模块:void System(); /主体函数void Get_Time(struct tm * &t); /获取时间char Get_Choice(char,char); /获取正确的选择char Start(); /开始界面同时返回用户选择int Is_Vip(char ,char ); /判断是不是vip客户void Check_Queue(); /查看排队情况(针对于用户)void Grade(int); /评分void Common_User(int,char ,char ); /普通用户界面void Vip_User(); /VIP用户界面void User(); /用户主界面void Administrator(); /管理员界面三、模块设计1 主要模块设计void Initial(); /初始化队列int Is_Empty(); /队列是否为空void In_Queue(QNode * &s); /入队void Out_Queue(QNode * &t); /出队void Get_Time(struct tm * &t); /获取时间char Get_Choice(char,char); /获取正确的选择int Is_Vip(char ,char ); /判断是不是vip客户void Check_Queue(); /查看排队情况(针对于用户)void Grade(int); /评分2 系统子模块及其功能设计void System(); /主体函数char Start(); /开始界面同时返回用户选择void Common_User(int,char ,char ); /普通用户界面void Vip_User(); /VIP用户界面void User(); /用户主界面void Administrator(); /管理员界面3 系统模块之间的调用如图2: 图2四、详细设计1 数据结构设计系统采用队列的链式结构进行排队的功能实现队列结点定义如下:/*队列结点*/typedef struct qqint n; /用户取号int service; /对应的服务窗口struct qq *next;/指针域QNode;/*队列*/typedef struct QQNode *front; /头指针QNode *rear; /尾指针Queue;2 系统主要模块设计void Initial(); /初始化队列int Is_Empty(); /队列是否为空void In_Queue(QNode * &s); /入队void Out_Queue(QNode * &t); /出队void Get_Time(struct tm * &t); /获取时间char Get_Choice(char,char); /获取正确的选择int Is_Vip(char ,char ); /判断是不是vip客户void Check_Queue(); /查看排队情况(针对于用户)void Grade(int); /评分五、调试分析1 主界面2 用户界面 (1) 用户主界面 (2) 排队取号 (3) 查看排队情况 (4) 叫号情况(4) 办理业务普通用户VIP用户3 管理员界面 (1) 管理员界面 (2) 查看系统信息六、用户使用说明 1.进入主界面后,根据您的身份选择相应选项(用户、管理员),用户进入用户界面,管理员进入管理员界面。 2.用户: 普通用户需要先取号,然后排队等候,在排队期间、可以根据提示查看相应的信息(如您前面的排队人数、叫号情况等等),当您被叫号或者您前面没有人排队的时候您就可以去办理业务了 3.VIP用户:根据系统的判断,如果您是VIP用户,您将无需排队,直接到VIP专属服务窗口办理业务4管理员:需要通过密码验证后,才能进入到管理员界面(管理员默认密码为:112358)七、程序源代码/*-Head.h-*/#ifndef HEAD1_H#define HEAD1_H/*管理员的密码为:112358*/*-常量、队列信息定义-*/#define MAX 40 /用于限制字符数组大小的常量#define N 4 /普通服务柜台数/*队列结点*/typedef struct qqint n; /用户取号int service; /对应的服务窗口struct qq *next;/指针域QNode;/*队列*/typedef struct QQNode *front; /头指针QNode *rear; /尾指针Queue;/*全局变量*/static Queue *q; /队列static int people; /总排队人数static int current_people; /当前排队人数static int common; /普通用户人数static int vip; /VIP用户办理人数/*-队列操作的定义-*/void Initial(); /初始化队列int Is_Empty(); /队列是否为空void In_Queue(QNode * &s); /入队void Out_Queue(QNode * &t); /出队/*-函数模块声明-*/void System(); /主体函数void Get_Time(struct tm * &t); /获取时间char Get_Choice(char,char); /获取正确的选择char Start(); /开始界面同时返回用户选择int Is_Vip(char ,char ); /判断是不是vip客户void Check_Queue(); /查看排队情况(针对于用户)void Grade(int); /评分void Common_User(int,char ,char ); /普通用户界面void Vip_User(); /VIP用户界面void User(); /用户主界面void Administrator(); /管理员界面#endif/*-函数定义-*/#include#include#include#include#include#include#includeHead.h/*-队列操作-*/void Initial() /初始化队列q=(Queue *)malloc(sizeof(Queue);q-front = q-rear = NULL;int Is_Empty() /队列是否为空return(q-rear = NULL);void In_Queue(QNode * &s) /入队QNode * p= q-front;s=(QNode *)malloc(sizeof(QNode);while(p)p=p-next;people+;s-n = people-vip; /获取排队编号if(Is_Empty()q-front = q-rear = s;elseq-rear-next = s;q-rear = s;s-next = NULL;common+;current_people+;void Out_Queue(QNode * &t)/出队if(Is_Empty()printf(tt暂时没人排队,因此无法提供相应信息_!n);return;t = q-front;if(q-front = q-rear)q-front = q-rear =NULL;elseq-front = t-next;current_people-;/*-主体函数-*/void System()while(1)system(cls);system(color 2f);char ch=Start();switch(ch)case 1:User();break;case 2:char code7;char c7=112358;int i=0;printf(tt输入管理密码:);for(;itm_hour,t-tm_min,t-tm_sec,t-tm_year + 1990,t-tm_mon + 1,t-tm_wday);printf(tt尊敬的用户,);if(t-tm_hour tm_hour 18)printf(下午好_n);elseprintf(晚上好_n);printf(tt请输入您的选择(13):);ch=Get_Choice(1,3);return ch; /返回选择/*-用户界面-*/void User()char ch; /用户的菜单选择while(1)system(cls);system(color 3f);printf(t-nt 欢迎光临中国银行 nt-nnn);printf(tttt1 取号排队ntttt2 查看排队情况ntttt3 叫号情况ntttt4 办理业务(VIP可以直接办理业务_)ntttt5 返回主菜单nnn);printf(tt输入您的选择:);ch=Get_Choice(1,5);switch(ch)case 1:FILE *fp;char card_numMAX;if(fp=fopen(vip.txt,r)=NULL)printf(ttvip.txt文档操作失败! :(n);exit(1);printf(tt您是VIP用户吗?(Y/N)nttVIP用用户的账号有:n);while(fgets(card_num,MAX,fp)!=NULL)int i=0;printf(tt);for(;in);break;case 2:Check_Queue();/查看排队情况break;case 3: /查看叫号情况if(Is_Empty()printf(tt暂时没人排队,因此无法提供相应信息_!n);break;printf(tt排队序号为%d的用户可以办理业务了_n,q-front-n);break;case 4:char c_nMAX; /用户输入的账号char cMAX; /用户输入的密码int is_vip; /判断用户是不是VIPis_vip=Is_Vip(c_n,c);switch(is_vip)case 0:QNode *t;if(Is_Empty()printf(tt暂时没人排队,因此无法提供相应信息_!n);break;printf(tt您的排队序号是%d吗?n(本着中华民族的诚信优良传统,请不要插别人的队_)n(输入Y代表是,输入N或其它代表不是):,q-front-n);if(getchar() != Y)break;system(pause);Out_Queue(t);t-service = (t-n - 1)%N + 1;/获取普通客服柜台Common_User(t-service,c_n,c);free(t);break;case 1:printf(tt您是VIP用户,可以直接到VIP客户区办理业务!n);system(pause);people+;current_people+;vip+;Vip_User();break;break;case 5:break;if(ch = 5)break;system(pause);/*-普通用户界面-*/void Common_User(int s,char c_n,char c)char ch;time_t start=time(NULL);/获取用户到达时间while(1)int money;system(cls);system(color 5f);printf(t=尊敬的用户你好,%d号柜台为您服务=nnntttt1 取钱ntttt2 存钱ntttt3 成为VIPntttt4 退出nn,s);printf(tt请输入您的选择:);ch=Get_Choice(1,4);switch(ch)case 1:printf(tt请输入您想取出的金额数(¥):);scanf(%d,&money);Sleep(3000);printf(ntt您的%d元已经取出,请好好保存_n,money);break;case 2:printf(tt请输入您想存入的金额数(¥):);scanf(%d,&money);Sleep(3000);printf(ntt您的%d元已经成功储存到您的账户上_n,money);break;case 3:FILE *fp;char ChMAX;if(fp=fopen(vip.txt,a+)=NULL)printf(tt数据库打开失败:( !n);exit(1);while(fgets(Ch,MAX,fp)!=NULL)continue;fprintf(fp,%s %sn,c_n,c);Sleep(3000);printf(ntt恭喜您,成为了VIP(以后就可以直接到VIP窗口办理业务了_)n);fclose(fp);break;case 4:break;if(ch = 4)time_t end; /用户离开时间Grade(s); /评分end=time(NULL); /获取用户离开时间printf(您总共用时%.0f秒n,difftime(end,start);break;system(pause);/*-VIP用户界面-*/void Vip_User()char ch;int money;time_t start=time(NULL);/VIP用户到达时间while(1)system(cls);system(color 4f);printf(tt=尊敬的VIP用户您好:)=nnn请问有什么可以能帮助您的呢?n(以下是业务菜单_)ntttt1 取钱ntttt2 存钱ntttt3 退出ntt输入您想办理的业务所对应的编号:);ch=Get_Choice(1,3);switch(ch)case 1:printf(tt请输入您想取出的金额数(¥):);scanf(%d,&money);Sleep(3000);printf(ntt您的%d元已经取出,请好好保存_n,money);break;case 2:printf(tt请输入您想存入的金额数(¥):);scanf(%d,&money);Sleep(3000);printf(ntt您的%d元已经成功储存到您的账户上_n,money);break;case 3:FILE *fp;double avr=0;int score,s,i=0;if(fp=fopen(win_vip.txt,a+)=NULL)printf(ttwin_vip.txt操作失败! :(n);exit(1);printf(tt请您为本次的服务评分(_):ntt1分很不满意ntt2分不满意ntt3分一般满意ntt4分比较满意ntt5分很满意nntt);scanf(%d,&score);while(fscanf(fp,%d,&s)!=EOF)i+;avr+=1.0 * s;fprintf(fp,%dn,score);avr+=score*1.0;printf(tt本客户获得的平均得分为:%.1fntt非常感谢您的配合_n,avr/(i+1);break;if(ch = 3)time_t end=time(NULL);/用户离开时间printf(您总共用时%.0f秒n,difftime(end,start);current_people-;break;system(pause);/*-管理员界面-*/void Administrator()char ch;struct tm *t;while(1)system(cls);system(color 8f);Get_Time(t);printf(tt-管理员界面-ntt当前时间:%-2d:%-2d:%-2dntt %-4d/%-2d/%-2dnnn,t-tm_hour,t-tm_min,t-tm_sec,t-tm_year+1990,t-tm_mon+1,t-tm_wday);printf(ttt1 查看系统信息nttt2 返回主菜单ntt输入您的选择:);ch=Get_Choice(1,2);switch(ch)case 1:if(!people)printf(tt今天还没有办理业务的用户_n);elseif(!common | q-front=NULL)printf(tt今日总共有%d位用户办理业务,其中有%d位普通用户、%d位VIP用户ntt当前无用户排队,没有正在办理业务的用户n,people,common,vip);elseprintf(tt今日总共有%d位用户办理业务,其中有%d位普通用户、%d位VIP用户ntt当前共有%d位用户正在排队,正在办理业务的用户序号为:%dn,people,common,vip,current_people,q-front-n);break;case 2:break;if(ch = 2)break;system(pause);/*-获取当前时间-*/void Get_Time(struct tm * &t)time_t timer;timer=time(NULL);t=localtime(&timer);/*-获取正确的选择-*/char Get_Choice(char s,char e)char ch;fflush(stdin); /清空输入缓冲区while(ch=getchar()fflush(stdin); /清空输入缓冲区if(ch=s & ch=e)break;printf(tt输入错误,重新输入(%c%c):,s,e);return ch;/*-判断是不是VIP-*/int Is_Vip(char card_number,char code)FILE *fp; /文件指针char c_nMAX; /校验卡号char cMAX; /校验密码int i; /循环变量if(fp=fopen(vip.txt,a+)=NULL)printf(ttvip.txt文件不存在!n);exit(1);printf(tt输入您的卡号(6位):);for(i=0;i6;i+)card_numberi=getch();printf(%c,card_numberi);card_numberi=0;Sleep(1000);printf(ntt密码(6位):);for(i=0;ifront;int count=0;if(Is_Empty()printf(tt没有用户排队,请先取号吧_n);return;printf(tt请输入您的排队编号:);scanf(%d,&n);while(p & (p-n != n)count+;p=p-next;if(p)if(count)printf(tt您前面还有%d位用户,请耐心等待_n,count);elseprintf(tt您前面没有用户了,你可以办理业务了_n);elseprintf(tt不存在此编号,也许您输入有误、或者您还没有取号_n);/*-评分-*/void Grade(int service)FILE *fp;double avr=0; /平均评分int score; /评分数int i=0,s;printf(tt请您为本次的服务评分(_):ntt1分很不满意ntt2分不满意ntt3分一般满意ntt4分比较满意ntt5分很满意nntt);scanf(%d,&score);switch(service)case 1:if(fp=fopen(win1.txt,a+)=NULL)printf(ttwin1.txt文档操作失败:(n);exit(1);while(fscanf(fp,%d,&s)!=EOF)avr+=s*1.0;i+;continue;fprintf(fp,%dn,score);avr+=score;printf(tt本窗口的平均评分为:%.1fntt非常感谢您的评分(_)nn,avr/(i+1);break;case 2:if(fp=fopen(win2.txt,a+)=NULL)printf(ttwin2.txt文档操作失败:(n);exit(1);while(fscanf(fp,%d,&s)!=EOF)avr+=s*1.0;i+;continue;fprintf(fp,%dn,score);avr+=scor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业蛋糕试题及答案
- 小学语文四年级上册猫教学课件
- 化学专业安全试题及答案
- 厨房专业试题及答案
- 档案专业客观试题及答案
- 湖南省邵阳市2025-2026学年高一上学期9月拔尖创新班联考化学试题(含答案)
- 2026届山东济南高三上学期摸底考试数学试题+答案
- 法语专业试题题库及答案
- 旗袍活动线上方案策划
- 互联网金融运营方案研究与实践
- 2025企业劳动合同范本新版
- 托管班的转让合同协议书
- 2025年新西师大版数学三年级上册全册教学课件
- 2025年证券从业资格考试金融市场基础知识押题及答案
- (正式版)DB1509∕T 0003-2023 《奶绵羊产奶性能测定技术规程》
- 舞蹈老师自我介绍课件
- 2025年吉林省教育系统校级后备干部选拔考试题及答案
- 社区安全知识培训资料课件
- 托盘运输知识培训内容课件
- 徐学义基础地质调查课件
- 2025主题教育应知应会知识题库及答案
评论
0/150
提交评论