




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上課程設計說明書題目:銀行排隊系統(tǒng)班級:*姓名:*學號:*指導教師:*一、需求分析1 問題描述在傳統(tǒng)的銀行排隊中,物理排隊需要人工進行排號、取號等,顯得很繁瑣,因此這樣的傳統(tǒng)方式已經(jīng)不能滿足現(xiàn)代人們的需求。作為計算機專業(yè)人士,開發(fā)的軟件銀行排隊系統(tǒng)能很好地取代了這樣繁瑣的工作,方便了銀行工作人員的工作、減輕了他們的工作負擔;也方便了辦理業(yè)務的顧客,他們只需要通過系統(tǒng)取號、叫號等服務,就能簡單實現(xiàn)辦理業(yè)務,極大地簡化了辦理流程。2 基本任務通過實際調(diào)查分析,系統(tǒng)需要實現(xiàn)以下基本功能:(1)實現(xiàn)普通用戶的取號、叫號、辦理業(yè)務(辦理窗口有4個)(2)實現(xiàn)VIP用戶的特殊化業(yè)務
2、辦理(1個VIP辦理窗口)(3)銀行管理員對系統(tǒng)信息的管理二、概要設計為了完成需求分析的基本任務,主要從以下3個方面進行設計:1 主界面設計為了簡化用戶的操作,設計了一個多菜單選項主控菜單模塊,實現(xiàn)了友好的用戶界面。系統(tǒng)主控菜單如圖1 圖12 數(shù)據(jù)結(jié)構(gòu)設計系統(tǒng)采用隊列的鏈式結(jié)構(gòu)實現(xiàn)顧客的“傳統(tǒng)物理排隊”。其中每個結(jié)點代表一位排隊的用戶,結(jié)點包含用戶取號、對應的服務窗口信息3 系統(tǒng)功能設計(1)隊列操作:void Initial(); /初始化隊列int Is_Empty(); /隊列是否為空void In_Queue(QNode * &s); /入隊void Out_Queue(QNo
3、de * &t); /出隊(2)函數(shù)模塊:void System(); /主體函數(shù)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(); /VI
4、P用戶界面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 Che
5、ck_Queue(); /查看排隊情況(針對于用戶)void Grade(int); /評分2 系統(tǒng)子模塊及其功能設計void System(); /主體函數(shù)char Start(); /開始界面同時返回用戶選擇void Common_User(int,char ,char ); /普通用戶界面void Vip_User(); /VIP用戶界面void User(); /用戶主界面void Administrator(); /管理員界面3 系統(tǒng)模塊之間的調(diào)用如圖2: 圖2四、詳細設計1 數(shù)據(jù)結(jié)構(gòu)設計系統(tǒng)采用隊列的鏈式結(jié)構(gòu)進行排隊的功能實現(xiàn)隊列結(jié)點定義如下:/*隊列結(jié)點*/typedef str
6、uct qqint n; /用戶取號int service; /對應的服務窗口struct qq *next;/指針域QNode;/*隊列*/typedef struct QQNode *front; /頭指針QNode *rear; /尾指針Queue;2 系統(tǒng)主要模塊設計void Initial(); /初始化隊列int Is_Empty(); /隊列是否為空void In_Queue(QNode * &s); /入隊void Out_Queue(QNode * &t); /出隊void Get_Time(struct tm * &t); /獲取時間char Get
7、_Choice(char,char); /獲取正確的選擇int Is_Vip(char ,char ); /判斷是不是vip客戶void Check_Queue(); /查看排隊情況(針對于用戶)void Grade(int); /評分五、調(diào)試分析1 主界面2 用戶界面 (1) 用戶主界面 (2) 排隊取號 (3) 查看排隊情況 (4) 叫號情況(4) 辦理業(yè)務普通用戶VIP用戶3 管理員界面 (1) 管理員界面 (2) 查看系統(tǒng)信息六、用戶使用說明 1.進入主界面后,根據(jù)您的身份選擇相應選項(用戶、管理員),用戶進入用戶界面,管理員進入管理員界面。 2.用戶: 普通用戶需要先取號,然后排隊等
8、候,在排隊期間、可以根據(jù)提示查看相應的信息(如您前面的排隊人數(shù)、叫號情況等等),當您被叫號或者您前面沒有人排隊的時候您就可以去辦理業(yè)務了 3.VIP用戶:根據(jù)系統(tǒng)的判斷,如果您是VIP用戶,您將無需排隊,直接到VIP專屬服務窗口辦理業(yè)務4管理員:需要通過密碼驗證后,才能進入到管理員界面(管理員默認密碼為:)七、程序源代碼/*-Head.h-*/#ifndef HEAD1_H#define HEAD1_H/*管理員的密碼為:*/*-常量、隊列信息定義-*/#define MAX 40 /用于限制字符數(shù)組大小的常量#define N 4 /普通服務柜臺數(shù)/*隊列結(jié)點*/typedef struct
9、 qqint n; /用戶取號int service; /對應的服務窗口struct qq *next;/指針域QNode;/*隊列*/typedef struct QQNode *front; /頭指針QNode *rear; /尾指針Queue;/*全局變量*/static Queue *q; /隊列static int people; /總排隊人數(shù)static int current_people; /當前排隊人數(shù)static int common; /普通用戶人數(shù)static int vip; /VIP用戶辦理人數(shù)/*-隊列操作的定義-*/void Initial(); /初始化隊列i
10、nt Is_Empty(); /隊列是否為空void In_Queue(QNode * &s); /入隊void Out_Queue(QNode * &t); /出隊/*-函數(shù)模塊聲明-*/void System(); /主體函數(shù)void Get_Time(struct tm * &t); /獲取時間char Get_Choice(char,char); /獲取正確的選擇char Start(); /開始界面同時返回用戶選擇int Is_Vip(char ,char ); /判斷是不是vip客戶void Check_Queue(); /查看排隊情況(針對于用戶)void
11、 Grade(int); /評分void Common_User(int,char ,char ); /普通用戶界面void Vip_User(); /VIP用戶界面void User(); /用戶主界面void Administrator(); /管理員界面#endif/*-函數(shù)定義-*/#include<stdio.h>#include<stdlib.h>#include<time.h>#include<conio.h>#include<string.h>#include<windows.h>#include"
12、;Head.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; /獲取排隊
13、編號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;
14、elseq->front = t->next;current_people-;/*-主體函數(shù)-*/void System()while(1)system("cls");system("color 2f");char ch=Start();switch(ch)case '1':User();break;case '2':char code7;char c7=""int i=0;printf("tt輸入管理密碼:");for(;i<6;i+)codei=getch();
15、printf("%c",'*');codei='0'printf("n");Sleep(1000);if(strcmp(code,c)!=0)printf("tt密碼錯誤!(可能您不是管理員、或者您忘記了密碼)n");system("pause");break;printf("tt密碼正確_!n");system("pause");Administrator();break;case '3':system("cls&q
16、uot;);printf("t-n""t 中國銀行 n""t-nnn");printf("歡迎下次光臨,再見_nn");system("pause");if(ch = '3')break;system("pause");/*-開始界面&&獲取用戶的選擇-*/char Start()struct tm *t; /時間結(jié)構(gòu)char ch; /選擇Get_Time(t); /獲取系統(tǒng)時間system("color 2f");pri
17、ntf(" */歡迎光臨中國銀行*n"" * *n"" * *n"" * *n"" * *n"" * 1 客戶 *n"" * *n"" * *n"" * 2 管理員 *n"" * (警告:非管理員禁止入內(nèi)) *n"" * *n"" * 3 退出 *n"" * *n"" * *n"" * %2d:%2d:%2d
18、 *n"" * %4d/%2d/%2d *n"" * *n"" */歡迎光臨中國銀行*nnn",t->tm_hour,t->tm_min,t->tm_sec,t->tm_year + 1990,t->tm_mon + 1,t->tm_wday);printf("tt尊敬的用戶,");if(t->tm_hour < 12)printf("上午好_n");else if(t->tm_hour < 18)printf("下
19、午好_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-n""t 歡迎光臨中國銀行 n""t-nnn");prin
20、tf("tttt1 取號排隊n""tttt2 查看排隊情況n""tttt3 叫號情況n""tttt4 辦理業(yè)務(VIP可以直接辦理業(yè)務_)n""tttt5 返回主菜單nnn");printf("tt輸入您的選擇:");ch=Get_Choice('1','5');switch(ch)case '1':FILE *fp;char card_numMAX;if(fp=fopen("vip.txt","r
21、")=NULL)printf("ttvip.txt文檔操作失敗! :(n");exit(1);printf("tt您是VIP用戶嗎?(Y/N)n""ttVIP用用戶的賬號有:n");while(fgets(card_num,MAX,fp)!=NULL)int i=0;printf("tt");for(;i<6;i+)putchar(card_numi);putchar('n');printf("tt");if(getchar()='Y')print
22、f("tt好的,您可以直接去辦理業(yè)務,無需排隊了_n");break;QNode *s;In_Queue(s);printf("t取號成功,您的排隊編號為:%d(溫馨提醒:請記住編號,這是排隊的依據(jù)_)n",s->n);break;case '2':Check_Queue();/查看排隊情況break;case '3': /查看叫號情況if(Is_Empty()printf("tt暫時沒人排隊,因此無法提供相應信息_!n");break;printf("tt排隊序號為%d的用戶可以辦理業(yè)
23、務了_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""(本著中華民族的誠信優(yōu)良傳統(tǒng),請不要插別人的隊_)n"
24、"(輸入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客戶區(qū)辦理業(yè)務!n");system(&
25、quot;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
26、");printf("t=尊敬的用戶你好,%d號柜臺為您服務=nnn""tttt1 取錢n""tttt2 存錢n""tttt3 成為VIPn""tttt4 退出nn",s);printf("tt請輸入您的選擇:");ch=Get_Choice('1','4');switch(ch)case '1':printf("tt請輸入您想取出的金額數(shù)(¥):");scanf("%d",&a
27、mp;money);Sleep(3000);printf("ntt您的%d元已經(jīng)取出,請好好保存_n",money);break;case '2':printf("tt請輸入您想存入的金額數(shù)(¥):");scanf("%d",&money);Sleep(3000);printf("ntt您的%d元已經(jīng)成功儲存到您的賬戶上_n",money);break;case '3':FILE *fp;char ChMAX;if(fp=fopen("vip.txt",&
28、quot;a+")=NULL)printf("tt數(shù)據(jù)庫打開失敗:( !n");exit(1);while(fgets(Ch,MAX,fp)!=NULL)continue;fprintf(fp,"%s %sn",c_n,c);Sleep(3000);printf("ntt恭喜您,成為了VIP(以后就可以直接到VIP窗口辦理業(yè)務了_)n");fclose(fp);break;case '4':break;if(ch = '4')time_t end; /用戶離開時間Grade(s); /評分en
29、d=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""請問有什么可以能幫
30、助您的呢?n""(以下是業(yè)務菜單_)n""tttt1 取錢n""tttt2 存錢n""tttt3 退出n""tt輸入您想辦理的業(yè)務所對應的編號:");ch=Get_Choice('1','3');switch(ch)case '1':printf("tt請輸入您想取出的金額數(shù)(¥):");scanf("%d",&money);Sleep(3000);printf("ntt您的%d元
31、已經(jīng)取出,請好好保存_n",money);break;case '2':printf("tt請輸入您想存入的金額數(shù)(¥):");scanf("%d",&money);Sleep(3000);printf("ntt您的%d元已經(jīng)成功儲存到您的賬戶上_n",money);break;case '3':FILE *fp;double avr=0;int score,s,i=0;if(fp=fopen("win_vip.txt","a+")=NULL)p
32、rintf("ttwin_vip.txt操作失敗! :(n");exit(1);printf("tt請您為本次的服務評分(_):n""tt1分很不滿意n""tt2分不滿意n""tt3分一般滿意n""tt4分比較滿意n""tt5分很滿意nntt");scanf("%d",&score);while(fscanf(fp,"%d",&s)!=EOF)i+;avr+=1.0 * s;fprintf(fp,&q
33、uot;%dn",score);avr+=score*1.0;printf("tt本客戶獲得的平均得分為:%.1fn""tt非常感謝您的配合_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 c
34、h;struct tm *t;while(1)system("cls");system("color 8f");Get_Time(t);printf("tt-管理員界面-n""tt當前時間:%-2d:%-2d:%-2dn""tt %-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 查看系統(tǒng)信息n&q
35、uot;"ttt2 返回主菜單n""tt輸入您的選擇:");ch=Get_Choice('1','2');switch(ch)case '1':if(!people)printf("tt今天還沒有辦理業(yè)務的用戶_n");elseif(!common | q->front=NULL)printf("tt今日總共有%d位用戶辦理業(yè)務,其中有%d位普通用戶、%d位VIP用戶n""tt當前無用戶排隊,沒有正在辦理業(yè)務的用戶n",people,comm
36、on,vip);elseprintf("tt今日總共有%d位用戶辦理業(yè)務,其中有%d位普通用戶、%d位VIP用戶n""tt當前共有%d位用戶正在排隊,正在辦理業(yè)務的用戶序號為:%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 ti
37、mer;timer=time(NULL);t=localtime(&timer);/*-獲取正確的選擇-*/char Get_Choice(char s,char e)char ch;fflush(stdin); /清空輸入緩沖區(qū)while(ch=getchar()fflush(stdin); /清空輸入緩沖區(qū)if(ch>=s && ch<=e)break;printf("tt輸入錯誤,重新輸入(%c%c):",s,e);return ch;/*-判斷是不是VIP-*/int Is_Vip(char card_number,char co
38、de)FILE *fp; /文件指針char c_nMAX; /校驗卡號char cMAX; /校驗密碼int i; /循環(huán)變量if(fp=fopen("vip.txt","a+")=NULL)printf("ttvip.txt文件不存在!n");exit(1);printf("tt輸入您的卡號(6位):");for(i=0;i<6;i+)card_numberi=getch();printf("%c",card_numberi);card_numberi='0'Sleep
39、(1000);printf("ntt密碼(6位):");for(i=0;i<6;i+)codei=getch();printf("*");codei='0'printf("n");Sleep(1000);while(fscanf(fp,"%s %s",c_n,c)!=EOF)if(!strcmp(card_number,c_n) && !strcmp(code,c)/如果卡號和密碼都正確 那么就是VIPfclose(fp);return 1;fclose(fp);return
40、0;/*-查看排隊情況-*/void Check_Queue()int n;/用戶輸入的編號QNode *p=q->front;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&q
41、uot;,count);elseprintf("tt您前面沒有用戶了,你可以辦理業(yè)務了_n");elseprintf("tt不存在此編號,也許您輸入有誤、或者您還沒有取號_n");/*-評分-*/void Grade(int service)FILE *fp;double avr=0; /平均評分int score; /評分數(shù)int i=0,s;printf("tt請您為本次的服務評分(_):n""tt1分很不滿意n""tt2分不滿意n""tt3分一般滿意n""tt
42、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(fscanf(fp,"%d",&s)!=EOF)avr+=s*1.0;i+;continue;fprintf(fp,"%dn",score);avr+=score;printf("tt本窗口的平均評分為:%.1fn""tt非常感謝您的評分(_)nn",avr/(i+1);break;case 2:if(fp=fopen("win2.txt&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地熱能源供暖在老舊小區(qū)改造中的應用與效果評估報告
- 膝關(guān)節(jié)鏡術(shù)后護理常規(guī)
- 消化系統(tǒng)的護理
- 展會裝飾知識培訓課件
- 幼師如何進行工作總結(jié)培訓
- 自制飲水機課件
- 線上直播培訓課件模板
- 講師培訓課件圖片
- 文創(chuàng)農(nóng)產(chǎn)品包裝設計
- 風濕的定義是什么意思
- 腫瘤科放療健康宣教
- 陪伴孩子的成長課件
- 你的名字叫什么-音樂教案
- 《員工的七個習慣》課件
- 分布式光伏危險源辨識清單
- 南開大學商學院管理綜合歷年考研真題匯編(含部分答案)(1)合集
- 上海上海市實驗學校西校小升初數(shù)學期末試卷測試題(Word版-含解析)
- 有限空間作業(yè)審批制度
- (新插圖)人教版五年級下冊數(shù)學 6-3-1 分數(shù)加減混合運算 知識點梳理課件
- 家庭教育環(huán)境與小學生心理健康的關(guān)系 論文
- 蒸汽機的原理
評論
0/150
提交評論