银行业务调度系统——需求分析篇

首先,银行业务调度系统的需求如下:

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

2、有三种类型对应的客户:普通客户、快速客户(如办理交水电费的客户)、VIP客户

3、异步随机生成各种类型的用户,生成各用户的概率比例为:普通客户:快速客户:VIP客户  =  6:3:1

4、客户办理业务所需时间有最大值和最小值,在该范围内随机设定每个VIP客户以及普通客户办理业务所需的时间,快速客户办理业务所需时间为最小值

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

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

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

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


通过对需求的分析,可以抽象出以下的概念:

1、由于每一个客户实际上是通过银行的取号机取出的号码来表示的,因此需要一个号码管理器,每产生一个号码,就相当于来了一个客户,所以需要号码管理器

2、由于有3类客户,每类客户的号码编排是完全独立的,所以,就需要有一个号码产生器,来分别产生3种不同的用户,这个号码产生器必须是单例的

3、当号码管理器需要产生一个号码的时候,就必须访问号码产生器来获取下一个号码的值,也就是来办理业务的客户的编号

4、当窗口需要为下一个用户服务的时候,就必须访问号码管理器来中获取下一个号码的值,也就是需要为其服务的客户

综上所述,我们可以得到以下结论

1、需要有一个号码产生器类,该号码产生器只能通过单例模式来产生,该号码提供3个方法,分别可以生成3种不同类型的号码

2、需要有一个号码管理器类,它可以从号码产生器中获取号码,也可以提供下一个需要服务的号码

3、需要有一个服务窗口类,它可以从号码管理器中获取下一个需要服务的号码,并且对3种不同的客户进行服务


面向对象的关键:

你不能首先考虑这个程序需要实现什么,你必须要首先思考这个程序要模拟什么

也就是说,你必须要先通过在实际生活中的思维方式,把整个业务流程模拟出来

然后再对整个业务流程进行抽象

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值