复杂的事情要简单做;   简单的事情要认真做;   认真的事情要重复做;   重复的事情要创造性地做。

信心 恒心 决心 创意 乐意

も军魂ミ 心系java

Java的魅力:跨平台、动态的Web、Internet计算 Java在Web、移动设备以及云计算方面前景广阔 我的java编程不是梦!!! 俗话说的好:“授人以鱼不如授人以渔”.
posts - 10, comments - 12, trackbacks - 0, articles - 5
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
          1)、先封装一个病人(Patient)的类。里面设置两个属性:一个是排队的人数(num),一个是前面需要等待的人数(frontnum);
                            

package com.dr.patient;

public class Patient {
      private int num;    
   private int frontNum;
  
 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;
 }

                                                                                                                    }

          2)、然后建立一个病人服务的类(PatientServer),构建一个病人等待排队数字的循环逻辑;
package com.dr.patient;

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

public class PatientServer {
     Queue<Patient> patientList = new LinkedList<Patient>();                //新建一个容器,病人的队列
   
 public Queue<Patient> init(){                                                            //构建一个方法,把挂号的病人加入
  
  for(int i=1;i<=24;i++){                                                               //设定队列中已有24个人,挂号加入的从第25个开始
   Patient pat = new Patient();
      pat.setNum(i);
      pat.setFrontNum(i-1);
      patientList.offer(pat);                                                     //将指定的病人元素插入此队列
  }
  return patientList;
}
}


      3)、病人挂号点击页面,主要用Display、Shell方法新建窗口!

final Display display = Display.getDefault();
  final Shell shell = new Shell();
  shell.setBounds(300, 100, 800, 700);                                              
  shell.setText("病人挂号排队端");




// ------------------新插入的界面核心代码------------------------
  PatientServer qs = new PatientServer();//实例化类
  final Queue<Patient> patientList = qs.init();//初始化队列服务器
  
  final Text txt = new Text(shell,SWT.MULTI);                                          //建立窗口里文本的的大小
     txt.setBounds(150, 50, 500, 450);

     final Button button = new Button(shell, SWT.Activate);                         //设置一个button按钮
                                                                                                  

 button.addSelectionListener(new SelectionAdapter() {                       //鼠标单击按钮事件
          public void widgetSelected(SelectionEvent e) {
                Patient p = new Patient();
                p.setNum(patientList.size()+1);
                 p.setFrontNum(patientList.size());
                 patientList.offer(p);
              if(patientList.size() <= 48){
                          txt.setText( "您好!您现在排在"+p.getNum()+"位置上,\n\n您前面有"+p.getFrontNum()+"个病人需要看病\n\n请您耐心等候吧!\n\n\n\n若您为急诊,则直接去急诊室看病就可以了!");
    }else{
     txt.setText("您现在排在"+p.getNum()+"位置上,\n\n\n您前面已经超过36个病人等待了,请您尽快选择换地吧!给你带来的不便,望您见谅!\n");
    }
   }
  });
  
  button.setBounds(300, 530, 200, 75);                                                       / 设置按钮位置
  button.setFont(new Font(display,"华文楷体",12,SWT.BOLD));
  button.setText("生病挂号");                                                                   // 设置按钮上的文字
    

  shell.layout();                                                  
  shell.open();                                                                            //打开窗口
  while (!shell.isDisposed()) {                                                    //支撑窗口在不点击任何按钮时一直保留在桌面上
   if (!display.readAndDispatch())
    display.sleep();
  }
 }
}




4)、再封装一个急救病人的类(PatientHuarry)!方法和封装病人的类基本一样。

package com.dr.patient;

public class PatientHuarry {
  private int num;                                     //两个急求病人的属性
   private int frontNum;
 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;
 }
}



        5)、再从新构建一个新的队列(patienthuarryList),让其承载急救病人,而进入队列的方法思维也是和Patient的类一样

public class PatientServerH {
 Queue<PatientHuarry> patienthuarryList = new LinkedList<PatientHuarry>();

 public Queue<PatientHuarry> init(){
  
  for(int i=1;i<=16;i++){                                    //这对列能放的人数
   PatientHuarry ph = new PatientHuarry();
      ph.setNum(i);
      ph.setFrontNum(i-1);
      patienthuarryList.offer(ph);
  }
  return patienthuarryList;
}
}


    6)、最后构建医生专家按病人挂号排序就诊的页面!而为急诊的病人,则不需挂号,直接去急诊室就诊。
          医生专家的UI界面:




