银行排队系统.

上传人:z**** 文档编号:171701500 上传时间:2022-11-28 格式:DOCX 页数:46 大小:525.57KB
收藏 版权申诉 举报 下载
银行排队系统._第1页
第1页 / 共46页
银行排队系统._第2页
第2页 / 共46页
银行排队系统._第3页
第3页 / 共46页
资源描述:

《银行排队系统.》由会员分享,可在线阅读,更多相关《银行排队系统.(46页珍藏版)》请在装配图网上搜索。

1、银行排队系统*课程设计说明书题目班级姓名学号指导教师:*一、需求分析1问题描述在传统的银行排队中,物理排队需要人工进行排号、取号等,显得很繁琐,因此这样的 传统方式已经不能满足现代人们的需求。作为计算机专业人士,开发的软件一一银行排队系 统能很好地取代了这样繁琐的工作,方便了银行工作人员的工作、减轻了他们的工作负担; 也方便了办理业务的顾客,他们只需要通过系统取号、叫号等服务,就能简单实现办理业务, 极大地简化了办理流程。2基本任务通过实际调查分析,系统需要实现以下基本功能:(1) 实现普通用户的取号、叫号、办理业务(办理窗口有4个)(2) 实现VIP用户的特殊化业务办理(1个VIP办理窗口)

2、(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

3、 Get_Time(struct tm * &t);char Get_Choice(char,char);char Start();int Is_Vip(char ,char );void Check_Queue();void Grade(int);void Common_User(int,char ,charvoid Vip_User();void User();void Administrator();三、模块设计1 主要模块设计 void Initial(); int Is_Empty(); void In_Queue(QNode * &s); void Out_Queue(QNode

4、* &t); void Get_Time(struct tm * &t); char Get_Choice(char,char); int Is_Vip(char ,char ); void Check_Queue(); void Grade(int);2 系统子模块及其功能设计/初始化队列/队列是否为空/入队/出队/主体函数/获取时间/获取正确的选择/开始界面同时返回用户选择 /判断是不是vip客户/查看排队情况(针对于用户)/评分); /普通用户界面/VIP用户界面/用户主界面/管理员界面/初始化队列/队列是否为空/入队/出队/获取时间/获取正确的选择/判断是不是vip客户/查看排队情况(

5、针对于用户)/评分/主体函数void System();/VIP用户界面/用户主界面/管理员界面void Common_User(int,char ,char ); /普通用户界面void Vip_User();void User();void Administrator();3 系统模块之间的调用如图 2:图2四、详细设计1 数据结构设计 系统采用队列的链式结构进行排队的功能实现 队列结点定义如下:/*队列结点*/typedef struct qqint n;/用户取号int service;/对应的服务窗口struct qq *next;/指针域QNode;/*队列*/typedef st

6、ruct 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 ); void Check_Queue();void Grade(int);五、调试分析/出队/获取时间/获取正确的选择/

