c++版模拟银行窗口排队叫号系统

c++版模拟银行窗口排队叫号系统

注:第一次写blog哪有不到的地方,请指点,以交流学习为主。

首先请参见:
http://blog.csdn.net/Solstice/archive/2011/04/15/6324749.aspx
http://blog.csdn.net/zhangxiaoxiang/archive/2011/04/01/6294132.aspx

看了两位LZ的银行排队系统blog,感觉不错,就也产生了用C++写个排号系统,原因有二,1、对Java不太熟悉,没有看太懂。2、练练手。3、提高一下C++的人气。
进入主题:
对于这一块的业务系统需求没有做过多的分析,只在两位LZ的基础做了小小的改动,然后用C++实现。
题目:
模拟实现银行业务调度系统逻辑,具体需求如下:

    银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。
    有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。
    异步随机生成各种类型的客户,生成各类型用户的概率比例为:

        VIP客户:普通客户:快速客户  =  1 :6 :3。

    客户办理业务所需时间有最大值和最小值,在该范围内随机设定每个VIP客户以及普通客户办理业务所需的时间,快速客户办理业务所需时间为最小值(提示:办理业务的过程可通过线程Sleep的方式模拟)。
    各类型客户在其对应窗口按顺序依次办理业务。
    当VIP(6号)窗口和快速业务(5号)窗口没有客户等待办理业务的时候,这两个窗口可以处理普通客户的业务,而一旦有对应的客户等待办理业务的时候,则优先处理对应客户的业务。
    随机生成客户时间间隔以及业务办理时间最大值和最小值自定,可以设置。
    不要求实现GUI,只考虑系统逻辑实现,可通过Log方式展现程序运行结果。
   
修改:1、在这里为了简化程序的设计(只省了只行代码),FAST和VIP窗口只办理对应的客户,不办普通客户的业务。
      2、由于对于客户的到来,也采用1S来一个的做法,但因为在console程序对于时间不太好控制,在这里只是设定了客户数,即每个1秒来一个客户,根据来的客户数控制时间。
     
开发环境:Linux
代码:
文件constances.h

该文件中定义了一些常量,其中MAX_WAITING_CLIENT_NUM指的是,最多正在等待的客户数,如果客户数到达最大,后来的客户将会离开。

 

文件main.cpp
1、每一个窗口对应一个线程,在此创建了6个线程,分别对应4个客户窗口,1个FAST窗口中,1个VIP窗口中。
2、在这里本想用Unix中的alarm信号来控制客户的间隔时间,但因为时间不好控制就废弃了

 

文件client.cpp client.h
定义了我们的客户,因为我们的客户比较简单,所有的客户共享一个class,只是clientType来区分不同的客户。

 

文件numMachine.cpp numMachine.h
文件中定义了排号机,在numMachine中定义了一个client list用来存放我们的客户。

 

 

文件serviceWin.cpp serviceWin.h
文件中定义了我们窗口。

 

 

结论:
经过几次测试发现在上述条件下,FAST窗口办理业务不能满足需求,在客户不在来的后5秒内,不能处理完FAST客户。

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值