Java+Swing实现医院管理系统

Source

一、系统介绍

本系统实现的以下功能
管理员功能:登录系统、病人信息的增删改查、就医档案的录入、医生信息的增删改查、科室信息的增删改查、收费统计功能、修改密码。
医生功能:登录系统、病人信息的增删改查、医生信息的增删改查、科室信息的增删改查、收费统计功能、修改密码。
收费员功能:价格管理、收费管理、修改密码。
JDK版本:1.8
数据库:Mysql8.0.13

数据库用到的表
cashier
charge
department
doctor
drugtable
manager
medical_records
patient
price

工程截图
在这里插入图片描述

二、系统展示

1.登录页

在这里插入图片描述

2.主页面

在这里插入图片描述

3.病人信息录入

在这里插入图片描述

4.病人信息操作

在这里插入图片描述

5.就医档案录入

在这里插入图片描述

6.处方单录入

在这里插入图片描述

7.就医档案操作

在这里插入图片描述

8.医生信息录入

在这里插入图片描述

9.医生信息操作

在这里插入图片描述

10.科室信息录入

在这里插入图片描述

11.科室信息操作

在这里插入图片描述

12.收费操作

在这里插入图片描述

13.收费统计

在这里插入图片描述

14.修改密码

在这里插入图片描述

15.医生主页面

在这里插入图片描述

16.收费员主页面

在这里插入图片描述

三、系统实现

Login.java

package com.sjsq;

import java.awt.Color;
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 javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

public class Login extends JFrame {
    
      

	public static String namew;
	// 输入的用户Id
	public static String userId;
	// 输入的用户名
	public static String username;
	// 输入的密码
	public static String password;
	// 验证标识
	int loginFlag = 0;
	private static final long serialVersionUID = 1L;
	DBUtil dbUtil = new DBUtil();
	Connection con = dbUtil.getConnection();
	
	// 账号
	JLabel accountJLabel = new JLabel("账号:");
	// 错误提示标签
	JLabel errorJLabel = new JLabel("用户名或者密码不对,请重新输入");
	// 密码
	JLabel passwordJLabel = new JLabel("密码:");

	// r1:管理员 r2:收费员 r3:医生
	public JRadioButton r1, r2, r3;
	ImageIcon bg = new ImageIcon("picture/login_bg.jpg");
	JLabel bgJLabel = new JLabel(bg);

	JButton loginJButton = new JButton("登录");
	JButton cancelJButton = new JButton("取消");

	private boolean flag;
	static JTextField usernameJTextField = new JTextField();
	static JPasswordField passwordJPasswordField = new JPasswordField();

