银行业务调度系统设计与实现

需积分: 7 10 下载量 130 浏览量 更新于2024-09-14 收藏 91KB DOC 举报
"张孝祥银行业务调度系统的笔记主要探讨了如何设计和实现一个模拟银行业务的调度系统。这个系统涉及到不同类型的客户、业务窗口以及客户生成和服务的逻辑。以下是详细的知识点: 1. 系统架构:系统由6个业务窗口组成,包括1-4号普通窗口,5号快速窗口,以及6号VIP窗口。每个窗口都有其特定的服务对象。 2. 客户分类:客户分为VIP客户、普通客户和快速客户。这三类客户的生成概率分别为1:6:3,意味着快速客户最少,VIP客户最稀有。 3. 业务处理时间:每个客户办理业务的时间是随机的,VIP和普通客户在一定范围内随机设定,而快速客户则以最小值为准。这可以通过线程的Sleep函数来模拟。 4. 业务处理顺序:各类型客户需在对应的窗口按顺序办理业务。例如,VIP客户在6号窗口,普通客户在1-4号窗口,快速客户在5号窗口。如果特殊窗口无对应客户,它们可以处理其他类型的客户,但优先级仍遵循原规则。 5. 号码管理系统:为了区分并管理客户,系统需要一个号码管理器,它生成号码分配给客户。考虑到不同类型的客户,需要三个独立的号码管理器,分别对应VIP、普通和快速客户,它们由一个全局的排队机单例统一管理。 6. 对象关系:号码管理器由排队机单例管理,并提供获取各类型客户号码的方法。业务窗口通过调用号码管理器获取下一个要服务的客户。 7. 窗口与号码管理器的交互:窗口并不直接处理客户,而是由号码管理器决定何时开始服务哪个客户。窗口在开始服务时会向对应的号码管理器请求下一个客户号码。 8. 随机事件:客户生成的时间间隔以及业务办理时间的上下限是随机的,可以根据需求设置。此外,系统的运行结果可以通过日志方式进行展示,不涉及图形用户界面(GUI)。 9. 设计原则:系统设计考虑了面向对象的原则,如单一职责原则(每个对象负责自己的任务,如窗口负责叫号,号码管理器负责生成和分配号码),以及单例模式的应用(确保全局只有一个排队机实例)。 10. 实现细节:代码实现时,需要关注线程同步问题,以保证多个窗口并发服务时的正确性。同时,对异常情况的处理也很重要,比如窗口空闲时如何处理,或者客户数量过多时如何调整服务策略。 通过这个系统,我们可以学习到如何使用编程技术模拟现实世界中的业务流程,理解和应用面向对象设计原则,以及处理并发和随机事件的策略。"