![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/b9e768fa-0df7-44ff-828b-8e2de38886eb/b9e768fa-0df7-44ff-828b-8e2de38886ebpic.jpg)
![銀行業(yè)務(wù)模擬課程設(shè)計(jì)_第1頁(yè)](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/b9e768fa-0df7-44ff-828b-8e2de38886eb/b9e768fa-0df7-44ff-828b-8e2de38886eb1.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課程名稱: 計(jì)算機(jī)技術(shù)綜合課程設(shè)計(jì) </p><p> 題 目: 銀行業(yè)務(wù)模擬 </p><p> 學(xué) 院: 信息工程 系: * </p><p> 專(zhuān) 業(yè): * </p>&l
2、t;p> 班 級(jí): 0* </p><p> 學(xué) 號(hào): * </p><p> 學(xué)生姓名: * </p><p> 時(shí) 間: * </p><p><b> 問(wèn)題
3、描述:</b></p><p> 客戶業(yè)務(wù)分為兩種。第一種是申請(qǐng)從銀行得到一筆資金,即取款或借款;第二種是向銀行中投入一筆資金,即存款或還款。銀行有兩個(gè)服務(wù)窗口,相應(yīng)地有兩個(gè)隊(duì)列??蛻舻竭_(dá)銀行后先排第一個(gè)隊(duì)。處理每個(gè)客戶業(yè)務(wù)時(shí),如果屬于第一種,且申請(qǐng)額超出銀行現(xiàn)存資金總額而得不到滿足,則立刻排入第二個(gè)隊(duì)等候,直到滿足時(shí)才離開(kāi)銀行;否則業(yè)務(wù)處理完后立刻離開(kāi)銀行。每接待完一個(gè)第二種業(yè)務(wù)的客戶,則順序檢查
4、和處理(如果可能)第二個(gè)隊(duì)列中的客戶,對(duì)滿足的申請(qǐng)者予以滿足,不能滿足者重新排到第二個(gè)隊(duì)列的隊(duì)尾。注意,在此檢查過(guò)程中,一旦銀行資金總額少于或等于剛才第一個(gè)隊(duì)列中最后一個(gè)客戶(第二種業(yè)務(wù))被接待之前的數(shù)額,或者本次已將第二個(gè)隊(duì)列檢查或處理了一遍,就停止檢查(因?yàn)榇藭r(shí)已不可能還有能滿足者)轉(zhuǎn)而繼續(xù)接待第一個(gè)隊(duì)列的客戶。任何時(shí)刻都只開(kāi)一個(gè)窗口。假設(shè)檢查不需要時(shí)間。營(yíng)業(yè)時(shí)間結(jié)束時(shí)所有客戶立即離開(kāi)銀行。</p><p>
5、 寫(xiě)一個(gè)銀行業(yè)務(wù)的事件驅(qū)動(dòng)模擬系統(tǒng),通過(guò)模擬方法求出客戶在銀行內(nèi)逗留的平均時(shí)間。</p><p><b> 分析與設(shè)計(jì)</b></p><p><b> 問(wèn)題分析:</b></p><p> 本問(wèn)題主要需要處理兩個(gè)隊(duì)列(fq,sq)和一個(gè)事件表(eq)。一個(gè)隊(duì)列(fq)表示第一種業(yè)務(wù)(存款或還款),另一個(gè)隊(duì)列(sq
6、)表示第二種業(yè)務(wù)(取款或借款)。事件有兩類(lèi):到達(dá)銀行和離開(kāi)銀行。到達(dá)事件發(fā)生時(shí)隨機(jī)地設(shè)置此用戶的交易時(shí)間和距下一到達(dá)事件之間的時(shí)間間隔。每個(gè)客戶要辦理的款額也應(yīng)該是隨機(jī)確定的。初始時(shí)銀行現(xiàn)存資金總額為total。開(kāi)始營(yíng)業(yè)后的第一個(gè)事件是客戶到達(dá),營(yíng)業(yè)時(shí)間從0到closetime。Total和closetime以及隨機(jī)產(chǎn)生的時(shí)間和款項(xiàng)的上下界都是交互地從讓用戶從輸入,作為模擬參數(shù)。要得到相關(guān)的結(jié)果:由于下班時(shí)間到而沒(méi)能辦理的顧客數(shù);分別
7、列出需要辦理兩種業(yè)務(wù)的顧客數(shù);分別列出已成功辦理兩種業(yè)務(wù)的顧客數(shù);分別列出兩種業(yè)務(wù)的成功辦理率;客戶在銀行內(nèi)的平均逗留時(shí)間;下班時(shí)銀行所剩余的資金總額。</p><p> 測(cè)試數(shù)據(jù)及期望結(jié)果:</p><p><b> 輸入:</b></p><p> 用戶需要在程序運(yùn)行開(kāi)始時(shí)輸入以下數(shù)據(jù):</p><p> 銀
8、行初始資金total(測(cè)試數(shù)據(jù)為10000)</p><p> 銀行營(yíng)業(yè)時(shí)間closetime(測(cè)試數(shù)據(jù)為600)</p><p> 客戶交易時(shí)間上下界dealmaxtime和dealmintime,用于給隨機(jī)數(shù)產(chǎn)生函數(shù)傳遞參數(shù),產(chǎn)生一個(gè)介于這兩個(gè)值之間的值。</p><p> 客戶到達(dá)時(shí)間間隔上界arrivemaxtime arrivemintime,用于給
9、隨機(jī)數(shù)產(chǎn)生函數(shù)傳遞參數(shù),產(chǎn)生一個(gè)介于這兩個(gè)值之間的值。</p><p> 交易額的最大上限dealMaxMoney.用于給隨機(jī)函產(chǎn)生函數(shù)參數(shù),產(chǎn)生一個(gè)介于-dealMaxMoney和dealMaxMoney之間的值,作為顧客到銀行辦理業(yè)務(wù)的交易額。</p><p><b> 輸出:</b></p><p> 本程序用dos界面模擬輸出整個(gè)
10、銀行業(yè)務(wù)辦理及排隊(duì)的結(jié)果,最后給出一下數(shù)據(jù):</p><p> 由于下班時(shí)間到而沒(méi)能辦理的顧客數(shù)</p><p> 分別列出需要辦理兩種業(yè)務(wù)的顧客數(shù)</p><p> 分別列出已成功辦理兩種業(yè)務(wù)的顧客數(shù)</p><p> 分別列出兩種業(yè)務(wù)的成功辦理率。</p><p> 客戶在銀行內(nèi)的平均逗留時(shí)間</p
11、><p> 下班時(shí)銀行所剩余的資金總額</p><p> 所有數(shù)據(jù)均要正確輸入,并對(duì)輸入合法性進(jìn)行檢測(cè),如只能輸入數(shù)字,且上界必須不小于下界。</p><p><b> 預(yù)計(jì)實(shí)現(xiàn)結(jié)果截圖:</b></p><p> 用戶打開(kāi)運(yùn)行程序以后會(huì)出現(xiàn)如下的首界面:</p><p> 用戶按任意鍵
12、繼續(xù),則會(huì)出現(xiàn)如下主界面:</p><p> 用戶選擇1開(kāi)始模擬。按提示輸入相應(yīng)的數(shù)據(jù)設(shè)置,就能得到想要的模擬結(jié)果。退出選擇0.</p><p> 對(duì)用戶輸入要求如下:</p><p> 銀行開(kāi)始的資金總額應(yīng)該大于零。</p><p> 銀行的營(yíng)業(yè)時(shí)間必須小于1440分鐘(24小時(shí))。</p><p> 最大
13、到達(dá)時(shí)間間隔必須小于營(yíng)業(yè)時(shí)間。</p><p> 最小到達(dá)時(shí)間間隔必須介于零和最大到達(dá)時(shí)間之間。</p><p> 最大處理時(shí)間必須小于營(yíng)業(yè)時(shí)間。</p><p> 最小處理時(shí)間必須介于零和最大處理時(shí)間之間。</p><p> 最大交易額應(yīng)該小于銀行開(kāi)始時(shí)的資金總額且小于程序設(shè)置的50000。</p><p>
14、 如果輸入不符合上述要求,程序會(huì)提示用戶哪里輸入出錯(cuò),可以再次輸入。每個(gè)輸入數(shù)據(jù)都有3次機(jī)會(huì)。當(dāng)三次輸入都錯(cuò)的時(shí)候,程序停止運(yùn)行,按任意鍵退出。</p><p> 現(xiàn)給出最小處理時(shí)間出錯(cuò)時(shí)的三種提示截圖:</p><p> 模塊結(jié)果及各個(gè)模塊的實(shí)現(xiàn)方法描述:</p><p><b> 概要設(shè)計(jì)</b></p><p&
15、gt;<b> 結(jié)構(gòu)體的定義如下:</b></p><p> struct service</p><p><b> {</b></p><p> int num; //客戶號(hào)</p><p> string type; //到達(dá)或離開(kāi)</p><p> int
16、beginTime;//到達(dá)時(shí)間</p><p> int endTime;//離開(kāi)時(shí)間</p><p> int money; //正數(shù)為存款,負(fù)數(shù)為取款</p><p> service* next;//指針域</p><p><b> };</b></p><p> 隊(duì)列的抽象數(shù)據(jù)
17、類(lèi)型定義如下:</p><p> ADT Queue{</p><p> 數(shù)據(jù)對(duì)象:D={ ai | 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><b> 基本操作:&l
18、t;/b></p><p> void init_Q(Queue &Q);</p><p> 操作結(jié)果:構(gòu)造空隊(duì)列Q</p><p> int Q_empty(Queue Q);</p><p> 初始條件:隊(duì)列Q存在</p><p> 操作結(jié)果:若Q為空隊(duì)列,則返回TRUE,否則FALSE&l
19、t;/p><p> int Q_length(Queue Q);</p><p> 初始條件:隊(duì)列Q存在</p><p> 操作結(jié)果:返回隊(duì)列Q的元素個(gè)數(shù),即隊(duì)列長(zhǎng)度</p><p> int gethead_Q(Queue Q);</p><p> 初始條件:隊(duì)列Q存在</p><p>
20、 操作結(jié)果:返回隊(duì)列Q的隊(duì)頭元素</p><p> void en_Q(Queue &Q,int e);</p><p> 初始條件:隊(duì)列Q存在</p><p> 操作結(jié)果:插入元素e為Q的新的隊(duì)尾元素。</p><p> void de_Q(Queue &Q,int &e);</p><
21、p> 初始條件:隊(duì)列Q存在</p><p> 操作結(jié)果:刪除Q的隊(duì)頭元素。</p><p> }ADT Queue</p><p><b> 模塊及相互調(diào)用關(guān)系</b></p><p> 本程序包含3個(gè)模塊:</p><p><b> 主程序模塊</b>&l
22、t;/p><p> 隊(duì)列模塊--實(shí)現(xiàn)隊(duì)列抽象數(shù)據(jù)類(lèi)型</p><p> 各模塊相互調(diào)用關(guān)系如下:</p><p><b> 主程序模塊</b></p><p><b> 隊(duì)列模塊</b></p><p><b> 算法設(shè)計(jì)</b></p>
23、;<p><b> 隊(duì)列類(lèi)型</b></p><p> typedef struct QNode</p><p> {//隊(duì)列節(jié)點(diǎn)類(lèi)型 </p><p> int data;</p><p> struct QNode *next;</p><p> }Q
24、Node,*PQNode;</p><p> typedef struct {</p><p> PQNode front;//隊(duì)頭指針</p><p> PQNode rear;//隊(duì)尾指針</p><p><b> }Queue;</b></p><p> 隊(duì)列的基本操作設(shè)
25、置如下:</p><p> void init_Q(Queue &Q);</p><p> //初始化,構(gòu)造空隊(duì)列Q(Q.front=Q.rear)</p><p> int Q_empty(Queue Q);</p><p><b> //若隊(duì)列Q存在</b></p><p>
26、 //若Q為空隊(duì)列,則返回TRUE,否則FALSE</p><p> int Q_length(Queue Q);</p><p><b> //若隊(duì)列Q存在</b></p><p> //返回隊(duì)列Q的元素個(gè)數(shù),即隊(duì)列長(zhǎng)度</p><p> int gethead_Q(Queue Q);</p>&
27、lt;p><b> //若隊(duì)列Q存在</b></p><p> //返回隊(duì)列Q的隊(duì)頭元素</p><p> void en_Q(Queue &Q,int e);</p><p><b> //若隊(duì)列Q存在</b></p><p> //插入元素e為Q的新的隊(duì)尾元素。</
28、p><p> void de_Q(Queue &Q,int &e);</p><p><b> //若隊(duì)列Q存在</b></p><p> //刪除Q的隊(duì)頭元素。</p><p><b> 其中操作算法:</b></p><p> void init_Q
29、(Queue &Q)</p><p><b> {</b></p><p> //初始化,構(gòu)造空隊(duì)列Q(Q.front=Q.rear)</p><p> Q.front=Q.rear=(PQNode)malloc(sizeof(QNode));</p><p> if(!Q.front)exit(-1);
30、</p><p><b> } </b></p><p> int Q_empty(Queue Q)</p><p><b> {</b></p><p><b> //若隊(duì)列Q存在</b></p><p> //若Q為空隊(duì)列,則返回TRUE,
31、否則FALSE</p><p> if(Q.front==Q.rear)return 1;</p><p> else return 0;</p><p><b> }</b></p><p> int gethead_Q(Queue Q)</p><p><b> {<
32、/b></p><p><b> //若隊(duì)列Q存在</b></p><p> //返回隊(duì)列Q的隊(duì)頭元素</p><p> if(!Q_empty(Q))return Q.front->next->data;</p><p> else return 0;</p><p>
33、<b> }</b></p><p> int Q_length(Queue Q)</p><p><b> {</b></p><p><b> //若隊(duì)列Q存在</b></p><p> //返回隊(duì)列Q的元素個(gè)數(shù),即隊(duì)列長(zhǎng)度</p><p>
34、; int count=0;</p><p> PQNode p=Q.front;</p><p> while(p!=Q.rear)</p><p><b> {</b></p><p><b> count++;</b></p><p> p=p->ne
35、xt;</p><p><b> }</b></p><p> return count;</p><p><b> }</b></p><p> void en_Q(Queue &Q,int e)</p><p><b> {</b>
36、</p><p><b> //若隊(duì)列Q存在</b></p><p> //插入元素e為Q的新的隊(duì)尾元素。</p><p> PQNode p=(PQNode)malloc(sizeof(QNode));</p><p> if(!p)exit(-1);</p><p> p->d
37、ata=e;p->next=NULL;</p><p> Q.rear->next=p;</p><p><b> Q.rear=p;</b></p><p><b> }</b></p><p> void de_Q(Queue &Q,int &e)</
38、p><p><b> {</b></p><p><b> //若隊(duì)列Q存在</b></p><p> //刪除Q的隊(duì)頭元素</p><p><b> PQNode p;</b></p><p> if(Q.front==Q.rear)return
39、 ;</p><p> p=Q.front->next;</p><p> e=p->data;</p><p> Q.front->next=p->next;</p><p> if(Q.rear==p)Q.rear=Q.front;</p><p><b> free(p
40、);</b></p><p><b> }</b></p><p><b> 隊(duì)列掃描算法</b></p><p><b> 偽碼:</b></p><p><b> {</b></p><p> if(!em
41、pry(fq)&& fq.head->money<0)</p><p> //如果隊(duì)列一不空,而且隊(duì)頭客戶辦理第二種業(yè)務(wù)</p><p><b> {</b></p><p> //1.可以辦,完成離開(kāi)(即銀行現(xiàn)金足夠取)</p><p> //2.不可以辦,排隊(duì)2等候</p&g
42、t;<p><b> }</b></p><p><b> else </b></p><p> //存款 ,第一種業(yè)務(wù) </p><p> if(!empty(fq) && temped= searchAndDel(sq,total)))</p><p>
43、;<b> //當(dāng)交易時(shí)間到</b></p><p><b> {</b></p><p> //辦理該業(yè)務(wù),并開(kāi)始掃描第二隊(duì)列,看是否能滿足//第二隊(duì)列需要</p><p><b> }</b></p><p> if(currentime==next_arrti
44、me )</p><p><b> {</b></p><p> //當(dāng)當(dāng)前時(shí)間等于即將到來(lái)的顧客到來(lái)時(shí)間,初始化//該顧客節(jié)點(diǎn),并設(shè)置下一顧客到達(dá)時(shí)間</p><p><b> }</b></p><p><b> }</b></p><p&g
45、t;<b> 其他函數(shù)算法</b></p><p> int rand_num(int max,int min)//隨機(jī)數(shù)生成</p><p><b> {</b></p><p> //根據(jù)傳進(jìn)的max和min,生成介于max和min的一個(gè)//整數(shù)</p><p> random
46、ize();</p><p> RandSeed=Now();</p><p> return ( random(100000) % (max - min + 1) +min );</p><p><b> } </b></p><p><b> 源代碼:</b></p>&l
47、t;p> //銀行業(yè)務(wù)模擬系統(tǒng)</p><p> #include <iostream></p><p> #include <string></p><p> #include <conio.h></p><p> #include <time.h></p>&l
48、t;p> using namespace std;</p><p> struct service</p><p><b> {</b></p><p> int num; //客戶號(hào)</p><p> string type; //到達(dá)或離開(kāi)</p><p> int begi
49、nTime;//到達(dá)時(shí)間</p><p> int endTime;//離開(kāi)時(shí)間</p><p> int money; //正數(shù)為存款,負(fù)數(shù)為取款</p><p> service* next;//指針域</p><p><b> };</b></p><p> struct queu
50、e</p><p><b> { //隊(duì)列</b></p><p> service* head;//隊(duì)列頭指針</p><p> service* rear;//隊(duì)列尾指針</p><p><b> };</b></p><p> int total; //初始時(shí)
51、銀行現(xiàn)存資金總額</p><p> int closeTime; //營(yíng)業(yè)結(jié)束時(shí)間</p><p> int arriveMaxTime; //兩個(gè)到達(dá)事件之間的間隔上限</p><p> int arriveMinTime; //兩個(gè)到達(dá)事件之間的間隔下限</p><p> int dealMaxTime; //客戶之間交易的時(shí)間上
52、限</p><p> int dealMinTime; //客戶之間交易的時(shí)間下限</p><p> int dealMaxMoney ; //交易額上限</p><p> int ndn=0;//需要存款的人數(shù)</p><p> int nwn=0;//需要取款的人數(shù)</p><p> int sdn=0;
53、//成功存款的人數(shù)</p><p> int swn=0;//成功取款的人數(shù)</p><p> int currentTime = 0; //當(dāng)前時(shí)間</p><p> int totalTime = 0; //客戶逗留總時(shí)間</p><p> int counter = 0; //客戶總數(shù)</p><p>
54、 int number = 1; //初始客戶序列號(hào)</p><p> bool state =1; //用于判斷是否有窗口在處理</p><p> int currentTimeOfDeal = 0;</p><p> int thearriveMaxTime = 0;</p><p> queue eq; //事件隊(duì)列</p
55、><p> queue fq; //隊(duì)列一</p><p> queue sq; //對(duì)列二</p><p><b> //初始化三個(gè)隊(duì)列</b></p><p> service* front(queue &q)</p><p><b> {//返回隊(duì)首元素</b&
56、gt;</p><p> return q. head;</p><p><b> }</b></p><p> service* back(queue &q)</p><p><b> {//返回隊(duì)尾元素</b></p><p> return q. re
57、ar;</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> temp-&g
58、t;money = d;</p><p> temp->next = NULL;</p><p> if(q.head==NULL)</p><p> {//隊(duì)列為空,初始化</p><p> q. head = temp;</p><p> q. rear = temp;</p><
59、;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->next;</p&g
60、t;<p><b> }//else</b></p><p><b> }</b></p><p> void pop(queue &q)</p><p> {// 若隊(duì)列不空,出對(duì)列函數(shù)</p><p> service* temp;</p><
61、p> temp = q. head;</p><p> if(q. head->next==NULL )</p><p> q.head = q. rear =NULL;</p><p><b> else</b></p><p> q. head=q. head->next;</p&g
62、t;<p> delete temp;</p><p><b> }</b></p><p> void arrive()</p><p> {//"到達(dá)"函數(shù),隨機(jī)產(chǎn)生顧客,進(jìn)入隊(duì)列一產(chǎn)生到達(dá)事件 進(jìn)入事件隊(duì)列</p><p> push(fq,(rand()% (2*dea
63、lMaxMoney) -dealMaxMoney)); //隨機(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ì)列&
64、lt;/p><p> back(eq)->beginTime = currentTime;</p><p> back(eq)->type = "到達(dá)";</p><p> back(eq)->num = number;</p><p><b> ++number;</b><
65、;/p><p><b> }</b></p><p> void putMoney()</p><p> { //"存款"函數(shù)</p><p> total += front(fq)->money; //更新資金總額</p><p> push(eq,front(f
66、q)->money); //加入事件隊(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 + ran
67、d()%(dealMaxTime-dealMinTime +1)+dealMinTime);</p><p> ++counter; //更新客戶總數(shù)</p><p> totalTime += (back(eq)->endTime - front(fq)->beginTime); //更新逗留時(shí)間</p><p> pop(fq); //刪除第一
68、隊(duì)列第一個(gè)業(yè)務(wù)</p><p> currentTimeOfDeal = back(eq)->endTime; </p><p><b> state =0;</b></p><p><b> }</b></p><p> void getMoney()</p><
69、p><b> {//"取款"函數(shù)</b></p><p> if( (-fq.head->money) > total ) </p><p> {//資金短缺 加入第二隊(duì)列</p><p> push( sq,front(fq)->money );</p><p>
70、back(sq)->beginTime = front(fq)->beginTime;</p><p> back(sq)->num = front(fq)->num;</p><p><b> pop(fq);</b></p><p><b> }//if</b></p>&l
71、t;p><b> else</b></p><p><b> {</b></p><p> total += back(fq)->money;</p><p> push(eq,front(fq)->money); //加入事件隊(duì)列 離開(kāi)</p><p> back(eq
72、)->type = "離開(kāi)";</p><p> back(eq)->num = front(fq)->num;</p><p> back(eq)->endTime = (front(fq)->beginTime +rand()%(dealMaxTime-dealMinTime +1)+dealMinTime);</p>
73、<p> back(eq)->beginTime = 0;</p><p> currentTimeOfDeal = back(eq)->endTime;</p><p> ++counter; //更新客戶總數(shù) </p><p> totalTime += ( back(eq)->endTime - back(fq)->
74、beginTime ); //更新逗留時(shí)間</p><p> pop(fq); //刪除第一隊(duì)列第一個(gè)業(yè)務(wù)</p><p><b> state =0;</b></p><p><b> }//else</b></p><p><b> }</b></p>
75、<p> service* searchAndDel(queue &q,int m)</p><p> {//"搜索"函數(shù),在對(duì)列中尋找可處理元素</p><p> service* sign = q. head; //標(biāo)記頭節(jié)點(diǎn)</p><p> service* temp;</p><p>
76、 while(q. head!=NULL )</p><p><b> {</b></p><p> if((-(q. head->money)) <m)</p><p> {//隊(duì)首元素可以處理</p><p> if(q. head==q.rear)</p><p>&
77、lt;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><b>
78、 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 temp;</p>
79、<p><b> }//else</b></p><p><b> }//while</b></p><p><b> else</b></p><p> {//隊(duì)首元首不能被處理</p><p> if(q. head == q. rear){}</
80、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> q. head =q. head->
81、;next;</p><p> q. rear->next = NULL;</p><p><b> }//else</b></p><p><b> }//else</b></p><p> if(q. head == sign)//隊(duì)列循環(huán)一周時(shí)停止</p><
82、p> return NULL;</p><p><b> }</b></p><p> return NULL;</p><p><b> }</b></p><p> service* temped ;</p><p> int randomTemp;&l
83、t;/p><p> void findAndDeal()</p><p> {//"處理"函數(shù) 在對(duì)列中尋找可處理元素,對(duì)其進(jìn)行處理</p><p> while( (temped= searchAndDel(sq,total))&&temped!=NULL ) </p><p>
84、{//查找可處理取款</p><p> total += temped->money; //更新資金總額</p><p> push(eq,temped->money); //加入事件隊(duì)列 離開(kāi)</p><p> back(eq)->type = "離開(kāi)";</p><p> back(eq)-&
85、gt;num = temped->num;</p><p> randomTemp = rand()%(dealMaxTime-dealMinTime +1)+dealMinTime;</p><p> back(eq)->endTime = currentTime + randomTemp ;</p><p> currentTimeOfDeal
86、 += randomTemp;</p><p> ++counter; //更新客戶總數(shù)</p><p> totalTime += ( back(eq)->endTime - temped->beginTime ); //更新逗留時(shí)間 </p><p> delete temped; //刪除節(jié)點(diǎn)</p><p> te
87、mped = NULL;</p><p><b> }</b></p><p> state = 0;</p><p><b> }</b></p><p> int main()</p><p><b> { </b></p>
88、<p> printf(" ********************************************\n");</p><p> printf(" ********************************************\n");</p><p> printf(" *************
89、*******************************\n");</p><p> printf(" *** *** 學(xué)院:信息工程學(xué)院\n");</p><p> printf(" ***
90、 ***\n");</p><p> printf(" *** ***\n");</p><p> printf(" *** *** 專(zhuān)業(yè):計(jì)算機(jī)科學(xué)與技術(shù)\
91、n");</p><p> printf(" *** ***\n");</p><p> printf(" *** ***\n");</p><p> printf
92、(" *** 歡迎進(jìn)入銀行模擬系統(tǒng) *** 班級(jí):061\n");</p><p> printf(" *** ***\n");</p><p> printf(" ***
93、 ***\n");</p><p> printf(" *** *** 姓名:邱雨田\n");</p><p> printf(" *** *
94、**\n");</p><p> printf(" *** ***\n");</p><p> printf(" *** *** 學(xué)號(hào):6103106020\n");
95、 </p><p> printf(" ********************************************\n");</p><p> printf(" ********************************************\n");</p><p> prin
96、tf(" ********************************************\n");</p><p> printf("\n");</p><p> printf("\n");</p><p> printf("\n");</p><p&
97、gt; printf("請(qǐng)按任意鍵繼續(xù)......\n");</p><p><b> getch();</b></p><p><b> int i;</b></p><p> for(i=0;i<=14;i++)</p><p> printf("\
98、n");</p><p> printf(" ********************************************\n");</p><p> printf(" ********************************************\n");</p><p> printf
99、(" ********************************************\n");</p><p> printf(" *** 1.開(kāi)始模擬 ***\n");</p><p> printf(" *** 0.退出
100、 ***\n");</p><p> printf(" ********************************************\n");</p><p> printf(" ********************************************\n");</p><p>
101、; printf(" ********************************************\n");</p><p> int n,t1=0,t2=0,t3=0,t4=0,m=0;</p><p> scanf("%d",&n);</p><p> while(n==1)</p>
102、<p><b> {</b></p><p> srand(time(NULL)); //初始化隨機(jī)函數(shù)</p><p> printf("請(qǐng)輸入銀行的初始存款:\n");</p><p> scanf("%d",&total); </p><p>
103、 if(total<0) </p><p><b> {</b></p><p> printf("輸入錯(cuò)誤!初始存款不能小于0!請(qǐng)?jiān)俅屋斎耄n"); </p><p> printf("請(qǐng)輸入銀行的初始存款:\n");</p>&l
104、t;p> scanf("%d",&total); </p><p> if(total<0) </p><p><b> {</b></p><p> printf("輸入錯(cuò)誤!初始存款不能小于0!請(qǐng)最后一次輸入!\n");</p><p>
105、printf("請(qǐng)輸入銀行的初始存款:\n");</p><p> scanf("%d",&total); </p><p> if(total<0)</p><p><b> {</b></p><p> printf("三次輸入都錯(cuò)誤!請(qǐng)按任意鍵
106、退出!\n");</p><p><b> getch();</b></p><p> printf("請(qǐng)按任意鍵退出!\n");</p><p> goto end; </p><p><b> }</b></p><p><b&
107、gt; }</b></p><p><b> }</b></p><p> printf("請(qǐng)輸入銀行的營(yíng)業(yè)時(shí)間:\n");</p><p> scanf("%d",&closeTime);</p><p> if(closeTime>=1440
108、) </p><p><b> {</b></p><p> printf("輸入錯(cuò)誤!一天的營(yíng)業(yè)時(shí)間不能超過(guò)1440分鐘(24個(gè)小時(shí))!請(qǐng)?jiān)俅屋斎?!\n");</p><p> printf("請(qǐng)輸入銀行的營(yíng)業(yè)時(shí)間:\n");</p><p>
109、 scanf("%d",&closeTime);</p><p> if(closeTime>=1440) </p><p><b> {</b></p><p> printf("輸入錯(cuò)誤!一天的營(yíng)業(yè)時(shí)間不能超過(guò)1440分鐘(24個(gè)小時(shí))!請(qǐng)最后一次輸入!\n");</p>
110、;<p> printf("請(qǐng)輸入銀行的營(yíng)業(yè)時(shí)間:\n");</p><p> scanf("%d",&closeTime);</p><p> if(closeTime>=1440) </p><p><b> {</b></p><p>
111、printf("三次輸入都錯(cuò)誤!請(qǐng)按任意鍵退出!\n");</p><p><b> getch();</b></p><p> printf("請(qǐng)按任意鍵退出!\n");</p><p><b> goto end;</b></p><p><b
112、> }</b></p><p><b> }</b></p><p><b> } </b></p><p> printf("請(qǐng)輸入最大到達(dá)時(shí)間間隔:\n"); </p><p> scanf("%d",&arriveM
113、axTime);</p><p> if(arriveMaxTime>closeTime) </p><p><b> {</b></p><p> printf("輸入錯(cuò)誤!最大到達(dá)時(shí)間間隔必須小于營(yíng)業(yè)時(shí)間!請(qǐng)?jiān)俅屋斎?!\n");</p><p> printf("
114、;請(qǐng)輸入最大到達(dá)時(shí)間間隔:\n"); </p><p> scanf("%d",&arriveMaxTime);</p><p> if(arriveMaxTime>closeTime) </p><p><b> {</b></p><p> printf("
115、;輸入錯(cuò)誤!最大到達(dá)時(shí)間間隔必須小于營(yíng)業(yè)時(shí)間!請(qǐng)最后一次輸入!\n");</p><p> printf("請(qǐng)輸入最大到達(dá)時(shí)間間隔:\n"); </p><p> scanf("%d",&arriveMaxTime);</p><p> if(arriveMaxTime>closeTime)<
116、;/p><p><b> {</b></p><p> printf("三次輸入都錯(cuò)誤!請(qǐng)按任意鍵退出!\n");</p><p><b> getch(); </b></p><p> printf("請(qǐng)按任意鍵退出!\n");</p>&
117、lt;p><b> goto end;</b></p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></p><p> printf("請(qǐng)輸入最小到達(dá)時(shí)間間隔:\n&q
118、uot;); </p><p> scanf("%d",&arriveMinTime);</p><p> if(arriveMinTime<=0 || arriveMinTime>=arriveMaxTime) </p><p><b> {</b></p><p>
119、; printf("輸入錯(cuò)誤!最小到達(dá)時(shí)間間隔必須介于零和最大到達(dá)時(shí)間之間!請(qǐng)?jiān)俅屋斎?!\n"); </p><p> printf("請(qǐng)輸入最小到達(dá)時(shí)間間隔:\n"); </p><p> scanf("%d",&arriveMinTime);</p><p> if(arriveMinT
120、ime<=0 || arriveMinTime>=arriveMaxTime) </p><p><b> {</b></p><p> printf("輸入錯(cuò)誤!最小到達(dá)時(shí)間間隔必須介于零和最大到達(dá)時(shí)間之間!請(qǐng)最后一次輸入!\n"); </p><p> printf("請(qǐng)輸入最小到達(dá)時(shí)間間隔:
121、\n"); </p><p> scanf("%d",&arriveMinTime);</p><p> if(arriveMinTime<=0 || arriveMinTime>=arriveMaxTime)</p><p><b> {</b></p><p>
122、 printf("三次輸入都錯(cuò)誤!請(qǐng)按任意鍵退出!\n");</p><p><b> getch();</b></p><p> printf("請(qǐng)按任意鍵退出!\n");</p><p><b> goto end;</b></p><p><
123、;b> } </b></p><p><b> }</b></p><p><b> } </b></p><p> printf("請(qǐng)輸入最大的處理時(shí)間:\n");</p><p> scanf("%d",&dealMax
124、Time);</p><p> if(dealMaxTime>closeTime) </p><p><b> {</b></p><p> printf("輸入錯(cuò)誤!最大處理時(shí)間必須小于營(yíng)業(yè)時(shí)間!請(qǐng)?jiān)俅屋斎耄n"); </p><p> printf("請(qǐng)輸入
125、最大的處理時(shí)間:\n");</p><p> scanf("%d",&dealMaxTime);</p><p> if(dealMaxTime>closeTime) </p><p><b> {</b></p><p> printf("輸入錯(cuò)誤!最
126、大處理時(shí)間必須小于營(yíng)業(yè)時(shí)間!請(qǐng)最后一次輸入!\n"); </p><p> printf("請(qǐng)輸入最大的處理時(shí)間:\n");</p><p> scanf("%d",&dealMaxTime);</p><p> if(dealMaxTime>closeTime)</p><p
127、><b> {</b></p><p> printf("三次輸入都錯(cuò)誤!請(qǐng)按任意鍵退出!\n");</p><p><b> getch(); </b></p><p> printf("請(qǐng)按任意鍵退出!\n");</p><p><b&
128、gt; goto end;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> printf("請(qǐng)輸入最小的處理時(shí)間:\n");</p>
129、<p> scanf("%d",&dealMinTime); </p><p> if(dealMinTime<=0 || dealMinTime>=dealMaxTime) </p><p><b> {</b></p><p> printf(&q
130、uot;輸入錯(cuò)誤!最小處理時(shí)間必須介于零和最大處理時(shí)間之間!請(qǐng)?jiān)俅屋斎?!\n");</p><p> printf("請(qǐng)輸入最小的處理時(shí)間:\n");</p><p> scanf("%d",&dealMinTime); </p><p> if(dealMinTime<=0 || dealM
131、inTime>=dealMaxTime) </p><p><b> {</b></p><p> printf("輸入錯(cuò)誤!最小處理時(shí)間必須介于零和最大處理時(shí)間之間!請(qǐng)最后一次輸入!\n");</p><p> printf("請(qǐng)輸入最小的處理時(shí)間:\n");</p>
132、<p> scanf("%d",&dealMinTime); </p><p> if(dealMinTime<=0 || dealMinTime>=dealMaxTime)</p><p><b> { </b></p><p> printf("三次輸入都錯(cuò)誤!請(qǐng)按任意
133、鍵退出!\n");</p><p><b> getch();</b></p><p> printf("請(qǐng)按任意鍵退出!\n");</p><p><b> goto end;</b></p><p><b> }</b></p&g
134、t;<p><b> }</b></p><p><b> }</b></p><p> printf("請(qǐng)輸入交易額的最大上限:\n");</p><p> scanf("%d",&dealMaxMoney);</p><p>
135、 if(dealMaxMoney>=total || dealMaxMoney>50000)</p><p><b> { </b></p><p> printf("輸入錯(cuò)誤!超出本銀行的服務(wù)范圍!最大交易額應(yīng)低于銀行開(kāi)始營(yíng)業(yè)時(shí)的資金總額且小于50000!請(qǐng)?jiān)俅屋斎?!\n");</p><p> pri
136、ntf("請(qǐng)輸入交易額的最大上限:\n");</p><p> scanf("%d",&dealMaxMoney);</p><p> if(dealMaxMoney>=total || dealMaxMoney>50000)</p><p><b> {</b></p&g
137、t;<p> printf("輸入錯(cuò)誤!超出本銀行的服務(wù)范圍!最大交易額應(yīng)低于銀行開(kāi)始營(yíng)業(yè)時(shí)的資金總額且小于50000!請(qǐng)最后一次輸入!\n");</p><p> printf("請(qǐng)輸入交易額的最大上限:\n");</p><p> scanf("%d",&dealMaxMoney);</p&g
138、t;<p> if(dealMaxMoney>=total || dealMaxMoney>50000)</p><p><b> {</b></p><p> printf("三次輸入都錯(cuò)誤!請(qǐng)按任意鍵退出!\n");</p><p><b> getch();</b>
139、;</p><p> printf("請(qǐng)按任意鍵退出!\n");</p><p><b> goto end;</b></p><p><b> }</b></p><p><b> }</b></p><p><b&g
140、t; }</b></p><p> thearriveMaxTime +=rand()%(arriveMaxTime-arriveMinTime + 1)+arriveMinTime; //首次到達(dá)時(shí)間</p><p> while(currentTime < closeTime)</p><p><b> {</b>
141、</p><p> ++currentTime;</p><p> if( currentTimeOfDeal < currentTime ) currentTimeOfDeal = currentTime ;</p><p> if( currentTimeOfDeal == currentTime ) state = 1;</p>&l
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銀行業(yè)務(wù)模擬系統(tǒng)課程設(shè)計(jì)
- 銀行業(yè)務(wù)活動(dòng)的模擬課程設(shè)計(jì)
- 銀行業(yè)務(wù)活動(dòng)的模擬課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)銀行業(yè)務(wù)模擬
- 數(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ì)---一個(gè)銀行業(yè)務(wù)模擬的程序
- 《銀行業(yè)務(wù)模擬實(shí)訓(xùn)》課程的改革方案
- 銀行業(yè)務(wù)分析報(bào)告
- 私人銀行業(yè)務(wù)淺析
- 臺(tái)州銀行電子銀行業(yè)務(wù)章程
- 2009公司銀行業(yè)務(wù)試題
- 銀行業(yè)務(wù)外包研究.pdf
- 銀行業(yè)務(wù)技能培訓(xùn)制度
- 會(huì)計(jì)與銀行業(yè)務(wù)用語(yǔ)
- A銀行私人銀行業(yè)務(wù)發(fā)展研究.pdf
- 臺(tái)州銀行電子銀行業(yè)務(wù)章程(201804)
- 商業(yè)銀行投資銀行業(yè)務(wù)
- 銀行業(yè)務(wù)軟件測(cè)試研究.pdf
- 我國(guó)私人銀行業(yè)務(wù)風(fēng)險(xiǎn)研究
評(píng)論
0/150
提交評(píng)論