現(xiàn)在銀行遍地開(kāi)花,在城市了差不多每隔200米就可以看到一家銀行。在銀行叫號(hào)排隊(duì)也就成了很平常的事情。但是很讓人生氣的是在咱們這個(gè)世界上最大的社會(huì)主義國(guó)家里,在銀行排隊(duì)卻很不公平,咱們這些沒(méi)錢(qián)的人(在銀行里存錢(qián)不多,持普通卡)每次排隊(duì)都要等很長(zhǎng)一段時(shí)間才能辦理業(yè)務(wù),而且沒(méi)有工作人員來(lái)招呼,而那些有錢(qián)人(在銀行里存了很多錢(qián),持“金卡”)卻不用等,隨時(shí)可以辦理業(yè)務(wù),還美其名曰“金卡”特權(quán)。難道有錢(qián)就有特權(quán)嗎?氣憤中……...
還是說(shuō)這個(gè)系統(tǒng)吧:
銀行大廳里有一個(gè)叫號(hào)機(jī)(顧客客戶端),如果持普通卡點(diǎn)一下辦理業(yè)務(wù)按鈕就會(huì)打印一張小條,顯示你的號(hào)碼和排在你前面的人數(shù);如果持金卡,點(diǎn)一下辦理業(yè)務(wù)就會(huì)提示下一位要辦理的客戶就是你。
每個(gè)業(yè)務(wù)辦理窗口都有一個(gè)工作人員客戶端,點(diǎn)擊下一位就會(huì)從等待的客戶隊(duì)列中取出第一位到該窗口辦理。
客戶,也就是等待的人,要有號(hào)碼、排在前面的人數(shù)等屬性,然后實(shí)現(xiàn)這些屬性的set、get方法。
Waiter

Waiter
package queuebanknew;
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;
}
}
工作人員,也就是窗口的處理業(yè)務(wù)的人員,她們有自己的編號(hào),姓名,顧客,實(shí)現(xiàn)這些屬性的set、get方法,還加入了一段工作過(guò)程的代碼。
Counter

Counter
package queuebanknew;
public class Counter {
private int id;
private String name;
private Waiter w;
public Counter(Waiter waiter) {
this.w=waiter;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Waiter getW() {
return w;
}
public void setW(Waiter w) {
this.w = w;
}
public void handBussines(){
System.out.println("正在處理:"+this.w.getNum()+"號(hào)");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("處理完畢:"+this.getW().getNum());
}
}
測(cè)試一下:

TestBankQueue
package queuebanknew;
import java.util.Queue;
public class TestBankQueue {
/**
* @param args
*/
public static void main(String[] args) {
QueueServer qs = new QueueServer();
Queue<Waiter> waiterList = qs.init();//初始化10個(gè)等待者
Waiter waiter= null;
while(true){//模擬工作人員處理業(yè)務(wù)
waiter = waiterList.poll();
if(waiter != null){
Counter counter = new Counter(waiter);
counter.handBussines();
}else{
break;
}
}
}
}
結(jié)果:
服務(wù)器端:

QueueServer
package queuebanknew;
import java.util.LinkedList;
public class QueueServer {
LinkedList<Waiter> waiterList = new LinkedList<Waiter>();
public LinkedList<Waiter> init(){
for(int i=1;i<=10;i++){
Waiter w = new Waiter();
w.setNum(i);
w.setFrontNum(i-1);
waiterList.offer(w);
}
return waiterList;
}
}
BankWorkerUI
工作人員客戶端:

BankWorkerUI
package queuebanknew;
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 BankWorkerUI {
public static void main(String[] args) {
final Display display = Display.getDefault();
final Shell shell = new Shell();
shell.setSize(327, 253);
shell.setText("銀行排隊(duì)---工作人員客戶端");
// 新插入的界面核心代碼
QueueServer qs = new QueueServer();
final Queue<Waiter> waiterList = qs.init();
final Text txt = new Text(shell,SWT.MULTI);
txt.setBounds(65,30,180,70);
// 事件代碼里要訪問(wèn)button
final Button button = new Button(shell,SWT.Activate);
button.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
Waiter waiter = waiterList.poll();
if(waiter!=null){
txt.setText(waiter.getNum()+"號(hào)顧客到1號(hào)窗口辦理");
}else{
txt.setText("沒(méi)人辦理業(yè)務(wù)");
}
}
});
button.setBounds(90, 141, 100, 25);
button.setText("下一個(gè)");
shell.layout();
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch())
display.sleep();
}
}
}
WaiterQueueUI
客戶的客戶端:

WaiterQueueUI
package queuebanknew;
import java.util.LinkedList;
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 WaiterQueueUI {
public static void main(String[] args){
final Display display = Display.getDefault();
final Shell shell = new Shell();
shell.setBounds(100, 100, 570, 380);
// shell.setMaximized(true);
shell.setText("銀行排隊(duì)----顧客客戶端");
// 界面核心代碼
QueueServer qs = new QueueServer();
final LinkedList<Waiter> waiterList = qs.init();
final Text txt = new Text(shell,SWT.MULTI);
txt.setBounds(50,50,200,150);
// 事件代碼里要訪問(wèn)button,所以要添加final
final Button button = new Button(shell,SWT.Activate);
button.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
Waiter waiter = new Waiter();
waiter.setNum(waiterList.size()+1);
waiter.setFrontNum(waiterList.size());
waiterList.offer(waiter);
if(waiterList.size()<=20){
txt.setText("您現(xiàn)在排在"+waiter.getNum()+"位置上\n您前面有"+waiter.getFrontNum()+"個(gè)人,請(qǐng)耐心等待!!");
}else{
txt.setText("您前面已經(jīng)排20多人,請(qǐng)考慮!\n"+"您現(xiàn)在排在"+waiter.getNum()+"位置上,\n您前面有"+waiter.getFrontNum()+"個(gè)人,請(qǐng)耐心等待!!");
}
}
});
button.setBounds(75, 250, 150, 50); // 設(shè)置按鈕位置
button.setFont(new Font(display,"宋體",12,SWT.BOLD));
button.setText("個(gè)人業(yè)務(wù)");// 設(shè)置按鈕上的文字
// ------------------------------------------------------------------------
final Text goldTxt = new Text(shell,SWT.NULL);
goldTxt.setBounds(300,50,200,150);
// 事件代碼里要訪問(wèn)button,所以要添加final
final Button goldButton = new Button(shell,SWT.Activate);
goldButton.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
Waiter w = new Waiter();
w.setFlag(1);
waiterList.addFirst(w);
goldTxt.setText("金卡用戶,下一位就是您!");
}
});
goldButton.setBounds(325, 250, 150, 50); // 設(shè)置按鈕位置
goldButton.setFont(new Font(display,"宋體",12,SWT.BOLD));
goldButton.setText("金卡通道");// 設(shè)置按鈕上的文字
// ------------------END---------------------------------------------
shell.layout();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
看一下運(yùn)行結(jié)果:

posted on 2010-11-01 17:16
Mineralwasser 閱讀(681)
評(píng)論(0) 編輯 收藏