银行排队系统.docx

上传人:牧羊曲112 文档编号:1658786 上传时间:2022-12-13 格式:DOCX 页数:35 大小:954.76KB
返回 下载 相关 举报
银行排队系统.docx_第1页
第1页 / 共35页
银行排队系统.docx_第2页
第2页 / 共35页
银行排队系统.docx_第3页
第3页 / 共35页
银行排队系统.docx_第4页
第4页 / 共35页
银行排队系统.docx_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《银行排队系统.docx》由会员分享,可在线阅读,更多相关《银行排队系统.docx(35页珍藏版)》请在三一办公上搜索。

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)函

3、数模块: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(); /用户主界面v

4、oid 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(

5、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; /对应的服务

6、窗口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

7、 ); /判断是不是vip客户void Check_Queue(); /查看排队情况(针对于用户)void Grade(int); /评分五、调试分析1 主界面2 用户界面 (1) 用户主界面 (2) 排队取号 (3) 查看排队情况 (4) 叫号情况(4) 办理业务普通用户VIP用户3 管理员界面 (1) 管理员界面 (2) 查看系统信息六、用户使用说明 1.进入主界面后,根据您的身份选择相应选项(用户、管理员),用户进入用户界面,管理员进入管理员界面。 2.用户: 普通用户需要先取号,然后排队等候,在排队期间、可以根据提示查看相应的信息(如您前面的排队人数、叫号情况等等),当您被叫号或者您前

8、面没有人排队的时候您就可以去办理业务了 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; /对应的服务窗口s

9、truct 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(Q

10、Node * &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 )

11、; /普通用户界面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_Qu

12、eue(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);retu

13、rn;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_yea

14、r + 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 查看排队情况nt

15、ttt3 叫号情况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);b

16、reak;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暂时没人排队,

17、因此无法提供相应信息_!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+;curr

18、ent_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);prin

19、tf(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

20、+)=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;

21、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

22、,&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请您为本次的服

23、务评分(_):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_peopl

24、e-;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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号