java 实现的 银行取号 队列

来源:互联网 发布:ml域名注册教程 编辑:程序博客网 时间:2024/05/29 12:20

package com.union.so.dto;

class Queue extends java.util.Vector {
    public Queue() {
        super();
    }

    public synchronized void enq(Object x) {
        super.addElement(x);
    }

    public synchronized Object deq() {
        /* 队列若为空,引发EmptyQueueException异常 */
        if (this.empty()){
           System.out.println("当前队列为空!");   
           return null;
        }  
        //throw new EmptyQueueException();
        Object x = super.elementAt(0);
        super.removeElementAt(0);
        return x;
    }

    public synchronized Object front() {
        if (this.empty())
            throw new EmptyQueueException();
        return super.elementAt(0);
    }

    public boolean empty() {
        return super.isEmpty();
    }

    public synchronized void clear() {
        super.removeAllElements();
    }

    public int search(Object x) {
        return super.indexOf(x);
    }
}

class EmptyQueueException extends java.lang.RuntimeException {
    public EmptyQueueException() {
        super("为空");
    }
}
    class QueueMess {
        Queue VipQueue;// vip
        Queue CommonQueue;// 普通
        int vipCnt;// vip客户客户数目
        int commonCnt;// 普通客户数目

        public QueueMess() {
            VipQueue = new Queue();
            CommonQueue = new Queue();
            vipCnt = 0;
            commonCnt = 0;
        }

        /**
         * 取号
         */
        public void fetchCode(int ltype) {
            switch (ltype) { // 客户类型
            case 1: {
                vipCnt++;
                System.out.println("您好,vip客户,编号:VIP" + vipCnt + "前面等候人数:"
                        + VipQueue.size());
                VipQueue.addElement(vipCnt);
                break;
            }
            case 2: {
                commonCnt++;
                System.out.println("您好,普通客户,编号:common" + commonCnt
                        + "前面等候人数:" + CommonQueue.size());
                CommonQueue.addElement(commonCnt);
                break;
            }
            }
        }

        /**
         * 处理号
         */
        public void dealingCode(int ltype) {
            switch (ltype) { // 客户类型
            case 1: {
                System.out.println("您好,vip客户,编号:VIP" + VipQueue.deq()
                        + "请到vip窗口办理业务");
                break;
            }
            case 2: {
                System.out.println("您好,普通客户,编号:Common" + CommonQueue.deq()
                        + "请到普通窗口办理业务");
                break;
            }
            }
        }
    }

public class TestQuero {
    public  static void main(String[] args){
        QueueMess queueMess = new QueueMess();
        queueMess.fetchCode(1);
        queueMess.fetchCode(1);
        queueMess.dealingCode(1);
        queueMess.dealingCode(1);
        queueMess.fetchCode(1);
        queueMess.fetchCode(2);
        queueMess.fetchCode(2);
        queueMess.fetchCode(2);
        queueMess.dealingCode(1);
        queueMess.dealingCode(2);
        queueMess.dealingCode(2);
        queueMess.fetchCode(1);
        queueMess.fetchCode(1);
        queueMess.dealingCode(2);
        queueMess.dealingCode(1);
        queueMess.dealingCode(1);
    }
}

 

 

-----------------运行结果---------

您好,vip客户,编号:VIP1前面等候人数:0
您好,vip客户,编号:VIP2前面等候人数:1
您好,vip客户,编号:VIP1请到vip窗口办理业务
您好,vip客户,编号:VIP2请到vip窗口办理业务
您好,vip客户,编号:VIP3前面等候人数:0
您好,普通客户,编号:common1前面等候人数:0
您好,普通客户,编号:common2前面等候人数:1
您好,普通客户,编号:common3前面等候人数:2
您好,vip客户,编号:VIP3请到vip窗口办理业务
您好,普通客户,编号:Common1请到普通窗口办理业务
您好,普通客户,编号:Common2请到普通窗口办理业务
您好,vip客户,编号:VIP4前面等候人数:0
您好,vip客户,编号:VIP5前面等候人数:1
您好,普通客户,编号:Common3请到普通窗口办理业务
您好,vip客户,编号:VIP4请到vip窗口办理业务
您好,vip客户,编号:VIP5请到vip窗口办理业务
当前队列为空!
您好,vip客户,编号:VIPnull请到vip窗口办理业务

原创粉丝点击