Java+Swing实现医院管理系统(下)

简介: Java+Swing实现医院管理系统

DBUtil.java

package com.sjsq;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBUtil {
  // 连接
  private Connection con = null;
  public String url = "jdbc:mysql://localhost:3306/swing_hospital_management?serverTimezone=UTC";
  public String username = "root";
  public String password = "admin";
  // 获取连接
  public Connection getConnection() {
    try {
      con = DriverManager.getConnection(url, username, password);     
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("获取连接失败:" + e.getMessage());
    }
    return con;
  }
  // 关闭连接
  public void close() {
    try {
      if (con != null) {
        con.close();
      }
      con = null;
      System.out.println("数据库连接关闭");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  // 测试
  public static void main(String[] args) {
    DBUtil dbUtil = new DBUtil();
    dbUtil.getConnection();
  }
}

DepartmentManage.java

package com.sjsq;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.regex.Pattern;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class DepartmentManage extends JFrame implements ActionListener {
  JPanel departmentManage = new JPanel();
  private JLabel manageTitle = new JLabel("科室信息综合操作");
  private JLabel la1, la2, la3, la4, la5, la6;
  private JTextField tx1, tx2, tx3, tx4, tx5, tx6;
  public JButton save, query, modify, delete;
  private Font laFont = new Font("宋体", Font.BOLD, 15);
  private JComboBox jcbb1;
  private String str1[] = { "查询全部", "按科室编号查询", "按科室名称查询" };
  private final String[] columnNames = { "科室编号", "科室名称", "科室主任", "科室电话" };
  private JScrollPane JScrollPane1 = new JScrollPane();
  private java.sql.Connection con = null;
  private static JTable table;
  private static DefaultTableModel dtm;
  private Pattern pattern = Pattern.compile("[0-9]*");
  public DepartmentManage() {
    // 背景设置
    departmentManage.setLayout(null);
    ImageIcon background = new ImageIcon("picture/right_bg.jpg");
    JLabel label = new JLabel(background);
    // 标题设置
    manageTitle.setFont(new Font("宋体", Font.BOLD, 50));
    manageTitle.setBounds(60, 10, 1000, 50);
    departmentManage.add(manageTitle);
    // 录入操作面板设置
    final JPanel panel = new JPanel();
    panel.setLayout(null);
    panel.setBorder(new TitledBorder(null, "录入操作", TitledBorder.DEFAULT_JUSTIFICATION,
        TitledBorder.DEFAULT_POSITION, null, Color.red));
    panel.setBounds(45, 65, 550, 150);
    panel.setOpaque(false);
    la1 = new JLabel("科室编号:");
    la2 = new JLabel("科室名称:");
    la3 = new JLabel("科室主任:");
    la4 = new JLabel("科室电话:");
    tx1 = new JTextField();
    tx2 = new JTextField();
    tx3 = new JTextField();
    tx4 = new JTextField();
    save = new JButton("保存");
    la1.setBounds(20, 20, 100, 50);
    la1.setFont(laFont);
    la2.setBounds(240, 20, 100, 50);
    la2.setFont(laFont);
    la3.setBounds(20, 80, 100, 50);
    la3.setFont(laFont);
    la4.setBounds(240, 80, 100, 50);
    la4.setFont(laFont);
    tx1.setBounds(100, 30, 120, 30);
    tx1.setFont(laFont);
    tx2.setBounds(320, 30, 120, 30);
    tx2.setFont(laFont);
    tx3.setBounds(100, 90, 120, 30);
    tx3.setFont(laFont);
    tx4.setBounds(320, 90, 120, 30);
    tx4.setFont(laFont);
    save.setBounds(460, 100, 80, 40);
    panel.add(la1);
    panel.add(la2);
    panel.add(la3);
    panel.add(la4);
    panel.add(tx1);
    panel.add(tx2);
    panel.add(tx3);
    panel.add(tx4);
    panel.add(save);
    departmentManage.add(panel);
    // 查询操纵面板设置
    final JPanel panel1 = new JPanel();
    panel1.setLayout(null);
    panel1.setBorder(new TitledBorder(null, "查询操作", TitledBorder.DEFAULT_JUSTIFICATION,
        TitledBorder.DEFAULT_POSITION, null, Color.red));
    panel1.setBounds(620, 65, 380, 150);
    panel1.setOpaque(false);
    query = new JButton("查询");
    la5 = new JLabel("科室编号:");
    la6 = new JLabel("科室名称:");
    tx5 = new JTextField();
    tx6 = new JTextField();
    jcbb1 = new JComboBox(str1);
    jcbb1.setBounds(20, 28, 150, 25);
    jcbb1.setFont(laFont);
    la5.setBounds(20, 73, 80, 50);
    la5.setFont(laFont);
    la6.setBounds(20, 73, 80, 50);
    la6.setFont(laFont);
    tx5.setBounds(100, 80, 120, 30);
    tx5.setFont(laFont);
    tx6.setBounds(100, 80, 120, 30);
    tx6.setFont(laFont);
    query.setBounds(290, 100, 80, 40);
    la5.setVisible(false);
    la6.setVisible(false);
    tx5.setVisible(false);
    tx6.setVisible(false);
    panel1.add(la5);
    panel1.add(la6);
    panel1.add(tx5);
    panel1.add(tx6);
    panel1.add(jcbb1);
    panel1.add(query);
    departmentManage.add(panel1);
    // 表格设置
    defaultTableModel(); // 设置表格不可编辑
    setTableColumnCenter(); // 设置表格内容居中显示
    setbgcolor(); // 设置表格隔行不同颜色
    JScrollPane1.setBounds(new Rectangle(45, 230, 850, 270));
    JScrollPane1.setViewportView(table); // 创建一个滚动条(如果有必要)并设置其视图
    // table.getColumnModel().getColumn(0).setMinWidth(40);
    // table.getColumnModel().getColumn(0).setMaxWidth(40);
    table.getTableHeader().setReorderingAllowed(false); // 列不可拖动
    table.getTableHeader().setResizingAllowed(false); // 列宽不能改变
    departmentManage.add(JScrollPane1);
    // 按钮设置
    modify = new JButton("修改");
    delete = new JButton("删除");
    // reflash=new JButton("刷新");
    modify.setBounds(910, 230, 80, 40);
    delete.setBounds(910, 300, 80, 40);
    // reflash.setBounds(910, 370, 80, 40);
    departmentManage.add(modify);
    departmentManage.add(delete);
    // departmentManage.add(reflash);
    // 添加监听器
    save.addActionListener(this);
    delete.addActionListener(this);
    query.addActionListener(this);
    modify.addActionListener(this);
    // reflash.addActionListener(this);
    jcbb1.addActionListener(this);
    // 添加背景
    departmentManage.add(label);
    label.setBounds(0, 0, 1100, 700);
  }
  // 设置表格不可编辑
  private void defaultTableModel() {
    dtm = new DefaultTableModel(columnNames, 0);
    table = new JTable(dtm) {
      public boolean isCellEditable(int row, int column) {
        return false;
      }
    };
  }
  // 设置表格内容居中显示
  private void setTableColumnCenter() {
    DefaultTableCellRenderer r = new DefaultTableCellRenderer();
    r.setHorizontalAlignment(JLabel.CENTER);
    table.setDefaultRenderer(Object.class, r);
  }
  // 设置表格隔行背景颜色不同
  private static void setbgcolor() {
    try {
      DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
            boolean hasFocus, int row, int column) {
          if (row % 2 == 0)
            setBackground(new Color(223, 220, 239)); // 设置奇数行底色
          else if (row % 2 == 1)
            setBackground(Color.white); // 设置偶数行底色
          return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        }
      };
      for (int i = 0; i < table.getColumnCount(); i++) {
        table.getColumn(table.getColumnName(i)).setCellRenderer(tcr);
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == jcbb1) {
      if (jcbb1.getSelectedIndex() == 0) {
        la5.setVisible(false);
        la6.setVisible(false);
        tx5.setVisible(false);
        tx6.setVisible(false);
        return;
      } else if (jcbb1.getSelectedIndex() == 1) {
        la5.setVisible(true);
        tx5.setVisible(true);
        la6.setVisible(false);
        tx6.setVisible(false);
        return;
      } else if (jcbb1.getSelectedIndex() == 2) {
        tx5.setVisible(false);
        la5.setVisible(false);
        tx6.setVisible(true);
        la6.setVisible(true);
        return;
      }
    }
    if (e.getSource() == save) { // 录入操作
      // 输入信息不能为空
      if (tx1.getText().equals("") || tx2.getText().equals("") || tx4.getText().equals("")) {
        JOptionPane.showMessageDialog(null, "请输入完整的科室信息!", "错误", JOptionPane.ERROR_MESSAGE);
      }
      // 编号为3位数字
      else if (tx1.getText().length() > 3 || pattern.matcher(tx1.getText()).matches() == false) {
        JOptionPane.showMessageDialog(null, "请输入正确的3位数科室编号!", "错误", JOptionPane.ERROR_MESSAGE);
      }
      // 名字长度不能超过20个字符
      else if (tx2.getText().length() > 10 || tx3.getText().length() > 10) {
        JOptionPane.showMessageDialog(null, "名字长度不能超过10个汉字!", "错误", JOptionPane.ERROR_MESSAGE);
      }
      // 电话号码为8位数字
      else if (pattern.matcher(tx4.getText()).matches() == false || tx4.getText().length() != 8) {
        JOptionPane.showMessageDialog(null, "请输入正确的8位数电话号码!", "错误", JOptionPane.ERROR_MESSAGE);
      }
      else {
        String deptNo = tx1.getText().trim();
        String deptName = tx2.getText();
        String deptPhone = tx4.getText().trim();
        try {
          DBUtil dbUtil = new DBUtil();
          Connection con = dbUtil.getConnection();
          Statement st1 = con.createStatement(); // 创建一个数据库会话对象
          Statement st2 = con.createStatement(); // 创建一个数据库会话对象
          Statement st3 = con.createStatement(); // 创建一个数据库会话对象
          ResultSet rs1 = st1.executeQuery("select * from Department where DeptNo='" + deptNo + "'"); // SQL语句
          ResultSet rs2 = st2.executeQuery("select * from Department where DeptName='" + deptName + "'");
          ResultSet rs3 = st3.executeQuery("select * from Department where DeptPhone='" + deptPhone + "'");
          if (rs1.next()) { // 判断结果集rs是否有记录,并且将指针后移一位
            JOptionPane.showMessageDialog(null, "该科室号已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE);
            st1.close();
          } else if (rs2.next()) {
            JOptionPane.showMessageDialog(null, "该科室名已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE);
            st2.close();
          } else if (rs3.next()) {
            JOptionPane.showMessageDialog(null, "该科室电话号码已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE);
            st3.close();
          }
          else {
            int ok = JOptionPane.showConfirmDialog(null, "是否保存该科室信息?", "确定", JOptionPane.YES_NO_OPTION,
                JOptionPane.INFORMATION_MESSAGE);
            if (ok == JOptionPane.YES_OPTION) {
              try {
                // 信息添加到数据库
                String sql = "INSERT INTO Department(DeptNo,DeptName,DrName,DeptPhone)VALUES(?,?,?,?)";
                PreparedStatement parepare = con.prepareStatement(sql);
                parepare.setString(1, tx1.getText());
                parepare.setString(2, tx2.getText());
                parepare.setString(3, tx3.getText());
                parepare.setString(4, tx4.getText());
                parepare.executeUpdate();
                String[] data = new String[] { tx1.getText(), tx2.getText(), tx3.getText(),
                    tx4.getText() };
                dtm.addRow(data); // 在表格添加一行刚添加的数据
                JOptionPane.showMessageDialog(null, "录入成功");
                tx1.setText("");
                tx2.setText("");
                tx3.setText("");
                tx4.setText("");
              } catch (Exception e1) {
                e1.printStackTrace();
                System.out.println("SQL Exception occur.Message is:");
                System.out.println(e1.getMessage());
              }
            }
          }
        } catch (Exception e2) {
          e2.printStackTrace();
        }
      }
    }
    if (e.getSource() == query) { // 查询操作
      try {
        DBUtil dbUtil = new DBUtil();
        Connection con = dbUtil.getConnection();
        if (jcbb1.getSelectedIndex() == 0) { // 全部查询
          String sql = "select * from Department";
          databaseSearch(sql);
          if (table.getRowCount() != 0) {
            JOptionPane.showMessageDialog(null, "查询成功!");
          } else {
            JOptionPane.showMessageDialog(null, "没有找到您要的信息!");
          }
        }
        if (jcbb1.getSelectedIndex() == 1) { // 编号查询
          if (tx5.getText().trim().equals("")) {
            JOptionPane.showMessageDialog(null, "请输入正确的科室编号!", "错误", JOptionPane.ERROR_MESSAGE);
          } else {
            String deptNo = tx5.getText().trim();
            String sql = "select * from Department where DeptNo like'%" + deptNo + "%'";
            databaseSearch(sql);
            if (table.getRowCount() != 0) {
              JOptionPane.showMessageDialog(null, "查询成功!");
              tx5.setText("");
            } else {
              JOptionPane.showMessageDialog(null, "没有找到您要的信息!");
            }
          }
        }
        if (jcbb1.getSelectedIndex() == 2) { // 名称查询
          if (tx6.getText().trim().equals("")) {
            JOptionPane.showMessageDialog(null, "请输入正确的科室名称!", "错误", JOptionPane.ERROR_MESSAGE);
          } else {
            String deptName = tx6.getText();
            String sql = "select * from Department where DeptName like '%" + deptName + "%'";
            databaseSearch(sql);
            if (table.getRowCount() != 0) {
              JOptionPane.showMessageDialog(null, "查询成功!");
              tx6.setText("");
            } else {
              JOptionPane.showMessageDialog(null, "没有找到您要的信息!");
            }
          }
        }
      } catch (Exception e1) {
        e1.printStackTrace();
      }
    }
    if (e.getSource() == delete) { // 删除操作
      try {
        DBUtil dbUtil = new DBUtil();
        Connection con = dbUtil.getConnection();
        Statement stmt = con.createStatement(); // 创建一个数据库会话对象
        int selectCount = table.getSelectedRowCount();
        if (selectCount == 0) {
          JOptionPane.showMessageDialog(null, "请选择您要删除的信息!");
        } else if (selectCount == 1) {
          int ok = JOptionPane.showConfirmDialog(null, "是否删除该科室信息?", "确定", JOptionPane.YES_NO_OPTION,
              JOptionPane.INFORMATION_MESSAGE);
          if (ok == JOptionPane.YES_OPTION) {
            int row = table.getSelectedRow();
            String deptNo = (String) table.getValueAt(row, 0);
            String sql = "delete from Department where DeptNo='" + deptNo + "'";
            stmt.executeUpdate(sql);
            dtm.removeRow(row);
            JOptionPane.showMessageDialog(null, "删除成功!");
          }
        } else {
          int ok = JOptionPane.showConfirmDialog(null, "是否删除所选" + selectCount + "个科室信息?", "确定",
              JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);
          if (ok == JOptionPane.YES_OPTION) {
            for (int i = 1; i <= selectCount; i++) {
              int row1 = table.getSelectedRow();
              String deptNo = (String) table.getValueAt(row1, 0);
              String sql = "delete from Department where DeptNo='" + deptNo + "'";
              stmt.executeUpdate(sql);
              dtm.removeRow(row1);
            }
            JOptionPane.showMessageDialog(null, "删除成功!");
          }
        }
      } catch (Exception e1) {
        e1.printStackTrace();
      }
    }
    // 修改操作设置
    if (e.getSource() == modify) {
      if (table.getSelectedRowCount() != 1) {
        JOptionPane.showMessageDialog(null, "请选择一项科室信息进行修改!", "错误", JOptionPane.ERROR_MESSAGE);
      } else {
        try {
          DBUtil dbUtil = new DBUtil();
          Connection con = dbUtil.getConnection();
          Statement stmt1 = con.createStatement(); // 创建一个数据库会话对象
          int row = table.getSelectedRow();
          String value0 = (String) table.getValueAt(row, 0);
          String value1 = (String) table.getValueAt(row, 1);
          String value2 = (String) table.getValueAt(row, 2);
          String value3 = (String) table.getValueAt(row, 3);
          DepartmentModify dig = new DepartmentModify();
          dig.tx1.setText(value0);
          dig.tx2.setText(value1);
          dig.tx3.setText(value2);
          dig.tx4.setText(value3);
          dig.s.setVisible(true);
        } catch (Exception e1) {
          e1.printStackTrace();
        }
      }
    }
  }
  // 把数据库数据传入表格
  public void databaseSearch(String SQL) {
    DBUtil dbUtil = new DBUtil();
    Connection con = dbUtil.getConnection();
    ResultSet rs;
    try {
      int rowcount = dtm.getRowCount() - 1;
      if (rowcount != -1) {
        for (int i1 = rowcount; i1 >= 0; i1--) {
          dtm.removeRow(i1);
        }
        dtm.setRowCount(0);
      }
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(SQL);
      String[] data = new String[4];
      while (rs.next()) {
        for (int j = 1; j <= 4; j++) {
          data[j - 1] = rs.getString(j);
        }
        dtm.addRow(data);
      }
      con.close();
    } catch (Exception err) {
      String error = err.getMessage();
      JOptionPane.showMessageDialog(null, error);
      err.printStackTrace();
    } finally {
      dbUtil.close();
    }
  }
  // 科室信息修改操作对话框设置++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  class DepartmentModify implements ActionListener {
    public JDialog s = new JDialog();
    public JLabel la1, la2, la3, la4;
    public JTextField tx1, tx2, tx3, tx4, txWait;
    public JButton confirm, cancel;
    public Font laFont = new Font("宋体", Font.BOLD, 15);
    public int row = table.getSelectedRow();
    public DepartmentModify() {
      ImageIcon background = new ImageIcon("picture/right_bg.jpg");
      JLabel label = new JLabel(background);
      s.setModal(true);
      s.setSize(500, 250);
      s.setResizable(false);
      s.setLocationRelativeTo(null);
      s.setLayout(null);
      la1 = new JLabel("科室编号:");
      la2 = new JLabel("科室名称:");
      la3 = new JLabel("科室主任:");
      la4 = new JLabel("科室电话:");
      tx1 = new JTextField();
      tx2 = new JTextField();
      tx3 = new JTextField();
      tx4 = new JTextField();
      txWait = new JTextField();
      confirm = new JButton("确定");
      cancel = new JButton("取消");
      tx1.setEditable(false);
      la1.setBounds(30, 30, 100, 40);
      la1.setFont(laFont);
      la2.setBounds(250, 30, 100, 40);
      la2.setFont(laFont);
      la3.setBounds(30, 90, 100, 40);
      la3.setFont(laFont);
      la4.setBounds(250, 90, 100, 40);
      la4.setFont(laFont);
      tx1.setBounds(110, 35, 120, 30);
      tx1.setFont(laFont);
      tx2.setBounds(330, 35, 120, 30);
      tx2.setFont(laFont);
      tx3.setBounds(110, 95, 120, 30);
      tx3.setFont(laFont);
      tx4.setBounds(330, 95, 120, 30);
      tx4.setFont(laFont);
      confirm.setBounds(110, 150, 100, 40);
      cancel.setBounds(330, 150, 100, 40);
      s.add(la1);
      s.add(la2);
      s.add(la3);
      s.add(la4);
      s.add(tx1);
      s.add(tx2);
      s.add(tx3);
      s.add(tx4);
      s.add(confirm);
      s.add(cancel);
      confirm.addActionListener(this);
      cancel.addActionListener(this);
      s.add(label);
      label.setBounds(0, 0, 500, 250);
    }
    public void actionPerformed(ActionEvent e) {
      if (e.getSource() == cancel) {
        s.dispose();
      }
      if (e.getSource() == confirm) {
        int ok = JOptionPane.showConfirmDialog(null, "是否修改该科室信息?", "确定", JOptionPane.YES_NO_OPTION,
            JOptionPane.INFORMATION_MESSAGE);
        if (ok == JOptionPane.YES_OPTION) {
          try {
            DBUtil dbUtil = new DBUtil();
            Connection con = dbUtil.getConnection();
            Statement stmt = con.createStatement(); // 创建一个数据库会话对象
            // 输入信息不能为空
            if (tx2.getText().equals("") || tx4.getText().equals("")) {
              JOptionPane.showMessageDialog(null, "请输入完整的科室信息!", "错误", JOptionPane.ERROR_MESSAGE);
            }
            // 编号为3位数字
            else if (tx1.getText().length() > 3 || pattern.matcher(tx1.getText()).matches() == false) {
              JOptionPane.showMessageDialog(null, "请输入正确的3位数科室编号!", "错误", JOptionPane.ERROR_MESSAGE);
            }
            // 名字长度不能超过20个字符
            else if (tx2.getText().length() > 10 || tx3.getText().length() > 10) {
              JOptionPane.showMessageDialog(null, "名字长度不能超过10个汉字!", "错误", JOptionPane.ERROR_MESSAGE);
            }
            // 电话号码为8位数字
            else if (pattern.matcher(tx4.getText()).matches() == false || tx4.getText().length() != 8) {
              JOptionPane.showMessageDialog(null, "请输入正确的8位数电话号码!", "错误", JOptionPane.ERROR_MESSAGE);
            }
            else {
              int row2 = table.getSelectedRow();
              String sql = "update Department   set DeptName='" + tx2.getText().trim() + "',DrName='"
                  + tx3.getText().trim() + "',DeptPhone='" + tx4.getText().trim() + "'where DeptNo='"
                  + tx1.getText().trim() + "'  ";
              stmt.executeUpdate(sql);
              String[] data = new String[] { tx1.getText(), tx2.getText(), tx3.getText(), tx4.getText() };
              dtm.removeRow(row2);
              dtm.insertRow(row2, data);
              JOptionPane.showMessageDialog(null, "修改成功");
              s.dispose();
            }
          } catch (Exception e1) {
            e1.printStackTrace();
          }
        }
      }
    }
  }
}

DepartmentManage.java

package com.sjsq;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.regex.Pattern;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class DepartmentManage extends JFrame implements ActionListener {
  JPanel departmentManage = new JPanel();
  private JLabel manageTitle = new JLabel("科室信息综合操作");
  private JLabel la1, la2, la3, la4, la5, la6;
  private JTextField tx1, tx2, tx3, tx4, tx5, tx6;
  public JButton save, query, modify, delete;
  private Font laFont = new Font("宋体", Font.BOLD, 15);
  private JComboBox jcbb1;
  private String str1[] = { "查询全部", "按科室编号查询", "按科室名称查询" };
  private final String[] columnNames = { "科室编号", "科室名称", "科室主任", "科室电话" };
  private JScrollPane JScrollPane1 = new JScrollPane();
  private java.sql.Connection con = null;
  private static JTable table;
  private static DefaultTableModel dtm;
  private Pattern pattern = Pattern.compile("[0-9]*");
  public DepartmentManage() {
    // 背景设置
    departmentManage.setLayout(null);
    ImageIcon background = new ImageIcon("picture/right_bg.jpg");
    JLabel label = new JLabel(background);
    // 标题设置
    manageTitle.setFont(new Font("宋体", Font.BOLD, 50));
    manageTitle.setBounds(60, 10, 1000, 50);
    departmentManage.add(manageTitle);
    // 录入操作面板设置
    final JPanel panel = new JPanel();
    panel.setLayout(null);
    panel.setBorder(new TitledBorder(null, "录入操作", TitledBorder.DEFAULT_JUSTIFICATION,
        TitledBorder.DEFAULT_POSITION, null, Color.red));
    panel.setBounds(45, 65, 550, 150);
    panel.setOpaque(false);
    la1 = new JLabel("科室编号:");
    la2 = new JLabel("科室名称:");
    la3 = new JLabel("科室主任:");
    la4 = new JLabel("科室电话:");
    tx1 = new JTextField();
    tx2 = new JTextField();
    tx3 = new JTextField();
    tx4 = new JTextField();
    save = new JButton("保存");
    la1.setBounds(20, 20, 100, 50);
    la1.setFont(laFont);
    la2.setBounds(240, 20, 100, 50);
    la2.setFont(laFont);
    la3.setBounds(20, 80, 100, 50);
    la3.setFont(laFont);
    la4.setBounds(240, 80, 100, 50);
    la4.setFont(laFont);
    tx1.setBounds(100, 30, 120, 30);
    tx1.setFont(laFont);
    tx2.setBounds(320, 30, 120, 30);
    tx2.setFont(laFont);
    tx3.setBounds(100, 90, 120, 30);
    tx3.setFont(laFont);
    tx4.setBounds(320, 90, 120, 30);
    tx4.setFont(laFont);
    save.setBounds(460, 100, 80, 40);
    panel.add(la1);
    panel.add(la2);
    panel.add(la3);
    panel.add(la4);
    panel.add(tx1);
    panel.add(tx2);
    panel.add(tx3);
    panel.add(tx4);
    panel.add(save);
    departmentManage.add(panel);
    // 查询操纵面板设置
    final JPanel panel1 = new JPanel();
    panel1.setLayout(null);
    panel1.setBorder(new TitledBorder(null, "查询操作", TitledBorder.DEFAULT_JUSTIFICATION,
        TitledBorder.DEFAULT_POSITION, null, Color.red));
    panel1.setBounds(620, 65, 380, 150);
    panel1.setOpaque(false);
    query = new JButton("查询");
    la5 = new JLabel("科室编号:");
    la6 = new JLabel("科室名称:");
    tx5 = new JTextField();
    tx6 = new JTextField();
    jcbb1 = new JComboBox(str1);
    jcbb1.setBounds(20, 28, 150, 25);
    jcbb1.setFont(laFont);
    la5.setBounds(20, 73, 80, 50);
    la5.setFont(laFont);
    la6.setBounds(20, 73, 80, 50);
    la6.setFont(laFont);
    tx5.setBounds(100, 80, 120, 30);
    tx5.setFont(laFont);
    tx6.setBounds(100, 80, 120, 30);
    tx6.setFont(laFont);
    query.setBounds(290, 100, 80, 40);
    la5.setVisible(false);
    la6.setVisible(false);
    tx5.setVisible(false);
    tx6.setVisible(false);
    panel1.add(la5);
    panel1.add(la6);
    panel1.add(tx5);
    panel1.add(tx6);
    panel1.add(jcbb1);
    panel1.add(query);
    departmentManage.add(panel1);
    // 表格设置
    defaultTableModel(); // 设置表格不可编辑
    setTableColumnCenter(); // 设置表格内容居中显示
    setbgcolor(); // 设置表格隔行不同颜色
    JScrollPane1.setBounds(new Rectangle(45, 230, 850, 270));
    JScrollPane1.setViewportView(table); // 创建一个滚动条(如果有必要)并设置其视图
    // table.getColumnModel().getColumn(0).setMinWidth(40);
    // table.getColumnModel().getColumn(0).setMaxWidth(40);
    table.getTableHeader().setReorderingAllowed(false); // 列不可拖动
    table.getTableHeader().setResizingAllowed(false); // 列宽不能改变
    departmentManage.add(JScrollPane1);
    // 按钮设置
    modify = new JButton("修改");
    delete = new JButton("删除");
    // reflash=new JButton("刷新");
    modify.setBounds(910, 230, 80, 40);
    delete.setBounds(910, 300, 80, 40);
    // reflash.setBounds(910, 370, 80, 40);
    departmentManage.add(modify);
    departmentManage.add(delete);
    // departmentManage.add(reflash);
    // 添加监听器
    save.addActionListener(this);
    delete.addActionListener(this);
    query.addActionListener(this);
    modify.addActionListener(this);
    // reflash.addActionListener(this);
    jcbb1.addActionListener(this);
    // 添加背景
    departmentManage.add(label);
    label.setBounds(0, 0, 1100, 700);
  }
  // 设置表格不可编辑
  private void defaultTableModel() {
    dtm = new DefaultTableModel(columnNames, 0);
    table = new JTable(dtm) {
      public boolean isCellEditable(int row, int column) {
        return false;
      }
    };
  }
  // 设置表格内容居中显示
  private void setTableColumnCenter() {
    DefaultTableCellRenderer r = new DefaultTableCellRenderer();
    r.setHorizontalAlignment(JLabel.CENTER);
    table.setDefaultRenderer(Object.class, r);
  }
  // 设置表格隔行背景颜色不同
  private static void setbgcolor() {
    try {
      DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
            boolean hasFocus, int row, int column) {
          if (row % 2 == 0)
            setBackground(new Color(223, 220, 239)); // 设置奇数行底色
          else if (row % 2 == 1)
            setBackground(Color.white); // 设置偶数行底色
          return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        }
      };
      for (int i = 0; i < table.getColumnCount(); i++) {
        table.getColumn(table.getColumnName(i)).setCellRenderer(tcr);
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == jcbb1) {
      if (jcbb1.getSelectedIndex() == 0) {
        la5.setVisible(false);
        la6.setVisible(false);
        tx5.setVisible(false);
        tx6.setVisible(false);
        return;
      } else if (jcbb1.getSelectedIndex() == 1) {
        la5.setVisible(true);
        tx5.setVisible(true);
        la6.setVisible(false);
        tx6.setVisible(false);
        return;
      } else if (jcbb1.getSelectedIndex() == 2) {
        tx5.setVisible(false);
        la5.setVisible(false);
        tx6.setVisible(true);
        la6.setVisible(true);
        return;
      }
    }
    if (e.getSource() == save) { // 录入操作
      // 输入信息不能为空
      if (tx1.getText().equals("") || tx2.getText().equals("") || tx4.getText().equals("")) {
        JOptionPane.showMessageDialog(null, "请输入完整的科室信息!", "错误", JOptionPane.ERROR_MESSAGE);
      }
      // 编号为3位数字
      else if (tx1.getText().length() > 3 || pattern.matcher(tx1.getText()).matches() == false) {
        JOptionPane.showMessageDialog(null, "请输入正确的3位数科室编号!", "错误", JOptionPane.ERROR_MESSAGE);
      }
      // 名字长度不能超过20个字符
      else if (tx2.getText().length() > 10 || tx3.getText().length() > 10) {
        JOptionPane.showMessageDialog(null, "名字长度不能超过10个汉字!", "错误", JOptionPane.ERROR_MESSAGE);
      }
      // 电话号码为8位数字
      else if (pattern.matcher(tx4.getText()).matches() == false || tx4.getText().length() != 8) {
        JOptionPane.showMessageDialog(null, "请输入正确的8位数电话号码!", "错误", JOptionPane.ERROR_MESSAGE);
      }
      else {
        String deptNo = tx1.getText().trim();
        String deptName = tx2.getText();
        String deptPhone = tx4.getText().trim();
        try {
          DBUtil dbUtil = new DBUtil();
          Connection con = dbUtil.getConnection();
          Statement st1 = con.createStatement(); // 创建一个数据库会话对象
          Statement st2 = con.createStatement(); // 创建一个数据库会话对象
          Statement st3 = con.createStatement(); // 创建一个数据库会话对象
          ResultSet rs1 = st1.executeQuery("select * from Department where DeptNo='" + deptNo + "'"); // SQL语句
          ResultSet rs2 = st2.executeQuery("select * from Department where DeptName='" + deptName + "'");
          ResultSet rs3 = st3.executeQuery("select * from Department where DeptPhone='" + deptPhone + "'");
          if (rs1.next()) { // 判断结果集rs是否有记录,并且将指针后移一位
            JOptionPane.showMessageDialog(null, "该科室号已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE);
            st1.close();
          } else if (rs2.next()) {
            JOptionPane.showMessageDialog(null, "该科室名已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE);
            st2.close();
          } else if (rs3.next()) {
            JOptionPane.showMessageDialog(null, "该科室电话号码已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE);
            st3.close();
          }
          else {
            int ok = JOptionPane.showConfirmDialog(null, "是否保存该科室信息?", "确定", JOptionPane.YES_NO_OPTION,
                JOptionPane.INFORMATION_MESSAGE);
            if (ok == JOptionPane.YES_OPTION) {
              try {
                // 信息添加到数据库
                String sql = "INSERT INTO Department(DeptNo,DeptName,DrName,DeptPhone)VALUES(?,?,?,?)";
                PreparedStatement parepare = con.prepareStatement(sql);
                parepare.setString(1, tx1.getText());
                parepare.setString(2, tx2.getText());
                parepare.setString(3, tx3.getText());
                parepare.setString(4, tx4.getText());
                parepare.executeUpdate();
                String[] data = new String[] { tx1.getText(), tx2.getText(), tx3.getText(),
                    tx4.getText() };
                dtm.addRow(data); // 在表格添加一行刚添加的数据
                JOptionPane.showMessageDialog(null, "录入成功");
                tx1.setText("");
                tx2.setText("");
                tx3.setText("");
                tx4.setText("");
              } catch (Exception e1) {
                e1.printStackTrace();
                System.out.println("SQL Exception occur.Message is:");
                System.out.println(e1.getMessage());
              }
            }
          }
        } catch (Exception e2) {
          e2.printStackTrace();
        }
      }
    }
    if (e.getSource() == query) { // 查询操作
      try {
        DBUtil dbUtil = new DBUtil();
        Connection con = dbUtil.getConnection();
        if (jcbb1.getSelectedIndex() == 0) { // 全部查询
          String sql = "select * from Department";
          databaseSearch(sql);
          if (table.getRowCount() != 0) {
            JOptionPane.showMessageDialog(null, "查询成功!");
          } else {
            JOptionPane.showMessageDialog(null, "没有找到您要的信息!");
          }
        }
        if (jcbb1.getSelectedIndex() == 1) { // 编号查询
          if (tx5.getText().trim().equals("")) {
            JOptionPane.showMessageDialog(null, "请输入正确的科室编号!", "错误", JOptionPane.ERROR_MESSAGE);
          } else {
            String deptNo = tx5.getText().trim();
            String sql = "select * from Department where DeptNo like'%" + deptNo + "%'";
            databaseSearch(sql);
            if (table.getRowCount() != 0) {
              JOptionPane.showMessageDialog(null, "查询成功!");
              tx5.setText("");
            } else {
              JOptionPane.showMessageDialog(null, "没有找到您要的信息!");
            }
          }
        }
        if (jcbb1.getSelectedIndex() == 2) { // 名称查询
          if (tx6.getText().trim().equals("")) {
            JOptionPane.showMessageDialog(null, "请输入正确的科室名称!", "错误", JOptionPane.ERROR_MESSAGE);
          } else {
            String deptName = tx6.getText();
            String sql = "select * from Department where DeptName like '%" + deptName + "%'";
            databaseSearch(sql);
            if (table.getRowCount() != 0) {
              JOptionPane.showMessageDialog(null, "查询成功!");
              tx6.setText("");
            } else {
              JOptionPane.showMessageDialog(null, "没有找到您要的信息!");
            }
          }
        }
      } catch (Exception e1) {
        e1.printStackTrace();
      }
    }
    if (e.getSource() == delete) { // 删除操作
      try {
        DBUtil dbUtil = new DBUtil();
        Connection con = dbUtil.getConnection();
        Statement stmt = con.createStatement(); // 创建一个数据库会话对象
        int selectCount = table.getSelectedRowCount();
        if (selectCount == 0) {
          JOptionPane.showMessageDialog(null, "请选择您要删除的信息!");
        } else if (selectCount == 1) {
          int ok = JOptionPane.showConfirmDialog(null, "是否删除该科室信息?", "确定", JOptionPane.YES_NO_OPTION,
              JOptionPane.INFORMATION_MESSAGE);
          if (ok == JOptionPane.YES_OPTION) {
            int row = table.getSelectedRow();
            String deptNo = (String) table.getValueAt(row, 0);
            String sql = "delete from Department where DeptNo='" + deptNo + "'";
            stmt.executeUpdate(sql);
            dtm.removeRow(row);
            JOptionPane.showMessageDialog(null, "删除成功!");
          }
        } else {
          int ok = JOptionPane.showConfirmDialog(null, "是否删除所选" + selectCount + "个科室信息?", "确定",
              JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);
          if (ok == JOptionPane.YES_OPTION) {
            for (int i = 1; i <= selectCount; i++) {
              int row1 = table.getSelectedRow();
              String deptNo = (String) table.getValueAt(row1, 0);
              String sql = "delete from Department where DeptNo='" + deptNo + "'";
              stmt.executeUpdate(sql);
              dtm.removeRow(row1);
            }
            JOptionPane.showMessageDialog(null, "删除成功!");
          }
        }
      } catch (Exception e1) {
        e1.printStackTrace();
      }
    }
    // 修改操作设置
    if (e.getSource() == modify) {
      if (table.getSelectedRowCount() != 1) {
        JOptionPane.showMessageDialog(null, "请选择一项科室信息进行修改!", "错误", JOptionPane.ERROR_MESSAGE);
      } else {
        try {
          DBUtil dbUtil = new DBUtil();
          Connection con = dbUtil.getConnection();
          Statement stmt1 = con.createStatement(); // 创建一个数据库会话对象
          int row = table.getSelectedRow();
          String value0 = (String) table.getValueAt(row, 0);
          String value1 = (String) table.getValueAt(row, 1);
          String value2 = (String) table.getValueAt(row, 2);
          String value3 = (String) table.getValueAt(row, 3);
          DepartmentModify dig = new DepartmentModify();
          dig.tx1.setText(value0);
          dig.tx2.setText(value1);
          dig.tx3.setText(value2);
          dig.tx4.setText(value3);
          dig.s.setVisible(true);
        } catch (Exception e1) {
          e1.printStackTrace();
        }
      }
    }
  }
  // 把数据库数据传入表格
  public void databaseSearch(String SQL) {
    DBUtil dbUtil = new DBUtil();
    Connection con = dbUtil.getConnection();
    ResultSet rs;
    try {
      int rowcount = dtm.getRowCount() - 1;
      if (rowcount != -1) {
        for (int i1 = rowcount; i1 >= 0; i1--) {
          dtm.removeRow(i1);
        }
        dtm.setRowCount(0);
      }
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(SQL);
      String[] data = new String[4];
      while (rs.next()) {
        for (int j = 1; j <= 4; j++) {
          data[j - 1] = rs.getString(j);
        }
        dtm.addRow(data);
      }
      con.close();
    } catch (Exception err) {
      String error = err.getMessage();
      JOptionPane.showMessageDialog(null, error);
      err.printStackTrace();
    } finally {
      dbUtil.close();
    }
  }
  // 科室信息修改操作对话框设置++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  class DepartmentModify implements ActionListener {
    public JDialog s = new JDialog();
    public JLabel la1, la2, la3, la4;
    public JTextField tx1, tx2, tx3, tx4, txWait;
    public JButton confirm, cancel;
    public Font laFont = new Font("宋体", Font.BOLD, 15);
    public int row = table.getSelectedRow();
    public DepartmentModify() {
      ImageIcon background = new ImageIcon("picture/right_bg.jpg");
      JLabel label = new JLabel(background);
      s.setModal(true);
      s.setSize(500, 250);
      s.setResizable(false);
      s.setLocationRelativeTo(null);
      s.setLayout(null);
      la1 = new JLabel("科室编号:");
      la2 = new JLabel("科室名称:");
      la3 = new JLabel("科室主任:");
      la4 = new JLabel("科室电话:");
      tx1 = new JTextField();
      tx2 = new JTextField();
      tx3 = new JTextField();
      tx4 = new JTextField();
      txWait = new JTextField();
      confirm = new JButton("确定");
      cancel = new JButton("取消");
      tx1.setEditable(false);
      la1.setBounds(30, 30, 100, 40);
      la1.setFont(laFont);
      la2.setBounds(250, 30, 100, 40);
      la2.setFont(laFont);
      la3.setBounds(30, 90, 100, 40);
      la3.setFont(laFont);
      la4.setBounds(250, 90, 100, 40);
      la4.setFont(laFont);
      tx1.setBounds(110, 35, 120, 30);
      tx1.setFont(laFont);
      tx2.setBounds(330, 35, 120, 30);
      tx2.setFont(laFont);
      tx3.setBounds(110, 95, 120, 30);
      tx3.setFont(laFont);
      tx4.setBounds(330, 95, 120, 30);
      tx4.setFont(laFont);
      confirm.setBounds(110, 150, 100, 40);
      cancel.setBounds(330, 150, 100, 40);
      s.add(la1);
      s.add(la2);
      s.add(la3);
      s.add(la4);
      s.add(tx1);
      s.add(tx2);
      s.add(tx3);
      s.add(tx4);
      s.add(confirm);
      s.add(cancel);
      confirm.addActionListener(this);
      cancel.addActionListener(this);
      s.add(label);
      label.setBounds(0, 0, 500, 250);
    }
    public void actionPerformed(ActionEvent e) {
      if (e.getSource() == cancel) {
        s.dispose();
      }
      if (e.getSource() == confirm) {
        int ok = JOptionPane.showConfirmDialog(null, "是否修改该科室信息?", "确定", JOptionPane.YES_NO_OPTION,
            JOptionPane.INFORMATION_MESSAGE);
        if (ok == JOptionPane.YES_OPTION) {
          try {
            DBUtil dbUtil = new DBUtil();
            Connection con = dbUtil.getConnection();
            Statement stmt = con.createStatement(); // 创建一个数据库会话对象
            // 输入信息不能为空
            if (tx2.getText().equals("") || tx4.getText().equals("")) {
              JOptionPane.showMessageDialog(null, "请输入完整的科室信息!", "错误", JOptionPane.ERROR_MESSAGE);
            }
            // 编号为3位数字
            else if (tx1.getText().length() > 3 || pattern.matcher(tx1.getText()).matches() == false) {
              JOptionPane.showMessageDialog(null, "请输入正确的3位数科室编号!", "错误", JOptionPane.ERROR_MESSAGE);
            }
            // 名字长度不能超过20个字符
            else if (tx2.getText().length() > 10 || tx3.getText().length() > 10) {
              JOptionPane.showMessageDialog(null, "名字长度不能超过10个汉字!", "错误", JOptionPane.ERROR_MESSAGE);
            }
            // 电话号码为8位数字
            else if (pattern.matcher(tx4.getText()).matches() == false || tx4.getText().length() != 8) {
              JOptionPane.showMessageDialog(null, "请输入正确的8位数电话号码!", "错误", JOptionPane.ERROR_MESSAGE);
            }
            else {
              int row2 = table.getSelectedRow();
              String sql = "update Department   set DeptName='" + tx2.getText().trim() + "',DrName='"
                  + tx3.getText().trim() + "',DeptPhone='" + tx4.getText().trim() + "'where DeptNo='"
                  + tx1.getText().trim() + "'  ";
              stmt.executeUpdate(sql);
              String[] data = new String[] { tx1.getText(), tx2.getText(), tx3.getText(), tx4.getText() };
              dtm.removeRow(row2);
              dtm.insertRow(row2, data);
              JOptionPane.showMessageDialog(null, "修改成功");
              s.dispose();
            }
          } catch (Exception e1) {
            e1.printStackTrace();
          }
        }
      }
    }
  }
}

DoctorInput.java

package com.sjsq;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.regex.Pattern;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class DoctorInput extends JFrame implements ActionListener {
  JPanel doctorInput = new JPanel();
  private JLabel inputTitle = new JLabel("医生档案信息录入");
  private JLabel la1, la2, la3, la4, la5, la6, la7, la8, la9, la10, la11;
  private JTextField tx1, tx2, tx8, tx10;
  private JPasswordField tx11;
  public JButton save, clean;
  private JComboBox sex, age, position, educated, department;
  private String str3[], str4[], str5[], str6[], str7[];
  private final String columnNames[];
  private JTextField showDate1 = new JTextField("单击选择日期");
  private Timedate dateChooser1 = Timedate.getInstance("yyyy-MM-dd");
  private Font laFont = new Font("宋体", Font.BOLD, 15);
  private JScrollPane JScrollPane1 = new JScrollPane();
  private static JTable table;
  private static DefaultTableModel dtm;
  private java.sql.Connection con = null;
  private Pattern pattern = Pattern.compile("[0-9]*");
  public DoctorInput() {
    // 医生信息录入界面设置
    doctorInput.setLayout(null);
    ImageIcon background = new ImageIcon("picture/right_bg.jpg"); // 背景图片
    JLabel label = new JLabel(background);
    inputTitle.setFont(new Font("宋体", Font.BOLD, 50));
    inputTitle.setBounds(60, 10, 1000, 50);
    doctorInput.add(inputTitle);
    // 录入操作面板设置
    final JPanel panel = new JPanel();
    panel.setLayout(null);
    panel.setBorder(new TitledBorder(null, "录入操作", TitledBorder.DEFAULT_JUSTIFICATION,
        TitledBorder.DEFAULT_POSITION, null, Color.red));
    panel.setBounds(60, 310, 950, 200);
    panel.setOpaque(false);
    la1 = new JLabel("医生编号:"); // 标签设置
    la2 = new JLabel("医生姓名:");
    la3 = new JLabel("性别:");
    la4 = new JLabel("年龄:");
    la5 = new JLabel("职称:");
    la6 = new JLabel("学历:");
    la7 = new JLabel("所属科室:");
    la8 = new JLabel("籍贯:");
    la9 = new JLabel("入职日期:");
    la10 = new JLabel("电话号码:");
    la11 = new JLabel("系统密码:");
    la1.setBounds(30, 20, 100, 40);
    la1.setFont(laFont);
    la2.setBounds(300, 20, 100, 40);
    la2.setFont(laFont);
    la3.setBounds(570, 20, 100, 40);
    la3.setFont(laFont);
    la4.setBounds(750, 20, 100, 40);
    la4.setFont(laFont);
    la5.setBounds(30, 70, 100, 40);
    la5.setFont(laFont);
    la6.setBounds(210, 70, 100, 40);
    la6.setFont(laFont);
    la7.setBounds(390, 70, 100, 40);
    la7.setFont(laFont);
    la8.setBounds(640, 70, 100, 40);
    la8.setFont(laFont);
    la9.setBounds(30, 120, 100, 40);
    la9.setFont(laFont);
    la10.setBounds(300, 120, 100, 40);
    la10.setFont(laFont);
    la11.setBounds(570, 120, 100, 40);
    la11.setFont(laFont);
    tx1 = new JTextField();
    tx1.setBounds(110, 25, 150, 30);
    tx1.setFont(laFont);
    tx2 = new JTextField();
    tx2.setBounds(380, 25, 150, 30);
    tx2.setFont(laFont);
    tx8 = new JTextField();
    tx8.setBounds(690, 75, 150, 30);
    tx8.setFont(laFont);
    tx10 = new JTextField();
    tx10.setBounds(380, 125, 150, 30);
    tx10.setFont(laFont);
    tx11 = new JPasswordField();
    tx11.setBounds(650, 125, 150, 30);
    tx11.setFont(laFont);
    save = new JButton("保存");
    clean = new JButton("清空");
    save.setBounds(630, 163, 150, 30);
    clean.setBounds(780, 163, 150, 30);
    // 性别下拉框设置
    str3 = new String[] { "", "男", "女" };
    sex = new JComboBox(str3);
    sex.setBounds(620, 25, 100, 25);
    sex.setFont(laFont);
    // 年龄下拉框设置
    str4 = new String[54];
    str4[0] = "";
    for (int i = 1; i <= 53; i++) {
      str4[i] = String.valueOf(i + 17);
    }
    age = new JComboBox(str4);
    age.setBounds(800, 25, 100, 25);
    age.setFont(laFont);
    // 职称下拉框设置
    str5 = new String[] { "", "医师", "主治医师", "副主任医师", "主任医师" };
    position = new JComboBox(str5);
    position.setBounds(80, 75, 100, 25);
    position.setFont(laFont);
    // 学历下拉框设置
    str6 = new String[] { "", "大专", "本科", "硕士", "博士", "博士后" };
    educated = new JComboBox(str6);
    educated.setBounds(260, 75, 100, 25);
    educated.setFont(laFont);
    // 所属科室下拉框设置
    str7 = new String[] { "" };
    department = new JComboBox(str7);
    DBUtil dbUtil = new DBUtil();
    try {
      Connection con = dbUtil.getConnection();
      Statement stmt = con.createStatement(); // 创建一个数据库会话对象
      String sql = "select * from Department";
      ResultSet rs = stmt.executeQuery(sql);
      while (rs.next()) {
        department.addItem(rs.getString("DeptName"));
      }
      stmt.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
    department.setBounds(470, 75, 125, 25);
    department.setFont(laFont);
    // 入职时间设置
    showDate1.setFont(new Font("", 1, 20));
    dateChooser1.register(showDate1);
    panel.add(showDate1);
    showDate1.setBounds(110, 125, 150, 30);
    // 表格设置
    columnNames = new String[] { "医生编号", "医生姓名", "性别", "年龄", "职称", "学历", "所属科室", "籍贯", "入职日期", "电话号码" };
    defaultTableModel();
    setTableColumnCenter();
    setbgcolor();
    JScrollPane1.setBounds(new Rectangle(60, 70, 935, 230));
    doctorInput.add(JScrollPane1);
    JScrollPane1.setViewportView(table); // 创建一个视口(如果有必要)并设置其视图
    table.getTableHeader().setReorderingAllowed(false); // 列不可拖动
    table.getTableHeader().setResizingAllowed(false); // 列宽不能改变
    String sql = "select * from Doctor";
    databaseSearch(sql);
    // 组件添加
    panel.add(la1);
    panel.add(la2);
    panel.add(la3);
    panel.add(la4);
    panel.add(la5);
    panel.add(la6);
    panel.add(la7);
    panel.add(la8);
    panel.add(la9);
    panel.add(la10);
    panel.add(la11);
    panel.add(tx1);
    panel.add(tx2);
    panel.add(sex);
    panel.add(age);
    panel.add(position);
    panel.add(educated);
    panel.add(department);
    panel.add(tx8);
    panel.add(tx10);
    panel.add(tx11);
    panel.add(save);
    panel.add(clean);
    // 添加监听器
    save.addActionListener(this);
    clean.addActionListener(this);
    doctorInput.add(panel);
    doctorInput.add(label); // 添加背景
    label.setBounds(0, 0, 1100, 700);
  }
  // 数据库数据录入到表格中
  private void databaseSearch(String sql) {
    // TODO Auto-generated method stub
    DBUtil dbUtil = new DBUtil();
    Connection con = dbUtil.getConnection();
    ResultSet rs;
    try {
      int rowcount = dtm.getRowCount() - 1;
      if (rowcount != -1) {
        for (int i1 = rowcount; i1 >= 0; i1--) {
          dtm.removeRow(i1);
        }
        dtm.setRowCount(0);
      }
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(sql);
      String[] data = new String[11];
      while (rs.next()) {
        for (int j = 1; j <= 11; j++) {
          data[j - 1] = rs.getString(j);
        }
        dtm.addRow(data);
      }
      con.close();
    } catch (Exception err) {
      String error = err.getMessage();
      JOptionPane.showMessageDialog(null, error);
      err.printStackTrace();
    } finally {
      dbUtil.close();
    }
  }
  // 设置表格不可编辑
  public void defaultTableModel() {
    dtm = new DefaultTableModel(columnNames, 0);
    table = new JTable(dtm) {
      public boolean isCellEditable(int row, int column) {
        return false;
      }
    };
  }
  // 设置表格内容居中显示
  public void setTableColumnCenter() {
    DefaultTableCellRenderer r = new DefaultTableCellRenderer();
    r.setHorizontalAlignment(JLabel.CENTER);
    table.setDefaultRenderer(Object.class, r);
  }
  // 设置表格隔行背景颜色不同
  public static void setbgcolor() {
    try {
      DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
            boolean hasFocus, int row, int column) {
          if (row % 2 == 0)
            setBackground(new Color(223, 220, 239)); // 设置奇数行底色
          else if (row % 2 == 1)
            setBackground(Color.white); // 设置偶数行底色
          return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        }
      };
      for (int i = 0; i < table.getColumnCount(); i++) {
        table.getColumn(table.getColumnName(i)).setCellRenderer(tcr);
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == clean) {
      tx1.setText("");
      tx2.setText("");
      tx8.setText("");
      tx10.setText("");
      tx11.setText("");
      sex.setSelectedIndex(0);
      age.setSelectedIndex(0);
      position.setSelectedIndex(0);
      educated.setSelectedIndex(0);
      department.setSelectedIndex(0);
      showDate1.setText("单击选择日期");
    }
    if (e.getSource() == save) {
      if (tx1.getText().equals("") || tx2.getText().equals("") || tx8.getText().equals("")
          || tx10.getText().equals("") || tx11.getText().equals("") || sex.getSelectedIndex() == 0
          || age.getSelectedIndex() == 0 || position.getSelectedIndex() == 0
          || educated.getSelectedIndex() == 0 || department.getSelectedIndex() == 0
          || showDate1.getText().equals("单击选择日期")) {
        JOptionPane.showMessageDialog(null, "请输完整的医生信息!", "错误", JOptionPane.ERROR_MESSAGE);
      } else if (tx1.getText().length() != 4 || pattern.matcher(tx1.getText()).matches() == false) {
        JOptionPane.showMessageDialog(null, "请输入4位数医生编号!", "错误", JOptionPane.ERROR_MESSAGE);
      } else if (tx2.getText().length() > 10) {
        JOptionPane.showMessageDialog(null, "名字长度不能超过10个汉字!", "错误", JOptionPane.ERROR_MESSAGE);
      } else if (tx8.getText().length() > 10) {
        JOptionPane.showMessageDialog(null, "籍贯长度不能超过10个汉字!", "错误", JOptionPane.ERROR_MESSAGE);
      } else if (tx10.getText().length() != 11 || pattern.matcher(tx10.getText()).matches() == false) {
        JOptionPane.showMessageDialog(null, "请输入11位数手机号码!", "错误", JOptionPane.ERROR_MESSAGE);
      } else if (tx11.getText().length() < 6 || tx11.getText().length() > 8
          || pattern.matcher(tx11.getText()).matches() == false) {
        JOptionPane.showMessageDialog(null, "请输入6-8位数字密码!", "错误", JOptionPane.ERROR_MESSAGE);
      } else {
        String DrId = tx1.getText();
        try {
          DBUtil dbUtil = new DBUtil();
          Connection con = dbUtil.getConnection();
          Statement stmt = con.createStatement(); // 创建一个数据库会话对象
          ResultSet rs = stmt.executeQuery("select * from Doctor where DrId='" + DrId + "'"); // SQL语句
          if (rs.next()) {
            JOptionPane.showMessageDialog(null, "该医生编号已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE);
            rs.close();
          } else {
            int ok = JOptionPane.showConfirmDialog(null, "是否保存该医生信息?", "确定", JOptionPane.YES_NO_OPTION,
                JOptionPane.INFORMATION_MESSAGE);
            if (ok == JOptionPane.YES_OPTION) {
              // 添加信息到数据库
              String sql = "INSERT INTO Doctor(DrId,DrName,DrSex,DrAge,DrPos,DrEdu,DeptName,DrNative,DrDate,DrPhone,Password)VALUES(?,?,?,?,?,?,?,?,?,?,?)";
              PreparedStatement parepare = con.prepareStatement(sql);
              parepare.setString(1, tx1.getText());
              parepare.setString(2, tx2.getText());
              parepare.setString(3, sex.getSelectedItem().toString());
              parepare.setString(4, age.getSelectedItem().toString());
              parepare.setString(5, position.getSelectedItem().toString());
              parepare.setString(6, educated.getSelectedItem().toString());
              parepare.setString(7, department.getSelectedItem().toString());
              parepare.setString(8, tx8.getText());
              parepare.setString(9, showDate1.getText());
              parepare.setString(10, tx10.getText());
              parepare.setString(11, tx11.getText());
              parepare.executeUpdate();
              String data[] = new String[] { tx1.getText(), tx2.getText(),
                  sex.getSelectedItem().toString(), age.getSelectedItem().toString(),
                  position.getSelectedItem().toString(), educated.getSelectedItem().toString(),
                  department.getSelectedItem().toString(), tx8.getText(), showDate1.getText(),
                  tx10.getText(), tx11.getText() };
              dtm.addRow(data); // 在表格添加一行刚添加的数据
              JOptionPane.showMessageDialog(null, "录入成功");
              tx1.setText("");
              tx2.setText("");
              tx8.setText("");
              tx10.setText("");
              tx11.setText("");
              sex.setSelectedIndex(0);
              age.setSelectedIndex(0);
              position.setSelectedIndex(0);
              educated.setSelectedIndex(0);
              department.setSelectedIndex(0);
              showDate1.setText("单击选择日期");
            }
          }
        } catch (Exception e1) {
          e1.printStackTrace();
        }finally {
        }
      }
    }
  }
}

Drug.java

package com.sjsq;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.regex.Pattern;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class Drug extends JFrame implements ActionListener {
  JPanel chufangInput = new JPanel();
  private JButton button1, button2, button3, button4, button5, button6, button7, button8;
  private JLabel inputTitle = new JLabel("处方单录入");
  private JLabel la0, la1, la2, la3, la4, la5, la6, la7, la8;
  private Font laFont = new Font("宋体", Font.BOLD, 15);
  private Pattern pattern = Pattern.compile("[0-9]*");
  private Connection con = null;
  private JLabel t1, t2;
  private static JTable table1, table2, table3, table4, table5;
  private static DefaultTableModel dtm1, dtm2, dtm3, dtm4, dtm5;
  private JScrollPane JScrollPane = new JScrollPane();
  private JScrollPane JScrollPane1 = new JScrollPane();
  private JScrollPane JScrollPane4 = new JScrollPane();
  private JScrollPane JScrollPane5 = new JScrollPane();
  private String columnNames1[] = { "编码", "名称", "单价", "数量", "计数单位", "类别", "病例编码" };
  private String columnNames2[] = { "编码", "名称", "单价", "计数单位", "类别" };
  private String columnNames3[] = { "病例编码", "病人编号", "病人姓名" };
  private JTextField tx1, tx2, tx3, tx4, tx5;
  private JComboBox box1, box2, box5;
  public Drug() {
    DBUtil dbUtil = new DBUtil();
    chufangInput.setLayout(null);
    dtm1 = new DefaultTableModel(columnNames1, 0) {// dtm2是项目收费表格模版
      public boolean isCellEditable(int row, int column) {
        if (column == 1 || column == 3)
          return true;// 这个是可以编辑的列
        // if(rowIndex!=0) return false;
        return false;
      }// 表格不允许被编辑 }
    };
    String fontSize1[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "12" };
    table1 = new JTable(dtm1);// JScrollPane4 项目表
    JScrollPane JScrollPane = new JScrollPane(table1);
    TableColumn a1 = table1.getColumn("名称");
    TableColumn a2 = table1.getColumn("数量");
    JTextField box3 = new JTextField();
    box2 = new JComboBox(fontSize1);
    box3.getDocument().addDocumentListener(new DocumentListener() {
      @Override
      public void removeUpdate(DocumentEvent e) {
        updata_combobox();
      }
      @Override
      public void insertUpdate(DocumentEvent e) {
        updata_combobox();
      }
      @Override
      public void changedUpdate(DocumentEvent e) {
        updata_combobox();
      }
      private void updata_combobox() {
        String s1 = null;
        s1 = box3.getText();
        System.out.println(s1);
        JScrollPane1.setVisible(true);
        String sql = "select * from Price where PeName like  '%" + s1 + "%'and PeClass='其他类'";
        databaseSearch1(sql, 5);
      }
    });
    box3.setEditable(true);
    DefaultCellEditor dce2 = new DefaultCellEditor(box3);
    a1.setCellEditor(dce2);
    box2.setEditable(true);
    box2.setMaximumRowCount(5);
    DefaultCellEditor dce3 = new DefaultCellEditor(box2);
    a2.setCellEditor(dce3);
    box2.addActionListener(this);
    dtm2 = new DefaultTableModel(columnNames2, 0);// 项目明细表
    table2 = new JTable(dtm2) {
      public boolean isCellEditable(int row, int column) {
        return false;
      }// 表格不允许被编辑 }
    };
    String sql = "select * from Price where PeClass='其他类'";
    databaseSearch1(sql, 5);
    JScrollPane1.setViewportView(table2);
    chufangInput.add(JScrollPane1);
    JScrollPane1.setBounds(70, 150, 400, 100);
    JScrollPane1.setVisible(false);
    // 设置用药表
    dtm3 = new DefaultTableModel(columnNames1, 0) {// dtm3是药物收费表格模版
      public boolean isCellEditable(int row, int column) {
        if (column == 1 || column == 3)
          return true;// 这个是可以编辑的列
        // if(rowIndex!=0) return false;
        return false;
      }// 表格不允许被编辑 }
    };
    table3 = new JTable(dtm3);//
    JScrollPane JScrollPane3 = new JScrollPane(table3);
    TableColumn b1 = table3.getColumn("名称");
    TableColumn b2 = table3.getColumn("数量");
    JTextField box4 = new JTextField();
    box5 = new JComboBox(fontSize1);
    box4.getDocument().addDocumentListener(new DocumentListener() {
      @Override
      public void removeUpdate(DocumentEvent e) {
        updata_combobox();
      }
      @Override
      public void insertUpdate(DocumentEvent e) {
        updata_combobox();
      }
      @Override
      public void changedUpdate(DocumentEvent e) {
        updata_combobox();
      }
      private void updata_combobox() {
        String s1 = null;
        s1 = box4.getText();
        JScrollPane4.setVisible(true);
        String sql1 = "select * from Price where PeName like '%" + s1 + "%' and PeClass='诊断类'or PeName like '%"
            + s1 + "%' and PeClass='药品类'";
        databaseSearch2(sql1, 5);
      }
    });
    dtm4 = new DefaultTableModel(columnNames2, 0);// 药物明细表
    table4 = new JTable(dtm4) {
      public boolean isCellEditable(int row, int column) {
        return false;
      }// 表格不允许被编辑 }
    };
    String sql1 = "select * from Price where PeClass='诊断类'or PeClass='药品类'";
    databaseSearch2(sql1, 5);
    JScrollPane4.setViewportView(table4);
    chufangInput.add(JScrollPane4);
    JScrollPane4.setBounds(550, 150, 400, 100);
    JScrollPane4.setVisible(false);
    box4.setEditable(true);
    DefaultCellEditor dce1 = new DefaultCellEditor(box4);
    b1.setCellEditor(dce1);
    box2.setEditable(true);
    box2.setMaximumRowCount(5);
    DefaultCellEditor dce0 = new DefaultCellEditor(box5);
    b2.setCellEditor(dce0);
    dtm5 = new DefaultTableModel(columnNames3, 0);// 项目明细表
    table5 = new JTable(dtm5) {
      public boolean isCellEditable(int row, int column) {
        return false;
      }// 表格不允许被编辑 }
    };
    String sql2 = "select * from Medical_records where MrId not in(select MrId from DrugTable)";
    databaseSearch3(sql2, 3);
    JScrollPane5.setViewportView(table5);
    chufangInput.add(JScrollPane5);
    JScrollPane5.setBounds(120, 100, 300, 100);
    JScrollPane5.setVisible(false);
    // 设置背景
    ImageIcon background = new ImageIcon("picture/right_bg.jpg");
    JLabel label = new JLabel(background);
    inputTitle.setFont(new Font("宋体", Font.BOLD, 30));
    inputTitle.setBounds(60, 10, 1000, 50);
    chufangInput.add(inputTitle);
    ;
    // 设置控件
    la1 = new JLabel("病例编号:");
    la2 = new JLabel("病人编号:");
    la3 = new JLabel("病人姓名:");
    t1 = new JLabel("项目单");
    t2 = new JLabel("药物单");
    tx1 = new JTextField();
    tx2 = new JTextField();
    tx3 = new JTextField();
    button1 = new JButton("增加");
    button2 = new JButton("确定");
    button3 = new JButton("修改");
    button4 = new JButton("删除");
    button5 = new JButton("增加");
    button6 = new JButton("确定");
    button7 = new JButton("修改");
    button8 = new JButton("删除");
    button2.addActionListener(this);
    button6.addActionListener(this);
    // 给按钮添加监听事件
    button1.addActionListener(new ActionListener() {// 添加事件
      public void actionPerformed(ActionEvent e) {
        String[] da1 = { "", "" };
        String[] rowValues = da1;
        dtm1.addRow(rowValues); // 添加一行
        button1.setEnabled(false);
      }
    });
    button5.addActionListener(new ActionListener() {// 药物表添加事件
      public void actionPerformed(ActionEvent e) {
        String[] da = { "", "" };
        String[] rowValues = da;
        dtm3.addRow(rowValues); // 添加一行
        button5.setEnabled(false);
      }
    });
    button4.addMouseListener(new MouseAdapter() { // 删除按钮实现删除记录的功能
      public void mouseClicked(MouseEvent e) {
        int row = table1.getSelectedRow();// 这句选择要删除的行
        Connection con;
        con = dbUtil.getConnection();
        Statement stmt;
        String val = (String) table1.getValueAt(row, 6);
        String val1 = (String) table1.getValueAt(row, 0);
        String sql = "delete from DrugTable where MrId='" + val + "'and PeNo='" + val1 + "'";
        try {
          stmt = con.createStatement();
          stmt.executeUpdate(sql);
          button1.setEnabled(true);
        } catch (SQLException e1) {
          // TODO Auto-generated catch block
          e1.printStackTrace();
        }
        if (row != -1) { // 这句判断是否有选中的行
          dtm1.removeRow(row);
        } // 这句删除指定行
      }
    });
    button8.addMouseListener(new MouseAdapter() { // 删除按钮实现删除记录的功能
      public void mouseClicked(MouseEvent e) {
        int row = table3.getSelectedRow();// 这句选择要删除的行
        Connection con;
        con = dbUtil.getConnection();
        Statement stmt;
        String val = (String) table3.getValueAt(row, 6);
        String val1 = (String) table3.getValueAt(row, 0);
        String sql = "delete from DrugTable where MrId='" + val1 + "'and PeNo='" + val + "'";
        try {
          stmt = con.createStatement();
          stmt.executeUpdate(sql);
          button5.setEnabled(true);
        } catch (SQLException e1) {
          // TODO Auto-generated catch block
          e1.printStackTrace();
        }
        if (row != -1) { // 这句判断是否有选中的行
          dtm3.removeRow(row);
        } // 这句删除指定行
      }
    });
    box3.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件
      public void mouseClicked(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
          JScrollPane1.setVisible(true);
      }
    });
    box4.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件
      public void mouseClicked(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
          JScrollPane4.setVisible(true);
      }
    });
    table2.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件
      public void mouseClicked(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
          if (e.getClickCount() == 2) {
            String xingming = tx1.getText();
            int o = table2.getSelectedRow();
            int row = table1.getSelectedRow();
            String ao = (String) table2.getValueAt(o, 1);
            String bo = (String) table2.getValueAt(o, 0);
            String co = (String) table2.getValueAt(o, 2);
            String do1 = (String) table2.getValueAt(o, 3);
            String eo = (String) table2.getValueAt(o, 4);
            box3.setText(ao);
            table1.setValueAt(bo, row, 0);
            table1.setValueAt(do1, row, 4);
            table1.setValueAt(co, row, 2);
            table1.setValueAt(eo, row, 5);
            table1.setValueAt(xingming, row, 6);
            JScrollPane1.setVisible(false);
          }
      }
    });
    tx1.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件
      public void mouseClicked(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
          JScrollPane5.setVisible(true);
      }
    });
    tx1.getDocument().addDocumentListener(new DocumentListener() {
      @Override
      public void removeUpdate(DocumentEvent e) {
        updata_combobox();
      }
      @Override
      public void insertUpdate(DocumentEvent e) {
        updata_combobox();
      }
      @Override
      public void changedUpdate(DocumentEvent e) {
        updata_combobox();
      }
      private void updata_combobox() {
        String s1 = null;
        s1 = tx1.getText();
        JScrollPane5.setVisible(true);
        String sql2 = "select * from Medical_records where MrId like '%" + s1
            + "%'and MrId not in(select MrId from DrugTable)";
        databaseSearch3(sql2, 3);
      }
    });
    table4.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件
      public void mouseClicked(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
          if (e.getClickCount() == 2) {
            String xingming = tx1.getText();
            int o = table4.getSelectedRow();
            int row = table3.getSelectedRow();
            String ao = (String) table4.getValueAt(o, 1);
            String bo = (String) table4.getValueAt(o, 0);
            String co = (String) table4.getValueAt(o, 2);
            String do1 = (String) table4.getValueAt(o, 3);
            String eo = (String) table4.getValueAt(o, 4);
            box4.setText(ao);
            table3.setValueAt(bo, row, 0);
            table3.setValueAt(do1, row, 4);
            table3.setValueAt(co, row, 2);
            table3.setValueAt(eo, row, 5);
            table3.setValueAt(xingming, row, 6);
            JScrollPane4.setVisible(false);
          }
      }
    });
    table5.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件
      public void mouseClicked(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
          if (e.getClickCount() == 2) {
            int o = table5.getSelectedRow();
            String ao = (String) table5.getValueAt(o, 1);
            String bo = (String) table5.getValueAt(o, 0);
            String co = (String) table5.getValueAt(o, 2);
            tx1.setText(bo);
            tx2.setText(ao);
            tx3.setText(co);
            JScrollPane5.setVisible(false);
          }
      }
    });
    // 添加控件到面板以及设置控件位置
    chufangInput.add(la1);
    chufangInput.add(la2);
    chufangInput.add(la3);
    chufangInput.add(tx1);
    chufangInput.add(tx2);
    chufangInput.add(tx3);
    chufangInput.add(button1);
    chufangInput.add(button2);
    chufangInput.add(button3);
    chufangInput.add(button4);
    chufangInput.add(button5);
    chufangInput.add(button6);
    chufangInput.add(button7);
    chufangInput.add(button8);
    chufangInput.add(t1);
    chufangInput.add(t2);
    button1.setBounds(460, 250, 70, 50);
    button2.setBounds(460, 300, 70, 50);
    button3.setBounds(460, 350, 70, 50);
    button4.setBounds(460, 400, 70, 50);
    button5.setBounds(950, 250, 70, 50);
    button6.setBounds(950, 300, 70, 50);
    button7.setBounds(950, 350, 70, 50);
    button8.setBounds(950, 400, 70, 50);
    t1.setBounds(50, 200, 100, 50);
    t2.setBounds(520, 200, 100, 50);
    la1.setBounds(50, 70, 100, 40);
    la2.setBounds(300, 70, 100, 40);
    la3.setBounds(500, 70, 100, 40);
    tx1.setBounds(120, 75, 100, 30);
    tx2.setBounds(370, 75, 100, 30);
    tx3.setBounds(570, 75, 100, 30);
    chufangInput.add(JScrollPane);
    JScrollPane.setBounds(60, 250, 400, 200);
    chufangInput.add(JScrollPane3);
    JScrollPane3.setBounds(550, 250, 400, 200);
    chufangInput.add(label);
    label.setBounds(0, 0, 1100, 700);
  }
  private void databaseSearch3(String sql2, int i) {
    // TODO Auto-generated method stub
    Connection con;
    DBUtil dbUtil = new DBUtil();
    con = dbUtil.getConnection();
    ResultSet rs;
    try {
      int rowcount = dtm5.getRowCount() - 1;
      if (rowcount != -1) {
        for (int i1 = rowcount; i1 >= 0; i1--) {
          dtm5.removeRow(i1); // 删除Jtable中的所有行
        }
        dtm5.setRowCount(0); // 将Jtable中的行数设为零
      }
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(sql2);
      String[] data = new String[3];
      while (rs.next()) {
        for (int j = 1; j <= 3; j++) {
          data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中
        }
        dtm5.addRow(data); // 在Jtabl
      }
      con.close();
      // 设置表格隔行背景色(隔行背景色不同)
    } catch (Exception err) {
    }
  }
  private void databaseSearch2(String sql1, int i) {
    // TODO Auto-generated method stub
    DBUtil dbUtil = new DBUtil();
    con = dbUtil.getConnection();
    ResultSet rs;
    try {
      int rowcount = dtm4.getRowCount() - 1;
      if (rowcount != -1) {
        for (int i1 = rowcount; i1 >= 0; i1--) {
          dtm4.removeRow(i1); // 删除Jtable中的所有行
        }
        dtm4.setRowCount(0); // 将Jtable中的行数设为零
      }
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(sql1);
      String[] data = new String[5];
      while (rs.next()) {
        for (int j = 1; j <= 5; j++) {
          data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中
        }
        dtm4.addRow(data); // 在Jtabl
      }
      con.close();
      // 设置表格隔行背景色(隔行背景色不同)
    } catch (Exception err) {
    }
  }
  private void databaseSearch1(String sql, int i) {
    // TODO Auto-generated method stub
    DBUtil dbUtil = new DBUtil();
    con = dbUtil.getConnection();
    ResultSet rs;
    try {
      int rowcount = dtm2.getRowCount() - 1;
      if (rowcount != -1) {
        for (int i1 = rowcount; i1 >= 0; i1--) {
          dtm2.removeRow(i1); // 删除Jtable中的所有行
        }
        dtm2.setRowCount(0); // 将Jtable中的行数设为零
      }
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(sql);
      String[] data = new String[5];
      while (rs.next()) {
        for (int j = 1; j <= 5; j++) {
          data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中
        }
        dtm2.addRow(data); // 在Jtabl
      }
      con.close();
      // 设置表格隔行背景色(隔行背景色不同)
    } catch (Exception err) {
    }
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if (e.getSource() == button2) {
      try {
        String s = (String) box2.getSelectedItem();
        int i = Integer.valueOf(s).intValue();
        DBUtil dbUtil = new DBUtil();
        Connection con;
        con = dbUtil.getConnection();
        int row = table1.getSelectedRow();
        String sql = "INSERT INTO DrugTable(PeNo,PeName,PePrice,PeNumber,PeUnit,PeClass,MrId)VALUES(?,?,?,?,?,?,?)";
        PreparedStatement parepare = con.prepareStatement(sql);
        parepare.setString(1, (String) table1.getValueAt(row, 0));
        parepare.setString(2, (String) table1.getValueAt(row, 1));
        parepare.setString(3, (String) table1.getValueAt(row, 2));
        parepare.setString(4, (String) table1.getValueAt(row, 3));
        parepare.setString(5, (String) table1.getValueAt(row, 4));
        parepare.setString(6, (String) table1.getValueAt(row, 5));
        parepare.setString(7, (String) table1.getValueAt(row, 6));
        String w = (String) table1.getValueAt(row, 3);
        String w1 = (String) table1.getValueAt(row, 1);
        if (table1.getValueAt(row, 0).equals("")) {
          JOptionPane.showMessageDialog(null, "请输入完整信息", "错误", JOptionPane.INFORMATION_MESSAGE);
        } else if (w1 == "") {
          JOptionPane.showMessageDialog(null, "请输入药物名称", "错误", JOptionPane.INFORMATION_MESSAGE);
        } else if (i <= 0 || w == null) {
          JOptionPane.showMessageDialog(null, "数量不能为空或者小于0", "错误", JOptionPane.INFORMATION_MESSAGE);
        } else {
          parepare.executeUpdate();
          JOptionPane.showMessageDialog(null, "录入成功", "录入成功", JOptionPane.INFORMATION_MESSAGE);
          button1.setEnabled(true);
        }
      } catch (Exception et) {
        et.printStackTrace();
      }
    }
    else if (e.getSource() == button6) {
      try {
        String s = (String) box5.getSelectedItem();
        int i = Integer.valueOf(s).intValue();
        DBUtil dbUtil = new DBUtil();
        Connection con;
        con = dbUtil.getConnection();
        int row = table3.getSelectedRow();
        String sql = "INSERT INTO DrugTable(PeNo,PeName,PePrice,PeNumber,PeUnit,PeClass,MrId)VALUES(?,?,?,?,?,?,?)";
        PreparedStatement parepare = con.prepareStatement(sql);
        parepare.setString(1, (String) table3.getValueAt(row, 0));
        parepare.setString(2, (String) table3.getValueAt(row, 1));
        parepare.setString(3, (String) table3.getValueAt(row, 2));
        parepare.setString(4, (String) table3.getValueAt(row, 3));
        parepare.setString(5, (String) table3.getValueAt(row, 4));
        parepare.setString(6, (String) table3.getValueAt(row, 5));
        parepare.setString(7, (String) table3.getValueAt(row, 6));
        String w = (String) table3.getValueAt(row, 3);
        String w1 = (String) table3.getValueAt(row, 1);
        if (w1 == "") {
          JOptionPane.showMessageDialog(null, "请输入药物名称", "错误", JOptionPane.INFORMATION_MESSAGE);
        } else if (i <= 0 || w == null) {
          JOptionPane.showMessageDialog(null, "数量不能为空或者小于0", "错误", JOptionPane.INFORMATION_MESSAGE);
        } else {
          parepare.executeUpdate();
          JOptionPane.showMessageDialog(null, "录入成功", "录入成功", JOptionPane.INFORMATION_MESSAGE);
          button5.setEnabled(true);
        }
      } catch (Exception et) {
        et.printStackTrace();
      }
    }
  }
}

