版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告</p><p> 班 級(jí):軟件092班</p><p><b> 姓 名: </b></p><p><b> 學(xué) 號(hào): </b></p><p><b> 指導(dǎo)教師: </b></p><p&
2、gt;<b> 成 績(jī):</b></p><p><b> 信息工程學(xué)院</b></p><p> 2011 年 6月 6日</p><p> 摘要(題目) 課題題目是:客戶業(yè)務(wù)分為兩種。第一種是申請(qǐng)從銀行得到一筆資金,即取款或借款。第二種是向銀行投入一筆資金,即存款或還款。銀行有兩個(gè)服務(wù)窗口,
3、相應(yīng)的有兩個(gè)隊(duì)列。客戶到達(dá)銀行后先排第一個(gè)隊(duì)。處理每個(gè)客戶業(yè)務(wù)時(shí),如果屬于第一種,且申請(qǐng)額超出銀行現(xiàn)存資金總額而得不到滿足,則立即排入第二隊(duì)等候,直至滿足時(shí)才離開(kāi)銀行,否則業(yè)務(wù)處理完后立即離開(kāi)銀行。每接待完一個(gè)第二種業(yè)務(wù)的客戶,則順序檢查和處理(如果可能)第二個(gè)隊(duì)列的客戶,對(duì)能滿足的申請(qǐng)者予以滿足,不能滿足者重新排到第二個(gè)隊(duì)列的隊(duì)尾。 目錄</p><p><b> 1.引言<
4、;/b></p><p><b> 1.1引言</b></p><p><b> 1.2課題意義</b></p><p> 1.3背景和應(yīng)用領(lǐng)域</p><p><b> 2.需求分析</b></p><p><b> 2.1
5、功能需求</b></p><p><b> 2.2數(shù)據(jù)需求</b></p><p><b> 3.概要設(shè)計(jì)</b></p><p><b> 3.1簡(jiǎn)要算法分析</b></p><p><b> 3.2算法流程圖</b></p&g
6、t;<p><b> 3.3客戶服務(wù)系統(tǒng)</b></p><p><b> 4.詳細(xì)設(shè)計(jì)</b></p><p><b> 4.1 調(diào)試</b></p><p><b> 4.2 測(cè)試</b></p><p><b> 5
7、.測(cè)試結(jié)果</b></p><p><b> 6.調(diào)試分析</b></p><p><b> 7.設(shè)計(jì)體會(huì)</b></p><p><b> 8.結(jié)束語(yǔ)</b></p><p><b> 參考文獻(xiàn)</b></p><
8、p><b> 第一章 引言</b></p><p><b> 1.1引言:</b></p><p> 隨著社會(huì)的迅速發(fā)展,人們的生活水平越來(lái)越高,人們的經(jīng)濟(jì)越來(lái)越多,所以人們對(duì)自己的資產(chǎn)保護(hù)也越來(lái)越注重,這便產(chǎn)生了銀行,而隨著人口的迅速增長(zhǎng),存錢(qián)的人也越來(lái)越多,因此設(shè)計(jì)一個(gè)程序是存錢(qián)和取錢(qián)的時(shí)間縮短是非常重要的,設(shè)計(jì)一個(gè)好的程序,使之
9、能更好的方便我們的生活。在開(kāi)發(fā)這個(gè)銀行系統(tǒng)時(shí),用到了c語(yǔ)言里的函數(shù)調(diào)用,結(jié)構(gòu)體等,并用基本對(duì)話框的一些控件對(duì)之進(jìn)行實(shí)現(xiàn)。使之完成了一些功能。報(bào)告將會(huì)對(duì)銀行模擬系統(tǒng)程序的一些功能模塊進(jìn)行具體的分析,寫(xiě)出概要設(shè)計(jì)方案,詳細(xì)設(shè)計(jì),各個(gè)功能的流程圖,以及調(diào)試分析等,從各個(gè)方面具體的對(duì)程序進(jìn)行了分析。</p><p><b> 1.2課題意義</b></p><p> 銀行
10、系統(tǒng)是非常之重要的,對(duì)于我們的生活將有巨大的作用,所以我們學(xué)習(xí)是更應(yīng)該努力學(xué),以對(duì)銀行取款信息有充分的了解,并進(jìn)行編程實(shí)現(xiàn)。通過(guò)程序?qū)嵺`來(lái)鞏固運(yùn)用所學(xué)的專業(yè)知識(shí),提高我們的計(jì)算機(jī)應(yīng)用技能,提高編程能力, 加深對(duì)相關(guān)內(nèi)容的理解,拓寬知識(shí)面,培養(yǎng)我們的創(chuàng)新精神和實(shí)踐能力。</p><p> 1.3背景和應(yīng)用領(lǐng)域</p><p> 隨著社會(huì)的迅速發(fā)展,人們的生活水平越來(lái)越高,人們的經(jīng)濟(jì)越來(lái)越
11、多,所以人們對(duì)自己的資產(chǎn)保護(hù)也越來(lái)越注重,這便產(chǎn)生了銀行,而隨著人口的迅速增長(zhǎng),存錢(qián)的人也越來(lái)越多,因此設(shè)計(jì)一個(gè)程序是存錢(qián)和取錢(qián)的時(shí)間縮短是非常重要的,設(shè)計(jì)一個(gè)好的程序,使之能更好的方便我們的生活。它的領(lǐng)域使用在人們快速取款或存款當(dāng)中。</p><p> 第二章 需求分析:</p><p><b> 2.1 功能需求</b></p><p&g
12、t; 設(shè)計(jì)一個(gè)簡(jiǎn)單的銀行業(yè)務(wù)模擬程序,主要實(shí)現(xiàn)的功能是使每個(gè)存款或取款的窗口都不是空閑的,保持每個(gè)窗口都在工作。即是實(shí)現(xiàn)最大的工作效率。</p><p> 1本題需要求客戶在銀行內(nèi)逗留的平均時(shí)間,用客戶逗留除以客戶總數(shù)即可</p><p> 2本題涉及到隊(duì)列的建立、初始化和插入,隊(duì)列的關(guān)鍵字為整數(shù),處理 第一、二種業(yè)務(wù)分別用負(fù)數(shù)和正數(shù)表示。</p><p>
13、 3 對(duì)客戶進(jìn)行編號(hào)用來(lái)統(tǒng)計(jì)客戶總數(shù),同時(shí)在隊(duì)列元素的循環(huán)處理中更新總的逗留時(shí)間。</p><p> 4演示程序以用戶和計(jì)算機(jī)的對(duì)話方式執(zhí)行,即在計(jì)算機(jī)終端顯示的“提示信息”下,輸入數(shù)據(jù)進(jìn)行測(cè)試。</p><p> 5 最后對(duì)所得結(jié)果進(jìn)行簡(jiǎn)要分析。設(shè)計(jì)一個(gè)簡(jiǎn)單的銀行業(yè)務(wù)模擬程序,主要實(shí)現(xiàn)的功能是使每個(gè)存款或取款的窗口都不是空閑的,保持每個(gè)窗口都在工作。即是實(shí)現(xiàn)最大的工作效率。</
14、p><p><b> 2.2數(shù)據(jù)需求</b></p><p> 銀行業(yè)務(wù)模擬程序主要用于存取的各種信息,所包含的有排隊(duì)的人數(shù)扽很多重要數(shù)據(jù)。</p><p><b> 第三章.概要設(shè)計(jì):</b></p><p><b> 3.1簡(jiǎn)要算法分析</b></p>&
15、lt;p> 本程序包含兩個(gè)模塊:</p><p><b> 1)主程序模塊:</b></p><p> Void main(){</p><p><b> 初始化:</b></p><p><b> do {</b></p><p>&l
16、t;b> 接受命令;</b></p><p><b> 處理命令</b></p><p> }while(“命令”!=“退出”);</p><p> 2)隊(duì)列單元模塊—實(shí)現(xiàn)隊(duì)列的抽象數(shù)據(jù)類型</p><p> 各模塊之間的調(diào)用關(guān)系。 </p><p>
17、 1隊(duì)列的抽象數(shù)據(jù)類型定義</p><p> ADT Queue{</p><p> 數(shù)據(jù)對(duì)象:D={ai∈Elemset i=1,2,…,n,n≥0}</p><p> 數(shù)據(jù)關(guān)系:R1={<ai-1 ai> ai-1 ai∈D,i=2, …,n}</p><p> 約定其中a1端為隊(duì)列頭,an端為隊(duì)列尾.</p&
18、gt;<p><b> 基本操作:</b></p><p> Init Queue(&Q)</p><p> 操作結(jié)果:構(gòu)造一個(gè)空隊(duì)列Q</p><p> QueueEmpty(Q)</p><p> 操作結(jié)果:若Q為空隊(duì)列,則返回TRUE,否則FALSE</p><p
19、> GetHead(Q &q) EnQueue(&Q q)</p><p> 操作結(jié)果:插入元素q為Q的新的隊(duì)尾素 </p><p> DeQueue(&Q &q);操作結(jié)果刪除Q的隊(duì)頭元素,并用q返回其值。</p><p><b> 3.2算法流程圖</b></p><p&g
20、t;<b> 3.3客戶服務(wù)系統(tǒng)</b></p><p> 客戶服務(wù) 模塊包含兩個(gè)子系統(tǒng):取款系統(tǒng)和存款系統(tǒng)。 客戶服務(wù)功能圖模塊如圖2</p><p><b> 圖2</b></p><p> 取款系統(tǒng)和存款系統(tǒng):銀行通過(guò)判斷用戶業(yè)務(wù)類型進(jìn)行業(yè)務(wù)辦理。</p><p><b>
21、 3.4數(shù)據(jù)管理系統(tǒng)</b></p><p> 數(shù)據(jù)管理系統(tǒng)模塊包含兩個(gè)子系統(tǒng):數(shù)據(jù)整理系統(tǒng)和數(shù)據(jù)管理系統(tǒng)。 數(shù)據(jù)管理功能圖模塊如圖。</p><p> 數(shù)據(jù)采集系統(tǒng):收集客戶信息包括存取款的資金數(shù)目</p><p> 數(shù)據(jù)整理系統(tǒng):更新銀行現(xiàn)存資金總額、客戶的逗留時(shí)間、已辦理的客戶總數(shù)。</p><p><b>
22、 3.5 簡(jiǎn)要算法</b></p><p> 為了實(shí)現(xiàn)上述程序功能,需要定義單鏈表的抽象數(shù)據(jù)類型如下:</p><p><b> 鏈表結(jié)構(gòu)體:</b></p><p> struct Action{</p><p> char name[50];//客戶名</p><p>
23、; double deposit ;//存取款金額</p><p> int sloveTime;//處理需要的時(shí)間</p><p> int arriveTime;//到達(dá)時(shí)間,距開(kāi)業(yè)的分鐘數(shù)</p><p> int grap;//與前一個(gè)客戶的間隔時(shí)間</p><p> int waitTime;//總的等
24、待時(shí)間</p><p><b> };</b></p><p> typedef struct Node{</p><p> Action data;</p><p> Node* next;</p><p> }LinkNode,*LinkList;</p><p&
25、gt;<b> 隊(duì)列結(jié)構(gòu)體如下:</b></p><p> typedef struct Node{</p><p> Action data;</p><p> Node* next;</p><p> }LinkNode,*LinkList;</p><p> typedef st
26、ruct</p><p><b> {</b></p><p> Node *front;</p><p> Node *rear;</p><p> }LinkQueue,*Queue;</p><p><b> 3.6函數(shù)調(diào)用</b></p>&l
27、t;p> 1.主函數(shù) main</p><p> 2.進(jìn)棧函數(shù)push</p><p><b> 3.出棧函數(shù)pop</b></p><p> 4.查找和處理函數(shù)service* searchAndDel</p><p> 5.到達(dá)函數(shù)arrive</p><p> 6.存款函數(shù)
28、putMoney</p><p> 7.群款函數(shù)getMoney</p><p> 8.隨機(jī)函數(shù)rand</p><p> 第四章 調(diào)試與測(cè)試:</p><p><b> 4.1 調(diào)試</b></p><p> 編制銀行業(yè)務(wù)模擬程序時(shí),用到了很多語(yǔ)句,如隊(duì)列,指針,函數(shù)調(diào)用等等許多程序。
29、由于自己的知識(shí)有限且學(xué)習(xí)的也不是很多,總的來(lái)說(shuō)還是很缺乏編程知識(shí),經(jīng)過(guò)我的努力最后還是運(yùn)行成功。 </p><p><b> 4.2 測(cè)試</b></p><p> 銀行業(yè)務(wù)模擬程序,在編譯的時(shí)候,由于對(duì)話框之間的銜接不太懂,所以并沒(méi)有實(shí)現(xiàn)應(yīng)有的結(jié)果。但后來(lái)還是通過(guò)學(xué)生,上網(wǎng)查詢等多種方法,終于弄清了對(duì)話框之間的銜接和一些基本算法。最終也運(yùn)行出來(lái)了。 </p
30、><p><b> 第五章.測(cè)試結(jié)果:</b></p><p><b> :</b></p><p><b> 第六章.設(shè)計(jì)體會(huì):</b></p><p> 經(jīng)過(guò)了兩周的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),至今我仍感受頗深,從選題到定稿,從理論到實(shí)踐,在短短的兩個(gè)星期的日子里,我雖然吃了很多
31、苦,但我學(xué)到了很多很多以前不知道的的東西,同時(shí)不僅復(fù)習(xí)和鞏固了以前所學(xué)過(guò)的知識(shí),而且看到了和學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí),使我懂得了很多,理論必須和實(shí)踐永遠(yuǎn)的結(jié)合起來(lái),才能有質(zhì)的飛躍,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過(guò)程中遇到過(guò)很多問(wèn)題,困難很多,但我一直堅(jiān)持著,這畢竟第一次做的,難免會(huì)遇到過(guò)各種各樣的問(wèn)題,同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)
32、現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,現(xiàn)在覺(jué)得一定要把以前所學(xué)過(guò)的知識(shí)重新溫故。雖然我的算法不夠完好,還有許多問(wèn)題,但我一定會(huì)調(diào)試成功的。</p><p><b> 第七章 結(jié)束語(yǔ):</b></p><p> 時(shí)間過(guò)的很快,在不知不覺(jué)中,課程設(shè)計(jì)也接近了尾聲.說(shuō)起課程設(shè)計(jì),我認(rèn)為最重要的就是做好設(shè)計(jì)的預(yù)習(xí),并且認(rèn)真的去復(fù)習(xí)以前的知識(shí)
33、和查各種資料同時(shí)認(rèn)真的研究老師給的題目,老師對(duì)題目的講解要一絲不茍的去聽(tīng)去想,因?yàn)橹挥卸济靼琢耍銎鹪O(shè)計(jì)來(lái)才會(huì)有底,有信心。課程設(shè)計(jì)是一門(mén)培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問(wèn)題的學(xué)科,它能充分鍛煉我們的動(dòng)手能力,時(shí)我們實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考 察過(guò)程。我想這次不只是一次簡(jiǎn)單的課程設(shè)計(jì),更體現(xiàn)了數(shù)據(jù)結(jié)構(gòu)算法和生活的緊密聯(lián)系。生活中也存在許多與數(shù)據(jù)結(jié)構(gòu)有關(guān)聯(lián)的事情,它讓人不得不深思,這一個(gè)學(xué)期
34、的學(xué)習(xí),這兩年來(lái)的大學(xué)學(xué)習(xí)生涯,自己究竟學(xué)會(huì)了什么,掌握了多少,我也不清楚,我以前也瘋狂的玩過(guò),現(xiàn)在才知道自己時(shí)多么的缺乏知識(shí),大多數(shù)問(wèn)題自己不能解決,感覺(jué)將來(lái)自己是否能勝任以后作編譯人員的職位。我想大家都心里都有很多的感觸。對(duì)于自己,我想我已經(jīng)認(rèn)識(shí)到了自己的不足,在今后的學(xué)習(xí)過(guò)程中,我一定以最好的心態(tài)去對(duì)待,以最好的面貌來(lái)迎接大三的軟件專業(yè)課程,并且經(jīng)常上機(jī)調(diào)試,堅(jiān)持理論與實(shí)踐相結(jié)合。相信自己將會(huì)有很大的進(jìn)步。 。&l
35、t;/p><p><b> 參考文獻(xiàn)</b></p><p> 嚴(yán)蔚敏,吳偉民 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版) 清華大學(xué)出版社</p><p> 譚浩強(qiáng) C程序設(shè)計(jì)(第三版) 清華大學(xué)出版社</p><p><b> 附錄 源代碼:</b></p><p> #includ
36、e <iostream></p><p> #include <string></p><p> using namespace std;</p><p> int total; //初始時(shí)銀行現(xiàn)存資金總額</p><p> int closeTime; //營(yíng)業(yè)結(jié)束時(shí)間</p&g
37、t;<p> int arriveTime; //兩個(gè)到達(dá)事件之間的間隔上限</p><p> int dealTime; //客戶之間交易的時(shí)間上限</p><p> int dealMoney = 5000; //交易額上限</p><p> int currentTime = 0; //當(dāng)前時(shí)間</p&g
38、t;<p> int totalTime = 0; //客戶逗留總時(shí)間</p><p> int counter = 0; //客戶總數(shù)</p><p> int number = 1; //初始客戶序列號(hào)+</p><p> struct service</p><p><b> {<
39、/b></p><p> int num; //客戶號(hào)</p><p> string type; //到達(dá)或離開(kāi)</p><p> int beginTime;</p><p> int endTime;</p><p> int money; //正數(shù)為存款,負(fù)數(shù)為
40、取款</p><p> service* next;</p><p><b> };</b></p><p> struct queue</p><p> { //隊(duì)列</p><p> service* head;</p><p>
41、service* rear;</p><p><b> };</b></p><p> void push(queue &q,int d)</p><p> {// 插入元素d為Q的新的隊(duì)尾元素</p><p> service* temp = new service;</p><p&
42、gt; temp->money = d;</p><p> temp->next = NULL;</p><p> if(NULL == q.head)</p><p> {//隊(duì)列為空,初始化</p><p> q. head = temp;</p><p> q. rear = temp;&
43、lt;/p><p><b> }//if</b></p><p><b> else </b></p><p> {//隊(duì)列不為空,插入元素d</p><p> q. rear->next = temp;</p><p> q. rear = q.rear->
44、;next;</p><p><b> }//else</b></p><p><b> }</b></p><p> void pop(queue &q)</p><p> {// 若隊(duì)列不空,出對(duì)列函數(shù)</p><p> service* temp;&l
45、t;/p><p> temp = q. head;</p><p> if(NULL ==q. head->next)</p><p> q.head = q. rear =NULL;</p><p><b> else</b></p><p> q. head=q. head-&
46、gt;next;</p><p> delete temp;</p><p><b> }</b></p><p> service* front(queue &q)</p><p><b> {//返回隊(duì)首元素</b></p><p> return q.
47、 head;</p><p><b> }</b></p><p> service* back(queue &q)</p><p><b> {//返回隊(duì)尾元素</b></p><p> return q. rear;</p><p><b>
48、}</b></p><p> service* searchAndDel(queue &q,int m)</p><p> {//在對(duì)列中尋找可處理元素</p><p> service* sign = q. head; //標(biāo)記頭節(jié)點(diǎn)</p><p> service* temp;</p>
49、<p> while(NULL != q. head)</p><p><b> {</b></p><p> if((-(q. head->money)) <m)</p><p> {//隊(duì)首元素可以處理</p><p> if(q. head==q.rear)</p>&
50、lt;p><b> {</b></p><p> temp = q. head;</p><p> q. head = q. rear = NULL;</p><p> return temp;</p><p><b> }//if</b></p><p>&
51、lt;b> else</b></p><p><b> {//隊(duì)首元素出列</b></p><p> temp = q. head; </p><p> q. head = q. head->next; // 首節(jié)點(diǎn)后移一位,返回原首節(jié)點(diǎn)</p><p> return t
52、emp;</p><p><b> }//else</b></p><p><b> }//while</b></p><p><b> else</b></p><p> {//隊(duì)首元首不能被處理</p><p> if(q. head ==
53、 q. rear){}</p><p><b> else</b></p><p> {//首節(jié)點(diǎn)移到隊(duì)列尾部</p><p> q. rear->next = q. head; </p><p> q. rear = q. rear->next;</p><p>
54、 q. head =q. head->next;</p><p> q. rear->next = NULL;</p><p><b> }//else</b></p><p><b> }//else</b></p><p> if(q. head == sign)//隊(duì)列循
55、環(huán)一周時(shí)停止</p><p> return NULL;</p><p><b> }</b></p><p> return NULL;</p><p><b> }</b></p><p> bool state =1; //用于判斷是否有窗口在處理<
56、/p><p> int currentTimeOfDeal = 0;</p><p> int theArriveTime = 0;</p><p> queue eq; //事件隊(duì)列</p><p> queue fq; //隊(duì)列一</p><p> queue sq; //對(duì)列二</p
57、><p><b> //初始化三個(gè)隊(duì)列</b></p><p> void arrive()</p><p> {/*"到達(dá)"函數(shù) 隨機(jī)產(chǎn)生顧客,進(jìn)入隊(duì)列一</p><p> 產(chǎn)生到達(dá)事件 進(jìn)入事件隊(duì)列*/</p><p> push(fq,(rand()% (2*dea
58、lMoney) -dealMoney)); //隨機(jī)產(chǎn)生顧客加入第一隊(duì)列</p><p> back(fq)->beginTime = currentTime;</p><p> back(fq)->num = number;</p><p> push(eq,(back(fq)->money)); //將產(chǎn)生事件加入事件隊(duì)列&l
59、t;/p><p> back(eq)->beginTime = currentTime;</p><p> back(eq)->type = "到達(dá)";</p><p> back(eq)->num = number;</p><p><b> ++number;</b><
60、/p><p><b> }</b></p><p> void putMoney()</p><p> { //存款函數(shù)</p><p> total += front(fq)->money; //更新資金總額</p><p> push(eq,front(fq)->m
61、oney); //加入事件隊(duì)列 離開(kāi)</p><p> back(eq)->type = "離開(kāi)";</p><p> back(eq)->num = front(fq)->num;</p><p> back(eq)->endTime = (front(fq)->beginTime + rand()%d
62、ealTime +1);</p><p> ++counter; //更新客戶總數(shù)</p><p> totalTime += (back(eq)->endTime - front(fq)->beginTime); //更新逗留時(shí)間</p><p> pop(fq); //刪除第一隊(duì)列第一個(gè)業(yè)務(wù)</p><p> cu
63、rrentTimeOfDeal = back(eq)->endTime; </p><p><b> state =0;</b></p><p><b> }</b></p><p> void getMoney()</p><p><b> {//取款函數(shù)</b
64、></p><p> if( (-fq.head->money) > total ) </p><p> {//資金短缺 加入第二隊(duì)列</p><p> push( sq,front(fq)->money );</p><p> back(sq)->beginTime = front(fq)->b
65、eginTime;</p><p> back(sq)->num = front(fq)->num;</p><p><b> pop(fq);</b></p><p><b> }//if</b></p><p><b> else</b></p&g
66、t;<p><b> {</b></p><p> total += back(fq)->money;</p><p> push(eq,front(fq)->money); //加入事件隊(duì)列 離開(kāi)</p><p> back(eq)->type = "離開(kāi)";</p>
67、;<p> back(eq)->num = front(fq)->num;</p><p> back(eq)->endTime = (front(fq)->beginTime + rand()%dealTime +1);</p><p> back(eq)->beginTime = 0;</p><p> cur
68、rentTimeOfDeal = back(eq)->endTime;</p><p> ++counter; //更新客戶總數(shù) </p><p> totalTime += ( back(eq)->endTime - back(fq)->beginTime ); //更新逗留時(shí)間</p><p> pop(fq);
69、//刪除第一隊(duì)列第一個(gè)業(yè)務(wù)</p><p><b> state =0;</b></p><p><b> }//else</b></p><p><b> }</b></p><p> service* temped ;</p><p> i
70、nt randomTemp;</p><p> void findAndDeal()</p><p> {//在對(duì)列中尋找可處理元素,對(duì)其進(jìn)行處理</p><p> while( (temped= searchAndDel(sq,total))&&NULL != temped ) </p><p> {//查找可處
71、理取款</p><p> total += temped->money; //更新資金總額</p><p> push(eq,temped->money); //加入事件隊(duì)列訓(xùn) 離開(kāi)</p><p> back(eq)->type = "離開(kāi)";</p><p> back(eq)-&
72、gt;num = temped->num;</p><p> randomTemp = rand()%dealTime +1;</p><p> back(eq)->endTime = currentTime + randomTemp ;</p><p> currentTimeOfDeal += randomTemp;</p>&l
73、t;p> ++counter; //更新客戶總數(shù)</p><p> totalTime += ( back(eq)->endTime - temped->beginTime ); //更新逗留時(shí)間 </p><p> delete temped; //刪除節(jié)點(diǎn)</p><p> temped = NULL;<
74、/p><p><b> }</b></p><p> state = 0;</p><p><b> }</b></p><p> int main()</p><p><b> { </b></p><p> pr
75、intf(" ********************************************\n");</p><p> printf(" * *\n");</p><p> printf("
76、; * 歡迎進(jìn)入銀行模擬系統(tǒng) *\n");</p><p> printf(" * *\n");</p><p> printf(" ****
77、****************************************\n");</p><p> printf("1.開(kāi)始模擬 0.退出\n");</p><p><b> int n;</b></p><p> scanf("%d",&n);</p&g
78、t;<p> while(n==1)</p><p><b> {</b></p><p> srand(time(NULL)); //初始化隨機(jī)函數(shù)</p><p> printf("輸入銀行的初始存款:\n");</p><p> scanf("%d&quo
79、t;,&total);</p><p> printf("輸入銀行的營(yíng)業(yè)時(shí)間:\n");</p><p> scanf("%d",&closeTime);</p><p> printf("輸入最大到達(dá)時(shí)間間隔:\n"); </p><p> scanf
80、("%d",&arriveTime);</p><p> printf("輸入最大的處理時(shí)間:\n");</p><p> scanf("%d",&dealTime);</p><p> theArriveTime +=rand()%arriveTime + 1; //首次到達(dá)時(shí)間
81、</p><p> while(currentTime < closeTime)</p><p><b> {</b></p><p> ++currentTime;</p><p> if( currentTimeOfDeal < currentTime ) currentTimeOfDeal
82、= currentTime ;</p><p> if( currentTimeOfDeal == currentTime ) state = 1;</p><p> if( currentTime == theArriveTime ) //到達(dá)事件</p><p><b> {</b></p><p>
83、<b> arrive();</b></p><p> theArriveTime +=rand()%arriveTime +1; </p><p><b> }//if</b></p><p> if( 1 == state && NULL != fq.head)</p><p
84、><b> {</b></p><p> if(fq.head->money >= 0)</p><p><b> {</b></p><p> putMoney();</p><p> findAndDeal();</p><p><b&g
85、t; }//if</b></p><p><b> else </b></p><p> getMoney();</p><p><b> }//if</b></p><p><b> }</b></p><p> cout &l
86、t;<endl<< "客戶序列"<<"\t" <<"事件類型"<<"\t\t"<<" 時(shí)間"<<"\t"<<" 處理金額"<<endl;</p><p>
87、 while( NULL != eq.head) //清除事件隊(duì)列</p><p><b> {</b></p><p> if(eq.head->type=="離開(kāi)")</p><p> cout << eq.head->num<<"\t\t"<
88、<eq.head->type<<"\t\t"<<"\t\t"<<eq.head->endTime<<"\t\t"<<eq.head->money<<endl;</p><p> if(eq.head->type=="到達(dá)")<
89、/p><p> cout << eq.head->num<<"\t\t"<<eq.head->type<<"\t\t"<<"\t\t"<<eq.head->beginTime<<"\t\t"<<eq.head->mon
90、ey<<endl;</p><p><b> pop(eq);</b></p><p><b> }</b></p><p> cout << "未處理客戶:" <<""<<endl;</p><p>
91、while( NULL != fq.head)</p><p><b> {</b></p><p> totalTime += ( closeTime - fq.head->beginTime ); //更新結(jié)束時(shí)第一隊(duì)列中未處理的客戶</p><p> cout <<fq.head->num <<
92、;" "<<endl ;</p><p> ++counter;</p><p><b> pop(fq);</b></p><p> }//while </p><p> cout <<"客戶逗留平均時(shí)間為: " << total
93、Time/counter <<endl;</p><p> cout<<"銀行當(dāng)前余額:"<<total<<endl;</p><p><b> break;</b></p><p> }//while(n==1)</p><p><b>
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(銀行模擬系統(tǒng))
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--電梯模擬
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)銀行業(yè)務(wù)模擬
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---銀行賬戶管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_銀行賬戶管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)約瑟夫環(huán)模擬課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--電梯模擬
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---銀行業(yè)務(wù)模擬
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-銀行業(yè)務(wù)模擬
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論