搜索
简帛阁>技术文章>黑马程序员——张孝祥老师7k面试题之银行业务调度

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

---------------------- 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 list=new ArrayList();//用于存储所有等待服务的客户队列

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
android培训、java培训、期待与您交流!银行业务调度系统需求:1、银行内有6个业务窗口,14号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。2、有三种对应类型的客户:VIP客户,普
//指定各个窗口运行的条件。publicstaticvoidmain(String[]args){//ServiceWindowwindownull;for(inti1;i//产生4个普通窗口分别为1
android培训、java培训、java学习型技术博客、期待与您交流!面向对象的问题分析:分析一个问题,首先要在脑海中构造出这么个场景,然后从面相对象的角度出发,分析这个场景中有多少个对象,这些对象
android培训、java培训、期待与您交流!一、项目需求:二、思路分析:三、画图理解:四、代码实现步骤:1、NumberManager类packagecnitcastbankqueue;impor
android培训、java培训、java学习型技术博客、期待与您交流!银行业务调度系统需求:模拟实现银行业务调度系统逻辑,具体需求如下:银行内有6个业务窗口,14号窗口为普通窗口,5号窗口为快速窗
android培训、java培训、期待与您交流!银行业务调度系统的项目需求1银行内有6个业务窗口,14号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。2有三种对应类型的客户:VIP客户,普
黑马程序员学习日记黑马程序员_学习日记_银行业务调度系统android培训、java培训、期待与您交流!银行业务调度系统模拟实现银行业务调度系统逻辑,具体需求如下:银行内有6个业务窗口,14号窗口为普
android培训、java培训、期待与您交流!一需求:二分析:三画类图:四编写代码:publicclassNumberManager{privateintlastNumber0;privateLis
android培训、java培训、期待与您交流!1红绿灯:(1)交通等管理系统的项目需求模拟实现十字路口的交通灯管理逻辑系统,具体需求如下:异步随机生成按照各个路线行驶的车辆。例如:由南向而来去往北向
android培训、java培训、期待与您交流!1系统需求模拟实现银行业务调度系统逻辑,具体需求如下:银行内有6个业务窗口,14号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。有三种对应类