关于队列,使用的地方非常的多。现实中有很多的例子。比如医院的挂号系统,银行里的叫号系统,食堂里的排队打饭等等。市场上又这样的排队取号的设备。他们的功能基本如下:

1、系统可联网联机统一发号;
2、系统可无线对接,也可有线连接;
3、系统支持100种业务以上;
4、系统支持多个等候区提示等候信息,各等候区语音及显示可独立;
5、个性化语音可呼叫客户所办理的业务名称(医院版可呼叫病人姓名)等信息;
6、号码可在不同服务类别的柜台窗口之间相互转移,顾客不必重复排队;
7、具备登录操作功能和退出操作功能:工作开始前,输入员工登陆号进行登录,工作结束后,退出排队系统,这对统计非常准确;
8、发号机界面的图片客户完全可以按个性化自主设计更换;
9、各项业务的按键客户完全可以按个性化自主设计更换;
10、支持通过读卡器读取客户相关信息后,自动区分VIP客户和普通客户,自动区分对公客户和对私客户,并按营业机构自定的排队规则自动编组排队;
11、号票上和发号机上的显示屏会显示每个顾客前面的等待人数;
12、各项业务队列客户完全可以自主按需任意增减;
13、各项业务的等待人数客户完全可以自主设定在界面上显示并可任意排版;
14、各项业务的工作时段及暂停时段客户完全可以自主设定;
15、操作员工的增减及登陆账号客户完全可以自主更改;
16、语音呼叫的信息客户完全可以自主按个性化更改;
17、显示屏的任何显示信息客户完全可以自主按个性化更改;
18、顾客办理各项业务的序号客户完全可以自主设置,如:贵宾业务或理财金业务可设为1-200号内、外币业务可设为201-500号内、人民币业务设501-9999号内;
19、工作员工所办理的业务队列客户完全可以自主任意设置优先级;
20、号票上的文字内容、图案、业务名称、时间格式、更改字体及大小、纸张长短等客户完全可以自主按个性化设置;
21、系统支持播放背景音乐,音乐曲目完全由客户自主选择;
22、系统支持在值班经理处增设监控软件,处理各种特殊状况;
23、系统支持高清晰度等离子显示器、大屏幕、电视墙等多种显示设备,显示丰富的排队信息;
24、系统支持连接互联网络,可实现远程监控;
25、系统设有扩展功能,当需要有关统计和管理数据时,可热键激活管理软件并打印;
26、系统可根据需要配置客户评价器及排队信息(短信)提示功能。

OK,了解了这些后,我们来实现一个简单的例子吧!先看看效果图:

废话不多说了,看代码:

CallNum.java

package com.test;import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
/*** @see 模拟银行叫号系统* @author Herman.Xiong* @date 2014年11月17日 14:48:48* @version V1.0*/
public class CallNum {public static void main(String[] args) throws InterruptedException {  //创建服务中心,如一个银行的营业厅Center center = new Center();  ExecutorService exec = Executors.newCachedThreadPool();  //模拟产生服务人员Producer producer = new Producer(center);  //模拟产生N多客户Consumer consumer = new Consumer(center);  exec.execute(producer);  //模拟10名客户for (int i = 0; i < 10; i++) {  exec.execute(consumer);  }  TimeUnit.SECONDS.sleep(10);  exec.shutdown();  //如有疑问,请加QQ群:135430763共同学习!}
}

Center.java

package com.test;import java.util.Random;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
/*** @see 服务中心* @author Herman.Xiong* @date 2014年11月17日 14:41:28* @version V1.0*/
public class Center extends Thread {  private final static int MAXCOUNT = 10;  private BlockingQueue<Waiter> waiters;  private BlockingQueue<Customer> customers;  private Random rand = new Random(47);  private final static int PRODUCERSLEEPSEED = 100;  private final static int CONSUMERSLEEPSEED = 10000;  public Center() {  //创建10名提供服务的工作人员this.waiters = new LinkedBlockingQueue<Waiter>(MAXCOUNT);  for (int i = 0; i < MAXCOUNT; i++) {  waiters.add(new Waiter());  }  //10名工作人员工作就绪,创建客户队列this.customers = new LinkedBlockingQueue<Customer>();  }  public void produce() {  try {  TimeUnit.MILLISECONDS.sleep(rand.nextInt(PRODUCERSLEEPSEED));  } catch (InterruptedException e) {  e.printStackTrace();  }  this.customers.add(new Customer());  }  public void consume() {  try {  // 服务窗口可用  Waiter waiter = this.waiters.take();  this.waiters.remove(waiter);  // 客户可用  Customer customer = this.customers.take();  this.customers.remove(customer);  // 窗口显示  System.out.println(waiter + "正在为" + customer + "服务...");  TimeUnit.MILLISECONDS.sleep(rand.nextInt(CONSUMERSLEEPSEED));  this.waiters.add(waiter);  } catch (InterruptedException e) {  System.err.println("---" + e.getMessage());  }  }
} 

Producer.java

package com.test;
/*** @see 生产者线程,模拟银行工作人员服务完成一位客户后开始准备服务下一位客户* @author Herman.Xiong* @date 2014年11月17日 14:55:43* @version V1.0*/
public class Producer implements Runnable {  private Center center;  public Producer(Center center) {  this.center = center;  }  @Override  public void run() {  while (!Thread.interrupted()) {  //产生客户center.produce();  }  }
}

Consumer.java

package com.test;
/*** @see 模拟客户完成业务需求后,服务人员空闲就绪* @author Herman.Xiong* @date 2014年11月17日 14:57:11* @version V1.0*/
public class Consumer implements Runnable {  private Center center;  public Consumer(Center center) {  this.center = center;  }  @Override  public void run() {  while (!Thread.interrupted()) {  center.consume();  }  }  }  

点击源代码下载 :http://download.csdn.net/download/xmt1139057136/8167619

叫号系统排队系统挂号系统实现相关推荐

