黑马程序员----银行业务调度系统面试题
2012-02-22 22:38
316 查看
这种程序就是模拟一个去取票系统,大家平时都有移动营业厅或者银行,都知道进去之后需要在门口的取票取一张票,那张票上面记录你的号码和需要等待的人楼,然后窗口会有显示当前服务的号码,如果轮到相应的数字就到对应的窗台。
---------------------- android培训、java培训、期待与您交流! ----------------------
ServiceWindow
package cn.itcast.bankqueue; import java.util.Random; import java.util.concurrent.Executors; import java.util.logging.Logger; /** * 没有把VIP窗口和快速窗口做成子类,是因为实际业务中的普通窗口可以随时被设置为VIP窗口和快速窗口。 * */ public class ServiceWindow { private static Logger logger = Logger.getLogger("cn.itcast.bankqueue"); private CustomerType type = CustomerType.COMMON; private int number = 1; public CustomerType getType() { return type; } public void setType(CustomerType type) { this.type = type; } public void setNumber(int number){ this.number = number; } public void start(){ Executors.newSingleThreadExecutor().execute( new Runnable(){ public void run(){ //下面这种写法的运行效率低,最好是把while放在case下面 while(true){ switch(type){ case COMMON: commonService(); break; case EXPRESS: expressService(); break; case VIP: vipService(); break; } } } } ); } private void commonService(){ String windowName = "第" + number + "号" + type + "窗口"; System.out.println(windowName + "开始获取普通任务!"); Integer serviceNumber = NumberMachine.getInstance().getCommonManager().fetchNumber(); if(serviceNumber != null ){ System.out.println(windowName + "开始为第" + serviceNumber + "号普通客户服务"); int maxRandom = Constants.MAX_SERVICE_TIME - Constants.MIN_SERVICE_TIME; int serviceTime = new Random().nextInt(maxRandom)+1 + Constants.MIN_SERVICE_TIME; try { Thread.sleep(serviceTime); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(windowName + "完成为第" + serviceNumber + "号普通客户服务,总共耗时" + serviceTime/1000 + "秒"); }else{ System.out.println(windowName + "没有取到普通任务,正在空闲一秒"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } private void expressService(){ Integer serviceNumber = NumberMachine.getInstance().getExpressManager().fetchNumber(); String windowName = "第" + number + "号" + type + "窗口"; System.out.println(windowName + "开始获取快速任务!"); if(serviceNumber !=null){ System.out.println(windowName + "开始为第" + serviceNumber + "号快速客户服务"); int serviceTime = Constants.MIN_SERVICE_TIME; try { Thread.sleep(serviceTime); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(windowName + "完成为第" + serviceNumber + "号快速客户服务,总共耗时" + serviceTime/1000 + "秒"); }else{ System.out.println(windowName + "没有取到快速任务!"); commonService(); } } private void vipService(){ Integer serviceNumber = NumberMachine.getInstance().getVipManager().fetchNumber(); String windowName = "第" + number + "号" + type + "窗口"; System.out.println(windowName + "开始获取VIP任务!"); if(serviceNumber !=null){ System.out.println(windowName + "开始为第" + serviceNumber + "号VIP客户服务"); int maxRandom = Constants.MAX_SERVICE_TIME - Constants.MIN_SERVICE_TIME; int serviceTime = new Random().nextInt(maxRandom)+1 + Constants.MIN_SERVICE_TIME; try { Thread.sleep(serviceTime); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(windowName + "完成为第" + serviceNumber + "号VIP客户服务,总共耗时" + serviceTime/1000 + "秒"); }else{ System.out.println(windowName + "没有取到VIP任务!"); commonService(); } } }
---------------------- android培训、java培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net/heima
相关文章推荐
- 黑马程序员------7k月薪面试题-银行业务调度系统
- 黑马程序员_7K面试题之银行业务调度系统
- <黑马程序员>破解月薪7K的面试题-银行业务调度系统
- 黑马程序员-7k面试题-银行业务调度系统
- 黑马程序员-面试题之银行业务调度系统
- 奋斗黑马程序员----7k月薪面试题之银行业务调度系统
- 黑马程序员7k面试题 银行业务调度系统
- 黑马程序员-----高薪面试题-银行业务调度系统
- 黑马程序员_7k面试题_银行业务调度系统
- 黑马程序员 面试题项目--银行业务调度系统
- 黑马程序员__7k面试题之银行业务调度系统
- 黑马程序员 Java自学总结二十二 张老师7K面试题之银行业务调度系统
- 黑马程序员——Java面试题之银行业务调度系统
- 黑马程序员----------java7K面试题之银行业务调度系统
- 黑马程序员-java面试题-银行业务调度系统
- 黑马程序员 7K面试题 银行业务调度系统
- 黑马程序员—14、JAVA&面试题系列—银行业务调度系统
- 黑马程序员 java面试题_银行业务调度系统
- 黑马程序员-----高薪面试题-银行业务调度系统
- 【黑马程序员】 学习笔记 - 直击7K面试题 - 张孝祥老师的银行业务调度管理系统