信息工程系課程設(shè)計(jì)報(bào)告銀行業(yè)務(wù)模擬與離散事件模擬_第1頁(yè)
信息工程系課程設(shè)計(jì)報(bào)告銀行業(yè)務(wù)模擬與離散事件模擬_第2頁(yè)
信息工程系課程設(shè)計(jì)報(bào)告銀行業(yè)務(wù)模擬與離散事件模擬_第3頁(yè)
信息工程系課程設(shè)計(jì)報(bào)告銀行業(yè)務(wù)模擬與離散事件模擬_第4頁(yè)
信息工程系課程設(shè)計(jì)報(bào)告銀行業(yè)務(wù)模擬與離散事件模擬_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、各專業(yè)完整優(yōu)秀畢業(yè)設(shè)計(jì)圖紙?zhí)m州商學(xué)院隴橋?qū)W院信息工程系課程設(shè)計(jì)報(bào)告設(shè) 計(jì) 題 目:銀行業(yè)務(wù)模擬與離散事件模擬系 別:信息工程系 專 業(yè) (方 向):網(wǎng)絡(luò)工程年級(jí)、班:13級(jí)網(wǎng)絡(luò)工程學(xué)生姓名:學(xué)生學(xué)號(hào):20130672122指導(dǎo)教師:2014年12月30日目錄一、系統(tǒng)開發(fā)的背景3二、系統(tǒng)分析與設(shè)計(jì)3(一)系統(tǒng)功能要求3(二)系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)4三、系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)5(一)測(cè)試closeforday()函數(shù)5(二)測(cè)試customerarrived()函數(shù)5四、系統(tǒng)測(cè)試7五、總結(jié)9六、附件(代碼、部分圖表)10銀行業(yè)務(wù)模擬與離散事件模擬一、系統(tǒng)開發(fā)的背景1.通過(guò)此次課程設(shè)計(jì)中銀行業(yè)務(wù)模擬的題目,掌握

2、隊(duì)列(或者鏈表) 等數(shù)據(jù)結(jié)構(gòu)的基本操作方面的知識(shí),并能靈活的解決一些基本的問(wèn)題,加深對(duì)其性質(zhì)及各項(xiàng)操作的理解;2.將所學(xué)數(shù)據(jù)結(jié)構(gòu)方面的知識(shí)與一門具體的語(yǔ)言相結(jié)合(語(yǔ)言)來(lái)進(jìn)行實(shí)現(xiàn),感受數(shù)據(jù)結(jié)構(gòu)的強(qiáng)大作用,加深理解。二、系統(tǒng)分析與設(shè)計(jì)(一)系統(tǒng)功能要求程序中用到的所有抽象數(shù)據(jù)類型的定義、主程序的流程以及各程序模塊之間的層次(調(diào)用)關(guān)系。使用到帶頭結(jié)點(diǎn)鏈表和結(jié)點(diǎn),此鏈表用于存放客戶的進(jìn)入或者離開的事件,存放數(shù)據(jù)包括進(jìn)入的時(shí)間,處理的時(shí)間,離開的時(shí)間。使用一個(gè)隊(duì)列和節(jié)點(diǎn),此隊(duì)列用于模擬進(jìn)入銀行后等待辦理業(yè)務(wù)的客戶排隊(duì)情況。其存儲(chǔ)的數(shù)據(jù)有時(shí)間到達(dá)的時(shí)間和處理事物所需的時(shí)間。包括函數(shù)調(diào)用,主要的程序在m

3、ain.cpp中,從main()進(jìn)入調(diào)用。首先,分析題目要求劃分實(shí)現(xiàn)模塊、畫出大致的流程圖,定義基本數(shù)據(jù)類型,諸如結(jié)構(gòu)體、隊(duì)列等;其次,考慮基本大致的操作,比如要擬定開門的時(shí)間、顧客到來(lái)為其提供服務(wù)以及離開時(shí)的操作等;再次,針對(duì)上述的基本操作實(shí)現(xiàn)具體需要進(jìn)行的操作,具體實(shí)現(xiàn)每個(gè)環(huán)節(jié)需要進(jìn)行的基本操作,即具體編寫每個(gè)小函數(shù)實(shí)現(xiàn)功能;最后,編寫主函數(shù)對(duì)每個(gè)實(shí)現(xiàn)進(jìn)行按需調(diào)用,實(shí)現(xiàn)操作。(二)系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)通過(guò)對(duì)系統(tǒng)功能的分析,銀行業(yè)務(wù)模擬和離散事件模擬功能如圖所示。圖1 程序流程圖三、系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(一)測(cè)試closeforday()函數(shù)voidcloseforday()printf(*n);p

4、rintf(*n);printf(* 所有顧客業(yè)務(wù)辦理總時(shí)間:%d分鐘n, totaltime);printf(* 業(yè)務(wù)辦理顧客數(shù):%dn, customernum);printf(* 平均每人辦理時(shí)間:%fn,(float)totaltime/(float)customernum);printf(*n);printf(*n);圖2 測(cè)試closeforday()函數(shù)(二)測(cè)試customerarrived()函數(shù)status customerarrived(eventlist&ev, qcupp&q, qcuevent en)test(顧客到達(dá)處理);customernum +;/ 產(chǎn)生隨機(jī)

