黑马程序员——银行业务调度系统

---------------------- android培训java培训、期待与您交流! 

  今天早上开始看项目的要求,然后早上的时间几乎都用来整理思路了,然后下午开始写,写的时间就一个多小时吧,比整理思路的时间还少。再一次证明了,做一个项目,全局观念很重要,不能像以前一样想到一点写一点,然后不对了再去改。但是经过今天的实践,还有没有做到位的地方,就是整理思路的时候还有点混乱,没有做到十分明确代码的构造,导致在做的过程中有点重复代码的产生。。。。下面上代码:

package com.back;

import java.util.LinkedList;
import java.util.Timer;
import java.util.TimerTask;

/*
 * 客户生成的类,按照要求产生随机数,来增加客户,并按类别把客户存在链表的集合里
 */
public class Member extends Thread {
	public static int number=1;
	private LinkedList<Integer> simpList=new LinkedList();//存放普通客户
	private LinkedList<Integer> VipList=new LinkedList();//存放Vip用户
	private LinkedList<Integer> quickList=new LinkedList();//存放快速用户
	private Member(){};
	static Member mb=new Member();
	public static Member getInstance(){
		return mb;
		
	}
	/*
	 * 按要求生成随机数来模拟用户
	 */
	public int init(){
		
		double r = Math.random();
		if(r<=0.1) return 1;//1代表Vip用户
		else if(r>0.1&&r<=0.4) return 2;//2代表快速用户
		else return 3;//3代表普通用户
	}
	public synchronized void run(){
		Timer t=new Timer();
		t.schedule(new TimerTask(){
			public void run(){
				int a=init();//读取随机生成的用户,并储存在相应的集合里
				if(a==1) VipList.add(number);
				else if(a==2) quickList.add(number);
				else simpList.add(number);
				number++;
				
			}
			
		}, 1,1000);
		
	}
	/*
	 * 集合的调用 用于在窗口中获取用户
	 */
	public LinkedList<Integer> getsimpList(){
		return this.simpList;
	}
	public LinkedList<Integer> getVipList(){
		return this.VipList;
	}
	public LinkedList<Integer> getquickList(){
		return this.quickList;
	}
	public void changeList(LinkedList ls){
		ls.remove(0);
	}
	
	

}

package com.back;

import java.util.LinkedList;
import java.util.Timer;
import java.util.TimerTask;

public class SimpWindow extends Thread {
	private int number;//窗口号
	public SimpWindow(){};
	public SimpWindow(int number){
		this.number=number;
	}
	
	
	
	
	public   void run(){
		/*
		 * 通过定时器来实现窗口持续工作
		 */
		Timer t=new Timer();
		t.schedule(new TimerTask(){
			public  void run(){
				double r = Math.random();//随机生成处理时间
				int a=(int) (r*10);
				if(a==0) a+=1;
				
				Member mb=Member.getInstance();
				synchronized(mb.getsimpList().getFirst()){
				LinkedList ls=mb.getsimpList();
				int len=ls.size();
				if(len>1){
					int m=mb.getsimpList().getFirst();
					mb.getsimpList().removeFirst();
					System.out.println("请"+m+"号用户到"+number+"号窗口"+",预计耗时"+a+"秒");
					
					try {
						Thread.sleep(a*1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.out.println(number+"号窗口办理结束");
					
					}
				else System.out.println("暂时没有普通用户排队");
			}
				
			}
		}, 5000,6000);
		
		
		
	}
		

}

package com.back;

import java.util.LinkedList;
import java.util.Timer;
import java.util.TimerTask;

public class QuickWindow extends Thread {
	private int number;
	public QuickWindow(int num){
		this.number=num;
	}
	public void setNumber(int number) {
		this.number = number;
	}
	
public   void run(){
		
		Timer t=new Timer();
		t.schedule(new TimerTask(){
			public  void run(){
				double r = Math.random();
				int a=(int) (r*10);	
				if(a==0) a+=1;
				a%=5;
				
				Member mb=Member.getInstance();
				
				LinkedList lst=mb.getquickList();
				int lenth=lst.size();
				if(lenth!=0){
					synchronized(mb.getquickList().getFirst()){
					int m=mb.getquickList().getFirst();
					mb.getquickList().removeFirst();
					System.out.println("请"+m+"号Quick用户到"+number+"号窗口"+",预计耗时"+a+"秒!!!!!!!");
					
					try {
						Thread.sleep(a*1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.out.println(number+"号窗口办理结束");
					}
					}
				else {
					synchronized(mb.getsimpList().getFirst()){
						LinkedList ls=mb.getsimpList();
						int len=ls.size();
						if(len>1){
							int m=mb.getsimpList().getFirst();
							mb.getsimpList().removeFirst();
							System.out.println("请"+m+"号用户到"+number+"号窗口"+",预计耗时"+a+"秒!!!!!!");
							
							try {
								Thread.sleep(a*1000);
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
							System.out.println(number+"号窗口办理结束!!!!!!");
							
							}
						else System.out.println("暂时没有普通用户排队");
					}
				}
			}
					
				
				
		}, 5000,2000);
		
		
		
	}
	

}

package com.back;

import java.util.LinkedList;
import java.util.Timer;
import java.util.TimerTask;

public class VipWindow extends Thread {
	private int number;
	public VipWindow(int num){
		this.number=num;
	}
	public void setNumber(int number) {
		this.number = number;
	}
	
public   void run(){
		
		Timer t=new Timer();
		t.schedule(new TimerTask(){
			public  void run(){
				double r = Math.random();
				int a=(int) (r*10);	
				if(a==0) a+=1;
				
				Member mb=Member.getInstance();
				
				LinkedList lst=mb.getVipList();
				int lenth=lst.size();
				if(lenth!=0){
					synchronized(mb.getVipList().getFirst()){
					int m=mb.getVipList().getFirst();
					mb.getVipList().removeFirst();
					System.out.println("请"+m+"号Vip用户到"+number+"号窗口"+",预计耗时"+a+"秒");
					
					try {
						Thread.sleep(a*1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.out.println(number+"号窗口办理结束");
					}
					}
				else {
					synchronized(mb.getsimpList().getFirst()){
						LinkedList ls=mb.getsimpList();
						int len=ls.size();
						if(len>1){
							int m=mb.getsimpList().getFirst();
							mb.getsimpList().removeFirst();
							System.out.println("请"+m+"号用户到"+number+"号窗口"+",预计耗时"+a+"秒.....");
							
							try {
								Thread.sleep(a*1000);
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
							System.out.println(number+"号窗口办理结束......");
							
							}
						else System.out.println("暂时没有普通用户排队");
					}
				}
			}
					
				
				
		}, 5000,3000);
		
		
		
	}
	

}

package com.back;

/*
 * 测试类,通过多线程,分别调用各窗口的类来实现多个窗口同时工作
 */
public class BankMain {
	public static void main(String[] args){
		Member mb=Member.getInstance();
		mb.start();
		SimpWindow sw1=new SimpWindow(1);
		sw1.start();
		
		SimpWindow sw2=new SimpWindow(2);
		sw2.start();
		
		SimpWindow sw3=new SimpWindow(3);
		sw3.start();
	
		SimpWindow sw4=new SimpWindow(4);
		sw4.start();
		VipWindow vw=new VipWindow(5);
		vw.start();
		QuickWindow qw=new QuickWindow(6);
		qw.start();
		
	}

}




写完以后才发现,三个窗口实现的功能都差不多,貌似可以提取出来,这样貌似可以节省代码

但仔细一想,好像那么做的话会让代码更混乱,所以还是保留原样吧






-------------------------------------------- android培训java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值