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

 

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

一、面向对象的分析与设计

1.有三种对应类型的客户:VIP客户,普通客户,快速客户 ,异步随机生成各种类型的客户,各类型客户在其对应窗口按顺序依次办理业务 。

1)每一个客户其实就是由银行的一个取号机器产生号码的方式来表示的,要有一个号码管理器对象,让这个对象不断地产生号码,就等于随机生成了客户。

2)由于有三类客户,每类客户的号码编排都是完全独立的,所以,我想到本系统一共要产生三个号码管理器对象,各自管理一类用户的排队号码。这三个号码管理器对象统一由一个号码机器进行管理,这个号码机器在整个系统中始终只能有一个,所以,它要被设计成单例。

2.各类型客户在其对应窗口按顺序依次办理业务 ,准确地说,应该是窗口依次叫号。

1)各个窗口怎么知道该叫哪一个号了呢?它一定是问的相应的号码管理器,即服务窗口每次找号码管理器获取当前要被服务的号码。

二、程序实现

1.NumberManager号码管理类

public class NumberManager {

    private List<Integer> numbers=new ArrayList<Integer>();

    private int number=1;

    //生成号码,synchronized多线程安全访问,同步

    public synchronized Integer generateNewNumber() {

        numbers.add(number);

        return number++;

    }

    //依次取走号码

    public synchronized Integer fetchNumber() {

        if(numbers.size()>0)

            return numbers.remove(0);

        return null;

    }

}

2.NumberMachine号码类型机类

public class NumberMachine {

    private NumberManager commonMachine=new NumberManager();

    private NumberManager expressMachine=new NumberManager();

    private NumberManager vipMachine=new NumberManager();

   

   

    public NumberManager getCommonMachine() {

        return commonMachine;

    }

    public NumberManager getExpressMachine() {

        return expressMachine;

    }

    public NumberManager getVipMachine() {

        return vipMachine;

    }

//单例

    private static NumberMachine numberMachine=new NumberMachine();

    private NumberMachine() {}

    public static NumberMachine getInstance()

    {

        return numberMachine;

    }

}

3.Constants常量类

public interface Constants {

    int MAX_WAIT_TIME=10;//最大等待时间

    int MIN_WAIT_TIME=1;//最小等待时间

    int COMMON_CUSTOMER_INTERVAL_TIME=1;//普通用户回调时间

}

4.CustomerType用户类型

public enum CustomerType {

    COMMON,EXPRESS,VIP;

    public String toString() {

        switch (this) {

        case COMMON:

            return "普通";

        case EXPRESS:

            return "快速";

        case VIP:

            return name();

        }

        return null;

    }

}

5.ServiceWindow窗口类

public class ServiceWindow {

    private int windowId;

    private CustomerType windowType;

    public void setWindowId(int windowId) {

        this.windowId = windowId;

    }

    public void setWindowType(CustomerType windowType) {

        this.windowType = windowType;

    }

    //各类型窗口开始服务

    public void start()

    {

        Executors.newSingleThreadExecutor().execute(new Runnable() {

            @Override

            public void run() {

                switch(windowType)

                {

                case COMMON:

                    while(true)

                        commonService();

                case EXPRESS:

                    while(true)

                        expressService();

                case VIP:

                    while(true)

                        vipService();

                }

            }

        });

    }

    public void commonService() {

        Integer num=NumberMachine.getInstance().getCommonMachine().fetchNumber();

        System.out.println(windowId+"号"+windowType+"窗口等待服务-----");

        if(null!=num)

        {

            System.out.println(windowId+"号"+windowType+"窗口正在为"+num+"号普通客户服务");

            int ranNum=new Random().nextInt(Constants.MAX_WAIT_TIME)+Constants.MIN_WAIT_TIME;

            try {

                Thread.sleep(ranNum*1000);

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

            System.out.println(windowId+"号"+windowType+"窗口为"+num+"号普通客户服务完成,耗"+ranNum+"秒");

        }

        else

        {

            System.out.println(windowId+"号"+windowType+"窗口没有要服务的客户,休闲一秒");

            try {

                Thread.sleep(1000);

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

        }

    }

    public void expressService() {

        Integer num=NumberMachine.getInstance().getExpressMachine().fetchNumber();

        System.out.println(windowId+"号"+windowType+"窗口等待服务-----");

        if(null!=num)

        {

            System.out.println(windowId+"号"+windowType+"窗口正在为"+num+"号"+windowType+"客户服务");

            try {

                Thread.sleep(1000);

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

            System.out.println(windowId+"号"+windowType+"窗口为"+num+"号"+windowType+"客户服务完成,耗1秒");

        }

        else

        {

            System.out.println(windowId+"号"+windowType+"窗口没有要服务的客户,转向为普通客户服务<--");

            commonService();

        }

    }

    public void vipService() {

        Integer num=NumberMachine.getInstance().getVipMachine().fetchNumber();

        System.out.println(windowId+"号"+windowType+"窗口等待服务-----");

        if(null!=num)

        {

            System.out.println(windowId+"号"+windowType+"窗口正在为"+num+"号"+windowType+"客户服务");

            int ranNum=new Random().nextInt(Constants.MAX_WAIT_TIME)+Constants.MIN_WAIT_TIME;

            try {

                Thread.sleep(ranNum*1000);

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

            System.out.println(windowId+"号"+windowType+"窗口为"+num+"号普通客户服务完成,耗"+ranNum+"秒");

        }

        else

        {

            System.out.println(windowId+"号"+windowType+"窗口没有要服务的客户,转向为普通客户服务<--");

            commonService();

        }

    }

}

6.Test 测试类

public class Test {

    public static void main(String[] args) {

        ServiceWindow commonWindow=null;

        //四个普通窗口

        for(int i=1;i<5;i++)

        {

            commonWindow=new ServiceWindow();

            commonWindow.setWindowId(i);

            commonWindow.setWindowType(CustomerType.COMMON);

            commonWindow.start();

        }

        //一个快速窗口

        ServiceWindow expressWindow=new ServiceWindow();

        expressWindow.setWindowId(6);

        expressWindow.setWindowType(CustomerType.EXPRESS);

        expressWindow.start();

        //一个vip窗口

        ServiceWindow vipWindow=new ServiceWindow();

        vipWindow.setWindowId(7);

        vipWindow.setWindowType(CustomerType.VIP);

        vipWindow.start();

        //加入普通客户

        Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {

            @Override

            public void run() {

                Integer commonId=NumberMachine.getInstance().getCommonMachine().generateNewNumber();

                System.out.println(commonId+"号普通客户等待服务******");

            }

        }, 0, Constants.COMMON_CUSTOMER_INTERVAL_TIME, TimeUnit.SECONDS);

        //加入快速客户

        Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {

            @Override

            public void run() {

                Integer expressId=NumberMachine.getInstance().getExpressMachine().generateNewNumber();

                System.out.println(expressId+"号快速客户等待服务******");

            }

        }, 0, Constants.COMMON_CUSTOMER_INTERVAL_TIME*2, TimeUnit.SECONDS);

        //加入vip客户

        Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {

            @Override

            public void run() {

                Integer vipId=NumberMachine.getInstance().getVipMachine().generateNewNumber();

                System.out.println(vipId+"号vip客户等待服务******");

            }

        }, 0, Constants.COMMON_CUSTOMER_INTERVAL_TIME*6, TimeUnit.SECONDS);

    }

}

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值