1.當(dāng)我們?nèi)ャy行辦理什么業(yè)務(wù)的時(shí)候總會(huì)先在一個(gè)類似電腦的小系統(tǒng)上去一個(gè)號,然后等著,當(dāng)被叫到時(shí)就去相應(yīng)的窗口辦理業(yè)務(wù),這種排隊(duì)的小系統(tǒng)主要用到了接口Queue,因?yàn)樗详?duì)列的要求先進(jìn)先出。
2.還有就是有種特殊情況就是,銀行的金卡用戶,他們的權(quán)限較高,總可以在普通用戶的前面辦理業(yè)務(wù)
相應(yīng)代碼如下:
package com.dr.queue;


public class Counter
{

private int counterId; //???й???????
private String counterName; //???й????????????
private Waiter w;

public Counter(Waiter w)
{
this.w = w;
}

public Waiter getW()
{
return w;
}


public void setW(Waiter w)
{
this.w = w;
}

public int getCounterId()
{
return counterId;
}

public void setCounterId(int counterId)
{
this.counterId = counterId;
}

public String getCounterName()
{
return counterName;
}

public void setCounterName(String counterName)
{
this.counterName = counterName;
}

public void handleBusiness()
{
System.out.println("I handling the " + this.w.getNum() +" waiter");

try
{
Thread.sleep(100);

} catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("I have handled the waiter,next ,next ,next");
}

}

package com.dr.queue;



public class Waiter
{

private int num;
private int frontNum;
private int flag;//0=普通 1= 金卡


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.queue;

import java.util.LinkedList;
import java.util.List;
import java.util.Queue;


public class QueueServer
{

LinkedList<Waiter> waiterList = new LinkedList<Waiter>();


public LinkedList<Waiter> init()
{

for(int i=1;i<=30;i++)
{
Waiter w = new Waiter();
w.setNum(i);
w.setFrontNum(i-1);
waiterList.offer(w);
}
return waiterList;
}
}
package ui;

import java.util.Queue;

import org.eclipse.jface.dialogs.MessageDialog;
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;

import com.dr.queue.QueueServer;
import com.dr.queue.Waiter;


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();//實(shí)例化類
final Queue<Waiter> waiterList = qs.init();//初始化隊(duì)列服務(wù)器
final Text txt = new Text(shell,SWT.MULTI);
txt.setBounds(65, 30, 180, 70);
// 事件代碼里要訪問button
final Button button = new Button(shell, SWT.Activate);

button.addSelectionListener(new SelectionAdapter()
{ // 加一個(gè)??擇監(jiān)聽器

public void widgetSelected(SelectionEvent e)
{
//System.out.println("############### " + waiterList.size());
Waiter waiter= waiterList.poll();

if(waiter!= null)
{
txt.setText(waiter.getNum()+"號顧客請到1號窗口辦理業(yè)務(wù)");

}else
{
txt.setText("現(xiàn)在沒有人辦理業(yè)務(wù)了,您可以休息會(huì)了\n 喝杯咖啡吧,哈哈!");
}
}
});
button.setBounds(90, 141, 100, 25); // 設(shè)置按鈕位置
button.setText("下一個(gè)");// 設(shè)置按鈕上的文字

// ------------------END---------------------------------------------
shell.layout();
shell.open();

while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
}
}

package ui;

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;

import com.dr.queue.QueueServer;
import com.dr.queue.Waiter;


public class WaiterQueueUI
{

public static void main(String[] args)
{
final Display display = Display.getDefault();
final Shell shell = new Shell();
shell.setBounds(0,0, 1000, 800);
shell.setText("銀行排隊(duì)之顧客使用的客戶端");
// ------------------新插入的界面核心代碼------------------------
QueueServer qs = new QueueServer();//實(shí)例化類
final LinkedList<Waiter> waiterList = qs.init();//初始化隊(duì)列服務(wù)器
final Text txt = new Text(shell,SWT.MULTI);
txt.setBounds(260, 50, 500, 450);
// 事件代碼里要訪問button,所以加????final
final Button button = new Button(shell, SWT.Activate);

button.addSelectionListener(new SelectionAdapter()
{ // 加一個(gè)??擇監(jiān)聽器

public void widgetSelected(SelectionEvent e)
{
//System.out.println("############### " + waiterList.size());
Waiter waiter = new Waiter();
waiter.setNum(waiterList.size()+1);
waiter.setFrontNum(waiterList.size());
waiterList.offer(waiter);

if(waiterList.size() <= 50)
{
txt.setText( "您現(xiàn)在排在"+waiter.getNum()+"位置上,\n您前面有"+waiter.getFrontNum()+"個(gè)人\n請您耐心等候吧!哈哈");

}else
{
txt.setText("您前面已經(jīng)排50個(gè)人,請考慮!\n"+"您現(xiàn)在排在"+waiter.getNum()+"位置上,\n您前面有"+waiter.getFrontNum()+"個(gè)人\n請您耐心等候吧!哈哈");
}
}
});
button.setBounds(100, 530, 200, 75); // 設(shè)置按鈕位置
button.setFont(new Font(display,"宋體",12,SWT.BOLD));
button.setText("個(gè)人業(yè)務(wù)");// 設(shè)置按鈕上的文字
//final Text goldTxt = new Text(shell,SWT.MULTI);
// goldTxt.setBounds(600, 50, 500, 450);
// 事件代碼里要訪問button,所以加????final
final Button goldButton = new Button(shell, SWT.Activate);

goldButton.addSelectionListener(new SelectionAdapter()
{ // 加一個(gè)??擇監(jiān)聽器

public void widgetSelected(SelectionEvent e)
{
//System.out.println("############### " + waiterList.size());
Waiter w = new Waiter();
w.setFlag(1);
waiterList.addFirst(w);
txt.setText("尊敬的金卡用戶,您現(xiàn)在可以到我行的任意窗口隨時(shí)辦理業(yè)務(wù)");
}
});
goldButton.setBounds(700, 530, 200, 75); // 設(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)行界面為:
posted on 2010-11-01 13:22
迷人笑笑 閱讀(3776)
評論(0) 編輯 收藏