1、银行模拟银行模拟运行图:源代码:#include stdafx.hint _tmain(int argc, _TCHAR* argv) return 0;/ yy.cpp: 主项目文件。#include #include list#include queue#include time.husing namespace std;void solvequeue1();void solvequeue2();class Eventpublic:int n; /客户的位子int money ; /存取款金额int solveTime; /处理需要的时间int arriveTime; /到达时间,距开业的
2、分钟数int grap; /与前一个客户的间隔时间,为了记录营业时间int waitTime; /等待时间;queueq1,q2; /声明两个队列int close_time=0,total_people=0,closetime,total_money; /close_time为当前时间,也是距离关门的时间 closetime为营业总时间totle_money为开业时银行内的资金总额totle_people为一天之内办理总的客户数 int max_solve_time,max_grap_time; /max_slove_time为事件的解决时间最大值 /max_grap_time为客户的间隔时
3、间的最大值int max_insertmoney,max_drawmoney; /max_insertmoney为存钱的最大值 /max_drawmoney为取钱的最大值int currentTime=0;void putqueue1(Event m)q1.push(m);void putqueue2(Event m)q2.push(m);void solvequeue1()Event x=q1.front();q1.pop();cout现在是(x.arriveTime/60+9):(x.arriveTime-(x.arriveTime/60)*60),第x.n个客户到达=0)total_mo
4、ney+=x.money;if (x.money 0)if(currentTimex.arriveTime)x.waitTime=currentTime-x.arriveTime;elsex.waitTime=0;cout第x.n个顾客等了x.waitTime分钟后,办理了存款 x.money 元的业务,用了x.solveTime分钟,此时银行余额为total_moneyx.arriveTime)x.waitTime=currentTime-x.arriveTime;elsex.waitTime=0;cout第x.n个顾客等了x.waitTime分钟后,办理了取款 -x.money 元的业务,
5、用了x.solveTime分钟,此时银行余额为total_moneyendl;currentTime=x.arriveTime+x.waitTime+x.solveTime;elsecout为第x.n个该顾客办理取款 -x.money 元的业务,此时银行余额为total_money,无法为他办理业务,请稍等片刻0)total_money+=x.money;if(currentTimex.arriveTime)x.waitTime=currentTime-x.arriveTime;elsex.waitTime=0;cout第x.n个顾客等了x.waitTime分钟后,办理了取款 -x.money
6、 元的业务,用了x.solveTime分钟,此时银行余额为total_moneyendl;n-;currentTime=x.arriveTime+x.waitTime+x.solveTime;elseputqueue2(x);i+;if(i=n)break;/主函数void main() cout请输入银行总资金(元)和营业总时间(分钟):total_moneyclosetime; cout请输入存钱的最大值(元)和取钱的最大值(元)max_insertmoneymax_drawmoney; cout请输入事件的解决时间最大值(分钟)和客户的间隔时间的最大值(分钟)max_solve_time
7、max_grap_time; system(cls); cout* 早上九点开业,欢迎光临 *n; cout银行每天开业总资金为total_money元. 每日营业时间为closetime分钟.closetime) cout*银行营业结束,谢谢光临*n; cout今天来了n个顾客,endl; if(q2.size()!=0) cout未能给q2.size()位顾客提供服务,很抱歉!endl; else cout为全部的顾客提供的服务,欢迎再次光临!endl; cout银行余额为total_moneyendl; 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); 注:此程序为Microsoft Visual Studio 2012编译,执行。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1