	Login(String sTitle) {
    
      
		super(sTitle);
		this.setLayout(null);
		this.add(errorJLabel); // 添加控件

		this.add(accountJLabel);
		this.add(passwordJLabel);
		this.add(loginJButton);
		this.add(cancelJButton);

		this.add(usernameJTextField);
		this.add(passwordJPasswordField);

		final JRadioButton r1 = new JRadioButton("管理员");
		final JRadioButton r2 = new JRadioButton("收费员");
		final JRadioButton r3 = new JRadioButton("医生");
		
		ButtonGroup rg = new ButtonGroup();
		this.add(r2);
		rg.add(r1);
		this.add(r3);
		rg.add(r3);
		this.add(r1);
		rg.add(r2);
		r1.setBounds(150, 180, 80, 30);
		r2.setBounds(230, 180, 80, 30);
		r3.setBounds(310, 180, 80, 30);
		r1.setFocusPainted(false);
		r2.setFocusPainted(false);
		r3.setFocusPainted(false);
		r3.setContentAreaFilled(false);
		r1.setContentAreaFilled(false);
		r2.setContentAreaFilled(false);

		errorJLabel.setBounds(100, 130, 200, 50);
		errorJLabel.setForeground(Color.black);
		errorJLabel.setVisible(false);

		bgJLabel.setBounds(0, 0, 592, 350);
		
		// 登录监听
		loginJButton.addActionListener(new ActionListener() {
    
      
			public boolean flag = false;

			public void actionPerformed(ActionEvent e) {
    
      

				// 医生
				if (r3.isSelected()) {
    
      
					try {
    
      
						String usernameText = usernameJTextField.getText().toString(); // 获取帐号文本框内容
						String passwordText = passwordJPasswordField.getText().toString(); // 获取密码文本框内容
						Statement stmt = con.createStatement();
						ResultSet rs = stmt.executeQuery("select * from doctor"); // 执行SQL语句,返回结果集
						while (rs.next()) {
    
      

							userId = rs.getString("DrId"); // 获取登录的用户编号,
							username = rs.getString("DrName");// 获取登录的用户姓名
							password = rs.getString("Password"); // 获取数据库中的数据项的密码
							if (userId.equals(usernameText) && password.equals(passwordText)) {
    
      // 判断数据库的用户编号以及密码是否与文本框的值相同
								loginFlag = 1;
								break;
							}

						}
						if (loginFlag == 1) {
    
      
							JOptionPane.showMessageDialog(null, "登录成功");
							// 显示系统主界面
							MainPanelDoctor a = new MainPanelDoctor("医生界面"); 
							a.setVisible(true);
							Login.this.setVisible(false);// 关闭登录按钮
						} else {
    
      
							usernameJTextField.setText(""); // 错误的话则文本框内容设置为空,显示错误标签
							passwordJPasswordField.setText("");

							JOptionPane.showMessageDialog(null, "登陆错误");
						}
					} catch (SQLException e2) {
    
      
						System.out.println(e2);
					}
				}
				
				// 管理员
				else if (r1.isSelected()) {
    
      

					try {
    
      
						
						String usernameText = usernameJTextField.getText().toString(); // 获取帐号文本框内容
						String passwordText = passwordJPasswordField.getText().toString(); // 获取密码文本框内容

						Statement stmt = con.createStatement();
						ResultSet rs = stmt.executeQuery("select * from manager"); // 执行SQL语句,返回结果集
						while (rs.next()) {
    
      

							userId = rs.getString("ManagerID"); // 获取登录的用户编号,
							username = rs.getString("ManagerName");// 获取登录的用户姓名
							password = rs.getString("MaPassWord"); // 获取数据库中的数据项的密码
							if (userId.equals(usernameText) && password.equals(passwordText)) {
    
      // 判断数据库的用户编号以及密码是否与文本框的值相同

								loginFlag = 1;

								break;
							}

						}
						// 登录成功
						if (loginFlag == 1) {
    
      
							JOptionPane.showMessageDialog(null, "登录成功");
							new MainPanelManager("管理员界面"); // 显示系统主界面
							Login.this.setVisible(false);// 关闭登录按钮
						// 登录失败
						} else {
    
      
							usernameJTextField.setText(""); // 错误的话则文本框内容设置为空,显示错误标签
							passwordJPasswordField.setText("");
							JOptionPane.showMessageDialog(null, "登陆错误");
						}
					} catch (SQLException e3) {
    
      
						System.out.println(e3);
					}

				}
				// 收费员
				else if (r2.isSelected()) {
    
      

					try {
    
      
						String usernameText = usernameJTextField.getText().toString(); // 获取帐号文本框内容
						String passwordText = passwordJPasswordField.getText().toString(); // 获取密码文本框内容
						
						Statement stmt = con.createStatement();
						ResultSet rs = stmt.executeQuery("select * from cashier"); // 执行SQL语句,返回结果集
						while (rs.next()) {
    
      

							userId = rs.getString("cashierId"); // 获取登录的用户编号,
							username = rs.getString("cashierName");// 获取登录的用户姓名
							password = rs.getString("cashierPassWord"); // 获取数据库中的数据项的密码
							if (userId.equals(usernameText) && password.equals(passwordText)) {
    
      // 判断数据库的用户编号以及密码是否与文本框的值相同

								loginFlag = 1;

								break;
							}

						}
						if (loginFlag == 1) {
    
      
							JOptionPane.showMessageDialog(null, "登录成功");
							new MainPanelCashier("收费员页面"); // 显示系统主界面
							Login.this.setVisible(false);// 关闭登录按钮
						} else {
    
      
							usernameJTextField.setText(""); // 错误的话则文本框内容设置为空,显示错误标签
							passwordJPasswordField.setText("");

							JOptionPane.showMessageDialog(null, "登陆错误");
						}
					} catch (SQLException e3) {
    
      
						System.out.println(e3);
					}

				} else if (r1.isSelected() == false && r2.isSelected() == false && r3.isSelected() == false) {
    
      
					JOptionPane.showMessageDialog(null, "请选择用户类型");

				}

			}
		});

		// 登录按钮添加功能事件

		// 账号
		accountJLabel.setBounds(150, 50, 100, 50);
		accountJLabel.setFont(new Font("", 1, 20));

		// 密码
		passwordJLabel.setBounds(150, 120, 100, 50);
		passwordJLabel.setFont(new Font("", 1, 20));

		// 登录
		loginJButton.setBounds(150, 220, 100, 40);
		loginJButton.setBackground(Color.CYAN);
		
		// 取消
		cancelJButton.setBounds(280, 220, 100, 40);
		cancelJButton.setBackground(Color.CYAN);
		
		// 账号输入框
		usernameJTextField.setBounds(250, 60, 150, 30);
		// 密码输入框
		passwordJPasswordField.setBounds(250, 120, 150, 30);

		this.add(bgJLabel);
		this.setVisible(true);
		this.setSize(600, 350); // 设置窗口大小
		this.setResizable(false); // 设置不可调整窗口大小
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

	public static void main(String args[]) {
    
      
		Login login = new Login("医院管理系统");
	}

}
在这里插入代码片

HomePage.java

package com.sjsq;
import java.awt.Font;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class HomePage extends JFrame {
    
      
	JPanel homePage = new JPanel();
	private JLabel la1, la2;
	private Font laFont = new Font("隶书", Font.BOLD, 100);

	public HomePage() {
    
      
		homePage.setLayout(null);
		// 获取项目路径
		ImageIcon background = new ImageIcon("picture/right_bg.jpg");
		JLabel label = new JLabel(background);

		la1 = new JLabel("欢迎使用");
		la2 = new JLabel("医院信息管理系统");

		la1.setBounds(330, 0, 800, 300);
		la1.setFont(laFont);
		la2.setBounds(120, 150, 1000, 300);
		la2.setFont(laFont);

		homePage.add(la1);
		homePage.add(la2);

		homePage.add(label);
		label.setBounds(0, 0, 1100, 700);
	}
}

Charge.java

package com.sjsq;

import java.awt.Color;
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.text.SimpleDateFormat;
import java.util.Date;

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.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;

public class Charge extends JFrame implements ActionListener {
    
      
	private JComboBox box1;
	private JScrollPane JScrollPane5 = new JScrollPane();
	JPanel panel2 = new JPanel();
	Font f2 = new Font("隶书", Font.BOLD, 30);
	private JLabel la0, la1, la2, la3, la4, la5, la6, la7, la8, la9, la10, la11, la12, la13, l14, l15, la14, la15;
	private JTextField tx13, tx0, tx1, tx2, tx3, tx4, tx5, tx6, tx7, tx8, tx9, tx10, tx11, tx12, tx14;
	public static JTable table3;
	public static DefaultTableModel dtm3;
	private JButton btn1, btn2;
	private double suma = 0;
	private double sumd = 0;
	private double sumb = 0;
	private double sume = 0;
	private double sumc = 0;
	private double sumf = 0;
	String b;
	private String columnNames[] = {
    
       "就医档案编号", "病人编号", "病人姓名", "就医科室" };