7、判断是不是vip客户/查看排队情况(针对于用户)/评分1主界面2用户界面(1)用户主界面IZZFrF3H C:Wi n dossyste m 3 2cmd. exe欢迎光临中国银行卑 肚队况务M 显主 号春号理回 曇叫办返12 3 4 52)排队取号亚 L :.iV in d c-/(/5system 3 2cmd. exe欢迎光临中国银行况IP隊单 陆敗仇务M 主 号春号理冋 畧叫办返 12 3 4 5锁山您即说择:1您是UIP用 O?CVZM U1P用用戶的嗾号有=BOO0BB1111111224GG123123121233101010;仅温馨提醒;请记齢号这是排陆的依据蠶參功,您的排队编

8、号为妆温馨提墨请记齢号这是排陆的依据S您是UIP用勺旳?3/hBUIP用用戶的嗾号有=BOEHBB1111111224GG123123121233101010欢迎光临中国银行SE C:Wi n dowssystem 3 2cmd. exe12 3 4 5卑 肚队况务M 显主 号春号理回 曇叫办返您是UIP用勺旳?宀/舫U1P用用戶的嗾号有=BOEHBB1111111224GG123123121233101010蠶參功,您的排队编号为母温馨提墨请记住编号这是排陆的依据S欢迎光临中国银行n回(3)查看排队情况12 3 4 5卑 肚队况务M 显主 号春号理回 曇叫办返3B C:Wi n dowsys

9、tein 3 Zcnnd. exe欢迎光临中国银行况IP隊单 陆敗仇务M 主 号春号理冋 畧叫办返 12 3 4 5静备嶠齧亨祐m办理业务了匸请按任意犍继续 - 欢迎光临中国银行卑 肚队况务M 显主 号春号理回 曇叫办返12 3 4 5mi:2口勺,请耐心等待请按任意键继裟.B1 C:Wi n do ws5ystem 3 2cmd. exe欢迎光临中国银疔1234f2 迭的右 善还 您A0人输刖.睡插.意任按请i-SB C:Wi n dowssyste nn 3 2cmd. exe欢迎光临中国银行您世齟善耐心等待X叫号情况血 C:Wi n dowssysteiri 3 2cnnd. exe(4

10、)办理业务普通用户12 3 4 5卑 肚队况务M 显主 号春号理回 曇叫办返欢迎光临中国银行況IP 青宀单 陆敗仇务M 显主 号看号理回 曇叫办返 12 3 4 5号気龍 户可以办理业务了匸欢迎光临中国银行SB C:Wiin doW5system 3 2cmd. exe況IP 青宀单 陆敗仇务M 显主 号看号理回 曇叫办返 12 3 4 57的11人丁 .HJ -1 S 择号4号聲 Ja-rr.-1I.UU J黑位 您您I* 入人码的 H* 12 3 4pI钱為匕.颔 金 :lft 择出 i取 的翹 I AA i 土星IE厂IB C:Wi n dowssyste m 3 2cmd. exe=尊

11、敬曲用户 号佢台為您服务=您的佃泗元已经取岀,请好好保存“您的丄哋元已经成功储萍!I您的账户上匚SS C:W ndow55ystenn32cmd.exeSS C:Wi n dowssyste m32cmd. exe12 3 4=尊敬於用户 号佢台為您服务=pI钱钱皆ii尊敬的用户你好,1号柜台为您务=12 3 4pI钱钱知HVIP用户出帀可石位:齐MH* 您盛IP用户,可以直接到UIF客户区办理业务?欢迎光临中国银行SS C:Wi n dowssyste m 3 2cmd. exe12 3 4 5況IP青 3单陆敗仇务M显主口書号理回曇叫办返3管理员界面(1)管理员界面SB C:?/i n d

12、owssyste m 3 2cmd. exei=iKKumciOix堆WKJCX耳玄耳减廉耳)cuxKKKmcK#亲:二j卫亍亡临中国银;j 、耳K耳mmxx耳jcmmx *1客户曲議蔡止人内3退岀MjocicjncKJK)oc)(jo(N*ooJocE)( whkjcjoo:A.工 f 2亠3 1 一(2)査看系统信息SB C:Wi n dowssyste nn 3 2cmid. exe请按任意键维续.5里员界面兰前时日:21:10:302102/12/2m L1 二 办在户正 看回江黠 S返S5L游 1 2选霁:有你営S八、人刖.強泌_ .条王有理 山办 其在 包上1号六、用户使用说明1进

13、入主界面后,根据您的身份选择相应选项(用户、管理员),用户进入用户界面,管理 员进入管理员界面。2用户:普通用户需要先取号,然后排队等候,在排队期间、可以根据提示查看相应的信息(如 您前面的排队人数、叫号情况等等),当您被叫号或者您前面没有人排队的时候您就可以去办 理业务了3.VIP用户:根据系统的判断,如果您是VIP用户,您将无需排队,直接到VIP专属服务窗口办理业 务4管理员:需要通过密码验证后,才能进入到管理员界面(管理员默认密码为:112358)七、程序源代码/*Head.h*/#ifndef HEAD1_H#define HEAD1_H/*管理员的密码为:112358*/*常量、队列

14、信息定义*/#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 intpeople;/总排队人数static intcurrent_people; /当前排队人数static intcommon;

15、/普通用户人数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客

16、户void Check_Queue();/查看排队情况(针对于用户)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 = NU