JIUYIModify.java

package com.sjsq;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class JIUYIModify extends JFrame implements ActionListener {
  private static final String KeyValue = null;
  public JLabel la0, la1, la2, la3, la4, la5, la6, la7, la8, la9;
  public JTextField t1, t2, t3, t4, t5, t6, t7, t8, t9;
  public JButton button;
  Font f2 = new Font("隶书", Font.BOLD, 25);
  public JComboBox jcbb2, comboBox, jcombobox1;
  public java.sql.Connection con = null;
  DBUtil dbUtil = new DBUtil();
  JIUYIModify() {
    JPanel panel2 = new JPanel();
    ImageIcon ic; // 按钮图片
    ic = new ImageIcon("picture/right_bg.jpg");
    JLabel label = new JLabel(ic);// 把背景图片显示在一个标签里面
    panel2.setLayout(null);
    button = new JButton("保存");
    la0 = new JLabel("修改就医档案");
    la1 = new JLabel("就医档案编号:");
    la2 = new JLabel("病人编号 :");
    la3 = new JLabel("病人姓名 :");
    la4 = new JLabel("录入时间 :");
    la5 = new JLabel("医生编号 :");
    la6 = new JLabel("医生姓名 :");
    la7 = new JLabel("就医科室 :");
    la8 = new JLabel("病因 :");
    la9 = new JLabel("");
    t1 = new JTextField();
    t2 = new JTextField();
    t3 = new JTextField();
    t4 = new JTextField();
    t5 = new JTextField();
    t6 = new JTextField();
    t7 = new JTextField();
    t8 = new JTextField();
    t1.setBounds(90, 150, 100, 40);
    t1.setEditable(false);
    t2.setBounds(290, 150, 100, 40);
    t3.setBounds(90, 200, 100, 40);
    t4.setBounds(90, 250, 100, 40);
    t5.setBounds(290, 250, 80, 40);
    t6.setBounds(90, 300, 120, 40);
    t7.setBounds(290, 300, 120, 40);
    t8.setBounds(290, 200, 120, 40);
    t3.setEditable(false);
    t4.setEditable(false);
    t5.setEditable(false);
    t6.setEditable(false);
    t2.setEditable(false);
    la0.setBounds(10, 10, 200, 50);
    la0.setFont(f2);
    la1.setBounds(20, 150, 100, 50);
    la2.setBounds(220, 150, 100, 50);
    la3.setBounds(20, 200, 100, 50);
    la4.setBounds(220, 200, 100, 50);
    la5.setBounds(20, 250, 100, 50);
    la6.setBounds(220, 250, 100, 50);
    la7.setBounds(20, 300, 100, 50);
    la8.setBounds(220, 300, 100, 50);
    la9.setBounds(20, 350, 100, 50);
    Vector model1 = new Vector();
    String locationid1 = "";
    String locationname1 = "";
    String locationdept1 = "";
    try {
      con = dbUtil.getConnection();
      Statement st = con.createStatement();
      String sql = "select DrId, DrName,DeptName from Doctor";
      ResultSet rss = st.executeQuery(sql);
      while (rss.next()) {
        locationid1 = rss.getString("DrName");
        locationname1 = rss.getString("DrId");
        locationdept1 = rss.getString("DeptName");
        KeyValue Itemlocation1 = new KeyValue(locationname1, locationid1, locationdept1);
        model1.addElement(Itemlocation1);
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
    jcbb2 = new JComboBox(model1);
    jcbb2.addActionListener(this);
    jcbb2.setBounds(290, 250, 100, 40);
    panel2.add(jcbb2);
    panel2.add(button);
    button.setBounds(350, 400, 80, 50);
    button.addActionListener(this);
    label.setBounds(0, 0, 500, 500);
    panel2.add(la0);
    panel2.add(la1);
    panel2.add(la2);
    panel2.add(la3);
    panel2.add(la4);
    panel2.add(la5);
    panel2.add(la6);
    panel2.add(la7);
    panel2.add(la8);
    panel2.add(la9);
    panel2.add(t1);
    panel2.add(t2);
    panel2.add(t3);
    panel2.add(t4);
    panel2.add(t5);
    panel2.add(t6);
    panel2.add(t7);
    panel2.add(t8);
    panel2.add(label);
    this.add(panel2);
    this.setSize(450, 500); // 设置窗口大小
    this.setResizable(false); // 设置不可调整窗口大小
    this.setLocationRelativeTo(null);
    this.setVisible(true);
  }
  public void openDialog(JTable table, DefaultTableModel dtm) {
    // TODO Auto-generated method stub
    int rown;
    int coln;
    rown = table.getSelectedRow();
    coln = table.getSelectedColumn();
    String value0 = (String) table.getValueAt(rown, 0);
    String value1 = (String) table.getValueAt(rown, 1);
    String value2 = (String) table.getValueAt(rown, 2);
    String value3 = (String) table.getValueAt(rown, 3);
    String value4 = (String) table.getValueAt(rown, 4);
    String value5 = (String) table.getValueAt(rown, 5);
    String value6 = (String) table.getValueAt(rown, 6);
    String value7 = (String) table.getValueAt(rown, 7);
    t1.setText(value0);
    t2.setText(value1);
    t3.setText(value2);
    t4.setText(value4);
    t5.setText(value5);
    t6.setText(value6);
    t7.setText(value7);
    t8.setText(value3);
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        Object aa = jcbb2.getSelectedItem();
        String se = aa.toString();
        Connection con;
        con = dbUtil.getConnection();
        Statement stmt;
        String sql = "update  Medical_records set PaId='" + t2.getText().trim() + "',PaName='"
            + t3.getText().trim() + "',MrDate='" + t8.getText().trim() + "',DrId='" + t4.getText().trim()
            + "',DrName='" + jcbb2.getSelectedItem().toString() + "',DeptName='" + t6.getText().trim()
            + "',SickCause='" + t7.getText().trim() + "' where MrId='" + t1.getText().trim() + "'";
        try {
          stmt = con.createStatement();
          stmt.executeUpdate(sql);
          JOptionPane.showMessageDialog(null, "修改成功", "修改成功", JOptionPane.INFORMATION_MESSAGE, null);
          int row2 = table.getSelectedRow();
          String[] xiugai = new String[] { t1.getText(), t2.getText(), t3.getText(), t8.getText(),
              t4.getText(), jcbb2.getSelectedItem().toString(), t6.getText(), t7.getText() };
          dtm.removeRow(row2);
          dtm.insertRow(row2, xiugai);
          dtm.fireTableDataChanged();
          dispose();
        } catch (SQLException e1) {
          // TODO Auto-generated catch block
          e1.printStackTrace();
        }
      }
    });
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if (jcbb2 == e.getSource()) {
      KeyValue item1 = (KeyValue) jcbb2.getSelectedItem();
      String a = item1.getId();
      String b = item1.getdept();
      t6.setText(b);
      t4.setText(a);
    }
  }
  class KeyValue {
    public String id;
    public String name;
    public String dept;
    public KeyValue(String id, String name, String dept) {
      this.id = id;
      this.name = name;
      this.dept = dept;
    }
    public KeyValue(Object selectedItem) {
      // TODO Auto-generated constructor stub
    }
    public String getId() {
      return id;
    }
    public String getName() {
      return name;
    }
    public String getdept() {
      return dept;
    }
    public String toString() {
      return name;
    }
  }
}

