黑马程序员2--银行业务调度系统

来源:互联网 发布:人之为学有难易乎 编辑:程序博客网 时间:2024/05/24 01:41
---------------------- android培训、java培训、期待与您交流! ----------------------

银行业务调度系统

模拟实现银行业务调度系统逻辑,具体需求如下:

 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。

 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。

 异步随机生成各种类型的客户,生成各类型用户的概率比例为:

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

 客户办理业务所需时间有最大值和最小值,在该范围内随机设定每个VIP客户以及普通客户办理业务所需的时间,快速客户办理业务所需时间为最小值(提示:办理业务的过程可通过线程Sleep的方式模拟)。

 各类型客户在其对应窗口按顺序依次办理业务。

 当VIP(6号)窗口和快速业务(5号)窗口没有客户等待办理业务的时候,这两个窗口可以处理普通客户的业务,而一旦有对应的客户等待办理业务的时候,则优先处理对应客户的业务。

 随机生成客户时间间隔以及业务办理时间最大值和最小值自定,可以设置。

 不要求实现GUI,只考虑系统逻辑实现,可通过Log方式展现程序运行结果。

分析:有 业务窗口  客户  号码管理  

客户:
有三个类型: VIP  common  express 用到了枚举,当枚举和switch结合时,即提高效率,又实现了代码的简洁


号码管理
是对号码的管理,他拥有号码数据,提供了对号码操作的方法
把号码放入到集合中
1面向业务窗口的取号操作
2面向客户的取号操作(当取号时自增一,相当于一个客户存在)


号码机器
当业务窗口取号时是通过号码机器获得的,客户也一样,它是一个桥梁(和现实生活一样,当你取号时也是通过硬件实现的)


 

业务窗口
有三个类型:VIP  common  express(没有通过继承的方式来实现这三个窗口,而是通过setType方法()设置,更加的接近生活)
有一个开始工作的方法
根据不同的type,来调用不同的底层实现代码
共同的部分是:
先问号码管理要被服务的号,如果有服务,没有做其它的事(包括休息)


主函数:
产生了6号窗口,又用多线程的定时器实现按比例的来客户。
这样一个模拟银行取号系统就完成了
小知识点:当用到常量时可以单独定义到一个类中,数据多时,就会便于阅读,而且代码看名知意。

---------------------- android培训、java培训、期待与您交流! ----------------------