	Charge() {
    
      
		// 获取时间
		Date now = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");
		String dateString = sdf.format(now);
		ImageIcon background = new ImageIcon("picture/right_bg.jpg"); // 背景图片
		JLabel label = new JLabel(background);

		panel2.setLayout(null);

		// 控件的定义
		btn1 = new JButton("确定结算");
		btn2 = 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("挂号费: ");
		la10 = new JLabel("处置费: ");
		la11 = new JLabel("化验费: ");
		la12 = new JLabel("押金累计: ");
		la13 = new JLabel("押金余额: ");
		la14 = new JLabel("结账日期: ");
		la15 = new JLabel("收费操作 ");
		la13.setForeground(Color.red);
		la12.setForeground(Color.red);
		tx0 = new JTextField();
		tx1 = new JTextField();
		tx2 = new JTextField();
		tx3 = new JTextField();
		tx4 = new JTextField();
		tx5 = new JTextField();
		tx6 = new JTextField();
		tx7 = new JTextField();
		tx8 = new JTextField();
		tx9 = new JTextField();
		tx10 = new JTextField();
		tx11 = new JTextField();
		tx12 = new JTextField();
		tx13 = new JTextField();
		tx14 = new JTextField(dateString);
		la15.setFont(f2);

		// 设置文本框的边缘不显示
		tx0.setBorder(null);
		tx2.setBorder(null);
		tx3.setBorder(null);
		tx4.setBorder(null);
		tx14.setBorder(null);
		tx14.setEditable(false);

		// 设置一个新的面板
		final JPanel panel1 = new JPanel();
		JPanel panel12 = new JPanel();
		JPanel panel13 = new JPanel();
		panel13.setBackground(Color.pink);
		panel12.setBackground(Color.pink);
		panel1.setLayout(null);// 设置空布局
		panel1.setBorder(new TitledBorder(null, "收费结算", TitledBorder.DEFAULT_JUSTIFICATION,
				TitledBorder.DEFAULT_POSITION, null, null));
		panel1.setBounds(10, 100, 800, 500);
		panel1.setBackground(Color.WHITE);
		panel1.add(panel12);
		panel12.setBounds(600, 0, 10, 500);
		panel1.add(panel13);
		panel13.setBounds(0, 330, 600, 10);

		btn1.addActionListener(this); // 设置按钮事件
		btn2.addActionListener(this);

		// 默认表格模版的设置,添加表头和设置表格不可编辑
		dtm3 = new DefaultTableModel(columnNames, 0);
		table3 = new JTable(dtm3) {
    
      
			public boolean isCellEditable(int row, int column) {
    
      
				return false;
			}// 表格不允许被编辑 }
		};
		String sql = "select MrId,PaId,PaName,DeptName from Medical_records";
		databaseSearch1(sql, 4);

		JScrollPane5.setViewportView(table3);// 给表格添加滚动条
		panel1.add(JScrollPane5);
		JScrollPane5.setBounds(10, 0, 400, 100);
		JScrollPane5.setVisible(false);

		// 面板添加控件,设置位置
		panel2.add(tx0);
		tx0.setBounds(290, 60, 100, 30);
		panel1.add(btn1);
		btn1.setBounds(650, 100, 100, 50);
		panel1.add(btn2);
		btn2.setBounds(650, 200, 100, 50);
		panel1.add(tx2);
		tx2.setBounds(150, 70, 70, 30);
		panel1.add(tx3);
		tx3.setBounds(150, 120, 70, 30);
		panel1.add(tx4);
		tx4.setBounds(150, 170, 70, 30);
		panel1.add(tx5);
		tx5.setBounds(180, 220, 70, 30);
		panel1.add(tx6);
		tx6.setBounds(180, 270, 70, 30);
		panel1.add(tx7);
		tx7.setBounds(475, 70, 70, 30);
		panel1.add(tx8);
		tx8.setBounds(460, 120, 70, 30);
		panel1.add(tx9);
		tx9.setBounds(460, 170, 70, 30);
		panel1.add(tx10);
		tx10.setBounds(460, 220, 70, 30);
		panel1.add(tx11);
		tx11.setBounds(270, 350, 70, 30);
		panel1.add(tx12);
		tx12.setBounds(470, 350, 70, 30);
		panel1.add(tx13);
		tx13.setBounds(80, 350, 70, 30);

		panel2.add(la1);
		la1.setBounds(20, 50, 100, 50);
		panel2.add(la2);
		la2.setBounds(250, 50, 100, 50);
		panel2.add(tx1);
		tx1.setBounds(110, 58, 120, 30);
		panel1.add(la3);
		la3.setBounds(100, 70, 100, 30);
		panel1.add(la4);
		la4.setBounds(100, 120, 100, 30);
		panel1.add(la5);
		la5.setBounds(100, 170, 100, 30);
		panel1.add(la6);
		la6.setBounds(100, 220, 100, 30);
		panel1.add(la7);
		la7.setBounds(100, 270, 100, 30);

		panel1.add(la8);
		la8.setBounds(400, 70, 100, 30);
		panel1.add(la9);
		la9.setBounds(400, 120, 100, 30);
		panel1.add(la10);
		la10.setBounds(400, 170, 100, 30);
		panel1.add(la11);
		la11.setBounds(400, 220, 100, 30);
		panel1.add(la0);
		la0.setBounds(10, 350, 100, 30);

		la15.setBounds(30, 0, 200, 50);
		panel2.add(la15);
		la12.setBounds(200, 350, 100, 30);
		panel1.add(la12);
		la13.setBounds(400, 350, 100, 30);
		panel1.add(la13);
		panel2.add(panel1);

		panel2.add(la14);
		la14.setBounds(400, 60, 100, 30);
		panel2.add(tx14);
		tx14.setBounds(480, 60, 100, 30);

		// 设置文本框不可编辑
		tx0.setEditable(false);
		tx2.setEditable(false);
		tx3.setEditable(false);
		tx4.setEditable(false);
		tx11.setEditable(false);
		tx12.setEditable(false);
		tx13.setEditable(false);

		panel2.add(label);// 面板添加背景图片,设置位置
		label.setBounds(-30, 0, 1100, 700);

		tx1.addMouseListener(new MouseAdapter() {
    
      // 给tx1的文本框添加按钮事件,显示一个表格
			public void mouseClicked(MouseEvent e) {
    
      
				if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
					JScrollPane5.setVisible(true);
			}
		});
		// tx1文本框添加事件,根据文本框内容的改变模糊查询到数据库内容,显示到表格中
		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(); // 根据S1的内容模糊查询数据库对应的数据
				JScrollPane5.setVisible(true);
				String sql = "select MrId,PaId,PaName,DeptName from Medical_records where MrId like  '%" + s1 + "%'";
				databaseSearch1(sql, 5);
			}
		});
		// 根据你选择表格的某一行内容,输入到对应的文本框内。
		table3.addMouseListener(new MouseAdapter() {
    
      
			public void mouseClicked(MouseEvent e) {
    
      
				if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
					if (e.getClickCount() == 1) {
    
      
						String sum1 = null;
						String sum3 = null;
						String sum6 = null;
						String sum2 = null;
						String sum4 = null;
						String sum5 = null;
						int row = table3.getSelectedRow();
						String ao = (String) table3.getValueAt(row, 2);
						String bo = (String) table3.getValueAt(row, 0);
						String do1 = (String) table3.getValueAt(row, 1);
						String co = (String) table3.getValueAt(row, 3);
						tx2.setText(do1);
						tx3.setText(ao);
						tx1.setText(bo);
						tx0.setText(ao);
						tx4.setText(co);
						JScrollPane5.setVisible(false);

						// 连接数据库,查询对应的价格
						DBUtil dbUtil = new DBUtil();
						Connection con = dbUtil.getConnection();
						ResultSet rs;
						try {
    
      
							// 查询数据库中用药的费用
							String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
									+ "' and PeClass='诊断类'or PeClass='药品类'and MrId='" + tx1.getText() + "'";
							Statement stmt = con.createStatement();
							rs = stmt.executeQuery(sql1);
							while (rs.next()) {
    
      
								String a = rs.getString(1);
								String b = rs.getString(2);

								double a1 = Double.valueOf(a).doubleValue();
								int b1 = Integer.valueOf(b).intValue();

								double d = a1 * b1;

								suma = suma + d;
								sum1 = String.valueOf(suma);

							}
							suma = 0;// 设置为0,否则会应为再次输入而无法清楚原来的数值
							if (sum1 != null) {
    
      
								tx5.setText(sum1);
							} else {
    
      
								tx5.setText("0.0");
							}

						} catch (Exception ex) {
    
      
							ex.printStackTrace();
						}
						try {
    
      

							String sql2 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
									+ "' and PeClass='其他类'and PeName not in('检查费','挂号费','处置费','化验费')";

							Statement stmt = con.createStatement();
							rs = stmt.executeQuery(sql2);

							while (rs.next()) {
    
      
								String a = rs.getString(1);
								String b = rs.getString(2);
								double a1 = Double.valueOf(a).doubleValue();
								int b1 = Integer.valueOf(b).intValue();

								double d = a1 * b1;

								sumb = sumb + d;
								sum3 = String.valueOf(sumb);
								System.out.println(a);
								System.out.println(b);
							}
							sumb = 0;
							if (sum3 != null) {
    
      
								tx6.setText(sum3);
							} else {
    
      
								tx6.setText("0.0");

							}

						} catch (Exception ex) {
    
      
							ex.printStackTrace();
						}

						try {
    
      

							String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
									+ "' and PeName='检查费'";

							Statement stmt = con.createStatement();
							rs = stmt.executeQuery(sql1);

							while (rs.next()) {
    
      
								String a = rs.getString(1);
								String b = rs.getString(2);
								double a1 = Double.valueOf(a).doubleValue();
								int b1 = Integer.valueOf(b).intValue();

								double d = a1 * b1;

								sumc = sumc + d;
								sum2 = String.valueOf(sumc);

							}
							sumc = 0;
							if (sum2 != null) {
    
      
								tx7.setText(sum2);
							} else {
    
      
								tx7.setText("0.0");
							}

						} catch (Exception ex) {
    
      
							ex.printStackTrace();
						}

						try {
    
      

							String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
									+ "' and PeName='挂号费'";

							Statement stmt = con.createStatement();
							rs = stmt.executeQuery(sql1);

							while (rs.next()) {
    
      

								String a = rs.getString(1);
								String b = rs.getString(2);
								double a1 = Double.valueOf(a).doubleValue();
								int b1 = Integer.valueOf(b).intValue();

								double d = a1 * b1;

								sumd = sumd + d;
								sum4 = String.valueOf(sumd);

							}
							sumd = 0;
							if (sum4 != null) {
    
      
								tx8.setText(sum4);
							} else {
    
      
								tx8.setText("0.0");
							}

						} catch (Exception ex) {
    
      
							ex.printStackTrace();
						}
						try {
    
      

							String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
									+ "' and PeName='处置费'";

							Statement stmt = con.createStatement();
							rs = stmt.executeQuery(sql1);

							while (rs.next()) {
    
      

								String a = rs.getString(1);
								String b = rs.getString(2);
								double a1 = Double.valueOf(a).doubleValue();
								int b1 = Integer.valueOf(b).intValue();

								double d = a1 * b1;

								sume = sume + d;
								sum5 = String.valueOf(sume);

							}
							sume = 0;
							if (sum5 != null) {
    
      
								tx9.setText(sum5);
							} else {
    
      
								tx9.setText("0.0");
							}

						} catch (Exception ex) {
    
      
							ex.printStackTrace();
						}
						try {
    
      
							String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
									+ "' and PeName='化验费'";

							Statement stmt = con.createStatement();
							rs = stmt.executeQuery(sql1);

							while (rs.next()) {
    
      
								String a = rs.getString(1);
								String b = rs.getString(2);
								double a1 = Double.valueOf(a).doubleValue();
								int b1 = Integer.valueOf(b).intValue();

								double d = a1 * b1;

								sumf = sumf + d;
								sum6 = String.valueOf(sumf);

							}
							sumc = 0;
							if (sum6 != null) {
    
      
								tx10.setText(sum6);
							} else {
    
      
								tx10.setText("0.0");
							}

						} catch (Exception ex) {
    
      
							ex.printStackTrace();
						}
						try {
    
      
							String sql1 = "select 	PaPay from Patient  where PaId='" + tx2.getText() + "'";
							Statement stmt = con.createStatement();
							rs = stmt.executeQuery(sql1);
							while (rs.next()) {
    
      
								String a = rs.getString(1);
								if (a != null) {
    
      
									tx11.setText(a);
								} else {
    
      
									tx11.setText("0.0");
								}
							}
						} catch (Exception ex) {
    
      
							ex.printStackTrace();
						}
						String t;
						String y;
						String u;
						String u1;
						String u2;
						String u3;
						String u4;
						t = tx5.getText();
						u1 = tx6.getText();
						u2 = tx8.getText();
						u3 = tx9.getText();
						u4 = tx10.getText();
						u = tx7.getText();
						y = tx11.getText();
						float c = Float.parseFloat(u);
						float c1 = Float.parseFloat(t);
						float c2 = Float.parseFloat(y);
						float c4 = Float.parseFloat(u1);
						float c5 = Float.parseFloat(u2);
						float c6 = Float.parseFloat(u3);
						float c7 = Float.parseFloat(u4);
						float q = (float) (c2 - (c7 + c6 + c5 + c4 + c1 + c));// 减除押金后需要交的钱
						float q1 = (float) ((c7 + c6 + c5 + c4 + c1 + c));// 费用总计
						String s = String.valueOf(q);
						String s1 = String.valueOf(q1);
						tx12.setText(s);
						tx13.setText(s1);
						tx12.setForeground(Color.BLUE);
						tx11.setForeground(Color.BLUE);
					}
			}
		});

	}

	private void databaseSearch1(String sql, int i) {
    
      
		// TODO Auto-generated method stub
		DBUtil dbUtil = new DBUtil();
		Connection con = dbUtil.getConnection();
		ResultSet rs;
		try {
    
      
			int rowcount = dtm3.getRowCount() - 1;
			if (rowcount != -1) {
    
      
				for (int i1 = rowcount; i1 >= 0; i1--) {
    
      
					dtm3.removeRow(i1); // 删除Jtable中的所有行
				}
				dtm3.setRowCount(0); // 将Jtable中的行数设为零
			}
			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); // 取出数据库中的数组装载到数组中
				}
				dtm3.addRow(data); // 在Jtabl

			}

			con.close();
			// 设置表格隔行背景色(隔行背景色不同)
		} catch (Exception err) {
    
      
		}
	}

	@Override
	public void actionPerformed(ActionEvent e) {
    
      
		// TODO Auto-generated method stub
		if (e.getSource() == btn1) {
    
      
			// 把费用表录入到收费表中
			try {
    
      
				DBUtil dbUtil = new DBUtil();
				Connection con = dbUtil.getConnection();

				Statement stmt = con.createStatement();

				String sql = "INSERT INTO Charge(MrId,PaId,PaName,DeptName,Drugfee,treatmentfee,checkfee,registrationfee,disposalfee,assayfee,sum,time)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.setString(5, tx5.getText());
				parepare.setString(6, tx6.getText());
				parepare.setString(7, tx7.getText());
				parepare.setString(8, tx8.getText());
				parepare.setString(9, tx9.getText());
				parepare.setString(10, tx10.getText());
				parepare.setString(11, tx13.getText());
				parepare.setString(12, tx14.getText());
				// 判断是否有输入错误的,做提示操作
				if (tx1.getText().equals("")) {
    
      
					JOptionPane.showMessageDialog(null, "请输入结算的档案号", "错误", JOptionPane.INFORMATION_MESSAGE);
				} else {
    
      
					parepare.executeUpdate();
					JOptionPane.showMessageDialog(null, "结账成功,需要交(退)" + tx12.getText() + "", "结账成功",
							JOptionPane.INFORMATION_MESSAGE);

					String sql1 = "delete from Patient where PaId='" + tx2.getText() + "'";
					try {
    
      

						stmt.executeUpdate(sql1);
						tx0.setText("");

						tx1.setText("");
						tx2.setText("");
						tx3.setText("");
						tx4.setText("");
						tx5.setText("");
						tx6.setText("");
						tx7.setText("");
						tx8.setText("");
						tx9.setText("");
						tx10.setText("");
						tx11.setText("");
						tx12.setText("");
						tx13.setText("");
						tx14.setText("");
						JScrollPane5.setVisible(false);
					} catch (SQLException e1) {
    
      
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}

				}

			} catch (Exception e2) {
    
      
				e2.printStackTrace();
			}

		} else if (e.getSource() == btn2) {
    
      
			tx0.setText("");

			tx1.setText("");
			tx2.setText("");
			tx3.setText("");
			tx4.setText("");
			tx5.setText("");
			tx6.setText("");
			tx7.setText("");
			tx8.setText("");
			tx9.setText("");
			tx10.setText("");
			tx11.setText("");
			tx12.setText("");
			tx13.setText("");
			tx14.setText("");
			JScrollPane5.setVisible(false);

		}
	}
}

