資源簡(jiǎn)介
客戶業(yè)務(wù)分為兩種,
第一種是申請(qǐng)從銀行得到一筆資金,即取款或者借款。
第二種是向銀行投入一筆資金,即存款或者還款。
Void Action()
銀行有兩個(gè)服務(wù)窗口,相應(yīng)的有兩個(gè)隊(duì)列。
客戶到達(dá)銀行后先排第一個(gè)隊(duì)。queue q1;
處理每個(gè)客戶業(yè)務(wù)時(shí),如果屬于第一種,且申請(qǐng)額超
出銀行現(xiàn)存資金總額而得不到滿足,則立即排入第二個(gè)隊(duì) queue q2;
等候,直至滿足時(shí)才離開(kāi)銀行
;否則業(yè)務(wù)處理完后立即離開(kāi)銀行。
每接待完一個(gè)第二種業(yè)務(wù)的客戶,則順序檢查和處理
(如果可能)第二個(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)銀行。
【基本要求】 利用動(dòng)態(tài)存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)模擬。
【測(cè)試數(shù)據(jù)】 一天營(yíng)業(yè)開(kāi)始時(shí)銀行擁有的款額為10000(元)
初始化total=10000;
,營(yíng)業(yè)時(shí)間為600(分鐘)。
設(shè)定營(yíng)業(yè)時(shí)間為早上9:00-晚上19:00
其他模擬參量自定,注意測(cè)定兩種極端的情況:一是兩個(gè)到達(dá)事件之間的間隔時(shí)間很短,
而客戶的交易時(shí)間很長(zhǎng),另一個(gè)恰好相反,設(shè)置兩個(gè)到達(dá)事件的間隔時(shí)間很長(zhǎng),而客戶的
交易時(shí)間很短。這個(gè)有點(diǎn)焦慮
【實(shí)現(xiàn)提示】 事件有兩類:到達(dá)銀行的和離開(kāi)銀行。初始時(shí)銀行現(xiàn)存資金總額為total。開(kāi)
始營(yíng)業(yè)后的第一個(gè)事件是客戶到達(dá),
設(shè)定一個(gè)計(jì)數(shù)器count來(lái)計(jì)算一天內(nèi)客戶人數(shù),初始化為0
營(yíng)業(yè)時(shí)間從0到closetime。到達(dá)事件發(fā)生時(shí)隨機(jī)地設(shè)置
此客戶的交易時(shí)間和距下一到達(dá)事件之間的時(shí)間間隔。每一個(gè)客戶要辦理的款額也是隨機(jī)
確定的,用負(fù)值和正值分別表示第一類和第二類業(yè)務(wù)。
個(gè)人覺(jué)得用0、1、2、3分別表示取款、借款、存款、還款比較好。
變量total,closetime以及上述兩個(gè)隨機(jī)量的上下界均交互地從終端讀入,作為模擬參數(shù)。
兩個(gè)隊(duì)列和一個(gè)事件表均要用動(dòng)態(tài)存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)。需考慮設(shè)置離開(kāi)事件,以及如何設(shè)
計(jì)第二個(gè)隊(duì)列的存儲(chǔ)結(jié)構(gòu)以獲得較高的效率。注意:事件表是按時(shí)間順序有序的。
void getTime();

代碼片段和文件信息
#include“Client.h“
#include
#include
using?namespace?std;
int?Client::getNum()?
{
return?num;
}
string?Client::getAction()?
{
return?action;
}
int?Client::getMoney?()
{
return?money;
}
void?Client::setNum?(int?value)
{
num=value;
}
void?Client::setAction?(string?value)
{
action=value;
}
void?Client::setMoney(int?value)?
{
money=value;
}
void?Client::Acction(Client?&c)
{
int?m;//客戶交易的錢
int?r;//表示隨機(jī)數(shù)
long?seed=long(time(0));//隨機(jī)數(shù)生成器的種子
srand(seed);
r=rand();
r=r%4;
if(r==0)?//表示第一類業(yè)務(wù)的取款
{
num++;
m=rand();
m=m%10000;
c.setNum(num);
c.num=c.getNum();
c.setAction(“取款“);
c.action=c.getAction();
c.setMoney(m);
c.money=c.getMoney();
????}
????else?if(r==1)???//表示第一類業(yè)務(wù)的借款
{
num++;
m=rand();
????????m=m%10000;
c.setNum(num);
c.num=c.getNum();
c.setAction?(“借款“);
c.action=c.getAction();
c.setMoney(m);
c.money=c.getMoney();
}
else?if(r==2)??//表示第二類業(yè)務(wù)的存款
{
num++;
m=rand();
m=m%10000;
c.setNum(num);
c.num=c.getNum();
c.setAction(“存款“);
c.action=c.getAction();
c.setMoney(m);
c.money=c.getMoney();
}
else????//表示第二類業(yè)務(wù)的還款
{
num++;
m=rand();
m=m%10000;
c.setNum(num);
c.num=c.getNum();
???? c.setAction?(“還款“);
c.action=c.getAction();
c.setMoney(m);
c.money?=c.getMoney();
}
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????1493??2010-12-29?16:01??銀行業(yè)務(wù)模擬\Client.cpp
?????文件????????413??2010-12-29?16:01??銀行業(yè)務(wù)模擬\Client.h
?????文件??????14997??2010-12-29?16:01??銀行業(yè)務(wù)模擬\Main.cpp
?????文件???????2440??2010-12-29?15:50??銀行業(yè)務(wù)模擬\Time.cpp
?????文件????????615??2010-12-23?21:29??銀行業(yè)務(wù)模擬\Time.h
?????目錄??????????0??2011-10-16?14:48??銀行業(yè)務(wù)模擬
-----------?---------??----------?-----??----
????????????????19958????????????????????6
評(píng)論
共有 條評(píng)論