欢迎来到天天文库
浏览记录
ID:59313221
大小:24.50 KB
页数:7页
时间:2020-09-05
《银行排队系统 c++.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、银行排队系统问题银行业务模拟问题描述:设银行有四个服务窗口,每个窗口均可以办理存款、取款、挂失、还贷业务,每种业务所需的服务时间不同,客户到达银行后,先到打号机上打号,号票上包括到达时间、编号和需要办理的业务,然后在银行内等候。每个窗口办理完一个客户的业务后,办理等候客户中排在最前面的客户的业务。写一个上述银行业务的模拟系统,通过模拟方法求出客户在银行内逗留的平均时间和每个窗口办理的客户数及办理的每种业务数。基本要求:每个客户到达银行的时间和需要办理的业务随机产生,输出一天客户在银行的平均逗留时间和每
2、个窗口每天办理的客户数和每种业务数。测试数据:营业时间为8小时,其他模拟量自行设定。要用到的知识点至少包括数据结构中的队列问题以下是本人初步的分析,可以更改但不要偏差太多。客户类:◆按照顺序生成客户编号,在以后的程序调用之中保持不变。输出客户编号(customer_code)◆随机生成客户到达银行的时间(arrival_time)★使用随机数函数,假设每五分钟来一位顾客★顾客到来的时间超过480(营业八小时,8*60=480)分钟之外,系统运行结束。★输出到达时间◆随机生成客户要办理的业务(item)
3、◆输出办理业务的窗口号(window)窗口统计类:◆每个窗口分别记录某天办理的客户总数,和每种业务数。输出相应记录◆统计所有窗口办理的总的客户数和每种业务数。逗留时间:计算这一天客户在银行的平均逗留时间,平均每个客户进入银行到离开银行的时间总和。办理业务的时间规定为:◆1——存款3分钟◆2——取款5分钟◆3——挂失10分钟◆4——还贷20分钟办理业务过程分析有窗口空闲时,顾客进入空闲窗口中号数较小的一个。有顾客等待时,客户进入某个窗口的方式为队列。哪一个窗口的业务先办理完,他进入那个队列。#inclu
4、de#include#include#include#includeintj=0,r=0;/*建立票据的类,上面包含编号,客户到达银行时间以及要办理的业务*/classfare{public:intnum;char*oper;inttime;inttime1,time2;/*票的编号是顺序产生的*/voidgetnum(intn){num=n;}/*客户到达银行时间是随机产生的*/voidgetti
5、me(){srand(j++);/*利用j控制长生从小到大不断变化的随机种子*/r=((rand()-38)*5/8)%480;/*不同的数学组合可以控制随机数的产生。*/time1=r/60+8;time2=r%60;}/*客户办理何种业务也是随即产生的*/voidgetoper(){oper=newchar[10];r=r%4;switch(r){case0:oper="save";time=5;break;case1:oper="fetch";time=5;break;case2:oper="l
6、oss";time=10;break;case3:oper="repay";time=20;break;}}/*显示票据内容*/voiddisplay(){cout<<"号码"<7、*建立银行窗口类,记录票据所有内容以及业务办理时间,同时计算办理类型总数*/classwindow{public:faref;inttime3,time4;intcount,save,fetch,loss,repay;intwait;window(){count=save=fetch=loss=repay=time3=time4=0;}/*累计各种业务办理的数目*/voidadd(){switch(*f.oper){case's':save++;break;case'f':fetch++;break;8、case'l':loss++;break;case'r':repay++;break;}}voidworktime(){if((time3*60+time4)<=(f.time1*60+f.time2)){time3=f.time1;time4=f.time2;}}/*计算等待时间*/voidgetwait(){wait=(time3*60+time4)-(f.time1*60+f.time2);}};/*判断用户应该到那个窗口办理业务*/intmin(
7、*建立银行窗口类,记录票据所有内容以及业务办理时间,同时计算办理类型总数*/classwindow{public:faref;inttime3,time4;intcount,save,fetch,loss,repay;intwait;window(){count=save=fetch=loss=repay=time3=time4=0;}/*累计各种业务办理的数目*/voidadd(){switch(*f.oper){case's':save++;break;case'f':fetch++;break;
8、case'l':loss++;break;case'r':repay++;break;}}voidworktime(){if((time3*60+time4)<=(f.time1*60+f.time2)){time3=f.time1;time4=f.time2;}}/*计算等待时间*/voidgetwait(){wait=(time3*60+time4)-(f.time1*60+f.time2);}};/*判断用户应该到那个窗口办理业务*/intmin(
此文档下载收益归作者所有