銀行排隊系統(tǒng)實驗報告_第1頁
銀行排隊系統(tǒng)實驗報告_第2頁
銀行排隊系統(tǒng)實驗報告_第3頁
銀行排隊系統(tǒng)實驗報告_第4頁
銀行排隊系統(tǒng)實驗報告_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、銀行排隊系統(tǒng)一、【設(shè)計要求:】假設(shè)有你n個窗口對外接待業(yè)務(wù),從早晨銀行開門起不斷有客戶進入。客戶在客戶人數(shù)眾多時需在選擇窗口排隊。編制一個程序模擬這種排隊活動,并計算一天中客戶在銀行逗留的平均時間。二、【實驗?zāi)康模骸繉?shù)據(jù)結(jié)構(gòu)的語言、思想運用到現(xiàn)實生活中,學(xué)以至用,通過實驗加深對數(shù)據(jù)結(jié)構(gòu)知識的理解和運用,同時我們將銀行排隊系統(tǒng)轉(zhuǎn)化為電腦語言時,對生活事物觀察和學(xué)習(xí)也更加敏捷。三、【實驗儀器:】海爾電腦一臺。四、【編譯軟件:】microsoft visual c+ 6.0五、【設(shè)計思路:】見銀行排隊系統(tǒng)導(dǎo)航圖六、【程序分析:】(一)、頭函數(shù) #include #include #include

2、#include #include (一)、主函數(shù)功能:生成系統(tǒng)主菜單,為進入各個界面提供通道。主要為switch開關(guān)語句進入不同的界面。源程序:void main() /主函數(shù)time_t strat ,end;float allsum=0,average=0;float a10=0,0,0,0,0,0,0,0,0,0; int c,x,v=0,w=0; initshuzu(); initqueue(); double sum=0; while(1) printf(n*歡迎光臨中國銀行*n); printf(n 1 顧客到達n); printf( 2 顧客離開n); printf( 3 查看

3、業(yè)務(wù)辦理n); printf( 4 查看排隊情況n); printf( 5 退出nn); time(); printf(*歡迎光臨中國銀行*n); printf(請輸入:); scanf(%d,&c);switch(c)case 1:system(cls);printf(n*顧客到達界面*nn);int k=0; int a; printf(請選擇你的用戶類型:vip用戶請按 1;n普通卡用戶請按其它鍵.n);printf(請輸入:); scanf(%d,&a); system(cls); break;case 2: system(cls); printf(n*顧客離開界面*nn); prin

4、tf(請輸入離開顧客得編號:n); scanf(%d,&x); likai(x); mygrade() ; w+; allsum+=a0; getch(); system(cls); break;case 3: system(cls); printf(n*業(yè)務(wù)查詢界面*nn); printl(); getch(); system(cls); break; case 4: system(cls); printf(n*排隊查詢界面*nn); print2(); getch(); system(cls); break; case 5: return; getch(); system(cls);cas

5、e 6: system(cls); printf(n*系統(tǒng)查詢界面*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) average=allsum/w; printf(n至今已有 %d 位普通用戶,%d 位vip用戶成功辦理業(yè)務(wù)!,w,vip1); printf(n普通用戶業(yè)務(wù)辦理總共用時 %0.2f,平均用時 %

6、0.2f,allsum,average); getch(); system(cls); break;default: printf(輸入有誤!請重新輸入:n);getch();system(cls); 運行界面:到達界面:當(dāng)客戶到達時,在主菜單輸入“1”進入“客戶到達界面”。此界面區(qū)分vip客戶到達和普通客戶到達。vip:客戶在“到達界面”輸入“1”,進入vip驗證,通過vip卡號和密碼驗證就可以進入vip區(qū)辦理業(yè)務(wù)。普通客戶:客戶在“到達界面”輸入“2”,系統(tǒng)即為客戶分配業(yè)務(wù)號,憑此號辦理業(yè)務(wù)、排隊或離開。使用函數(shù):vip(a);驗證vip用戶。daoda(v); enqueue(&q,x)

7、;將辦理業(yè)務(wù)人員寫入線性表,排隊人員寫入鏈表。time1();開始記錄時間。vip(a)源程序: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區(qū)辦理業(yè)務(wù)!n);vip1+; else

8、if(i=200&ch0=2&ch1=2&ch2=2&ch3=2)printf(n尊敬的vip用戶您好,請您直接到vip區(qū)辦理業(yè)務(wù)!n); vip1+; else if(i=300&ch0=3&ch1=3&ch2=3&ch3=3)printf(n尊敬的vip用戶您好,請您直接到vip區(qū)辦理業(yè)務(wù)!n);vip1+; else if(i=400&ch0=4&ch1=4&ch2=4&ch3=4) printf(n尊敬的vip用戶您好,請您直接到vip區(qū)辦理業(yè)務(wù)!n); vip1+; else if(i=500&ch0=5&ch1=5&ch2=5&ch3=5)printf(n尊敬的vip用戶您好,請您

9、直接到vip區(qū)辦理業(yè)務(wù)!n);vip1+;else printf(n你的輸入有誤!n);break; default : break; daoda(v)源程序:void daoda(int x) /解決顧客到達事件算法 int i=l.len+1;if (l.lendata=elem; s-next=null; q-rear-next=s; q-rear=s;time1()源程序:time1() /時間函數(shù) time_t timep;time (&timep);time= difftime(end,start);運行結(jié)果:客戶離開界面:當(dāng)客戶完成辦理業(yè)務(wù)需要離開時。在主菜單輸入“2”進入“客戶

10、離開界面”。此界面提供服務(wù)評分。首先輸入自己的客戶號,然后選擇自己辦理業(yè)務(wù)的柜臺號,結(jié)合自己對這次服務(wù)的滿意度給出評分,然后系統(tǒng)給出此柜臺的平均分和自己辦理業(yè)務(wù)過程中所需要的時間。使用函數(shù):likai(x) int dlqueue(linkqueue *q) 離開時出隊操作,便將排隊的客戶寫到業(yè)務(wù)辦理的線性表里。 mygrade() int pingfeng( ) 柜臺報務(wù)評分。time1() 中止時間記錄,顯示從開始記時到此時候的時間。likai(x)源程序:void likai(int x) /解決顧客離開事件算法 int i=0;doif(xl.len)printf(輸入有誤!n請重新輸

11、入:);scanf(%d,&x);else for(i=0;ifront=q-rear) printf(隊列為空!n); exit(1); else t=q-front-next; q-front-next=t-next; x=t-data; free(t); return x;mygrade()源程序:void mygrade() /主評分函數(shù) printf(為了改善服務(wù)質(zhì)量,請你對我們的服務(wù)進行評價。謝謝!n);z=guitai( );y=pingfeng( ); switch (z) /柜臺評分處理 case 1: /1號柜臺評分處理 sum1+=y;i1+;ave1=sum1/i1;

12、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;case 4: /4號柜臺評分處理 sum4+=y;i4+;ave4=sum4/i4; printf( %d號

13、柜臺的平均滿意度為%0.2f。感謝你的評分,謝謝!n,z,ave4);break;case 5: /5號柜臺評分處理 sum5+=y;i5+;ave5=sum5/i5; printf( %d號柜臺的平均滿意度為%0.2f。感謝你的評分,謝謝!n,z,ave5);break;default : printf(你的輸入有誤,請重新輸入!n); getch();int pingfeng( ) 源程序:int pingfeng( ) /判斷輸入的分數(shù)是否正確int y=0; printf(請輸入你評分(1-5):n 1分非常不滿意;n 2分比較不滿意;n 3分一般滿意;n 4分比較滿意;n 5分非常滿

14、意。n);printf(請輸入:);scanf(%d,&y);if(y5)printf(你輸入評分有誤,請重新輸入!n); printf(請輸入你的評分(1-5):n); scanf(%d,&y);else printf( 你的評分為%d.n,y);return y; 運行結(jié)果:業(yè)務(wù)查詢界面:在主菜單輸入“3”進入“業(yè)務(wù)查詢界面”,在此界面可查詢到正在業(yè)務(wù)辦理的情況。使用函數(shù):printl() 顯示正在辦理業(yè)務(wù)的客戶。printl()源程序:void printl() /輸出數(shù)組算法 int i; printf(正在辦理業(yè)務(wù)的顧客編號為:n); for( i=1;inext; while(s!

15、=null) printf(%d ,s-data); s=s-next; i+; printf(n您的前面一共有%d人在排隊,請您稍候!,i);printf(n);運行結(jié)果:系統(tǒng)查詢:因為此功能為內(nèi)部工作人員使用,所以通道選項在主菜單上隱藏。在主菜單輸入“6”,進入“系統(tǒng)查詢界面”。通過此此界面的卡號、密碼驗證,就可以查詢到系統(tǒng)開起至查詢時辦理業(yè)務(wù)的普通客戶、vip客戶人數(shù)。并可以顯示所有普通客戶辦理業(yè)務(wù)的總時間,每個客戶所用的平均時間。查詢系統(tǒng)運行的時間。源程序:system(cls); printf(n*系統(tǒng)查詢界面*nn);char cool3;int i=0,k=0;printf(請輸

16、入你的卡號:); scanf(%d,&i); printf(請您輸入五位密碼:);while(coolk-1!= ) coolk=getch(); k+; printf(*); if(i=000&cool0=1&cool1=1&cool2=1&cool3=1) average=allsum/w; xi=difftime(end,start); printf(n至今已有 %d 位普通用戶,%d 位vip用戶成功辦理業(yè)務(wù)!,w,vip1); printf(n普通用戶業(yè)務(wù)辦理總共用時 %0.2f,平均用時 %0.2fn,allsum,average); printf(系統(tǒng)已運行%0.2f秒!,xi)

17、; getch(); system(cls); break;運行結(jié)果:附:全部源代碼#include #include #include #include #include #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;static int n;struct list int an+1; /顧客用來辦理業(yè)務(wù)的n個窗口 int len; /表示數(shù)組中的元素個數(shù)

18、l;struct lnode /鏈表結(jié)點類型 int data; lnode *next;struct linkqueue /鏈式存儲的等候隊列的類型定義 lnode *front; lnode *rear;q;void initshuzu() /初始化線性的算法 for(int i=1;inext=null;void enqueue(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 dlque

19、ue(linkqueue *q) /出隊算法 lnode *t; int x; if(q-front=q-rear) printf(隊列為空!n); exit(1); else t=q-front-next; q-front-next=t-next; x=t-data; free(t); return x;void printl() /輸出數(shù)組算法 int i; printf(正在辦理業(yè)務(wù)的顧客編號為:n); for( i=1;inext; while(s!=null) printf(%d ,s-data); s=s-next; i+; printf(n您的前面一共有%d人在排隊,請您稍候!,

20、i);printf(n);void daoda(int x) /解決顧客到達事件算法 int i=l.len+1;if (l.lenl.len)printf(輸入有誤!n請重新輸入:);scanf(%d,&x);else for(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(請輸入你所辦理業(yè)務(wù)的柜臺號

21、(1-3):n);scanf(%d,&y);if(y5)printf(你輸入的柜臺號有誤,請重新輸入!n); printf(請輸入你所辦理業(yè)務(wù)的柜臺號(1-3):n); scanf(%d,&y);elseprintf( 你所辦理業(yè)務(wù)的柜臺為%d.n,y);return y; int pingfeng( ) /判斷輸入的分數(shù)是否正確int y=0; printf(請輸入你評分(1-5):n 1分非常不滿意;n 2分比較不滿意;n 3分一般滿意;n 4分比較滿意;n 5分非常滿意。n);printf(請輸入:);scanf(%d,&y);if(y5)printf(你輸入評分有誤,請重新輸入!n);

22、 printf(請輸入你的評分(1-5):n); scanf(%d,&y);else printf( 你的評分為%d.n,y);return y; void mygrade() /主評分函數(shù) printf(為了改善服務(wù)質(zhì)量,請你對我們的服務(wù)進行評價。謝謝!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;i

23、2+;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;case 4: /4號柜臺評分處理 sum4+=y;i4+;ave4=sum4/i4; printf( %d號柜臺的平均滿意度為%0.2f。感謝你的評分,謝謝!n,z,ave4);break;case 5: /5號柜臺評分處理 sum5+=y;i5+;ave5=sum

24、5/i5; printf( %d號柜臺的平均滿意度為%0.2f。感謝你的評分,謝謝!n,z,ave5);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&c

25、h3=1)printf(n尊敬的vip用戶您好,請您直接到vip區(qū)辦理業(yè)務(wù)!n);vip1+; else if(i=200&ch0=2&ch1=2&ch2=2&ch3=2)printf(n尊敬的vip用戶您好,請您直接到vip區(qū)辦理業(yè)務(wù)!n); vip1+; else if(i=300&ch0=3&ch1=3&ch2=3&ch3=3)printf(n尊敬的vip用戶您好,請您直接到vip區(qū)辦理業(yè)務(wù)!n);vip1+; else if(i=400&ch0=4&ch1=4&ch2=4&ch3=4) printf(n尊敬的vip用戶您好,請您直接到vip區(qū)辦理業(yè)務(wù)!n); vip1+; else i

26、f(i=500&ch0=5&ch1=5&ch2=5&ch3=5)printf(n尊敬的vip用戶您好,請您直接到vip區(qū)辦理業(yè)務(wù)!n);vip1+;else printf(n你的輸入有誤!n);break; default : break; void time() /時間函數(shù) time_t timep; time (&timep); printf( 現(xiàn)在時刻:%s,ctime(&timep);void main() /主函數(shù)11 time_t a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,start,end;float b1=0,b2=0,b3=0,b4=0,b5=0,b6=0

27、,b7=0,b8=0,b9=0,b10=0,allsum=0,average=0,xi=0;float a10=0,0,0,0,0,0,0,0,0,0; int c,x,v=0,w=0; initshuzu(); initqueue(); double sum=0; while(1) printf(n*歡迎光臨中國銀行*n); printf(n 1 顧客到達n); printf( 2 顧客離開n); printf( 3 查看業(yè)務(wù)辦理n); printf( 4 查看排隊情況n); printf( 5 退出nn); time(); printf(*歡迎光臨中國銀行*n); printf(請輸入:); 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(); else v+;printf(尊敬的普通卡用戶,你的業(yè)務(wù)號為%d.n,v);da

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論