现在的位置: 首页 > 综合 > 正文

【黑马程序员Java培训、Android培训】银行调度系统

2012年12月13日 ⁄ 综合 ⁄ 共 1717字 ⁄ 字号 评论关闭

银行业务调度系统

平时,我们先大概都去过银行取过款或者存过款,稍微的大一点的银行都会有一套管理系统。
word中要求实现的功能大体上和现实中一样。通过学习视频,来归纳一下这个系统怎么做的,都要注意些什么。

1、要提取类的对象和信息

根据实际中的经验,我们提取出客户、取票机、控制台三个对象。

2、程序中客户是怎么产生的?

我们知道,银行里面有空调,特别是夏天的时候,里面可能会有很多人,大部分人是去办理业务的,我们称之为客户,
就是我们要找的对象,但是还有一部分人是去吹凉的,他们肯定不能算作是客户,这时我们怎么才能分辨呢?
我们用到了取号机这个对象,取号机里面产生一张票的话,就相当于产生了一个客户,这时就可以让这个客户放进
“队伍”里面了。

3、“叫号”

叫号怎么叫呢?是客户跑去问号么?说,轮到我了么?时时刻刻地去问,有N多个客户的话,N多个客户也同时跑去问,
这下窗口就挤爆了!所以不能让客户自己跑去问号,而是让窗口去一次叫号,客户听到了窗口在叫自己的号码,就会
跑到对应的窗口办理业务。

4、此时系统里面的一些结构就比较清楚了
Numbermanager  拥有有关number的所有方法
     NumberMachine  拥有Vip、快速、普通的管理器
ServiceWindow  拥有处理业务的方法

5、NumberManger

public class NumberManager {
private int lastNumber = 0;
private List queueNumbers = new ArrayList();
//这里不用ArrayList是面向接口编程,以后new LinkedList也可以,方便

public synchronized Integer generateNewNumber(){
queueNumbers.add(++lastNumber);         //添加这个数
return lastNumber;
}

public synchronized Integer fetchNumber(){
if(queueNumbers.size()>0){
return (Integer)queueNumbers.remove(0);//remove()方法返回的是一个集合里的一个元素
}else{
return null;
}
}

6、NumberMachine  

private NumberMachine(){}             //管理三个号码的机器
private static NumberMachine instance = new NumberMachine();            |
public static NumberMachine getInstance(){                              |---->单例,单例对象确保里面只有一个实例,上次学的枚举里面就有单例
return instance;                                                |    要用static修饰
}
//三个成员变量
private NumberManager commonManager = new NumberManager();        //普通客户
private NumberManager expressManager = new NumberManager();       //快速客户
private NumberManager vipManager = new NumberManager();           //vip客户
public NumberManager getCommonManager() {
return commonManager;
}
public NumberManager getExpressManager() {
return expressManager;
}
public NumberManager getVipManager() {
return vipManager;
}

7、ServiceWindow  

ServiceWindow类功能是叫号,那么他的叫号功能是调用别人的还是他自己就具有的呢?
要是他自己就具有的,要怎么实现呢?
在类里面写一个start()创建一个线程池运行commonService()、expressService()、vipService()这些方法。

抱歉!评论已关闭.