17、LL; 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(QNod

18、e * & 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

19、;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(下午好 Tn);elseprintf(晚上好飞n);printf(tt请输入您的选择(13):);ch=Get_Choice(1,3);return ch;/返回选择/*用户界面*/void User()char ch;/用户的菜单选择while(1)system(cls);system(color 3f);prin

20、tf(tt欢迎光临中国银行ntnnn);printf(ttttl 取号排队ntttt2查看排队情况ntttt3 叫号情况ntttt4办理业务(VIP可以直接办理业务Jntttt5 返回主菜单nnn);printf(tt输入您的选择:);ch=Get_Choice(1,5);switch(ch)case1:FILE *fp;char card_numMAX;if(fp=fopen(vip.txt,r)=NULL)printfCttvip.txt 文档操作失败!:(n);exit(1);printf(tt 您是 VIP 用户吗?(Y/N)nttVIP用用户的账号有:n);while(fgets(c

21、ard_num,MAX,fp)!=NULL)int i=0;printf(tt);for(;in);break;case 2:Check_Queue();/查看排队情况 break;case 3:/查看叫号情况if(Is_Empty()printf(tt暂时没人排队,因此无法提供相应信息Jn); break;printf(tt排队序号为%d的用户可以办理业务了飞n,q-front-n); break;case 4:char c_nMAX; /用户输入的账号char cMAX; /用户输入的密码int is_vip;/判断用户是不是VIP is_vip=Is_Vip(c_n,c);switch(

22、is_vip)case 0:QNode *t;if(Is_Empty()printf(tt暂时没人排队,因此无法提供相应信息!n); break;printf(tt您的排队序号是dT ?n(本着中华民族的诚信优良传统,请不要插别人的队Jn (输入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

23、您是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号柜台为您

24、服务 =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,mone

25、y); 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窗口办理业务了Jn); fclose(fp);break;case 4:break;if(ch = 4)time_t end;/用户离开时间Grade(s); /评分end=time(NULL

26、); /获取用户离开时间printf(您总共用时 %.0 f秒n,difftime(end,start); break; system(pause);/*VIP用户界面*/void Vip_User()char ch;int money;time_t start=time(NULL);/VIP 用户到达时间while(1)尊敬的VIP用户您好:)nnnsystem(cls); system(color 4f); printf(tt=请问有什么可以能帮助您的呢?n(以下是业务菜单Jntttt1 取钱ntttt2 存钱ntttt3 退出 n tt输入您想办理的业务所对应的编号:“);ch=Get_

27、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,

28、a+)=NULL) printfCttwin_vip.txt 操作失败! :(n); exit(1); printf(tt请您为本次的服务评分_):ntt 1分很不满意ntt2分不满意ntt3分一般满意ntt 4分比较满意n tt5 分很满意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本客户获得的平均得分为:.lfntt非常感谢您的配合飞n,avr/(i+l); break;if(ch = 3)time_t e

29、nd=time(NULL);/用户离开时间printf(您总共用时 %.0 f秒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

30、_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位普通用户、4位VIP用 户ntt当前无用户排队,没有正在办理业务的用户n,people,common,vip); elseprintf(tt今日总共有%d位用户办理业务,其中有%d位普通用户、4位VIP用 户ntt当前共

31、有%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;while(ch=getchar()fflush(stdin); /清空输入缓冲

32、区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)printfCttvip.txt 文件不存在!n);exit(1);printf(tt输入您的卡号(6位):); for(i=0;i6;i+)card_numberi=getch(); printf(

33、%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(t

34、t不存在此编号,也许您输入有误、或者您还没有取号飞n);评分void Grade(int service)FILE *fp;double avr=0; /平均评分int score; /评分数int i=0,s;printf(tt请您为本次的服务评分_):ntt 1分很不满意ntt2分不满意ntt3分一般满意ntt 4分比较满意n tt5 分很满意nntt);scanf(%d,&score);switch(service)case 1:if(fp=fopen(win1.txt,a+)=NULL) printf(ttwin1.txt 文档操作失败:(n); exit(1);while(fscan

35、f(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)case 3case 4printf(ttwin2.txt 文档操作失败:(n); exit(1);while(fscanf(fp,%d,&s)!=EOF)avr+=s*1.0;i+; continue;fprintf(fp,%dn,score); avr+=score

36、;printf(tt本窗口的平均评分为:.lfntt非常感谢您的评分)nn,avr/(i+l); break;if(fp=fopen(win3.txt,a+)=NULL)printf(ttwin3.txt 文档操作失败:(n); exit(1);while(fscanf(fp,%d,&s)!=EOF)avr+=s*1.0;i+; continue;fprintf(fp,%dn,score); avr+=score;printf(tt本窗口的平均评分为:.lfntt非常感谢您的评分)nn,avr/(i+l); break;if(fp=fopen(win4.txt,a+)=NULL)printf(

37、ttwin4.txt 文档操作失败:(n); exit(1);while(fscanf(fp,%d,&s)!=EOF)avr+=s*1.0;i+; continue;fprintf(fp,%dn,score);avr+=score;printf(tt本窗口的平均评分为:.lfntt非常感谢您的评分)nn,avr/(i+l); break;fclose(fp);/*银行排队系统( Bank_System )*/#include #includeHead.h/*main函数*/int main()Initial();/初始化队列System();return 0;八、对设计软件进行自我评价,如创新

38、点、未解决的问题等情况说明1 虽然在编写这个软件时遇到了不少的问题,但是我却觉得问题的出现才是真正具有挑战 性的时候,也是提高自己能力的最佳时期。饱含这样理念,我通过大约 34 天的代码、编译、 调试,将遇到的问题一一解决,最终大功告成。2 创新点:(1)使用了文件,可以有效地保存程序运行过程中产生的重要数据(2)彩色、美观、简洁的界面(3) 实现保护性的密码输入:3未能解决的问题自己开发的软件,只能在少部分装有win7的电脑上运行,不具有可移植性。(希望来日 能解决)参考文献1 数据结构课程设计2 数据结构教程上机实验指导C+语言程序设计案例教程4 Visual C+系统开发实例精粹苏仕华编著 李春葆编著 郑莉等编著 赵辉、叶子青编著 机械工业出版社 清华大学出版社 清华大学出版社 人民邮电出版社

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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