JIUYIModifyQuery1.java

package com.sjsq;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class JIUYIModifyQuery1 extends JFrame implements ActionListener {
  public JLabel la1, la2, la3, la4, la5, la6, la7, la8, la9;
  public JTextField tx1, tx2, tx3, tx4, tx5, tx6, tx7;
  public static DefaultTableModel dtm;
  Font f2 = new Font("隶书", Font.BOLD, 30);
  Font f1 = new Font("草书", Font.CENTER_BASELINE, 30);
  public static JTable table;
  String o;
  private JComboBox jcbb1;
  private JScrollPane JScrollPane = new JScrollPane();
  public JPanel panel = new JPanel();
  JButton button1 = new JButton("查询");
  JButton button2 = new JButton("修改");
  JButton button3 = new JButton("删除");
  JButton button4 = new JButton("诊疗明细操作");
  JButton button5 = new JButton("用药明细操作");
  DBUtil dbUtil = new DBUtil();
  JIUYIModifyQuery1(String Stitle) {
    super(Stitle);
    panel.setLayout(null);
    this.add(panel);
    ImageIcon ic; // 按钮图片
    ic = new ImageIcon("picture/right_bg.jpg");
    JLabel label = new JLabel(ic);// 把背景图片显示在一个标签里面
    panel.add(label);
    String columnNames[] = { "就医档案编号", "病人编号", "病人姓名", "就医档案录入时间", "医生编号", "医生姓名", "所属科室", "病因" };
    dtm = new DefaultTableModel(columnNames, 0) {
      public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
      }
    };
    table = new JTable(dtm);
    JScrollPane.setViewportView(table);
    JScrollPane.setBounds(new Rectangle(40, 60, 870, 250));
    String SQL = "select * from Medical_records";
    databaseSearch(SQL, 8);
    //
    la5 = new JLabel("病例编号:");
    la6 = new JLabel("病人姓名:");
    la7 = new JLabel("就医档案综合操作");
    la8 = new JLabel("病人人数统计:");
    la9 = new JLabel("人");
    la7.setFont(f2);
    la8.setFont(f1);
    la9.setFont(f1);
    tx5 = new JTextField();
    tx6 = new JTextField();
    tx7 = new JTextField();
    tx7.setFont(f1);
    button2.setBounds(400, 400, 100, 50);
    button3.setBounds(600, 400, 100, 50);
    button4.setBounds(910, 60, 100, 100);
    button5.setBounds(910, 200, 100, 100);
    la7.setBounds(40, 0, 300, 50);
    la8.setBounds(800, 350, 250, 50);
    la9.setBounds(870, 395, 50, 50);
    tx7.setBounds(800, 400, 60, 35);
    button4.addActionListener(this);
    button5.addActionListener(this);
    button2.addActionListener(this);
    panel.add(button4);
    panel.add(button3);
    panel.add(button2);
    panel.add(button5);
    panel.add(JScrollPane);
    panel.add(la7);
    panel.add(tx7);
    panel.add(la8);
    panel.add(la9);
    tx7.setEditable(false);
    // 设置表格隔行颜色
    setbgcolor();
    final JPanel panel1 = new JPanel();
    panel1.setLayout(null);
    panel1.setBackground(Color.YELLOW);
    panel1.setBorder(new TitledBorder(null, "查询操作", TitledBorder.DEFAULT_JUSTIFICATION,
        TitledBorder.DEFAULT_POSITION, null, null));
    panel1.setBounds(50, 350, 300, 150);
    panel.add(panel1);
    button1.setBounds(220, 80, 60, 40);
    panel1.add(button1);
    button1.setBackground(Color.white);
    la5.setBounds(20, 73, 80, 50);
    la6.setBounds(20, 73, 80, 50);
    la5.setVisible(false);
    tx6.setVisible(false);
    la6.setVisible(false);
    tx5.setVisible(false);
    panel1.add(la5);
    panel1.add(la6);
    tx5.setBounds(90, 80, 120, 35);
    panel1.add(tx5);
    tx6.setBounds(90, 80, 120, 35);
    panel1.add(tx6);
    Connection con;
    con = dbUtil.getConnection();
    ResultSet rs;
    try {
      String sql1 = "select Count(*) from Medical_records";
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(sql1);
      while (rs.next()) {
        o = rs.getString(1);
      }
      tx7.setText(o);
    } catch (Exception r) {
      r.printStackTrace();
    }
    jcbb1 = new JComboBox();
    jcbb1.addActionListener(new ActionListener() {// 下拉框添加事件,用于显示相应的查询文本框,以及标签
      public void actionPerformed(final ActionEvent e) {
        Object SelectName = jcbb1.getSelectedItem();
        String selectNamecontent = SelectName.toString();
        if (selectNamecontent.equals("请选择查询种类")) {
          la5.setVisible(false);
          la6.setVisible(false);
          tx5.setVisible(false);
          tx6.setVisible(false);
          System.out.println("什么也不做");
          return;
        } else if (selectNamecontent.equals("病例编号")) {
          la5.setVisible(true);
          tx5.setVisible(true);
          tx5.setText("");
          la6.setVisible(false);
          tx6.setVisible(false);
          return;
        } else if (selectNamecontent.equals("病人姓名")) {
          tx5.setVisible(false);
          la5.setVisible(false);
          tx6.setVisible(true);
          la6.setVisible(true);
          tx6.setText("");
          return;
        }
        // ++++++++++++++++++++++++++++++++++++++++++++++++++
      }
    });
    jcbb1.setModel(new DefaultComboBoxModel(new String[] { "请选择查询种类", "病例编号", "病人姓名" }));
    jcbb1.setBounds(20, 28, 135, 25);
    panel1.add(jcbb1);
    // 添加背景
    panel.add(label);
    label.setBounds(0, 0, 1100, 700);
    button3.addMouseListener(new MouseAdapter() { // 删除按钮实现删除记录的功能
      public void mouseClicked(MouseEvent e) {
        int row = table.getSelectedRow();// 这句选择要删除的行
        Connection con;
        con = dbUtil.getConnection();
        Statement stmt;
        String val = (String) table.getValueAt(row, 0);
        String sql = "delete from Medical_records where MrId='" + val + "'";
        try {
          stmt = con.createStatement();
          stmt.executeUpdate(sql);
          JOptionPane.showMessageDialog(null, "  删除成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
        } catch (SQLException e1) {
          // TODO Auto-generated catch block
          e1.printStackTrace();
        }
        if (row != -1) { // 这句判断是否有选中的行
          dtm.removeRow(row);
        } // 这句删除指定行
      }
    });
    table.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件
      public void mouseClicked(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
          if (e.getClickCount() == 2) {
            JIUYIModify c = new JIUYIModify();
            c.openDialog(table, dtm);
          }
      }
    });
    button1.addMouseListener(new MouseAdapter() {// 查询按钮添加鼠标事件,对应相应的查询功能
      public void mouseClicked(final MouseEvent e) {
        System.out.println("Good idea!!!");
        Object SelectName = jcbb1.getSelectedItem();
        String selectNamecontent = SelectName.toString();
        if (selectNamecontent.equals("请选择查询种类")) {
          System.out.println("什么也不做");
          return;
        } else if (selectNamecontent.equals("病例编号")) {
          if (tx5.getText().equals("")) {
            JOptionPane.showMessageDialog(null, "  请输入病例编号!", "注意", JOptionPane.ERROR_MESSAGE);
            return;
          }
          String sickName = tx5.getText().trim();
          String SQL = "select * from Medical_records where MrId like '%" + sickName + "%'";
          databaseSearch(SQL, 8);
          return;
        }
        else if (selectNamecontent.equals("病人姓名")) {
          if (tx6.getText().equals("")) {
            JOptionPane.showMessageDialog(null, "  请输入病人姓名!", "注意", JOptionPane.ERROR_MESSAGE);
            return;
          }
          String sickCaseID = tx6.getText().trim();
          String SQL = "select * from Medical_records where PaName like '%" + sickCaseID + "%'";
          databaseSearch(SQL, 8);
          return;
        }
      }
    });
  }
  private void setbgcolor() {
    // TODO Auto-generated method stub
    // 设置表格隔行背景颜色不同
    try {
      DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
            boolean hasFocus, int row, int column) {
          if (row % 2 == 0)
            setBackground(new Color(223, 220, 239)); // 设置奇数行底色
          else if (row % 2 == 1)
            setBackground(Color.white); // 设置偶数行底色
          return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        }
      };
      for (int i = 0; i < table.getColumnCount(); i++) {
        table.getColumn(table.getColumnName(i)).setCellRenderer(tcr);
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  private void databaseSearch(String SQL, int i) {
    // TODO Auto-generated method stub
    Connection con;
    con = dbUtil.getConnection();
    ResultSet rs;
    try {
    } catch (Exception e1) {
      e1.printStackTrace();
    }
    try {
      int rowcount = dtm.getRowCount() - 1;
      if (rowcount != -1) {
        for (int i1 = rowcount; i1 >= 0; i1--) {
          dtm.removeRow(i1); // 删除Jtable中的所有行
        }
        dtm.setRowCount(0); // 将Jtable中的行数设为零
      }
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(SQL);
      String[] data = new String[8];
      while (rs.next()) {
        for (int j = 1; j <= 8; j++) {
          data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中
        }
        dtm.addRow(data); // 在Jtabl
      }
      con.close();
    } catch (Exception err) {
      String error = err.getMessage();
      JOptionPane.showMessageDialog(null, error);
      err.printStackTrace();
    } finally {
    }
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if (e.getSource() == button2) {
      JIUYIModify t = new JIUYIModify();
      t.openDialog(table, dtm);
    } else if (e.getSource() == button4) {
      ChufangModify y = new ChufangModify("诊疗明细");
      int row = table.getSelectedRow();
      String r = (String) table.getValueAt(row, 0);
      String SQL1 = "select * from DrugTable where MrId='" + r + "'and PeClass='其他类'";
      y.databaseSearch2(SQL1, 6);
      y.addrow(table);
    } else if (e.getSource() == button5) {
      ProjectModify y = new ProjectModify("用药明细");
      int row = table.getSelectedRow();
      String r = (String) table.getValueAt(row, 0);
      String SQL1 = "select * from DrugTable where MrId='" + r + "' and PeClass='药品类'or MrId='" + r
          + "'and PeClass='诊断类'";
      y.databaseSearch2(SQL1, 7);
      y.addrow(table);
    }
  }
}