public class DoctorUI {
      public static void main(String[] args) {
  
        final Display display = Display.getDefault();
        final Shell shell = new Shell();
        shell.setBounds(200, 150, 1000, 600);
        shell.setText("医生专家服务端");
  
  // ------------------新插入的界面核心代码------------------------
  PatientServer qs = new PatientServer();                          //实例化类
     final Queue<Patient> patientList = qs.init();                  //初始化队列服务器
     
     PatientServerH qsh = new PatientServerH();
     final Queue<PatientHuarry> patienthuarryList = qsh.init();
    
     final Text txt1 = new Text(shell,SWT.MULTI);                        //创建四个文本窗口
     txt1.setBounds(80, 50, 170, 300);
  
     final Text txt2 = new Text(shell,SWT.MULTI);
     txt2.setBounds(300, 50, 170, 300);
  
     final Text txt3 = new Text(shell,SWT.MULTI);
     txt3.setBounds(520, 50, 170, 300);
  
     final Text txt4 = new Text(shell,SWT.MULTI);
     txt4.setBounds(740, 50, 170, 300);

     // 事件代码里要访问button
     final Button button1 = new Button(shell, SWT.Activate);                         // button1的事件方法
     button1.addSelectionListener(new SelectionAdapter() {                       // 加一个选择监听器
     public void widgetSelected(SelectionEvent e) {
    
      Patient p= patientList.poll();                      //弹出一个队列中的病人
    
          if(p!=null){
                txt1.setText(p.getNum()+"号病人请到内科专家处看病\n\n我们部门在一层左拐第一间,\n很乐意为您看病!!\n\n\n\n\n\n\n\n您好!请按时吃药!");
          }
        else{
               txt1.setText("现在没有等候的病人了,\n可以喝杯水了哈");
        }       
     
  
   }
     });
      button1.setBounds(120, 400, 90, 40);                 // 设置按钮位置
      button1.setText("内科专家");                            // 设置按钮上的文字
  

   final Button button2 = new Button(shell, SWT.Activate);                        // button2的事件方法

   button2.addSelectionListener(new SelectionAdapter() {
       public void widgetSelected(SelectionEvent e) {
        Patient p= patientList.poll();
        if(p!=null){
           txt2.setText(p.getNum()+"号病人请到外科专家处看病\n\n我们部门在二层右拐第三间,\n很乐意为您看病!!\n\n\n\n\n\n\n\n您好!请慢走!");
         }
         else{
          txt2.setText("现在没有等候的病人了,\n可以喝杯水了哈");
         }       
    }
      });
      button2.setBounds(340, 400, 90, 40);
      button2.setText("外科专家");
    
    final Button button3 = new Button(shell, SWT.Activate);                         // button3的事件方法

    button3.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent e) {
      
     Patient p= patientList.poll();
     if(p!=null){
          txt3.setText(p.getNum()+"号病人请到放射科科专家处看病\n\n我们部门在一层右拐最里一间,\n很乐意为您看病!!\n\n\n\n\n\n\n\n您好!请注意调理!");
         }
         else{
          txt3.setText("现在没有等候的病人了,\n可以喝杯水了哈!");
         }      
      
      
    
     }
       });
       button3.setBounds(560, 400, 90, 40); 
       button3.setText("放射科专家");

     
     final Button button4 = new Button(shell, SWT.Activate);                       // button4的事件方法

     button4.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       
      PatientHuarry ph= patienthuarryList.poll();
      if(ph!=null){
           txt4.setText(ph.getNum()+"号急诊病人请到急诊专家处看病\n我们部门在一层左拐第三间,\n很乐意为您看病!!\n\n\n\n由于的您病情比较着急,\n我们会全力为您治疗,\n请您放心!!\n\n\n\n\n\n\n\n您好!请保重身体!");
          }
          else{
           txt4.setText("现在没有急诊的病人了,\n我们可以休息会儿了!\n嘻嘻!");
          }      
       
     
      }
        });
        button4.setBounds(780, 400, 90,40);
        button4.setText("急诊专家");
    
    
  shell.layout();
  shell.open();
  while (!shell.isDisposed()) {                                   //同样为支撑窗口在不点击任何按钮时一直保留在桌面上
   if (!display.readAndDispatch())  
    display.sleep();
  }
    }
}



总结:这小程序主要是根据医院服务需求,做了简单的病人看病需要挂号,而医生作诊同样需要呼叫病人,这就无形中减少了病人和医生之间话费时间的联系!
             在编辑这个程序的过程中,主要还是用到的一些窗口的控件及其方法。




     最后也希望在看后我程序的人,给与我点评!我想从大家的想法中学到更多的东西,谢谢!  














只有注册用户登录后才能发表评论。


网站导航: