<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    把困難踩在腳下

    迎難而上

     

    用GUI模擬銀行排隊系統(tǒng)

    要求:

    和實際情況相似,您到銀行辦理業(yè)務,到了銀行大廳首先是在電腦上刷卡(有的可能不用刷卡)取出一個紙條,上面有你的位置號還有你前面有多少人,在工作人員那里會有一個按鈕,點擊一下就會叫一個人到他那里辦理業(yè)務。這種情況是對于普通用戶來說的,有的銀行還有金卡用戶(就是人家存的錢多nb),他們很是霸道,無論前面排隊有多少人,他都會排到第一位。

    分析:1.排隊肯定是先進先出(First in First out),所以我們要想到用和Queue接口有關(guān)的類。

    2.金卡用戶霸道,要想到用LinkedList來實例化Queue,因為LinkedList有addFirst方法。

    3.在這里無法實現(xiàn)讀取用戶的信息,為了區(qū)分金卡用戶和普通用戶在電腦上設置兩個按鈕,一個相當于普通用戶刷看用的,一個相當于金卡用戶刷卡用的。

    程序代碼如下:

    //封裝等候者類

    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<Waiter> waiterList=new LinkedList<Waiter>();//新建等候者隊列
        public LinkedList<Waiter> 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;
        }

    }

    //用戶使用系統(tǒng)客戶端

    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("銀行排隊用戶使用系統(tǒng)");
            //服務器初始化
            BankServer bs=new BankServer();
            final LinkedList<Waiter> 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("您現(xiàn)在排在"+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();
                }
            }
        }

    }

    **********************************************************************************

    用戶界面如下:

    未命名

    //銀行工作人員使用系統(tǒng)客戶端

    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("銀行排隊工作人員使用系統(tǒng)");
            //服務器初始化
            BankServer bs=new BankServer();
            final LinkedList<Waiter> 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號窗口辦理業(yè)務!");
                    }
                    else
                    {
                        text.setText("現(xiàn)在沒有人辦理業(yè)務,你可以休息了");
                    }
                }
            });
            shell.layout();
            shell.open();
            while(!shell.isDisposed())
            {
                if(!display.readAndDispatch()){
                    display.sleep();
                }
            }
        }

    }

    *************************************************************************

    程序運行結(jié)果如下

    未命名

    此程序沒有用到多線程,無法實現(xiàn)客戶與工作人員的連接,所以在服務器初始化時新建了20個用戶。這也是此程序的缺點。

    posted on 2010-10-31 18:10 馮魁 閱讀(438) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     

    導航

    統(tǒng)計

    公告

    快樂每一天!

    Everything is an object!

    常用鏈接

    留言簿(2)

    隨筆檔案

    學習網(wǎng)站

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品无码免费视频二三区| 一级做受视频免费是看美女| 最近2019中文字幕免费看最新| 国产精品亚洲不卡一区二区三区| 亚洲人成电影网站| 日日AV拍夜夜添久久免费| 狠狠躁狠狠爱免费视频无码| 亚洲无成人网77777| 青青青国产免费一夜七次郎| h片在线观看免费| 亚洲另类自拍丝袜第1页| 亚洲人成网站观看在线播放| 亚洲综合免费视频| 国产精品美女久久久免费 | 亚洲色偷偷综合亚洲AV伊人蜜桃 | 亚洲国产精品热久久| 麻豆国产VA免费精品高清在线| 亚洲人成人网毛片在线播放| 亚洲精品欧洲精品| 国产做床爱无遮挡免费视频| 久久精品无码专区免费青青| 青青草国产免费国产是公开| 亚洲国产成人91精品| 亚洲午夜久久久久妓女影院| 日本特黄特黄刺激大片免费| 91青青青国产在观免费影视| 国产精品无码免费专区午夜| 亚洲色大18成人网站WWW在线播放| 大香人蕉免费视频75| 99热这里只有精品免费播放| 人体大胆做受免费视频| 亚洲日韩精品无码专区 | 亚洲免费闲人蜜桃| 亚洲乱码无码永久不卡在线| 又色又污又黄无遮挡的免费视| 羞羞网站在线免费观看| 亚洲成人网在线播放| 亚洲人成影院在线| 国产亚洲一区二区三区在线不卡 | 亚洲一区二区久久| 少妇中文字幕乱码亚洲影视|