版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、山東理工工大學(xué)計計算機學(xué)學(xué)院課程設(shè)計計(數(shù)據(jù)結(jié)結(jié)構(gòu))班 級姓名學(xué) 號指導(dǎo)教師師二一一一年一月二十日課程設(shè)計計任務(wù)書書及成績績評定課題名稱稱銀行業(yè)務(wù)務(wù)模擬系系統(tǒng)、題目目的目的的和要求求: 1、設(shè)計計目的鞏固和加加深對數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu)的理解解,通過過上機實實驗、調(diào)調(diào)試程序序,加深深對課本本知識的的理解,最終使使學(xué)生能能夠熟練練應(yīng)用數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu)的知識識寫程序序。(1)通通過本課課程的學(xué)學(xué)習(xí),能能熟練掌掌握幾種種基本數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu)的基本本操作。(2)能能針對給給定題目目,選擇擇相應(yīng)的的數(shù)據(jù)結(jié)結(jié)構(gòu),分分析并設(shè)設(shè)計算法法,進而而給出問問題的正正確求解解過程并并編寫代代碼實現(xiàn)現(xiàn)。2、設(shè)計計題目要要求:1.客客戶業(yè)
2、務(wù)務(wù)分為兩兩種:第一種種是申請請從銀行行得到一一筆資金金,即取款款或借款;第二種種是向銀銀行投入入一筆資資金,即存款款或還款款。2.銀銀行有兩兩個服務(wù)務(wù)窗口,相應(yīng)地地有兩個個隊列??蛻舻降竭_銀行行后先排第第一個隊隊。處理每每個客戶戶業(yè)務(wù)時時,如果屬屬于第一一種,且申請請額超出出銀行現(xiàn)現(xiàn)存資金金總額而而得不到到滿足時時,則立即排入入第二個個隊等候候,直至滿滿足時才才離開銀銀行, 否則則業(yè)務(wù)處處理完后后立即離開開銀行。3.每每接待完完一個第第二種業(yè)務(wù)務(wù)的客戶戶,則順序序檢查和和處理第第二個隊隊列中的的客戶,對能滿滿足的申申請者予予以滿足足,不能滿滿足者重重新排到到第二個個隊列的的隊尾。4.假設(shè)設(shè)檢
3、查不不需要時時間,在在此檢查查過程中中,一旦旦銀行資資金總額額少于或或等于剛剛才第一一個隊列列中最后后一個客客戶(第第二種業(yè)業(yè)務(wù))被被接待之之前的數(shù)數(shù)額,或者本本次已將將第二個個隊列檢檢查或處處理了一一遍,就停止止檢查(因為此此時已不不可能還還有滿足足者),轉(zhuǎn)而繼繼續(xù)接待待第一個個隊列的的客戶。5.任任何時刻刻都只開開一個窗窗口,營營業(yè)時間間結(jié)束時時所有客客戶立即即離開銀銀行。通通過離散散的模擬擬方法求求出客戶戶在銀行行內(nèi)逗留留的平均均時間。、設(shè)計計進度及及完成情情況日 期期內(nèi) 容1.100-1.11選取參考考書,查查閱有關(guān)關(guān)文獻資資料,完完成資料料搜集和和系統(tǒng)分分析工作作。1.1221.14
4、創(chuàng)建相關(guān)關(guān)數(shù)據(jù)結(jié)結(jié)構(gòu),錄錄入源程程序。1.1771.19調(diào)試程序序并記錄錄調(diào)試中中的問題題,初步步完成課課程設(shè)計計報告。1.2001.21上交課程程設(shè)計報報告打印印版并進進行課程程設(shè)計答答辯,要要求每個個同學(xué)針針對自己己的設(shè)計計回答指指導(dǎo)教師師3-44個問題題。考核結(jié)束束后將課課程設(shè)計計報告和和源程序序的電子子版交班班長統(tǒng)一一刻光盤盤上交。、主要要參考文文獻及資資料1 嚴蔚敏敏 數(shù)據(jù)據(jù)結(jié)構(gòu)(C語言言版)清清華大學(xué)學(xué)出版社社 199992 嚴蔚敏敏 數(shù)據(jù)據(jù)結(jié)構(gòu)題題集(CC語言版版)清華華大學(xué)出出版社 199993 譚浩強強 CC語言程程序設(shè)計計 清清華大學(xué)學(xué)出版社社4 與所用用編程環(huán)環(huán)境相配配套
5、的CC語言或或C+相關(guān)的的資料、成績績評定:設(shè)計成績績:(教教師填寫寫)指導(dǎo)老師師:(簽簽字)二一一一年一月二十一日目 錄錄TOC o 1-3 h z u HYPERLINK l _Toc283109527 第一章概概述 PAGEREF _Toc283109527 h 1 HYPERLINK l _Toc283109528 第二章系系統(tǒng)分析析 PAGEREF _Toc283109528 h 2 HYPERLINK l _Toc283109529 第三章概概要設(shè)計計 PAGEREF _Toc283109529 h 3 HYPERLINK l _Toc283109530 第四章詳詳細設(shè)計計 PAG
6、EREF _Toc283109530 h 6 HYPERLINK l _Toc283109531 第五章運運行與測測試 PAGEREF _Toc283109531 h 244 HYPERLINK l _Toc283109532 第六章總總結(jié)與心心得 PAGEREF _Toc283109532 h 288 HYPERLINK l _Toc283109533 參考文獻獻: PAGEREF _Toc283109533 h 29第一章 概述課程設(shè)計計是實踐踐性教學(xué)學(xué)中的一一個重要要環(huán)節(jié),它以某某一課程程為基礎(chǔ)礎(chǔ),可以以涉及和和課程相相關(guān)的各各個方面面,是一一門獨立立于課程程之外的的特殊課課程。課課程設(shè)
7、計計是讓同同學(xué)們對對所學(xué)的的課程更更全面的的學(xué)習(xí)和和應(yīng)用,理解和和掌握課課程的相相關(guān)知識識。數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu)是一一門重要要的專業(yè)業(yè)基礎(chǔ)課課,是計計算機理理論和應(yīng)應(yīng)用的核核心基礎(chǔ)礎(chǔ)課程。數(shù)據(jù)結(jié)構(gòu)構(gòu)課程設(shè)設(shè)計,要要求學(xué)生生在數(shù)據(jù)據(jù)結(jié)構(gòu)的的邏輯特特性和物物理表示示、數(shù)據(jù)據(jù)結(jié)構(gòu)的的選擇和和應(yīng)用、算法的的設(shè)計及及其實現(xiàn)現(xiàn)等方面面,加深深對課程程基本內(nèi)內(nèi)容的理理解。同同時,在在程序設(shè)設(shè)計方法法以及上上機操作作等基本本技能和和科學(xué)作作風(fēng)方面面受到比比較系統(tǒng)統(tǒng)和嚴格格的訓(xùn)練練。在這次的的課程設(shè)設(shè)計中我我選擇的的題目是是銀行業(yè)業(yè)務(wù)模擬擬系統(tǒng)。一般某個個銀行在在某個地地區(qū)營業(yè)業(yè)前,都都要進行行市場調(diào)查查與分析析。通過
8、過調(diào)查,分析開開多少個個窗口使使效率最最高,而而且不會會產(chǎn)生較較大的冗冗余。做做此項調(diào)調(diào)查通常常要花費費大量的的人力物物力,因因此我借借助計算算機系統(tǒng)統(tǒng)產(chǎn)生的的隨機數(shù)數(shù)(時間間間隔,每個客客戶辦理理的款數(shù)數(shù)以及處處理時間間)對銀行客客戶的離離散事件件進行預(yù)預(yù)測,通通過銀行行業(yè)務(wù)模模擬系統(tǒng)統(tǒng)計算出出客戶在在銀行逗逗留的總總時間并并計算出出客戶在在銀行的的平均逗逗留時間間。通過過計算機機模擬的的方法減減少實際際調(diào)查的的勞動量量,資金金及時間間耗費,輕松的的得到高高效的方方法。第二章 系統(tǒng)分分析1銀行行業(yè)務(wù)模模擬程序序的主要要處理對對象是“事件”,事件件的主要要信息是是事件的的類型和和事件的的發(fā)生時
9、時刻。算算法中處處理的事事件有兩兩類:一一類是客客戶到達達事件;另一類類是客戶戶離開事事件。前前一類事事件發(fā)生生的時刻刻隨客戶戶的到來來自然形形成;后后一類事事件發(fā)生生的時刻刻由客戶戶辦理業(yè)業(yè)務(wù)所需需時間和和等待時時間而定定。由于于程序驅(qū)驅(qū)動是按按事件發(fā)發(fā)生時刻刻的先后后順序進進行的,所以事事件表應(yīng)應(yīng)是有序序表,其其主要操操作是插插入和刪刪除事件件,用一一個單鏈鏈表表示示。2銀行行業(yè)務(wù)模模擬程序序中需要要的另一一數(shù)據(jù)結(jié)結(jié)構(gòu)是表表示客戶戶排隊的的隊列,由于假假設(shè)銀行行有2個窗口口,因此此程序中中需要22個隊列列,隊列列中有關(guān)關(guān)客戶的的信息是是客戶到到達的時時間和客戶戶辦理業(yè)業(yè)務(wù)所需需要的時時間。
10、隊隊列中的的隊頭客客戶即為為正在窗窗口辦理理事務(wù)的的客戶,他辦完完業(yè)務(wù)離離開隊列列的時刻刻影響著著即將發(fā)發(fā)生的客客戶離開開事件的的時刻,我們要要記錄前前一客戶戶的離開開時間。這就是是說,對對每個隊隊頭客戶戶都存在在一個將將要驅(qū)動動的客戶戶離開事事件。因因此在任任何時刻刻即將發(fā)發(fā)生的事事伯只有有4種可能能:1)新的客客戶到達達;2)隊列11隊頭客客戶辦完完業(yè)務(wù)離離開;33)隊列列1取款款客戶由由于得不不到滿足足而轉(zhuǎn)至至隊列22;4)隊列22隊頭客客戶辦完完業(yè)務(wù)離離開;3. 為為了使編編寫的程程序具有有通用性性,在編編程序時時將銀行行的營業(yè)業(yè)時間、初始存存款客戶辦理理業(yè)務(wù)的的最長時時間及兩兩個客戶
11、戶到達的的最大時間間間隔都都設(shè)置成成程序運運行時動動態(tài)輸入入,但是是客戶辦辦理業(yè)務(wù)務(wù)的時間間和兩個個客戶到到達的時時間間隔隔用隨機機函數(shù)產(chǎn)產(chǎn)生的隨隨機數(shù)表表示。這這樣可以以對程序序進行理理性的分分析,從從而實現(xiàn)現(xiàn)真正離離散事件件的模擬擬。4.測試試數(shù)據(jù)??蛻舻牡拇嫒】羁罱痤~,不大于于50000元客戶辦辦理業(yè)務(wù)務(wù)所要時時間,不不大于220分鐘鐘下個客客戶到達達的時間間間隔,不大于于30分鐘鐘當然,系系統(tǒng)的模模擬性能能完全不不受這些些規(guī)定的的限制,用戶完完全可以以根據(jù)實實際需要要作簡單單的修改改和調(diào)整整而且且以上各各模擬量量均由隨隨機函數(shù)數(shù)給出,符合離離散事件件要求第三章 概要設(shè)設(shè)計銀行業(yè)務(wù)務(wù)模擬
12、程程序流程程圖結(jié)束進入隊列1排隊服務(wù)并離開能否滿足客戶服務(wù)并離開進隊2等待接待1個存款業(yè)務(wù)順序檢查隊2能否滿足取隊頭隊頭是否存在時間到?開始客戶到達否 否否 是 是是 否2、本程程序包含含三個模模塊主程程序模塊塊:voidd maain() 輸出主界界面;選擇操作作:進入入銀行業(yè)務(wù)務(wù)模擬系系統(tǒng)退退出程序序;Whille(進進入銀行行業(yè)務(wù)模模擬窗口口)OpennForrDayy();進行初初始化操操作;輸出格式式控制; 銀銀行業(yè)務(wù)務(wù)模擬:whille(有有要處理理的事件件時) /有事事件可處處理 DeQuueuee1(); /隊列11出隊列列,并用用en返返回值 if(客客戶到達達)Custto
13、meerArrrivved(); /處處理客戶戶到達事事件 elsee CusttomeerDeeparrturre(); /處理客客戶離開開事件 計計算出客客戶的平平均逗留留時間并并輸出返回主界界面:選擇操作作:繼續(xù)續(xù)進行業(yè)業(yè)務(wù)模擬擬退出出程序;If(選選擇的是是退出)退出程序序;客戶到到達事件件處理模模塊實現(xiàn)客客戶信息息隊列的的抽象數(shù)數(shù)據(jù)類型型客戶離離開事件件處理模模塊實現(xiàn)有有序事件件鏈表的的抽象數(shù)數(shù)據(jù)類型型3、函數(shù)數(shù)調(diào)用關(guān)關(guān)系如圖所示示:主函數(shù)調(diào)用客戶到達事件處理模塊調(diào)用客戶到達事件處理模塊4、設(shè)定定客戶信信息隊列列的抽象象數(shù)據(jù)類類型定義義:ADT LiinkQQueuue 數(shù)據(jù)對象象:
14、 DD=aai|aaiQueeueEElemm,i=1,22,nn, nn0數(shù)據(jù)關(guān)系系: RR1=|aii-1,aiQueeueEElemm ,ii=2,3, ,n 基本操作作:InittQueeue(&Q)操作結(jié)果果:構(gòu)造造一個空空隊列。desttroyyqueeue(&Q)初始條條件:隊隊列已存存在。操作結(jié)結(jié)果:銷銷毀隊列列,此隊隊列不再再存在。EnQuueuee(&QQ,enn)初始條條件:隊隊列已存存在。操作結(jié)結(jié)果:新新元素een入隊隊列。DeQuueuee(&QQ,&een)初始條件件:隊列列已存在在。操作結(jié)結(jié)果:隊隊頭元素素出隊列列,并以以en返返回其值值。QueuueLeengt
15、th(QQ)初始條件件:隊列列已存在在。操作結(jié)果果:返回回隊列中中元素的的個數(shù),即隊列列長度。 ADDT LinnkQuueuee 第四章 詳細設(shè)設(shè)計1源文文件中所所包含的的頭文件件#inccludde #inccludde#inccludde #inccludde2.宏定定義#deffinee MOONEYY 550000 /個個人業(yè)務(wù)務(wù)值,交交易額上上限 #deffinee OKK 1 #deffinee ERRRORR 00 #deffinee OVVERFFLOWW -22 typeedeff innt sstattus;3.定義義的結(jié)構(gòu)構(gòu)體typeedeff sttrucct inn
16、t aarriivettimee; /到達達時間 innt OOccuurTiime; /事件發(fā)發(fā)生時間間 innt NNTyppe; /事事件類型型,0表表示到達達事件,1表示示離開事事件。同同時用11表示存存款,22表示取取款。 innt dduraatioon; /辦辦理業(yè)務(wù)務(wù)時間 loong intt mooneyy;/交易金金額Eveent,EleemTyype11;typeedeff sttrucct /等等待隊列列元素 innt aarriivettimee; /到達達時間 innt dduraatioon; /辦理業(yè)業(yè)務(wù)時間間 loong intt mooneyy; /交易易金
17、額waiit,EElemmTyppe2;typeedeff sttrucct QQNodde1EleemTyype11 daata;strructt QNNodee1 *nexxt;QNoode11,*QQueuue1;typeedeff sttrucct QQNodde2EleemTyype22 daata;strructt QNNodee2 *nexxt;QNoode22,*QQueuue2;typeedeff sttrucct Quueuee1 ffronnt; Quueuee1 rrearr;LinnkQuueuee1;typeedeff sttrucct Quueuee2 ffron
18、nt; Quueuee2 rrearr;LinnkQuueuee2;4.全局局變量longg innt ttotaal_mmoneey; /銀銀行現(xiàn)存存資金總總額int tottal_timme; /客戶戶逗留總總時間int usee_tiime;/每每個顧客客所用時時間int monney;/每每個顧客客辦理的的款數(shù)int cloosettimee;/銀行營營業(yè)時間間int INTTERTTIMEE; /下一一用戶到到達的時時間間隔隔int DURRATIION; /辦理業(yè)業(yè)務(wù)所需需時間int nummberr; /辦理業(yè)業(yè)務(wù)的次次序int timme1; /系統(tǒng)統(tǒng)現(xiàn)在時時間LinkkQue
19、eue11 Q11;LinkkQueeue22 Q22;Evennt een; /事件waitt enn1; /列列表2元元素5.初始始化隊列列1stattus IniitQuueuee1()Q1.froont=Q1.reaar=(Queeue11)maallooc(ssizeeof(QNoode11); if(!Q11.frrontt)exxit(OVEERFLLOW); Q1.froont-neext=NULLL; retturnn OKK;6.初始始化隊列列2stattus IniitQuueuee2()Q2.froont=Q2.reaar=(Queeue22)maallooc(ssiz
20、eeof(QNoode22); if(!Q22.frrontt)exxit(OVEERFLLOW); Q2.froont-neext=NULLL; retturnn OKK;7.銷毀毀隊列11stattus desstrooyquueuee1()whiile(Q1.froont) Q11.reear=Q1.froont-neext; frree(Q1.froont); Q11.frrontt=Q11.reear; retturnn OKK;8.銷毀毀隊列22stattus desstrooyquueuee2()whiile(Q2.froont) Q22.reear=Q2.froont-neex
21、t; frree(Q2.froont); Q22.frrontt=Q22.reear; retturnn OKK;9.隊列列1入隊隊列stattus EnQQueuue1() Quueuee1 pp,r,r1; p=(Queeue11)maallooc(ssizeeof(QNoode11); if(!p)exiit(OOVERRFLOOW); p-datta.aarriivettimee=enn.arrrivvetiime; p-datta.OOccuurTiime=en.OcccurTTimee; p-datta.NNTyppe=een.NNTyppe; p-datta.dduraatioo
22、n=een.dduraatioon; p-datta.mmoneey=een.mmoneey; r=QQ1.ffronnt-nexxt; whiile(r)iff(p-daata.arrriveetimme daata.arrriveetimme) iif(rr=QQ1.ffronnt-nexxt) pp-nnextt=r; QQ1.ffronnt-nexxt=pp; ellser1-neext=p; p-nexxt=rr; r1=r;rr=r-neext;if(!r) iff(Q11.frrontt-nnextt=NNULLL) QQ1.ffronnt-nexxt=pp; QQ1.rrear
23、r=p; QQ1.rrearr-nnextt=NUULL; ellsep-nexxt=NNULLL; Q1.reaar-nexxt=pp; Q1.reaar=pp; retuurn OK;10.隊隊列2入入隊列stattus EnQQueuue2()Queeue22 p; p=(Queeue22)maallooc(ssizeeof(QNoode22); if(!p)exiit(OOVERRFLOOW); p-datta.aarriivettimee=enn1.aarriivettimee; p-datta.dduraatioon=een1.durratiion; p-datta.mmoneey
24、=een1.monney; p-nexxt=NNULLL; Q2.reaar-nexxt=pp; Q2.reaar=pp; retturnn OKK;11.若若隊列11不空,則刪除除Q1的的隊頭元元素,并并用enn返回其其值stattus DeQQueuue1() QQueuue1 p; iff(Q11.frrontt=QQ1.rrearr) rretuurn ERRROR; p=QQ1.ffronnt-nexxt; en.arrriveetimme=pp-ddataa.arrrivvetiime; en.OcccurTTimee=p-daata.OcccurTTimee; en.NTyype
25、=p-datta.NNTyppe; en.durratiion=p-datta.dduraatioon; en.monney=p-datta.mmoneey; Q1.froont-neext=p-nexxt; if(Q1.reaar=p) Q1.reaar=QQ1.ffronnt; /只有有一個人人時 freee(pp); retturnn OKK;12.若若隊列22不空,則刪除除Q2的的隊頭元元素,并并用enn1返回回其值stattus DeQQueuue2() Quueuee2 pp;if(QQ2.ffronnt=Q2.reaar)rretuurn ERRROR; p=QQ2.ffronn
26、t-nexxt; en11.arrrivvetiime=p-datta.aarriivettimee; en11.duurattionn=p-daata.durratiion; en11.mooneyy=p-daata.monney; Q2.froont-neext=p-nexxt; if(Q2.reaar=p) Q2.reaar=QQ2.ffronnt; /只有一一個人時時 freee(pp);retuurn OK;13.營營業(yè)時間間結(jié)束,全部客客戶離開開銀行voidd ffreee_syysteem() desstrooyquueuee1(); desstrooyquueuee2(); 1
27、4.產(chǎn)產(chǎn)生隨機機數(shù)stattus rannd_aar(iint *innterrtimme,llongg innt *monney, innt *durratiion,intt *NNTyppe)*innterrtimme=rrandd()%INTTERTTIMEE+1; /下個客客戶到達達的時間間間隔,不大于于INTTERTTIMEE *mooneyy=raand()%MMONEEY+11; /每個顧顧客辦理理的款數(shù)數(shù),不大大于MOONEYY *duurattionn=raand()%DDURAATIOON+11; /客戶辦辦理業(yè)務(wù)務(wù)所要時時間,不不大于DDURAATIOON *NTType
28、e=raand()%22; /事件類類型分為為0和11兩種 retturnn OKK;15.初初始化操操作voidd OppenFForDDay() priintff( 請輸入入銀行的的初始存存款:); scaanf(%dd,&tottal_monney); priintff( 請輸入入銀行的的營業(yè)時時間(分分鐘):); scaanf(%dd,&cloosettimee); priintff( 請輸入入最大到到達時間間間隔(分鐘):); scaanf(%dd,&INTTERTTIMEE); priintff( 請輸入入最大的的處理時時間(分分鐘):); scaanf(%dd,&DURRATII
29、ON); tottal_timme=00; /客客戶逗留留總時間間(初始始值) nummberr=0; /辦理理業(yè)務(wù)的的次序(初始值值) IniitQuueuee1(); /初始化化隊列11 IniitQuueuee2(); /初始化化隊列22 en.arrriveetimme=00; /到達時時間 en.OcccurTTimee=0; /事事件發(fā)生生時間 en.NTyype=0; /事事件類型型,暫時時值en.monney=0; /交交易金額額,暫時時值en.durratiion=0; /辦理理業(yè)務(wù)時時間,暫暫時值EnQQueuue1(); /事事件進隊隊列16.查查找上一一離開事事件的發(fā)發(fā)
30、生時間間int finnd_lleavve() Quueuee1 pp; innt ii=0; p=Q1.froont-neext;whiile(p!=NULLL) iff(p-daata.NTyype!=0) i=p-datta.OOccuurTiime; p=p-nexxt; retturnn i;17.處處理客戶戶到達事事件voidd CuustoomerrArrriveed()intt innterrtimme;intt i;timme1=en.OcccurTTimee;rannd_aar(&intterttimee,&(en.monney), &(enn.duurattionn),&
31、(enn.NTTypee);/設(shè)設(shè)置一離離開事件件插入事事件表en.NTyype+; /0變變1,11變2i=ffindd_leeavee(); /查找上上一離開開事件的的發(fā)生時時間if(i=0) /第第一位顧顧客 en.OcccurTTimee=enn.arrrivvetiime+en.durratiion; eelsee iff(i=enn.arrrivvetiime)/本本事件到到達時上上一事件件還未離離開 en.OcccurTTimee=i+en.durratiion; /則此事事件的離離開時間間=上一一事件的的離開時時間+本本事件處處理時間間 elsse /上上一事件件離開之之后,本
32、本事件才才到達 een.OOccuurTiime=en.arrriveetimme+een.dduraatioon;/則此此事件的的離開時時間=本本事件到到達時間間+本事事件處理理時間 EEnQuueuee1(); /設(shè)置置下一用用戶到達達事件插插入隊列列1 een.aarriivettimee=enn.arrrivvetiime+intterttimee; /下一一客戶到到達時間間 een.OOccuurTiime=en.arrriveetimme; een.NNTyppe=00; /暫時時值 een.mmoneey=00; /暫時時值 een.dduraatioon=00; /暫時值值 E
33、EnQuueuee1();18.返返回隊列列2的長長度int gettlonng_qq2()intt i=0; Queeue22 p; p=QQ2.ffronnt-nexxt; whiile(p) i+; p=pp-nnextt; retturnn i;19.順順序檢查查隊列22是否有有滿足條條件者stattus cheeck_q2() intt i,j,zz=0; i=ggetllongg_q22(); /用用i返回回隊列22長度 forr(j=1;jj=ii;j+) DeQQueuue2(); /隊隊列2出出隊,用用en11返回其其值 if(en11.mooneyy=ttotaal_mmo
34、neey) /若若隊列22出隊元元素的要要交易的的金額cloosettimee) priintff(ttt%dttt%dttt%dttt%dtt%dn,z,uuse_timme,nnumbber,z,(en11.arrrivvetiime),enn1.mmoneey); elsse timme1=timme1+en11.duurattionn; /更新系系統(tǒng)當前前時間 usee_tiime=timme1-en11.arrrivvetiime; tottal_timme+=usee_tiime; /更更新逗留留時間 tottal_monney-=enn1.mmoneey; /更新新資金總總額 n
35、ummberr+; /更更新實現(xiàn)現(xiàn)交易的的客戶數(shù)數(shù) priintff(%ldttt%dttt%dttt%dttt%dt-%dnn,ttotaal_mmoneey,uuse_timme,nnumbber,timme1,(enn1.aarriivettimee),(en11.mooneyy); elsse /若若隊列22出隊元元素的要要交易的的金額銀行現(xiàn)現(xiàn)存金額額,不能能辦理iff(tiime11clloseetimme) prrinttf(-ttt%dttt%dttt%dttt%dt%ddn,z,usee_tiime,nummberr,z,(enn1.aarriivettimee),een1.m
36、onney); eelsee EEnQuueuee2(); /繼續(xù)插插入隊列列2的隊隊尾,繼繼續(xù)等待待 retturnn OKK;20.隊隊列1離離開事件件減duurattionn(辦理理業(yè)務(wù)時時間) int cutt_duurattionn(innt ee) /e即即形參辦辦理業(yè)務(wù)務(wù)的時間間 Queeue11 p,q,rr; EleemTyype11 enn; p=QQ1.ffronnt-nexxt; r=QQ1.ffronnt; if(p) if(p-datta.NNTyppe!=0) q=p-nexxt; r-neext=q; /刪除結(jié)結(jié)點 enn.arrrivvetiime=p-dat
37、ta.aarriivettimee; /到達時時間 enn.OcccurrTimme=pp-ddataa.OcccurrTimme-ee; /事件發(fā)發(fā)生時間間 enn.NTTypee=p-daata.NTyype; /事事件類型型 enn.duurattionn=p-daata.durratiion; /辦辦理業(yè)務(wù)務(wù)時間 enn.mooneyy=p-daata.monney; /數(shù)數(shù)額 frree(p); EnnQueeue11(); retturnn OKK;21.處處理客戶戶離開事事件voidd CuustoomerrDeppartturee() intt i; i=een.NNTyppe
38、; /業(yè)務(wù)務(wù)類型,1表示示存款,2表示示取款 timme1=en.OcccurTTimee-enn.duurattionn; if(i=OK) /是否否是辦理理存款 iff(enn.OcccurrTimmecclossetiime) /營業(yè)結(jié)結(jié)束,全全部客戶戶離開銀銀行 freee_ssysttem(); elsse /營營業(yè)時間間沒有結(jié)結(jié)束,繼繼續(xù)辦理理 uuse_timme=een.OOccuurTiime-en.arrriveetimme; ttotaal_ttimee+=uuse_timme; /更更新逗留留的總時時間 ttotaal_mmoneey=ttotaal_mmoneey+e
39、en.mmoneey;/更新新資金總總額 nnumbber+; /更新新服務(wù)的的客戶數(shù)數(shù) ttimee1=een.OOccuurTiime; /更新新系統(tǒng)當當前時間間 pprinntf(%lldttt%dttt%dttt%dttt%dtt%dn,tottal_monney,usee_tiime,nummberr,enn.OcccurrTimme,een.aarriivettimee,enn.mooneyy); cchecck_qq2(); /檢查查隊列22是否有有滿足條條件者 elsse /辦理理取款 if(en.monneytottal_monney) /辦理取取款,當當申請金金額不能能滿足
40、時時,離開開隊列11進入隊隊列2等等待 cutt_duurattionn(enn.duurattionn);/從隊隊列1中中刪除該該結(jié)點 enn1.aarriivettimee=enn.arrrivvetiime; en11.duurattionn=enn.duurattionn; en11.mooneyy=enn.mooneyy; EnQQueuue2(); /進入入隊列22繼續(xù)等等待 eelsee /辦理取取款,當當能滿足足所申請請金額時時進行隊隊列1 iif(een.OOccuurTiimecloosettimee)/營業(yè)結(jié)結(jié)束,全全部客戶戶離開銀銀行 freee_ssysttem();
41、 elsee usee_tiime=en.OcccurTTimee-enn.arrrivvetiime;/顧顧客所用用時間=事件發(fā)發(fā)生時間間-事件件到達時時間 totaal_ttimee+=uuse_timme;/更新新逗留的的總時間間totaal_mmoneey-=en.monney; /更新資資金總額額 timee1=een.OOccuurTiime; /更新系系統(tǒng)當前前時間 nuumbeer+; /更新客客戶總數(shù)數(shù) prrinttf(%lddtt%ddtt%ddtt%ddtt%ddt-%dn,tottal_monney,usee_tiime,nummberr,enn.OcccurrTim
42、me,een.aarriivettimee,enn.mooneyy); 22.主主函數(shù)voidd maain() coutt=enddl; couut 歡迎迎使用銀銀行業(yè)務(wù)務(wù)模擬系系統(tǒng) n; couutenndl; couut 姓姓名:王王寧 enndl; couut 學(xué)學(xué)號: 1022205510229 eendll; couut 班班級:計計升1班班 enndl; couut=enddl; couut請選選擇開始始或退出出:enndl;couut1.進入銀銀行業(yè)務(wù)務(wù)模擬系系統(tǒng)enndl;couut0.退出程程序nn; whiile(n=1) OppenFForDDay(); /初始始化操作
43、作 couutenndl; couttTottal_monneytusse_ttimeetnnumbbertenn.OcccurrTimmetten.arrriveetimmettmonneyeendll; whiile(Q1.froont) DDeQuueuee1(); /隊列11出隊列列,并用用en返返回值 iif(een.NNTyppe=0)/enn.NTTypee等于00表示客客戶到達達,1表表示客戶戶離開 CCusttomeerArrrivved(); /處處理客戶戶到達事事件 elsse CCusttomeerDeeparrturre(); /處理客客戶離開開事件,業(yè)務(wù)類類型enn
44、.NTTypee等于11表示存存款,22表示取取款 prinntf(1.營業(yè)結(jié)結(jié)束后銀銀行現(xiàn)存存資金總總額(元元): %lddn,tootall_mooneyy) ; prinntf(2.營業(yè)時時間內(nèi)實實現(xiàn)交易易的客戶戶數(shù)(人人): %ddn,nuumbeer);prinntf(3.客戶在在銀行逗逗留的總總時間(分鐘): %dnn,ttotaal_ttimee); prinntf(4.客戶在在銀行的的平均逗逗留時間間(分鐘鐘): %fn,(flloatt)tootall_tiime/(flloatt)nuumbeer); couutenddlenddl; coout以以上為模模擬結(jié)果果!請繼繼
45、續(xù)選擇擇繼續(xù)或或退出:enddl;coout11.繼續(xù)續(xù)模擬eendll;coout00.退出出程序n;iff(n=0) couut 謝謝謝使用用本系統(tǒng)統(tǒng),再見見!enndl; breeak; 第五章 運行與與測試1.調(diào)試試程序過程程遇到的的問題及及解決的的方法 首首先是對對指針初初始化的的問題,一些指指針如果果不先申申請一個個新變量量就會報報錯,即即使是直直接把這這個指針針賦值為為空也要要現(xiàn)為其其申請一一個新的的空間。其次就就是對循循環(huán)退出出條件的的選擇,有幾次次發(fā)現(xiàn)模模擬過程程出現(xiàn)了了停止現(xiàn)現(xiàn)象,此此時發(fā)現(xiàn)現(xiàn)問題就就可以對對循環(huán)體體進行調(diào)調(diào)試,一一般只要要對循環(huán)環(huán)體內(nèi)加加上一些些認為的的輸出判判斷它的的執(zhí)行情情況就可可以比較較方便的的發(fā)現(xiàn)和和解決問問題。2.進入入演示程程序后,即顯示示文本方方式的主主界面窗窗口:3.程序序測試結(jié)結(jié)果 在此程程序中我我通過宏宏定義語語句#ddefiine MONNEY 50000設(shè)設(shè)置了個個人業(yè)務(wù)務(wù)值的交交易上限限。但系統(tǒng)的的模擬性性能完全全不受這這些規(guī)定定的限制制,可以通過過改變此此上限來來隨機產(chǎn)產(chǎn)生不同同范圍的的交易額額。用戶戶完全可可以根據(jù)據(jù)實際需需要作簡簡單的修修改和調(diào)調(diào)整。而而且時間間間隔,每個客客戶辦理理的款數(shù)數(shù)以及處處理時間間這些模模擬量均均由隨機機函數(shù)給給出,符符合離散散
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 流行舞蹈課程招生方案
- 醫(yī)院餐飲服務(wù)節(jié)能提升方案
- 鋼結(jié)構(gòu)運輸事故應(yīng)急預(yù)案方案
- 老年人智能照護技術(shù)應(yīng)用方案
- 資產(chǎn)評估服務(wù)合同合規(guī)解決方案
- 鉻氧化鋁陶瓷材料相關(guān)行業(yè)投資方案范本
- 消費電子產(chǎn)品的修理行業(yè)營銷策略方案
- 2022年大學(xué)臨床醫(yī)學(xué)與醫(yī)學(xué)技術(shù)專業(yè)大學(xué)物理下冊模擬考試試題A卷-附解析
- 江西省贛州市南康區(qū)2024-2025學(xué)年九年級上學(xué)期第一次月考化學(xué)試卷(含解析)
- 上班睡覺檢討書
- 材料成型工藝pdf
- 胃潰瘍伴出血的護理查房
- 郵政行測題庫2024
- 《紀念白求恩》專題探究課件(敘議結(jié)合理思路)
- 腹腔鏡手術(shù)操作技巧
- 品牌礦泉水物質(zhì)表
- 2024年中國移動重慶分公司招聘筆試參考題庫含答案解析
- 污水源熱泵方案
- QCT 1037-2016 道路車輛用高壓電纜
- 現(xiàn)代交換原理與通信網(wǎng)技
- 全科醫(yī)生臨床常見病門急診病歷模板(范例)
評論
0/150
提交評論