實(shí)現(xiàn)的功能:
1.銀行工作人員使用的客戶(hù)端實(shí)現(xiàn)功能:每次單擊Button“下一個(gè)”,窗口上會(huì)顯示提示X號(hào)顧客去y號(hào)窗口辦理業(yè)務(wù);當(dāng)顧客隊(duì)列里沒(méi)有顧客時(shí)對(duì)工作人員作出提示。
2.顧客使用的客戶(hù)端實(shí)現(xiàn)功能:每當(dāng)有顧客單擊Button“個(gè)人業(yè)務(wù)”,窗口上會(huì)顯示當(dāng)前顧客在隊(duì)伍中的位置以及他的前面還有多少位顧客,當(dāng)排在當(dāng)前顧客前面的顧客人數(shù)超過(guò)50人時(shí)提示前面已經(jīng)有50個(gè)人,是否繼續(xù)等候。關(guān)于這個(gè)金卡通道嘛,現(xiàn)在流行各種會(huì)員啊VIP啦等等,這個(gè)金卡通道當(dāng)然就是為銀行的VIP準(zhǔn)備的。當(dāng)單擊Button“金卡通道”時(shí),將當(dāng)前Waiter添加到顧客隊(duì)列的首位并在窗口上顯示無(wú)需等待~~。
代碼如下:
封裝顧客類(lèi)。
public class Waiter {
private int num; //顧客號(hào)
private int frontNum; //排在前面的人數(shù)
private int flag; //卡類(lèi)型
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;
}
}
初始化顧客隊(duì)列(30個(gè)人)。
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;
}
}
顧客使用的客戶(hù)端:
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 Swtgoldcard {
public static void main(String[] args) {
final Display display = Display.getDefault();
final Shell shell = new Shell();
shell.setMaximized(true);
shell.setText("銀行排隊(duì)系統(tǒng)之金卡插隊(duì)");
// ------------------新插入的界面核心代碼------------------------
QueueServer qs = new QueueServer();//實(shí)例化顧客隊(duì)列類(lèi)
final LinkedList<Waiter> waiterList = qs.init();//初始化隊(duì)列服務(wù)器
final Text txt = new Text(shell,SWT.MULTI);
txt.setBounds(40, 50, 500, 450);
final Button button = new Button(shell, SWT.Activate);
button.addSelectionListener(new SelectionAdapter() { // 加一個(gè)選擇監(jiān)聽(tīng)器
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請(qǐng)您耐心等候!");
}else{
txt.setText("您前面已經(jīng)排50個(gè)人\n請(qǐng)考慮是否繼續(xù)等待!\n"+"您現(xiàn)在排在"+waiter.getNum()+"位置上\n您前面有"+waiter.getFrontNum()+"個(gè)人\n請(qǐng)您耐心等候!");
}
}
});
button.setBounds(180, 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(900, 50, 500, 450);
final Button goldButton = new Button(shell, SWT.Activate);
goldButton.addSelectionListener(new SelectionAdapter() { // 加一個(gè)選擇監(jiān)聽(tīng)器
public void widgetSelected(SelectionEvent e) {
Waiter goldWaiter = new Waiter();
goldWaiter.setFlag(1);
waiterList.addFirst(goldWaiter);
goldTxt.setText("您是金卡用戶(hù)\n可以?xún)?yōu)先接受服務(wù)\n無(wú)需等待!\n"+"您現(xiàn)在排在"+goldWaiter.getNum()+"位置上,\n您前面有"+goldWaiter.getFrontNum()+"個(gè)人");
}
});
goldButton.setBounds(1060, 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)行結(jié)果:
當(dāng)?shù)却?duì)列中人數(shù)超過(guò)50人時(shí)顯示結(jié)果:
銀行工作人員使用的客戶(hù)端:
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;
public class BankWorkerUI {
public static void main(String[] args) {
final Display display = Display.getDefault();
final Shell shell = new Shell();
shell.setSize(352, 253);
shell.setText("銀行排隊(duì)系統(tǒng)之工作人員客戶(hù)端");
// ------------------新插入的界面核心代碼------------------------
QueueServer qs = new QueueServer();//實(shí)例化類(lèi)
final Queue<Waiter> waiterList = qs.init();//初始化隊(duì)列服務(wù)器
final Text txt = new Text(shell,SWT.MULTI);
txt.setBounds(65, 30, 220, 70);
final Button button = new Button(shell, SWT.Activate);
button.addSelectionListener(new SelectionAdapter() { // 加一個(gè)選擇監(jiān)聽(tīng)器
public void widgetSelected(SelectionEvent e) {
//System.out.println("############### " + waiterList.size());
Waiter waiter= waiterList.poll();
if(waiter!= null){
txt.setText(waiter.getNum()+"號(hào)顧客請(qǐng)到1號(hào)窗口辦理業(yè)務(wù)");
}else{
txt.setText("暫時(shí)沒(méi)有顧客要辦理業(yè)務(wù),您可以休息一下!\n ");
}
}
});
button.setBounds(120, 141, 100, 25); // 設(shè)置按鈕位置
button.setText("下一個(gè)");// 設(shè)置按鈕上的文字
// ------------------END---------------------------------------------
shell.layout();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
運(yùn)行結(jié)果:
這個(gè)程序還有缺陷,沒(méi)有用到數(shù)據(jù)庫(kù),無(wú)法實(shí)現(xiàn)工作人員所用的客戶(hù)端與顧客所用的客戶(hù)端同步更新,請(qǐng)高手指點(diǎn)完善。