MainPanelCashier.java

package com.sjsq;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class MainPanelCashier extends JFrame implements MouseListener {
  // 基本组件
  public CardLayout layout = new CardLayout(); // 卡片布局方式
  JPanel top, left, bottom, right;
  JLabel head;
  Font f1 = new Font("隶书", Font.BOLD, 54);
  Font f2 = new Font("隶书", Font.BOLD, 25);
  // 菜单栏组件
  private JPanel pNorth, pSouth, subMenuContainer;
  private JButton item1, item2, item3, item4, item5, item6, item7, item8, htn[], gtn[], btn[], ctn[], dtn[], etn[],
      ftn[];
  // 时间组件
  private JPanel timePanel;
  private JLabel displayArea;
  private String DEFAULT_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; // 设置时间格式
  private String time;
  private int ONE_SECOND = 1000; // 设置时间间隔
  JLabel label1 = new JLabel("欢迎你:");
  public MainPanelCashier(String title) {
    super("医院管理系统(收费员界面)");
    String aa = Login.username; // 获取登录的用户名,放在标签中,显示在上面板。
    JLabel label8 = new JLabel(aa);
    // 窗口图标设置
    Toolkit tk = getToolkit();
    Image icon = tk.getImage("picture/icon.jpg");
    setIconImage(icon);
    // 时间控件设置
    timePanel = new JPanel();
    displayArea = new JLabel();
    configTimeArea();
    timePanel.add(displayArea);
    timePanel.setBounds(1000, 0, 200, 50);
    timePanel.setOpaque(false); // 时间面板设置为透明
    // 组件基本设置
    left = new JPanel();
    left.setBounds(5, 150, 150, 515);
    this.add(left);
    right = new JPanel();
    right.setLayout(layout);
    right.setBounds(155, 155, 1045, 510);
    HomePage s = new HomePage();
    right.add(s.homePage);
    this.add(right);
    bottom = new JPanel();
    bottom.setLayout(null);
    bottom.setBounds(0, 666, 1200, 35);
    bottom.setBackground(Color.WHITE);
    bottom.add(timePanel); // 添加时间控件
    this.add(bottom);
    top = new JPanel(); // 设置背景图片"picture/top_bg.jpg"
    ImageIcon background = new ImageIcon("picture/top_bg.jpg");
    JLabel label = new JLabel(background);
    top.setLayout(null);
    label.setBounds(0, 0, 1200, 145);
    top.setBounds(0, 0, 1200, 145);
    this.add(top);
    top.add(label8);
    label8.setBounds(1080, 90, 100, 50);
    label8.setFont(f2);
    head = new JLabel("医院信息管理系统");
    head.setFont(f1);
    head.setBounds(375, 40, 500, 75);
    top.add(head);
    top.add(label1);
    label1.setBounds(980, 90, 200, 50);
    label1.setFont(f2);
    top.add(label);
    // Left面板折叠式菜单设置,三面板网格式布局
    pNorth = new JPanel();
    pNorth.setLayout(new GridLayout(4, 1));
    pSouth = new JPanel();
    subMenuContainer = new JPanel();
    subMenuContainer.setLayout(new GridLayout(4, 1));
    item1 = new JButton("首页"); // 设置按钮
    item6 = new JButton("价格管理");
    item7 = new JButton("收费管理");
    item8 = new JButton("系统设置");
    item1.setPreferredSize(new Dimension(150, 47)); // 优先设置按钮大小
    item6.setPreferredSize(new Dimension(150, 47));
    item7.setPreferredSize(new Dimension(150, 47));
    item7.setPreferredSize(new Dimension(150, 47));
    item8.setPreferredSize(new Dimension(150, 47));
    item1.setContentAreaFilled(false); // 设置为透明
    item6.setContentAreaFilled(false);
    item7.setContentAreaFilled(false);
    item8.setContentAreaFilled(false);
    pNorth.add(item1);
    pNorth.add(item6);
    pNorth.add(item7);
    pNorth.add(item8);
    ftn = new JButton[1];
    ftn[0] = new JButton("综合操作");
    for (int i = 0; i < ftn.length; i++) {
      ftn[i].setBackground(Color.WHITE);
      ftn[i].setPreferredSize(new Dimension(150, 30));
      ftn[i].addMouseListener(this);
    }
    gtn = new JButton[2];
    gtn[0] = new JButton("结账页面");
    gtn[1] = new JButton("综合操作");
    for (int i = 0; i < gtn.length; i++) {
      gtn[i].setBackground(Color.WHITE);
      gtn[i].setPreferredSize(new Dimension(150, 30));
      gtn[i].addMouseListener(this);
    }
    htn = new JButton[1];
    htn[0] = new JButton("修改密码");
    for (int i = 0; i < htn.length; i++) {
      htn[i].setBackground(Color.WHITE);
      htn[i].setPreferredSize(new Dimension(150, 30));
      htn[i].addMouseListener(this);
    }
    left.add(pNorth, "North"); // 按钮添加到left面板中
    left.add(subMenuContainer, "Center");
    left.add(pSouth, "South");
    // 监听器添加
    item1.addMouseListener(this);
    item6.addMouseListener(this);
    item7.addMouseListener(this);
    item8.addMouseListener(this);
    // 窗体设置
    this.setLayout(null);
    this.setSize(1200, 730);
    this.setLocationRelativeTo(null); // 窗口居中显示
    this.setVisible(true);
    this.setResizable(false); // 窗体不可改变大小
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  public static void main(String[] args) {
    MainPanelCashier mainPanelCashier = new MainPanelCashier("医院信息管理系统");
  }
  // 时间控件方法
  private void configTimeArea() {
    Timer tmr = new Timer();
    tmr.scheduleAtFixedRate(new JLabelTimerTask(), new Date(), ONE_SECOND);
  }
  protected class JLabelTimerTask extends TimerTask {
    SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT);
    public void run() {
      time = dateFormatter.format(Calendar.getInstance().getTime());
      displayArea.setText(time);
    }
  }
  public void mouseClicked(MouseEvent e) {
    if (e.getSource() == item1) {
      this.add(right);
      HomePage s = new HomePage(); // 调用主页的类。
      right.add(s.homePage, "homePage");
      layout.next(right);
    }
    // 设置折叠按钮功能,先把南面板清空,让后在给各面板设置布局方式,添加按钮也添加子功能按钮,清楚别的子功能按钮
    if (e.getSource() == item6) {
      pSouth.removeAll();
      pNorth.setLayout(new GridLayout(2, 1));
      pSouth.setLayout(new GridLayout(2, 1));
      pNorth.add(item1);
      pNorth.add(item6);
      pSouth.add(item7);
      pSouth.add(item8);
      for (int i = 0; i < ftn.length; i++)
        subMenuContainer.add(ftn[i]);
      for (int i = 0; i < gtn.length; i++)
        subMenuContainer.remove(gtn[i]);
      for (int i = 0; i < htn.length; i++)
        subMenuContainer.remove(htn[i]);
      validate();
      getContentPane().repaint();
    }
    if (e.getSource() == item7) {
      pSouth.removeAll();
      pNorth.setLayout(new GridLayout(3, 1));
      pSouth.setLayout(new GridLayout(1, 1));
      pNorth.add(item1);
      pNorth.add(item6);
      pNorth.add(item7);
      pSouth.add(item8);
      for (int i = 0; i < ftn.length; i++)
        subMenuContainer.remove(ftn[i]);
      for (int i = 0; i < gtn.length; i++)
        subMenuContainer.add(gtn[i]);
      for (int i = 0; i < htn.length; i++)
        subMenuContainer.remove(htn[i]);
      validate();
      getContentPane().repaint();
    }
    if (e.getSource() == item8) {
      pSouth.removeAll();
      pNorth.setLayout(new GridLayout(4, 1));
      pNorth.add(item1);
      pNorth.add(item6);
      pNorth.add(item7);
      pNorth.add(item8);
      for (int i = 0; i < ftn.length; i++)
        subMenuContainer.remove(ftn[i]);
      for (int i = 0; i < gtn.length; i++)
        subMenuContainer.remove(gtn[i]);
      for (int i = 0; i < htn.length; i++)
        subMenuContainer.add(htn[i]);
      validate();
      getContentPane().repaint();
    }
    else if (e.getSource() == ftn[0]) {
      this.add(right);
      PriceManage s = new PriceManage();
      s.save.setEnabled(false);
      s.modify.setEnabled(false);
      s.delete.setEnabled(false);
      right.add(s.priceManage, "priceManage");
      layout.next(right);
    } else if (e.getSource() == gtn[0]) {
      this.add(right);
      Charge t = new Charge();
      right.add(t.panel2, "第一0个面板");
      layout.next(right);
    } else if (e.getSource() == gtn[1]) {
      this.add(right);
      ChargeQuery t = new ChargeQuery();
      right.add(t.panel2, "第一0个面板");
      layout.next(right);
    } else if (e.getSource() == htn[0]) {
      this.add(right);
      PassWordModifyCashier t = new PassWordModifyCashier("密码修改");
      right.add(t.panel2, "第一0个面板");
      layout.next(right);
    }
  }
  public void mouseEntered(MouseEvent arg0) {
  }
  public void mouseExited(MouseEvent arg0) {
  }
  public void mousePressed(MouseEvent arg0) {
  }
  public void mouseReleased(MouseEvent arg0) {
  }
}


