银行模拟系统实现(C++)

分类: 作品, 学校作业 | 发布日期: 2009-12-25

银行模拟系统内容简介:

        通过程序模拟来研究银行顾客在一家有10>=n>=2个窗口(外加一个贵宾窗口)的银行的到达和离开的情况。通过计算每位顾客的平均等待时间及每一窗口处于“繁忙”状态的百分比,我们可得出银行的服务效率。

        实现中,定义代表银行活动的对象,用事件驱动来模拟这些活动,并用一些可能的值来描述预期的顾客到达率和职员为一个顾客服务所需的时间。在此,我们采用随机发生器来反映一个工作日(银行开门关门时间均由自定义设置)中顾客到达和离开的情况。
        若顾客的平均等待时间太长,我们可增加新的窗口;反之,亦可减少窗口的开设。

 

关键问题介绍:

 

顾客的生成:

        顾客的到达都是由随机发生器生成的,比如顾客1到达后,会随机生成该顾客所需的服务时间,同时在之前设置的顾客到达频率范围内,会随机生成顾客2到达的时间,以此类推,直到当前时间大于等于银行关门时间。将每次生成的顾客信息推入优先级队列内,等到所有顾客生成后再由优先级队列推出每个顾客的信息。而此优先级队列的优先级是比较事件发生的时间的(注意需要重载<符号)。比如,顾客1在8:00到达,9:00离开,而顾客2在8:30到达,8:50离开,那么最后输出顺序便是

顾客1的到达事件
顾客2的到达事件
顾客2的离开事件,等了多长时间及在哪个柜台办理业务多长时间等
顾客1的离开事件,等了多长时间及在哪个柜台办理业务多长时间等

        当然上述情况是在至少有两个窗口的情况下,要是只有一个窗口,那么顾客2到达后还需等待顾客1完成办理(即到9:00)后才能进行办理,从而他的离开时间也会推迟,于是输出便是:

顾客1的到达事件
顾客2的到达事件
顾客1的离开事件,等了多长时间及在哪个柜台办理业务多长时间等
顾客2的离开事件,等了30分钟后及在同一个柜台办理业务20分钟

 

顾客的最大耐心等待时间问题:

        在顾客到达频率非常高(比如每分钟都有顾客到达),而服务时间又很长(比如处理每个用户在1个小时左右)的情况下,那么在短时间内就会有上百用户在窗口前等待,显然与现实不符。此时就需要设置顾客的最大耐心等待时间了。
        在初始化银行模拟参数时,可以自行设置顾客的最大耐心等待时间。比如设置为60分钟,再顾客到达频率固定为5分钟(就将最大和最小到达时间均设置为5即可),窗口处理业务固定为30分钟,窗口为1个(程序中窗口个数必须大于等于2,此处仅为说明方便)来举个例子说明吧。

假若顾客18:00到达,那么接下来的顾客都会在每隔5分钟后到达。
顾客1将在该窗口逗留30分钟后(8:30)离开;
然后顾客2(8:05到达的)接受服务(8:30,等待了25分钟),又经过30分钟后离开(9:00);
顾客3(8:10到达的)接受服务(9:00,等待了50分钟),经过30分钟后离开(9:30);
顾客4(8:15到达的)将不接受服务直接离开,因为在预计中,将等待75分钟(大于顾客最大耐心等待时间60分钟)。
顾客5(8:20到达的)、顾客6(8:25到达的)分别也将等待70,65分钟,于是也选择了离开。
顾客7只需等待60分钟,于是没有离开,直到顾客4办理完后上窗口办理自己的业务(9:30)。
……

        还有种情况便是在银行将要关门的情况下(参数同上):

假若银行17:30关门,而顾客30在17:20分才开始办理业务(需要办理30分钟),顾客31正好又在17:15分到达。
那么,银行将在顾客30办理完业务后(17:50)关门(银行关门延迟了),但不会接待顾客31(顾客31至少需要等到17:50才能办理),于是顾客31也就直接离开不必等待了。

 

VIP顾客:

        在银行中,往往有贵宾专柜供VIP顾客办理业务。
        VIP顾客也可由随机发生器生成,比如0到11中随机生成一个数,若等于6就标记为VIP顾客,此时VIP顾客到达的概率为12分之1。在普通窗口等待人非常多的情况下,VIP顾客可以选择直接去贵宾专柜办理。
        但要是贵宾专柜等待人非常多(甚至比普通窗口还多),那么可以放弃VIP特权去普通窗口等待。(此时也许会有朋友问到,VIP顾客不可以优先在普通窗口办理业务吗?呵呵,此处确实如此,毕竟不管顾客是不是VIP顾客,在现实生活中是不允许插队的,而银行为解决这一问题,就特别开设了贵宾专柜只供VIP顾客办理业务。)

 

完整程序代码和实验报告:



标题: Bank Simulation
版本: 1.0
文件大小: 79.95 KB
下载统计: 100
Bank Simulation

总评论数: 2 条.

我要评论
  1. 印第安小狮

    回复 坏坏:
    呵呵, 不客气!
    该程序还有很多地方不周, 需要改进, 大家互相学习商讨哈! :)

    回复 >>
  2. 坏坏

    非常感谢!有机会咱们聊..

    回复 >>

评论

啊, 还没有头像?