银行业务模拟程序.docx
《银行业务模拟程序.docx》由会员分享,可在线阅读,更多相关《银行业务模拟程序.docx(8页珍藏版)》请在冰豆网上搜索。
银行业务模拟程序
银行业务模拟程序
//BankWnd.h
#pragmaonce
#include
#include"Client.h"
classCBankWnd
{
public:
CBankWnd(void);
~CBankWnd(void);
public:
voidpush(constCClient&);
voidpop(void);
voidclear(void);
size_tsize(void)const;
boolempty(void)const;
private:
std:
:
queuem_queueClients;
};
//BankWnd.cpp
#include"BankWnd.h"
CBankWnd:
:
CBankWnd(void)
{
}
CBankWnd:
:
~CBankWnd(void)
{
}
voidCBankWnd:
:
push(constCClient&client)
{
m_queueClients.push(client);
}
voidCBankWnd:
:
pop(void)
{
m_queueClients.pop();
}
boolCBankWnd:
:
empty(void)const
{
returnm_queueClients.empty();
}
size_tCBankWnd:
:
size(void)const
{
returnm_queueClients.size();
}
voidCBankWnd:
:
clear(void)
{
while(!
m_queueClients.empty()){
m_queueClients.pop();
}
}
C/C++code
//Bank.h
#pragmaonce
#include
#include"BankWnd.h"
#include"Client.h"
classCBank
{
public:
CBank(void);
~CBank(void);
public:
voidonWork(void);
voidoffWork(void);
voidinBank(constCClient&client);
voidoutBank(void);
size_tclientTotal(void)const;
size_tstayTimeTotal(void)const;
size_taveStayTime(void)const;
private:
staticconstintUNIT_TIME=20;
staticconstintNUM_WND=3;
private:
CBankWndm_bankWnds[NUM_WND];
size_tm_nClient;//currentclientnumber
size_tm_nStayTimeTotal;
size_tm_nClientTotal;
};
C/C++code
//Bank.cpp
#include"Bank.h"
CBank:
:
CBank(void)
:
m_nClient(0),m_nClientTotal(0),m_nStayTimeTotal(0)
{
srand((unsigned)time(NULL));
}
CBank:
:
~CBank(void)
{
}
voidCBank:
:
inBank(constCClient&client)
{
size_tminLengthWnd(0);
for(size_tidx(0);idx!
=NUM_WND;++idx){
if(m_bankWnds[idx].size()minLengthWnd=idx;
}
}
m_bankWnds[minLengthWnd].push(client);
m_nStayTimeTotal+=UNIT_TIME;
m_nClientTotal+=1;
m_nClient+=1;
}
voidCBank:
:
outBank(void)
{
switch(rand()%NUM_WND){
case1:
if(!
m_bankWnds[0].empty()){
m_bankWnds[0].pop();
m_nClient-=1;
}
break;
case2:
if(!
m_bankWnds[1].empty()){
m_bankWnds[1].pop();
m_nClient-=1;
}
break;
case3:
if(!
m_bankWnds[2].empty()){
m_bankWnds[2].pop();
m_nClient-=1;
}
break;
}
m_nStayTimeTotal+=m_nClient*UNIT_TIME;
}
size_tCBank:
:
aveStayTime(void)const
{
if(m_nClientTotal==0){
return0;
}
else{
returnm_nStayTimeTotal/m_nClientTotal;
}
}
voidCBank:
:
onWork(void)
{
m_nClient=0;
m_nClientTotal=0;
m_nStayTimeTotal=0;
}
voidCBank:
:
offWork(void)
{
for(size_tidx(0);idx!
=NUM_WND;++idx){
m_bankWnds[idx].clear();
}
m_nClient=0;
}
size_tCBank:
:
clientTotal(void)const
{
returnm_nClientTotal;
}
size_tCBank:
:
stayTimeTotal(void)const
{
returnm_nStayTimeTotal;
}
C/C++code
//client.h
#pragmaonce
classCClient
{
public:
CClient(void);
~CClient(void);
};
booloperator<(constCClient&lClient,constCClient&rClient);
booloperator==(constCClient&lClient,constCClient&rClient);
booloperator!
=(constCClient&lClient,constCClient&rClient);
C/C++code
//client.cpp
#include"Client.h"
CClient:
:
CClient(void)
{
}
CClient:
:
~CClient(void)
{
}
booloperator<(constCClient&lClient,constCClient&rClient)
{
returnfalse;
}
booloperator==(constCClient&lClient,constCClient&rClient)
{
returnfalse;
}
booloperator!
=(constCClient&lClient,constCClient&rClient)
{
returntrue;
}
C/C++code
#include"Bank.h"
#include"Client.h"
#include
int_tmain(intargc,_TCHAR*argv[])
{
CBankmyBank;
CClientclient;
myBank.onWork();
for(size_ti(0);i!
=10;++i){
for(size_tj(0);j!
=5;++j){
if(rand()%100>50){
myBank.inBank(client);
}
}
for(size_tj(0);j!
=5;++j){
myBank.outBank();
}
}
myBank.offWork();
std:
:
cout<std:
:
cout<std:
:
cout<return0;
}