黑马程序员——张孝祥老师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
银行业务调度系统需求: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
相关文章推荐
- 【黑马程序员】 学习笔记 - 直击7K面试题 - 张孝祥老师的银行业务调度管理系统
- 黑马程序员----【张孝祥7K面试题】二银行业务调度系统视频学习笔记
- 黑马程序员-----张孝祥-7K月薪面试题破解之二_银行业务调度系统视频教程观后总结
- 黑马程序员-->7K面试题-->银行业务调度系统
- 【黑马程序员】java7K面试题-----------银行业务调度系统
- 黑马程序员_7K面试题_银行业务调度系统
- 黑马程序员-博客 (9) 张孝祥-7K月薪之二_银行业务调度系统
- 黑马程序员——对张孝祥老师银行业务调度系统代码的改进
- 黑马程序员------张孝祥老师------银行业务调度系统
- <黑马程序员>破解月薪7K的面试题-银行业务调度系统
- 黑马程序员 Java基础 --->7K面试题之银行业务调度系统
- 黑马程序员 7K面试题之银行业务调度系统
- 学习_张孝祥-7K月薪面试题破解之二_银行业务调度系统视频教程
- 黑马程序员_(7K面试题)银行业务调度系统
- 黑马程序员:7K面试题之银行业务调度系统
- 奋斗黑马程序员----7k月薪面试题之银行业务调度系统
- 黑马程序员-12 7k面试题银行业务调度系统
- 黑马程序员——7k面试题---银行业务调度
- 黑马程序员----------java7K面试题之银行业务调度系统
- 黑马程序员——7k面试题——银行业务调度系统