java银行排队系统_用GUI模拟银行排队系统
要求:
和实际情况相似,您到银行办理业务,到了银行大厅首先是在电脑上刷卡(有的可能不用刷卡)取出一个纸条,上面有你的位置号还有你前面有多少人,在工作人员那里会有一个按钮,点击一下就会叫一个人到他那里办理业务。这种情况是对于普通用户来说的,有的银行还有金卡用户(就是人家存的钱多nb),他们很是霸道,无论前面排队有多少人,他都会排到第一位。
分析:1.排队肯定是先进先出(First in First out),所以我们要想到用和Queue接口有关的类。
2.金卡用户霸道,要想到用LinkedList来实例化Queue,因为LinkedList有addFirst方法。
3.在这里无法实现读取用户的信息,为了区分金卡用户和普通用户在电脑上设置两个按钮,一个相当于普通用户刷看用的,一个相当于金卡用户刷卡用的。
程序代码如下:
//封装等候者类
package com.dr.bankQueueSystem;
public class Waiter {
private int num;
private int frontnum;
private int flag;
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getFrontnum() {
return frontnum;
}
public void setFrontnum(int frontnum) {
this.frontnum = frontnum;
}
}
//封装工作人员类
package com.dr.bankQueueSystem;
public class Counter {
private int num;
private String counterName;
private Waiter w;
public Counter(Waiter w)
{
this.w=w;
}
public String getCounterName() {
return counterName;
}
public void setCounterName(String counterName) {
this.counterName = counterName;
}
public Waiter getW() {
return w;
}
public void setW(Waiter w) {
this.w = w;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public Counter(int num)
{
this.num=num;
}
public void handleBusiness()
{
System.out.println("I am handling the"+this.w.getNum()+"waiter!");
try{
Thread.sleep(100);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
System.out.println("I have handled the"+this.w.getNum()+",next waiter!");
}
}
//封装服务器类
package com.dr.bankQueueSystem;
import java.util.LinkedList;
import java.util.Queue;
public class BankServer {
private LinkedList waiterList=new LinkedList();//新建等候者队列
public LinkedList Init()//初始化20个等候者
{
for(int i=0;i<20;i++)
{
Waiter w=new Waiter();
w.setNum(i+1);
w.setFrontnum(i);
waiterList.offer(w);
}
return waiterList;
}
}
//用户使用系统客户端
package com.dr.bankQueueSystem;
import java.util.LinkedList;
import java.util.Queue;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class WaiterQueueUI {
public static void main(String args[])
{
Display display=new Display();
Shell shell=new Shell(display);
shell.setMaximized(true);
//初始化界面
shell.setText("银行排队用户使用系统");
//服务器初始化
BankServer bs=new BankServer();
final LinkedList waiterList=bs.Init();
//添加普通用户文本框控件
final Text text=new Text(shell,SWT.MULTI);
text.setBounds(40,50,400,500);
//添加普通用户按钮控件
Button button=new Button(shell,SWT.Activate);
button.setBounds(120,600,120,60);
button.setText("普通用户");
//为普通用户按钮添加事件处理
button.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e)
{
Waiter w=new Waiter();
w.setNum(waiterList.size()+1);
w.setFrontnum(waiterList.size());
waiterList.offer(w);
if(waiterList.size()<=50)
{
text.setText("您现在排在"+w.getNum()+"号位置上\n"+"您前面有"+w.getFrontnum()+"人\n"+"请耐心等待");
}
else
{
text.setText("您前面已有50人,请考虑\n您排在"+w.getNum()+"号位置上");
}
}
});
//添加金卡用户文本框控件
final Text goldText=new Text(shell,SWT.MULTI);
goldText.setBounds(700,50,400,500);
//添加金卡用户按钮控件
Button goldButton=new Button(shell,SWT.Activate);
goldButton.setBounds(800,600,120,60);
goldButton.setText("金卡用户");
//为金卡用户按钮控件添加事件处理
goldButton.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e)
{
Waiter w=new Waiter();
w.setFlag(1);
waiterList.addFirst(w);
goldText.setText("尊敬金卡用户,欢迎您的到来");
}
});
shell.layout();
shell.open();
while(!shell.isDisposed())
{
if(!display.readAndDispatch()){
display.sleep();
}
}
}
}
**********************************************************************************
用户界面如下:
//银行工作人员使用系统客户端
package com.dr.bankQueueSystem;
import java.util.LinkedList;
import java.util.Queue;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class CounterQueueUI {
public static void main(String args[])
{
Display display=new Display();
Shell shell=new Shell(display);
shell.setMaximized(true);
//初始化界面
shell.setText("银行排队工作人员使用系统");
//服务器初始化
BankServer bs=new BankServer();
final LinkedList waiterList=bs.Init();
//添加文本框控件
final Text text=new Text(shell,SWT.MULTI);
text.setBounds(400,50,400,500);
text.setFont(new Font(display,"宋体",15,SWT.BOLD));
//添加按钮控件
Button button=new Button(shell,SWT.Activate);
button.setBounds(550,600,120,60);
button.setText("下一个");
//为按钮控件添加事件处理
button.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e)
{
Waiter w=waiterList.poll();
if( w!=null)
{
text.setText(w.getNum()+"号顾客请到1号窗口办理业务!");
}
else
{
text.setText("现在没有人办理业务,你可以休息了");
}
}
});
shell.layout();
shell.open();
while(!shell.isDisposed())
{
if(!display.readAndDispatch()){
display.sleep();
}
}
}
}
*************************************************************************
程序运行结果如下
此程序没有用到多线程,无法实现客户与工作人员的连接,所以在服务器初始化时新建了20个用户。这也是此程序的缺点。
©著作权归作者所有:来自51CTO博客作者冯魁的原创作品,如需转载,请注明出处,否则将追究法律责任
冯魁
52篇文章,29W+人气,0粉丝
Ctrl+Enter 发布
发布
取消
0
分享
关注TA解锁更多精彩文章
关注
冯魁
扫一扫,领取大礼包
Copyright © 2005-2020 51CTO.COM 版权所有 京ICP证060544号
java银行排队系统_用GUI模拟银行排队系统相关推荐
- java模仿银行账务业务_Java基础案例 - 模拟银行存取款业务
博学谷--让IT教学更简单,让IT学习更有效 模拟银行存取款业务 编写一个Java应用程序,模拟网上银行登录及存取款业务.登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当 ...
- Java EE 企业网站_基于jsp的企业网站系统-JavaEE实现企业网站系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的企业网站系统, 该项目可用各类java课程设计大作业中, 企业网站系统的系统架构分为前后台两部分, 最终实现在线上 ...
- java邮件群发代码_基于jsp的邮件群发系统-JavaEE实现邮件群发系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的邮件群发系统, 该项目可用各类java课程设计大作业中, 邮件群发系统的系统架构分为前后台两部分, 最终实现在线上 ...
- 基于java的家庭理财系统_基于jsp的家庭理财系统-JavaEE实现家庭理财系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的家庭理财系统, 该项目可用各类java课程设计大作业中, 家庭理财系统的系统架构分为前后台两部分, 最终实现在线上 ...
- java车牌识别系统_基于jsp的车牌识别系统-JavaEE实现车牌识别系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的车牌识别系统, 该项目可用各类java课程设计大作业中, 车牌识别系统的系统架构分为前后台两部分, 最终实现在线上 ...
- JAVA实现查询系统_基于jsp的车辆查询系统-JavaEE实现车辆查询系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的车辆查询系统, 该项目可用各类java课程设计大作业中, 车辆查询系统的系统架构分为前后台两部分, 最终实现在线上 ...
- java采集温湿度水浸_配电室水浸及温湿度监测系统可加强环境保障
配电室水浸及温湿度监测系统有两大监测对象,一是管道.门窗等位置的漏水现象,二是室内各个位置的温度.湿度变化值,实现这两方面监测,能有效加强环境保障,降低漏水.高温.潮湿而引起的电力系统故障.设备损坏问 ...
- Java怎么保证数据一致性_连续调用多个外部系统写接口保证数据一致性的思路...
概述 某些场景下,我们将业务数据落地之前,是需要先调用外部系统的多个写接口,当这些写接口都操作成功了,我们才将业务数据落地到自己本地的数据库里面.比如说: public void updateProd ...
- c语言银行三个窗口,[离散事件模拟] 银行窗口模拟 - C语言
文章目录 这种抽象问题的思维蛮巧妙的,看完一定会有不小的收获! 编制一个程序以模拟银行窗口接待客户的排队业务活动,并计算一天中客户在银行的逗留的平均时间 每个窗口在某个时刻只能接待一个客户 窗口空闲, ...
最新文章
- mysql select语句最简_10个mysql中select语句的简单用法
- go语言笔记——是c开发的 lex yacc进行词法和语法分析,go不支持函数和运算符重载,不支持类型继承,也不支持断言,还有泛型...
- cvtColor不是cv的成员
- JWT介绍以及java-jwt的使用
- Linux查看系统的负载
- 计算机图形学开发框架,计算机图形学-基于3d图形开发技术
- spark 读取elasticsearch数据
- 玩转spring boot——结合AngularJs和JDBC
- 模式先行浅析分销系统的优势
- 史上最全mysql日期计算(月初、月末、上中下旬判断、年初、年末、季初、季末)
- AbMole推荐:人源化单抗动物实验黄金指南 (上)
- name norm is not defined
- 牛顿迭代法求方程的根
- 10个程序员必上的网站
- 淘宝聚划算怎么玩?其实也就是这些营销手段及功能
- 电子班牌解决方案-最新全套文件
- java合成聚和例子_合成聚合原则(示例代码)
- 接龙游戏 [Codevs 1051]
- mdm9x07 qmi及共享内存流程
- 女友逢车必晕,轻则身心难受,重则翻江倒海 吾看此情况甚为心疼!故找此一篇希望有帮助《防治晕车七法》
热门文章
- [Unity官方文档翻译]2D or 3D Projects Unity中2D和3D项目的区别
- Coping With Labor Scarcity in Information Technology: Strategies and Practices for Effective Recruit
- MySQL快速比较数据库表数据
- x射线和γ射线区别?α射线、β射线
- 一代经典:Xiuno(修罗程序)黯然离场......
- 电台转型与计算机相关的问题,计算机技术在电视台中的应用黄文峰
- php语言可以写游戏吗,网游用什么语言开发,网游用什么语言开发的
- Python:实现求一个数的位数之和算法(附完整源码)
- 07-项目训练_短信登陆和退出登录
- 电子商务:众多消费者的个性需求