ChargeQuery.java

package com.sjsq;

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;

public class ChargeQuery {
    
      
	Font f1 = new Font("隶书", Font.BOLD, 30);
	public static JTable table;
	
	public static DefaultTableModel dtm;
	private JScrollPane JScrollPane = new JScrollPane();
	JPanel panel2 = new JPanel();

	private JLabel la1, la2, la3, la4, la5;
	private JTextField tx1, tx2;
	private String columnNames[] = {
    
       "就医档案编号", "病人编号", "病人姓名", "就医科室", "用药费用", "治疗费", "检查费", "挂号费", "处置费", "化验费",
			"费用总额", "结账时间" };

	ChargeQuery() {
    
      
		// 添加背景
		ImageIcon background = new ImageIcon("picture/right_bg.jpg"); // 背景图片
		JLabel label = new JLabel(background);

		panel2.setLayout(null);
		// 设置默认表格面板
		dtm = new DefaultTableModel(columnNames, 0);
		table = new JTable(dtm) {
    
      
			public boolean isCellEditable(int row, int column) {
    
      
				return false;
			}// 表格不允许被编辑 }
		};

		String sql = "select * from Charge";
		databaseSearch(sql, 12);

		JScrollPane.setViewportView(table);// 给表格添加滚动条
		panel2.add(JScrollPane);
		JScrollPane.setBounds(30, 200, 950, 300);

		setbgcolor();

		JLabel label1 = new JLabel("收费统计");
		panel2.add(label1);
		label1.setBounds(30, 10, 400, 50);
		label1.setFont(f1);

		la1 = new JLabel("总费用统计:");
		la2 = new JLabel("人数统计:");
		tx1 = new JTextField();
		tx2 = new JTextField();

		la1.setBounds(30, 80, 100, 50);
		la2.setBounds(30, 120, 100, 50);
		tx1.setBounds(100, 90, 100, 30);
		tx2.setBounds(100, 130, 100, 30);

		panel2.add(la1);
		panel2.add(la2);
		panel2.add(tx1);
		panel2.add(tx2);
		tx1.setEditable(false);
		tx2.setEditable(false);
		panel2.add(label);// 面板添加背景图片,设置位置
		label.setBounds(-30, 0, 1100, 700);
		DBUtil dbUtil = new DBUtil();
		Connection con = dbUtil.getConnection();
		ResultSet rs, rs1;

		try {
    
      
			String sql2 = "select Sum(sum) from Charge ";
			String sql1 = "select count(*) from Charge ";
			Statement stmt = con.createStatement();
			Statement stmt1 = con.createStatement();
			rs = stmt.executeQuery(sql1);
			rs1 = stmt1.executeQuery(sql2);
			while (rs.next()) {
    
      
				String a = rs.getString(1);
				tx2.setText(a);
			}

			while (rs1.next()) {
    
      
				String a = rs1.getString(1);
				tx1.setText(a);
			}

		} catch (Exception e) {
    
      
			e.printStackTrace();
		}

	}

	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
		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); // 删除Jtable中的所有行
				}
				dtm.setRowCount(0); // 将Jtable中的行数设为零
			}
			Statement stmt = con.createStatement();
			rs = stmt.executeQuery(sql);
			String[] data = new String[12];
			while (rs.next()) {
    
      
				for (int j = 1; j <= 12; j++) {
    
      
					data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中
				}
				dtm.addRow(data); // 在Jtable中添加数据行
			}

			con.close();
			// 设置表格隔行背景色(隔行背景色不同)
		} catch (Exception err) {
    
      
		}
	}
}