四、其他


1.其他系统实现


JavaWeb系统系列实现

Java+JSP实现图书管理系统

Java+JSP实现学生信息管理系统

Java+Servlet+JSP实现学生成绩管理系统

Java+Servlet+JSP实现宠物诊所管理系统

Java+SSM+Easyui实现网上考试系统

Java+Springboot+H-ui实现营销管理系统

Java+Springboot+Mybatis+Bootstrap实现网上商城系统


JavaSwing系统系列实现

Java+Swing实现斗地主游戏

Java+Swing实现图书管理系统

Java+Swing实现医院管理系统

Java+Swing实现仓库管理系统

Java+Swing实现考试管理系统

Java+Swing实现通讯录管理系统

Java+Swing实现学生信息管理系统

Java+Swing实现学生宿舍管理系统

Java+Swing实现学生选课管理系统

Java+Swing实现学生成绩管理系统

Java+Swing实现学校教材管理系统

Java+Swing实现学校教务管理系统

Java+Swing实现企业人事管理系统

Java+Swing实现电子相册管理系统

Java+Swing实现自助取款机(ATM)系统

Java+Swing实现超市管理系统-TXT存储信息

Java+Swing实现宠物商店管理系统-TXT存储信息


相关文章
|
4天前
|
Java
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
21 3
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
|
4天前
|
Java
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
17 2
|
1天前
|
监控 安全 NoSQL
采用java+springboot+vue.js+uniapp开发的一整套云MES系统源码 MES制造管理系统源码
MES系统是一套具备实时管理能力,建立一个全面的、集成的、稳定的制造物流质量控制体系;对生产线、工艺、人员、品质、效率等多方位的监控、分析、改进,满足精细化、透明化、自动化、实时化、数据化、一体化管理,实现企业柔性化制造管理。
12 3
|
4天前
|
Java 关系型数据库 MySQL
java+B/S架构医院绩效考核管理系统源码 医院绩效管理系统4大特点
医院绩效考核管理系统,采用多维度综合绩效考核的形式,针对院内实际情况分别对工作量、KPI指标、科研、教学、管理等进行全面考核。医院可结合实际需求,对考核方案中各维度进行灵活配置,对各维度的权重、衡量标准、数据统计方式进行自定义维护。
13 0
|
4天前
|
监控 前端开发 Java
Java公立医院绩效考核管理系统 医院绩效考核系统的优势有哪些? 
医院绩效管理系统解决方案紧扣新医改形势下医院绩效管理的要求,以“工作量为基础的考核方案”为核心思想,结合患者满意度、服务质量、技术难度、工作效率、医德医风等管理发展目标的考核体系,形成医院的内部绩效考核与分配机制,通过信息化手段为绩效考评管理人员实施医院绩效考评工作提供了有效工具,扩展了信息管理范围,增加了信息分析的广度与深度。这不仅使绩效评价工作更加科学化、规范化和自动化,而且从根本上改变了绩效评估工作方式,实现了绩效评价数据网络化采集,评价结果透明化管理,奖金分配数据自动化生成,极大地提高了绩效评估的全面性、准确性、时效性、公正性。从而推进医院绩效管理的专业化、规范化和精细化管理,充分发挥
14 0
|
4天前
|
Java 数据挖掘 BI
Java医院绩效考核系统源码B/S+avue+MySQL助力医院实现精细化管理
医院绩效考核系统目标是实现对科室、病区财务指标、客户指标、流程指标、成长指标的全面考核、分析,并与奖金分配、学科建设水平评价挂钩。
31 0
|
4天前
|
数据采集 前端开发 Java
Java医院绩效考核系统源码maven+Visual Studio Code一体化人力资源saas平台系统源码
医院绩效解决方案包括医院绩效管理(BSC)、综合奖金核算(RBRVS),涵盖从绩效方案的咨询与定制、数据采集、绩效考核及反馈、绩效奖金核算到科到组、分配到员工个人全流程绩效管理;将医院、科室、医护人员利益绑定;全面激活人才活力;兼顾质量和效益、长期与短期利益;助力医院降本增效,持续改善、优化收入、成本结构。
18 0
|
4天前
|
Java
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
13 2
时间轮-Java实现篇
在前面的文章《[时间轮-理论篇](https://developer.aliyun.com/article/910513)》讲了时间轮的一些理论知识,然后根据理论知识。我们自己来实现一个简单的时间轮。
|
2天前
|
缓存 安全 Java
7张图带你轻松理解Java 线程安全,java缓存机制面试
7张图带你轻松理解Java 线程安全,java缓存机制面试