5、數(shù)/srand(54);intdurtime = rand()%30+1;intintertime = rand()%5+1; / 插入到達(dá)事件表qcuevententemp;int t = en.occurtime + intertime;entemp.occurtime = t;entemp.ntype = 0;entemp.next = null;if (t arrivaltime = en.occurtime;q-duration = durtime;q-next = null;int i = mincuqueue(q);encuqueue(qi,q); / 插入離開事件entemp.

6、occurtime = en.occurtime + durtime;entemp.ntype = i;entemp.next = null;if(qlength(qi) = 1)orderinser(ev, entemp);return ok;圖3 測(cè)試customerarrived函數(shù)四、系統(tǒng)測(cè)試圖4控制函數(shù)圖5 測(cè)試函數(shù)圖6 測(cè)試函數(shù)圖7 測(cè)試函數(shù)圖8 測(cè)試結(jié)果五、總結(jié)實(shí)驗(yàn)結(jié)果分析利用隨機(jī)產(chǎn)生的種子進(jìn)行事件的模擬,即到達(dá)時(shí)間和辦理業(yè)務(wù)的時(shí)間都是隨機(jī)產(chǎn)生。如果事件尚未到達(dá)下班時(shí)間,則將其插入到空隊(duì)列或者是人數(shù)(元素)最少的隊(duì)列,通過(guò)檢驗(yàn),算出在不同的服務(wù)窗口數(shù)下的等待時(shí)間以及服務(wù)時(shí)間,基本

7、上實(shí)現(xiàn)了銀行事件的模擬。實(shí)驗(yàn)心得體會(huì)數(shù)據(jù)結(jié)構(gòu)是一門理論性較強(qiáng)且抽象的課程,經(jīng)過(guò)一周的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),至今我仍感受頗深,從選題到定稿,從理論到實(shí)踐,在短短的一周時(shí)間里,雖然時(shí)間比較緊,但我學(xué)到了很多以前不知道的東西,同時(shí)不僅復(fù)習(xí)和鞏固了以前所學(xué)過(guò)的知識(shí),而且看到了和學(xué)到了很多在書本上所沒有學(xué)到過(guò)的知識(shí),使我懂得了理論必須和實(shí)踐永遠(yuǎn)的結(jié)合起來(lái),才能有質(zhì)的飛躍,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過(guò)程中遇到過(guò)很多問(wèn)題,但我一直堅(jiān)持著,這畢竟第一次做的,難免會(huì)遇到過(guò)各種各樣的問(wèn)題,同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,現(xiàn)在覺得一定要

8、把以前所學(xué)過(guò)的知識(shí)重新溫故。雖然我的算法不夠完好,還有許多問(wèn)題,但我一定會(huì)調(diào)試成功的。六、附件(代碼、部分圖表)/* experiment of datastructure file* copyright (c) 2014-2015, htucairangdunzhu. all rights reserved.*purpose:* 實(shí)現(xiàn)了模擬銀行的程序設(shè)計(jì),并且包含每一個(gè)客戶離開時(shí)間及統(tǒng)計(jì),以及* 窗口排隊(duì)的可視化模擬.運(yùn)行測(cè)試通過(guò).* public*2014.12才讓頓珠于隴橋三號(hào)樓215宿舍*/#define ok 1#define true 1#define false 0#define

9、 error 0#define infeasible -1#define overflow -2typedefint status;/-銀行排隊(duì)模擬/事件和事件表typedefstructqcueventintoccurtime;intntype;structqcuevent *next;qcuevent, *eventlist;/窗口前隊(duì)列元素typedefstructqcuelemintarrivaltime;int duration;structqcuelem *next;qcuelem,*qeptr;/窗口指針typedefstruct qeptr front;qeptr rear;q

10、customerp,*qcupp;/主要操作函數(shù)status openforday(eventlist&ev, qcuevent en, qcupp&q);/開門status customerarrived(eventlist&ev, qcupp&q, qcueventen);/顧客到達(dá)status customerdeparture(eventlist&ev, qcupp&q, qcuevent en);/顧客離開voidcloseforday();/基本操作函數(shù)status orderinser(eventlist&ev, qcuevent en);/按時(shí)間順序插入事件到事件表intqle

11、ngth(qcustomerpqn);/求窗口隊(duì)列長(zhǎng)度intmincuqueue(qcupp q);/求隊(duì)最短的窗口status delfirstevent(eventlist&ev);/刪除事件表中的第一個(gè)事件status initcuqueue(qcustomerp&qn);/初始化窗口隊(duì)列status encuqueue(qcustomerp&qn,qeptr q);/進(jìn)入隊(duì)列status decuqueue(qcustomerp&qn,qcuelem&q);/刪除隊(duì)列中的元素status getqhead(qcustomerpqn,qcuelem&q);/獲得隊(duì)列中的第一個(gè)元素stat

12、us destoryqueue(qcustomerpqn);/銷毀隊(duì)列void ptint_qstatus(qcustomerpqcu);/打印隊(duì)列長(zhǎng)度voidbank_simulationfunc();void test(char str);#include stdio.h#include stdlib.h#include time.hint i=0,e=0,counter=0;inttotaltime=0,customernum=0;/累計(jì)客戶逗留時(shí)間,客戶數(shù)intclosetime;/關(guān)門時(shí)間intwindowsnum = 0;/主函數(shù)void main() eventlistev; /

13、 事件表qcuevent en; qcuppqcu = null;openforday(ev, en, qcu);while (ev-next)en.ntype = ev-next-ntype;en.occurtime = ev-next-occurtime;delfirstevent(ev);if (en.ntype = 0)customerarrived(ev, qcu, en);elsecustomerdeparture(ev, qcu, en);ptint_qstatus(qcu);closeforday();/主要功能子函數(shù)status openforday(eventlist&ev

14、, qcuevent en, qcupp&q)int temp = 0;printf(請(qǐng)輸入隨機(jī)數(shù)種子(或輸入0使用隨機(jī)種子):);scanf(%d,&temp);if (temp=0) srand(unsigned)time(null);elsesrand(temp);printf(請(qǐng)輸入營(yíng)業(yè)時(shí)間(單位:分鐘):);scanf(%d,&temp);closetime = temp;totaltime = 0;customernum = 0;en.occurtime = 0;en.ntype = 0;en.next = null;ev = (eventlist) malloc(sizeof(q

15、cuevent);ev-next = null;orderinser(ev, en);printf(請(qǐng)輸入辦理業(yè)務(wù)的窗口數(shù)(至少1個(gè)):);scanf(%d,&windowsnum);q = (qcustomerp *) malloc(windowsnum+1)*sizeof(qcustomerp);for (int i=1;i=windowsnum;i+)initcuqueue(qi);return ok;status customerarrived(eventlist&ev, qcupp&q, qcuevent en)test(顧客到達(dá)處理);customernum +;/ 產(chǎn)生隨機(jī)數(shù)/s

16、rand(54);intdurtime = rand()%30+1;intintertime = rand()%5+1; / 插入到達(dá)事件表qcuevententemp;int t = en.occurtime + intertime;entemp.occurtime = t;entemp.ntype = 0;entemp.next = null;if (t arrivaltime = en.occurtime;q-duration = durtime;q-next = null;int i = mincuqueue(q);encuqueue(qi,q); / 插入離開事件entemp.occ

17、urtime = en.occurtime + durtime;entemp.ntype = i;entemp.next = null;if(qlength(qi) = 1)orderinser(ev, entemp);return ok;status customerdeparture(eventlist&ev, qcupp&q, qcuevent en)test(顧客離開處理);int i = en.ntype;printf(離開時(shí)間%dn,en.occurtime);if(en.occurtimeclosetime)destoryqueue(qi);elseqcuelem custome

18、r;decuqueue(qi,customer);/ 客戶逗留時(shí)間totaltime += en.occurtime - customer.arrivaltime;printf(總時(shí)間為%dn,totaltime);if (qi.front-next)getqhead(qi,customer);qcuevententemp;entemp.occurtime = en.occurtime + customer.duration;entemp.ntype = i;orderinser(ev, entemp);return ok;voidcloseforday()printf(*n);printf(

19、*n);printf(* 所有顧客業(yè)務(wù)辦理總時(shí)間:%d分鐘n, totaltime);printf(* 業(yè)務(wù)辦理顧客數(shù):%dn, customernum);printf(* 平均每人辦理時(shí)間:%fn,(float)totaltime/(float)customernum);printf(*n);printf(*n);/功能實(shí)現(xiàn)子函數(shù)status orderinser(eventlist&ev, qcuevent en)eventlistentemp,qtemp;entemp = (eventlist) malloc(sizeof(qcuevent);entemp-occurtime = en.

20、occurtime;entemp-ntype = en.ntype;entemp-next = null;if (!ev-next)ev-next = entemp;return ok;qtemp = ev;while(qtemp-next&qtemp-next-occurtimenext;entemp-next = qtemp-next;qtemp-next = entemp;return ok;intqlength(qcustomerpqn) qeptrqtemp;int i=0;qtemp = qn.front-next;while(qtemp)qtemp = qtemp-next;i+

21、;return i;intmincuqueue(qcupp q)inti,min;for (i=1,min=1;i=windowsnum;i+)min = qlength(qmin)next;ev-next = p-next;free(p);return ok;status initcuqueue(qcustomerp&qn)qn.front = (qeptr) malloc(sizeof(qcuelem);qn.front-next = null;qn.rear = qn.front;return ok;status encuqueue(qcustomerp&qn,qeptr q)qn.rear-next = q;qn.rear = q;

溫馨提示

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

評(píng)論

0/150

提交評(píng)論