您的位置:首页 > 职场人生

黑马程序员——Java学习笔记之10——“银行业务调度系统”

2014-04-04 20:50 477 查看
----------- android培训java培训、期待与您交流! ------------

1、需求说明:

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

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

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

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

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

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

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

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

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

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

2、需求分析:

①首先,根据日常经验来说,每当我们进入银行时,首先都会到取号机上取号,一旦取号了,我们才会成为银行的待服务客户。所以这里可以首先设计一个号码管理器,用来为新来的人产生服务号码,即将其标志为待服务客户。这里可以通过生成一个号码管理器,并不断随机地生成客户号码来模拟客户取号的情景。然后,号码管理器也应该提供一个方法,以便让银行的服务窗口得到号码管理器中的号码,并叫号,依次为等待队列中的相应类型的客户服务。

②需求中有三种类型的客户:普通客户、快速客户和VIP客户,同时也定义了这3种类型的客户生成的比例,所以这里需要定义三种类型的号码管理器,让3中类型的号码管理器在相应比例的时间内随机生成客户。

③在得到了顾客对象后,就需要银行的窗口为客户提供服务。这时,就需要设计服务窗口,用来为相应类型的客户服务。

④最后,在号码管理器和服务窗口定义完成后,首先建立3个类型的服务窗口若干,然后,创建3个线程,用来模拟3种类型的客户在随机的时间点到银行的号码管理器上取号。

⑤最后,根据上述分析,建立对象用例图(引用自黑马程序员.张孝祥老师的图)



3、设计思路与代码实现:

①首先,最好将三种类型的客户定义为枚举类型,并存储在单独的文件中。这样也便于程序的友好信息的打印。



②然后,将需求中各种类型的客户服务的最快时间和最慢时间单独定义在一个文件中,方便以后的程序维护。其实,这跟一般的程序配置文件的设置目的是一样的。



③接着,前期准备完毕,开始定义号码管理器



④接着,开始定义号码机器,用来管理上述三种客户对应的三种类型的号码管理器。由于号码机器只会有一个,所以将其设计为单例。



⑤接着,定义一个服务窗口类,用来为各种类型的客户服务。







⑥最后建立主程序,生成若干个窗口,并生成各种客户,并让窗口开始服务客户。





4、总结:

①这个题目相比交通灯管理系统来说,用到了单例设计,但是,交通灯管理系统中,交通灯管理器其实也应该用单例模式。因为交通灯管理器应该只能有一个对象,且只能通过newInstance方法获取到该类的实例。

②这个题目由于友好提示信息的输出比较多,且题目中个中对象的内在练习比较紧密,逻辑比较复杂,所以容易产生编写输出语句时逻辑混乱的问题,要多加考虑。

5、黑马的基础课程,目前已经全部看完,总共学了一个月,每天都感觉过得很充实。这些日子学下来,总是很不自信,感觉学到后来,又忘了前面的知识。论坛了逛了好一阵子了,在帮一起奋斗的同学们解决问题的时候,有时候一句谢谢也让我很是兴奋呀,嘿嘿。

今天偶然在论坛上看到了一位同学的入学测试题,我也下载下来看了看,突然感觉自己学的还可以,哈哈,题目难度一般。所以,我也感觉我这些日子没有白熬,总算是种心灵的慰藉吧。我也相信,在接下来的日子里,我会更加努力,争取成为黑马的一员。

在看张孝祥老师的7k月薪视频时,从底部聊天窗口看到了有个人的话,我感觉说的挺有道理,暂且记下了,同时也送给以后的自己以及和我一样正在努力着的同学们。

——————“不是xxxx(某培训机构)骗了你,而是你自己骗了自己!”(来自一个同学对于另一个上培训班后抱怨的同学的回复)

----------- android培训java培训、期待与您交流! ------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: