银行模拟.docx
《银行模拟.docx》由会员分享,可在线阅读,更多相关《银行模拟.docx(8页珍藏版)》请在冰豆网上搜索。
银行模拟
银行模拟
运行图:
源代码:
#include"stdafx.h"
int_tmain(intargc,_TCHAR*argv[])
{
return0;
}
//yy.cpp:
主项目文件。
#include
#include"list"
#include"queue"
#include"time.h"
usingnamespacestd;
voidsolvequeue1();
voidsolvequeue2();
classEvent{
public:
intn;//客户的位子
intmoney;//存取款金额
intsolveTime;//处理需要的时间
intarriveTime;//到达时间,距开业的分钟数
intgrap;//与前一个客户的间隔时间,为了记录营业时间
intwaitTime;//等待时间
};
queueq1,q2;//声明两个队列
intclose_time=0,total_people=0,closetime,total_money;//close_time为当前时间,也是距离关门的时间closetime为营业总时间totle_money为开业时银行内的资金总额totle_people为一天之内办理总的客户数
intmax_solve_time,max_grap_time;//max_slove_time为事件的解决时间最大值//max_grap_time为客户的间隔时间的最大值
intmax_insertmoney,max_drawmoney;//max_insertmoney为存钱的最大值//max_drawmoney为取钱的最大值
intcurrentTime=0;
voidputqueue1(Eventm)
{
q1.push(m);
}
voidputqueue2(Eventm)
{
q2.push(m);
}
voidsolvequeue1()
{
Eventx=q1.front();
q1.pop();
cout<<"现在是"<<(x.arriveTime/60+9)<<":
"<<(x.arriveTime-(x.arriveTime/60)*60)<<",第"<if(total_money+x.money>=0)
{
total_money+=x.money;
if(x.money>0)
{
if(currentTime>x.arriveTime)
x.waitTime=currentTime-x.arriveTime;
else
x.waitTime=0;
cout<<"第"<currentTime=x.arriveTime+x.waitTime+x.solveTime;
solvequeue2();
}
else
{
if(currentTime>x.arriveTime)
x.waitTime=currentTime-x.arriveTime;
else
x.waitTime=0;
cout<<"第"<currentTime=x.arriveTime+x.waitTime+x.solveTime;
}
}
else
{
cout<<"为第"<putqueue2(x);
}
}
voidsolvequeue2()
{
intn=q2.size(),i=0;
while(n!
=0)
{
Eventx=q2.front();
q2.pop();
if(total_money+x.money>0)
{
total_money+=x.money;
if(currentTime>x.arriveTime)
x.waitTime=currentTime-x.arriveTime;
else
x.waitTime=0;
cout<<"第"<n--;
currentTime=x.arriveTime+x.waitTime+x.solveTime;
}
else
{
putqueue2(x);
i++;
}
if(i==n)
break;
}
}
//主函数
voidmain()
{
cout<<"请输入银行总资金(元)和营业总时间(分钟):
"<cin>>total_money>>closetime;
cout<<"请输入存钱的最大值(元)和取钱的最大值(元)"<cin>>max_insertmoney>>max_drawmoney;
cout<<"请输入事件的解决时间最大值(分钟)和客户的间隔时间的最大值(分钟)"<cin>>max_solve_time>>max_grap_time;
system("cls");
cout<<"*****************早上九点开业,欢迎光临*****************\n";
cout<<"银行每天开业总资金为"<Eventtemp;
intgrap=0,n=1,i;
intsolveTime;
intmoney;
intwaitTime=0;
srand((unsigned)time(NULL));
grap=rand()%max_grap_time;
temp.grap=grap;
close_time=temp.grap+close_time;
temp.arriveTime=close_time;
money=rand()%(max_insertmoney+max_drawmoney)-max_drawmoney;
temp.money=money;
solveTime=rand()%max_solve_time;
temp.solveTime=solveTime;
temp.n=n;
putqueue1(temp);
solvequeue1();
//system("pause");
for(;;)
{
grap=rand()%max_grap_time;
temp.grap=grap;
close_time=temp.grap+close_time;
temp.arriveTime=close_time;
if(close_time>closetime)
{
cout<<"******************银行营业结束,谢谢光临*******************\n";
cout<<"今天来了"<if(q2.size()!
=0)
cout<<"未能给"<"<else
cout<<"为全部的顾客提供的服务,欢迎再次光临!
"<cout<<"银行余额为"<break;
}
i=rand()%2;
if(i==0)
money=rand()%max_insertmoney;
else
money=-rand()%max_drawmoney;
temp.money=money;
solveTime=rand()%max_solve_time;
temp.solveTime=solveTime;
n++;
temp.n=n;
putqueue1(temp);
solvequeue1();
getchar();
getchar();
//system("pause");
}
}
注:
此程序为MicrosoftVisualStudio2012编译,执行。