ChufangModify.java

package com.sjsq;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
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 javax.swing.DefaultCellEditor;
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.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class ChufangModify extends JFrame implements ActionListener, ItemListener {
    
      
	JButton button6 = new JButton("增加");
	JButton button7 = new JButton("确定");
	JButton button8 = new JButton("删除");
	private String columnNames[] = {
    
       "编码", "名称", "单价", "数量", "计数单位", "类别", "档案编号" };
	private String columnNames1[] = {
    
       "编码", "名称", "单价", "计数单位", "类别" };
	private JLabel la0;
	private JComboBox box1, box2;
	JPanel panel2 = new JPanel();
	public static JTable table2, table3;
	public static DefaultTableModel dtm2, dtm3;
	private JScrollPane JScrollPane3 = new JScrollPane();
	private JScrollPane JScrollPane5 = new JScrollPane();
	String y;

	ChufangModify(String Stitle) {
    
      
		super(Stitle);
		panel2.setLayout(null);
		ImageIcon ic; // 按钮图片
		ic = new ImageIcon("picture/right_bg.jpg");
		JLabel label = new JLabel(ic);// 把背景图片显示在一个标签里面

		dtm2 = new DefaultTableModel(columnNames, 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" };
		table2 = new JTable(dtm2);// JScrollPane4 项目表
		JScrollPane JScrollPane4 = new JScrollPane(table2);
		TableColumn a1 = table2.getColumn("名称");
		TableColumn a2 = table2.getColumn("数量");
		JTextField box3 = new JTextField();
		box2 = new JComboBox(fontSize1);
		box2.addActionListener(this);
		box2.addItemListener(this);

		box3.getDocument().addDocumentListener(new DocumentListener() {
    
      
			@Override
			public void removeUpdate(DocumentEvent e) {
    
      
				System.out.println("removeUpdate");
				updata_combobox();
			}

			@Override
			public void insertUpdate(DocumentEvent e) {
    
      
				System.out.println("insertUpdate");
				updata_combobox();
			}

			@Override
			public void changedUpdate(DocumentEvent e) {
    
      

				updata_combobox();
			}

			private void updata_combobox() {
    
      
				String s1 = null;
				s1 = box3.getText();

				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);

		final JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBorder(new TitledBorder(null, "诊疗项目单", TitledBorder.DEFAULT_JUSTIFICATION,
				TitledBorder.DEFAULT_POSITION, null, null));
		panel.setBounds(20, 150, 530, 180);
		panel.setBackground(Color.WHITE);
		panel.add(JScrollPane4);
		JScrollPane4.setBounds(10, 20, 400, 150);
		panel2.add(panel);
		button6.setBounds(420, 20, 100, 40);
		panel.add(button6);
		button7.setBounds(420, 70, 100, 40);
		panel.add(button7);
		button8.setBounds(420, 120, 100, 40);
		panel.add(button8);
		button6.addActionListener(this);
		button7.addActionListener(this);
		button8.addActionListener(this);
		dtm3 = new DefaultTableModel(columnNames1, 0);// 项目明细表
		table3 = new JTable(dtm3) {
    
      
			public boolean isCellEditable(int row, int column) {
    
      
				return false;
			}// 表格不允许被编辑 }
		};

		JScrollPane5.setViewportView(table3);
		panel2.add(JScrollPane5);
		JScrollPane5.setBounds(30, 50, 400, 100);
		JScrollPane5.setVisible(false);

		String SQL1 = "select * from Price where PeClass='其他类'";
		databaseSearch1(SQL1, 5);

		JScrollPane4.setViewportView(table2);
		box3.addMouseListener(new MouseAdapter() {
    
      // 设置TABLE双击鼠标事件
			public void mouseClicked(MouseEvent e) {
    
      
				if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
					JScrollPane5.setVisible(true);
			}
		});

		button8.addMouseListener(new MouseAdapter() {
    
       // 删除按钮实现删除记录的功能
			public void mouseClicked(MouseEvent e) {
    
      
				int row = table2.getSelectedRow();// 这句选择要删除的行
				DBUtil dbUtil = new DBUtil();
				Connection con = dbUtil.getConnection();
				Statement stmt;
				String val = (String) table2.getValueAt(row, 6);
				String val1 = (String) table2.getValueAt(row, 0);
				String sql = "delete from DrugTable where MrId='" + val + "'and PeNo='" + val1 + "'";
				try {
    
      
					stmt = con.createStatement();
					stmt.executeUpdate(sql);
					button6.setEnabled(true);
					JOptionPane.showMessageDialog(null, " 删除成功!", "注意", JOptionPane.INFORMATION_MESSAGE);
				} catch (SQLException e1) {
    
      
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				if (row != -1) {
    
       // 这句判断是否有选中的行
					dtm2.removeRow(row);
				} // 这句删除指定行

			}
		});

		table3.addMouseListener(new MouseAdapter() {
    
      // 设置TABLE双击鼠标事件
			public void mouseClicked(MouseEvent e) {
    
      
				if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
					if (e.getClickCount() == 2) {
    
      
						int o = table3.getSelectedRow();
						int row = table2.getSelectedRow();
						String ao = (String) table3.getValueAt(o, 1);
						String bo = (String) table3.getValueAt(o, 0);
						String co = (String) table3.getValueAt(o, 2);
						String eo = (String) table3.getValueAt(o, 4);
						String qo = (String) table3.getValueAt(o, 3);
						System.out.println(ao);
						box3.setText(ao);
						table2.setValueAt(bo, row, 0);
						table2.setValueAt(co, row, 2);

						table2.setValueAt(eo, row, 5);
						table2.setValueAt(qo, row, 4);
						y = co;
						JScrollPane5.setVisible(false);
					}
			}
		});

		panel2.add(label);
		label.setBounds(0, 0, 600, 400);
		this.add(panel2);
		this.setSize(600, 400); // 设置窗口大小
		this.setResizable(false); // 设置不可调整窗口大小
		this.setLocationRelativeTo(null);
		this.setVisible(true);

	}

	@Override
	public void actionPerformed(ActionEvent e) {
    
      
		// TODO Auto-generated method stub
		if (e.getSource() == button7) {
    
      
			try {
    
      
				String s = (String) box2.getSelectedItem();
				int i = Integer.valueOf(s).intValue();
				DBUtil dbUtil = new DBUtil();
				Connection con = dbUtil.getConnection();
				int row = table2.getSelectedRow();
				String b = (String) table2.getValueAt(row, 3);

				String sql = "INSERT INTO DrugTable(PeNo,PeName,PePrice,PeNumber,PeUnit,PeClass,MrId)VALUES(?,?,?,?,?,?,?)";
				PreparedStatement parepare = con.prepareStatement(sql);
				parepare.setString(1, (String) table2.getValueAt(row, 0));
				parepare.setString(2, (String) table2.getValueAt(row, 1));
				parepare.setString(3, (String) table2.getValueAt(row, 2));
				parepare.setString(4, (String) table2.getValueAt(row, 3));
				parepare.setString(5, (String) table2.getValueAt(row, 4));
				parepare.setString(6, (String) table2.getValueAt(row, 5));
				parepare.setString(7, (String) table2.getValueAt(row, 6));

				if (i <= 0 || b == "") {
    
      
					JOptionPane.showMessageDialog(null, "数量不能小于0或为空", "错误", JOptionPane.INFORMATION_MESSAGE);

				}

				else {
    
      
					parepare.executeUpdate();
					JOptionPane.showMessageDialog(null, "录入成功", "录入成功", JOptionPane.INFORMATION_MESSAGE);

					button6.setEnabled(true);
				}
			} catch (Exception et) {
    
      
				et.printStackTrace();
			}
		}
	}

	public void databaseSearch1(String SQL1, int i) {
    
      
		// TODO Auto-generated method stub
		DBUtil dbUtil = new DBUtil();
		Connection con = dbUtil.getConnection();
		ResultSet rs;
		try {
    
      
			int rowcount = dtm3.getRowCount() - 1;
			if (rowcount != -1) {
    
      
				for (int i1 = rowcount; i1 >= 0; i1--) {
    
      
					dtm3.removeRow(i1); // 删除Jtable中的所有行
				}
				dtm3.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); // 取出数据库中的数组装载到数组中
				}
				dtm3.addRow(data); // 在Jtabl

			}

			con.close();
			// 设置表格隔行背景色(隔行背景色不同)
		} catch (Exception err) {
    
      

		}

	}

	public void addrow(JTable table) {
    
      
		// TODO Auto-generated method stub
		int row = table.getSelectedRow();

		String b = (String) table.getValueAt(row, 0);

		button6.addActionListener(new ActionListener() {
    
      // 添加事件
			public void actionPerformed(ActionEvent e) {
    
      
				String[] da1 = {
    
       "", "" };
				String[] rowValues = da1;

				dtm2.addRow(rowValues); // 添加一行
				int row1 = table2.getRowCount() - 1;
				table2.setRowSelectionInterval(row1, row1);
				table2.setValueAt(b, row1, 6);

				button6.setEnabled(false);

			}
		});
	}

	public void databaseSearch2(String SQL, int i) {
    
      
		DBUtil dbUtil = new DBUtil();
		Connection 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[7];
			while (rs.next()) {
    
      
				for (int j = 1; j <= 7; j++) {
    
      
					data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中
				}
				dtm2.addRow(data); // 在Jtabl

			}

			con.close();
			// 设置表格隔行背景色(隔行背景色不同)
		} catch (Exception err) {
    
      

		}

	}

	@Override
	public void itemStateChanged(ItemEvent e) {
    
      
		// TODO Auto-generated method stub

	}

}

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.