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

黑马程序员——张孝祥老师7k面试题之银行业务调度

2012-03-07 17:10 459 查看
---------------------- android培训java培训、期待与您交流! ----------------------

银行业务调度系统需求:1、银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。2、有三种对应类型的客户:VIP客户,普通客户,快速客户。3、VIP客户以及普通客户办理业务所需的时间有最大值和最小值,快速客户办理业务所需时间为最小值,三种客户比例为VIP客户 :普通客户 :快速客户  =  1 :6 :3。4、当VIP窗口和快速窗口没有客户等待可以为普通客户服务。

系统分析:首先来银行的客户分为三类:普通客户,快速客户,VIP客户,异步随机生成各种类型的客户,然后去相对应的窗口办理业务。每个类型的客户拿到的号码都是独立的,号码管理器进行管理就需要三个,这样用一个发号机器来管理三个号码管理器,客户领号时根据自己的类型选择不同的号码管理器取得号码,这样才更接近于现实。这时可以大致确定下几个类,客户类、号码管理器类、发号机器类。在客户来银行办理业务时,他是要等到业务窗口喊号才可以到窗口办理业务,而喊号的依据便是发号机器那里得到的已经发出去的号码。

部分的代码实现:

首先将客户类

public enum CustomerType{COMMON.EXPRESS,VIP;}

定义这个号码管理器的类

public class NumberManager{

private int lastNumber=1;//定义一个用存储上一个客户号码的成员变量

private List<Integer> list=new ArrayList<Integer>();//用于存储所有等待服务的客户队列

public synchronized Integer generateNumber(){//定义产生一个新号码的方法

list.add(lastNumber);

return lastNumber++;

}

public synchronized  Integer getServiceNumber(){//获取等待客户队列的即将被服务的号码

renturn list.remove(0);

}

}

之后定义一个发号机器的类来管理不同的号码管理器。

public class NumberMachine{

private NumberManger commonManager=new NumberManager();//定义三个成员变量分别指向三个manager对象

private NumberManger expressManager=new NumberManager();

private NumberManger vipManager=new NumberManager();

public NumberManager getCommonManager(){//定义三个get方法返回对应的NumberManager对象。

return commonManager;

}

public NumberManager getCommonManager(){

return expressManager;

}

public NumberManager getCommonManager(){

return vipManager;

}

private NumberMachine(){

public static NumberMachine instance=new NumberMachine();//将NumberMachine设计成单例
public static NumberMachine getInstance(){

return instance;

]

}

}

定义窗口类,定义一个start()方法

使用Executors.newSingleThreadExecutor().execute{new Runnable(){

public void run(){

while(true){

switch(type){

case COMMON

//调用普通窗口喊号方法

case EXPRESS

//调用快速窗口喊号方法

case VIP

//调用VIP窗口喊号方法}}}
}}

听张老师讲的时候,还是能紧跟着思路把整个系统的条理弄明白,但是等到自己写博客的时候就有些丢三落四的情况,还有些能想到但是该怎么操作却不会了。在分析设计后一些东西就被我华丽丽的漏掉了,而且思维还是需要锻炼,下午写这篇日记的时候,中间一断,回来就找不到头绪了,磨蹭了很久才完成,尴尬~

---------------------- android培训java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息