  1. 微信小程序java python node医疗微服务系统医院预约挂号系统

    ,本系统分为用户,管理员,医生三个角色,其中用户可以注册登陆小程序,查看新闻资讯,医生列表,评价医生,医生咨询,提交预约信息,上传健康码:医生可以登陆系统,对用户信息管理,上传自己的医生信息,查看预约 ...

  2. 网上挂号预约系统 php,预约挂号系统

    预约挂号流程 基本流程:关注微信公众号→进入预约界面→选择预约医生→选择预约时间→填写相关信息→支付挂号费用→预约成功→就诊当天扫码取号→叫号就诊. 预约出的号码将占用当天的看诊号码,即如医生上午看诊 ...

  3. 【原创】基于SSM的医院预约挂号系统(医院预约挂号系统毕设源代码)

    项目类型:SSM源码 用户类型:3个角色(管理员+普通用户+医生) 主要技术:SSM+MySQL+Bootstrap 开发工具:Eclipse/Idea均可使用,有两个不同的版本 数据库:MySQL ...

  4. 医院 社区 远程会诊系统 远程预约挂号系统 双向转诊系统 欣赏可做毕业设计

    后台 录入机构

  5. springboot医院挂号系统的设计与实现毕业设计源码211633

    Springboot医院挂号系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克 ...

  6. (附源码)ssm医院挂号系统 毕业设计 250858

    医院挂号系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题. ...

  7. (附源码)springboot+mysql+ssm医院挂号系统的设计与实现 毕业设计211633

    Springboot医院挂号系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克 ...

  8. ssm医院挂号系统的设计与实现 毕业设计-附源码211633

    Springboot医院挂号系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克 ...

  9. 万能的微信小程序个人主页:商城系统个人主页、外卖系统个人主页、购票系统个人主页等等【全部源代码分享+页面效果展示+直接复制粘贴编译即可】

    前言 以下给出来四个常见的小程序个人主页,分别是商城系统个人主页,外卖系统个人主页,挂号系统个人主页,电影购票系统个人主页.包括完整的页面布局代码,完整的样式代码.使用的时候,只需要将页面代码和样式代 ...

最新文章

  1. ie与firefox 关于js 的差别(转载)
  2. Linux系统编程——线程私有数据
  3. COJ 1008 WZJ的数据结构(八) 树上操作
  4. 如何在UIAlertView中显示进度条
  5. SVM 透彻理解与分析
  6. Struts2的Stack Context和ValueStack
  7. 【BZOJ1500】[NOI2005]维修数列 Splay
  8. 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一1.2 选购镜头时应注意的事项...
  9. cookie 和session 的区别
  10. wav文件头损坏_Dex文件结构学习
  11. Trend Micro Password Manager 多个高危漏洞
  12. 马云创造的就业机会多还是毁掉的就业机会多?
  13. soar ddl审核规范_SQL Server审核功能– DDL事件审核示例
  14. Simulink中Simscape—Fluids模块(原Simhydraulics)学习记录
  15. mybatis 中的![CDATA[ ]]
  16. 【优化算法】差分蜂群优化算法(DEABC)【含Matlab源码 1423期】
  17. 用动画做出一个正方体并且3d旋转,详解
  18. iOS App跟小程序之间跳转
  19. SCOI2016酱油记
  20. css怎样清除外边距,CSS 外边距

热门文章

  1. 华为值多少钱?市值会不会超过BAT?
  2. 洁净工程施工建设洁净室工程
  3. 远程桌面连接 出现身份验证错误 CredSSP 解决办法
  4. 名帖65 欧阳询 楷书《虞恭公碑》
  5. 故障排查:ArcGIS Data Store升级失败(Attempt to configure data store failed)
  6. 如何设计报表?手把手教你3步轻松制作报表
  7. 视频太大,教你如何压缩多段视频,瞬间多出好多内存
  8. Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
  9. 飞行堡垒7(FX505GT),触摸板一直显示已禁用无法正常使用
  10. Electron跨平台开发框架介绍