把困難踩在腳下

          迎難而上

           

          用GUI模擬醫院掛號系統

          要求:

          有三個專家,病人可以根據自己的實際情況選擇相應的專家,專家通過點擊按鈕選擇下一個病人。

          程序代碼如下:

          //封裝病人類

          package com.dr.hospitalQueueSystem;

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

          public class Patient {
              private int num;
              private String name;
              public String getName() {
                  return name;
              }
              public void setName(String name) {
                  this.name = name;
              }
              public int getNum() {
                  return num;
              }
              public void setNum(int num) {
                  this.num = num;
              }
              public Patient(int num,String name)
              {
                  this.setName(name);
                  this.setNum(num);
              }

          }

          //封裝專家類

          package com.dr.hospitalQueueSystem;

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

          public class Professor {
              private String name;
              private int id;
              public int getId() {
                  return id;
              }
              public void setId(int id) {
                  this.id = id;
              }
              public String getName() {
                  return name;
              }
              public void setName(String name) {
                  this.setName(name);
              }
              public Professor(String name,int id)
              {
                  this.name=name;
                  this.id=id;
              }

          }

          //掛號服務器

          package com.dr.hospitalQueueSystem;

          import java.util.HashMap;
          import java.util.LinkedList;
          import java.util.Map;
          import java.util.Queue;

          public class HospitalQueueServer {
              Map<Integer,Queue<Patient>> map=new HashMap<Integer,Queue<Patient>>();
              Queue<Patient> patientList1=new LinkedList<Patient>();
              Queue<Patient> patientList2=new LinkedList<Patient>();
              Queue<Patient> patientList3=new LinkedList<Patient>();
              public void Init()
              {
                  //實例化三個專家
                  Professor pfr1=new Professor("張三",1);
                  Professor pfr2=new Professor("李四",2);
                  Professor pfr3=new Professor("王五",3);
                  //實例化15個病人,并將他們每五個添加到三個專家所對應的集合隊列中
                  patientList1.offer(new Patient(1, "成龍"));
                  patientList1.offer(new Patient(2, "李小龍"));
                  patientList1.offer(new Patient(3, "大S"));
                  patientList1.offer(new Patient(4, "郭富城"));
                  patientList1.offer(new Patient(5, "小S"));
                  patientList2.offer(new Patient(6, "劉德華"));
                  patientList2.offer(new Patient(7, "林心如"));
                  patientList2.offer(new Patient(8, "張靜初"));
                  patientList2.offer(new Patient(9, "王寶強"));
                  patientList2.offer(new Patient(10, "李連杰"));
                  patientList3.offer(new Patient(11, "大傻"));
                  patientList3.offer(new Patient(12, "張國榮"));
                  patientList3.offer(new Patient(13, "周星馳"));
                  patientList3.offer(new Patient(14, "趙薇"));
                  patientList3.offer(new Patient(15, "周迅"));
                  //將各個專家與他們對應的病人集合進行鍵值對
                  map.put(pfr1.getId(), patientList1);
                  map.put(pfr2.getId(), patientList2);
                  map.put(pfr3.getId(), patientList3);
              }

          }

          //病人使用端

          package com.dr.hospitalQueueSystem;

          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.Label;
          import org.eclipse.swt.widgets.Shell;
          import org.eclipse.swt.widgets.Text;

          public class PatientQueueUI {
              public static void main(String args[])
              {
                  Display display=new Display();
                  Shell shell=new Shell(display);
                  shell.setMaximized(true);
                  //初始化界面
                  shell.setText("醫院病人掛號使用系統");
                  //服務器初始化
                  HospitalQueueServer hq=new HospitalQueueServer();
                  hq.Init();
                  final Queue<Patient> patientList1=hq.map.get(1);
                  final Queue<Patient> patientList2=hq.map.get(2);
                  final Queue<Patient> patientList3=hq.map.get(3);
                  //添加標簽控件
                  Label label=new Label(shell,SWT.NONE);
                  label.setFont(new Font(display,"宋體",15,SWT.BOLD));
                  label.setBounds(450,100,600,100);
                  label.setText("想要選擇那位專家為你看病,請點擊相應專家的姓名按鈕!");
                  //添加三個文本框
                  final Text text1=new Text(shell,SWT.WRAP);
                  text1.setBounds(100,250,250,200);
                  final Text text2=new Text(shell,SWT.WRAP);
                  text2.setBounds(550,250,250,200);
                  final Text text3=new Text(shell,SWT.WRAP);
                  text3.setBounds(900,250,250,200);
                  //添加按鈕1
                  Button button1=new Button(shell,SWT.Activate);
                  button1.setBounds(150,520,120,60);
                  button1.setText("1號專家張三");
                  //添加按鈕2
                  Button button2=new Button(shell,SWT.Activate);
                  button2.setBounds(600,520,120,60);
                  button2.setText("2號專家李四");
                  //添加按鈕3
                  Button button3=new Button(shell,SWT.Activate);
                  button3.setBounds(960,520,120,60);
                  button3.setText("3號專家王五");
                  //為按鈕1添加事件處理,事件處理內容為“讀取病人的id和姓名,并將此病人添加到相應專家的對立中”
                  button1.addSelectionListener(new SelectionAdapter(){
                      public void widgetSelected(SelectionEvent e)
                      {
                          Patient pt=new Patient(patientList1.size()+1,"***");
                          patientList1.offer(pt);
                          text1.setText(pt.getNum()+"號病人,歡迎選擇1號專家為你坐診,請在等候區等候,會有工作人員通過廣播通知你什么時候去看病");
                      }
                  });
                  //為按鈕2添加事件處理
                  button2.addSelectionListener(new SelectionAdapter(){
                      public void widgetSelected(SelectionEvent e)
                      {
                          Patient pt=new Patient(patientList2.size()+1,"****");
                          patientList2.offer(pt);
                          text2.setText(pt.getNum()+"號病人,歡迎選擇2號專家為你坐診,請在等候區等候,會有工作人員通過廣播通知你什么時候去看病");
                      }
                  });
                  //為按鈕3添加事件處理
                  button3.addSelectionListener(new SelectionAdapter(){
                      public void widgetSelected(SelectionEvent e)
                      {
                          Patient pt=new Patient(patientList3.size()+1,"****");
                          patientList3.offer(pt);
                          text3.setText(pt.getNum()+"號病人,歡迎選擇3號專家為你坐診,請在等候區等候,會有工作人員通過廣播通知你什么時候去看病");
                      }
                  });
                  shell.layout();
                  shell.open();
                  while(!shell.isDisposed())
                  {
                      if(!display.readAndDispatch()){
                          display.sleep();
                      }
                  }
              }

          }

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

          程序運行結果如下:

          未命名

          //專家使用端

          package com.dr.hospitalQueueSystem;

          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.Label;
          import org.eclipse.swt.widgets.Shell;
          import org.eclipse.swt.widgets.Text;

          public class ProfessorUI {
              public static void main(String args[])
              {
                  final Display display = Display.getDefault();
                  final Shell shell = new Shell();
                  shell.setMaximized(true);
                  //初始化界面
                  shell.setText("專家使用系統端");
                  //服務器初始化
                  HospitalQueueServer hq=new HospitalQueueServer();
                  hq.Init();
                  final Queue<Patient> qp1=hq.map.get(1);
                  final Queue<Patient> qp2=hq.map.get(2);
                  final Queue<Patient> qp3=hq.map.get(3);
                  //添加文本控件
                  final Text text1=new Text(shell,SWT.WRAP);
                  text1.setBounds(100,250,250,200);
                  text1.setFont(new Font(display,"宋體",15,SWT.BOLD));
                  final Text text2=new Text(shell,SWT.WRAP);
                  text2.setFont(new Font(display,"宋體",15,SWT.BOLD));
                  text2.setBounds(550,250,250,200);
                  final Text text3=new Text(shell,SWT.WRAP);
                  text3.setFont(new Font(display,"宋體",15,SWT.BOLD));
                  text3.setBounds(900,250,250,200);
                  //添加按鈕1
                  Button button1=new Button(shell,SWT.Activate);
                  button1.setBounds(150,520,120,60);
                  button1.setText("張三:下一個");
                  //添加按鈕2
                  Button button2=new Button(shell,SWT.Activate);
                  button2.setBounds(600,520,120,60);
                  button2.setText("李四:下一個");
                  Button button3=new Button(shell,SWT.Activate);
                  button3.setBounds(960,520,120,60);
                  button3.setText("王五:下一個");
                  //為按鈕1添加事件處理,事件處理內容為“讀取病人的id和姓名,并將此病人添加到相應專家的對立中”
                  button1.addSelectionListener(new SelectionAdapter(){
                      public void widgetSelected(SelectionEvent e)
                      {
                          Patient pt=qp1.poll();
                          if(pt!=null)
                          {
                              text1.setText(pt.getName()+"請進來");
                          }
                          else
                          {
                              text1.setText("暫時沒有病人了,您先休息會兒");
                          }
                      }
                  });
                  //為按鈕2添加事件處理
                  button2.addSelectionListener(new SelectionAdapter(){
                      public void widgetSelected(SelectionEvent e)
                      {
                          Patient pt=qp2.poll();
                          if(pt!=null)
                          {
                              text2.setText(pt.getName()+"請進來");
                          }
                          else
                          {
                              text2.setText("暫時沒有病人了,您先休息會兒");
                          }
                      }
                  });
                  //為按鈕3添加事件處理
                  button3.addSelectionListener(new SelectionAdapter(){
                      public void widgetSelected(SelectionEvent e)
                      {
                          Patient pt=qp3.poll();
                          if(pt!=null)
                          {
                              text3.setText(pt.getName()+"請進來");
                          }
                          else
                          {
                              text3.setText("暫時沒有病人了,您先休息會兒");
                          }
                      }
                  });
                  shell.layout();
                  shell.open();
                  while (!shell.isDisposed()) {
                      if (!display.readAndDispatch())
                          display.sleep();
                  }
              }

          }

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

          程序運行結果如下:

          未命名

          這個程序還有許多缺點比如說數據冗余,沒有實現專家與病人之間的通信!

          由于沒有實現多線程技術,在專家系統端運行時,只能是調用服務器初始化的病人,不能調用病人系統端添加的病人。

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


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


          網站導航:
           

          導航

          統計

          公告

          快樂每一天!

          Everything is an object!

          常用鏈接

          留言簿(2)

          隨筆檔案

          學習網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 湘潭市| 松桃| 镇雄县| 洞口县| 简阳市| 龙游县| 厦门市| 舞钢市| 通城县| 平江县| 乐清市| 双城市| 南华县| 项城市| 大同县| 南丹县| 宁安市| 皮山县| 抚远县| 崇州市| 久治县| 临泉县| 广东省| 武定县| 怀柔区| 阳原县| 突泉县| 田林县| 林芝县| 太原市| 嘉兴市| 苍山县| 阳西县| 鹤壁市| 始兴县| 绍兴县| 涡阳县| 锡林郭勒盟| 堆龙德庆县| 石屏县| 余庆县|