国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Java+Swing實(shí)現醫院管理系統的完整代碼

發(fā)布時(shí)間:2021-07-17 21:51 來(lái)源:腳本之家 閱讀:0 作者:水堅石青 欄目: 編程語(yǔ)言 歡迎投稿:712375056

目錄

一、系統介紹

本系統實(shí)現的以下功能
管理員功能:登錄系統、病人信息的增刪改查、就醫檔案的錄入、醫生信息的增刪改查、科室信息的增刪改查、收費統計功能、修改密碼。
醫生功能:登錄系統、病人信息的增刪改查、醫生信息的增刪改查、科室信息的增刪改查、收費統計功能、修改密碼。
收費員功能:價(jià)格管理、收費管理、修改密碼。
JDK版本:1.8
數據:Mysql8.0.13

數據庫用到的表
cashier
charge
department
doctor
drugtable
manager
medical_records
patient
price

工程截圖

二、系統展示

1.登錄頁(yè)

2.主頁(yè)面

3.病人信息錄入

4.病人信息操作

5.就醫檔案錄入

6.處方單錄入

7.就醫檔案操作

8.醫生信息錄入

9.醫生信息操作

10.科室信息錄入

11.科室信息操作

12.收費操作

13.收費統計

14.修改密碼

15.醫生主頁(yè)面

16.收費員主頁(yè)面

三、系統實(shí)現

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;
	// 輸入的用戶(hù)Id
	public static String userId;
	// 輸入的用戶(hù)名
	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("用戶(hù)名或者密碼不對,請重新輸入");
	// 密碼
	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);
		
		// 登錄監聽(tīng)
		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語(yǔ)句,返回結果集
						while (rs.next()) {

							userId = rs.getString("DrId"); // 獲取登錄的用戶(hù)編號,
							username = rs.getString("DrName");// 獲取登錄的用戶(hù)姓名
							password = rs.getString("Password"); // 獲取數據庫中的數據項的密碼
							if (userId.equals(usernameText) && password.equals(passwordText)) {// 判斷數據庫的用戶(hù)編號以及密碼是否與文本框的值相同
								loginFlag = 1;
								break;
							}

						}
						if (loginFlag == 1) {
							JOptionPane.showMessageDialog(null, "登錄成功");
							// 顯示系統主界面
							MainPanelDoctor a = new MainPanelDoctor("醫生界面"); 
							a.setVisible(true);
							Login.this.setVisible(false);// 關(guān)閉登錄按鈕
						} else {
							usernameJTextField.setText(""); // 錯誤的話(huà)則文本框內容設置為空,顯示錯誤標簽
							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語(yǔ)句,返回結果集
						while (rs.next()) {

							userId = rs.getString("ManagerID"); // 獲取登錄的用戶(hù)編號,
							username = rs.getString("ManagerName");// 獲取登錄的用戶(hù)姓名
							password = rs.getString("MaPassWord"); // 獲取數據庫中的數據項的密碼
							if (userId.equals(usernameText) && password.equals(passwordText)) {// 判斷數據庫的用戶(hù)編號以及密碼是否與文本框的值相同

								loginFlag = 1;

								break;
							}

						}
						// 登錄成功
						if (loginFlag == 1) {
							JOptionPane.showMessageDialog(null, "登錄成功");
							new MainPanelManager("管理員界面"); // 顯示系統主界面
							Login.this.setVisible(false);// 關(guān)閉登錄按鈕
						// 登錄失敗
						} else {
							usernameJTextField.setText(""); // 錯誤的話(huà)則文本框內容設置為空,顯示錯誤標簽
							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語(yǔ)句,返回結果集
						while (rs.next()) {

							userId = rs.getString("cashierId"); // 獲取登錄的用戶(hù)編號,
							username = rs.getString("cashierName");// 獲取登錄的用戶(hù)姓名
							password = rs.getString("cashierPassWord"); // 獲取數據庫中的數據項的密碼
							if (userId.equals(usernameText) && password.equals(passwordText)) {// 判斷數據庫的用戶(hù)編號以及密碼是否與文本框的值相同

								loginFlag = 1;

								break;
							}

						}
						if (loginFlag == 1) {
							JOptionPane.showMessageDialog(null, "登錄成功");
							new MainPanelCashier("收費員頁(yè)面"); // 顯示系統主界面
							Login.this.setVisible(false);// 關(guān)閉登錄按鈕
						} else {
							usernameJTextField.setText(""); // 錯誤的話(huà)則文本框內容設置為空,顯示錯誤標簽
							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, "請選擇用戶(hù)類(lèi)型");

				}

			}
		});

		// 登錄按鈕添加功能事件

		// 賬號
		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

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("隸書(shū)", 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("隸書(shū)", 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() {
		// 獲取時(shí)間
		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("撤銷(xiāo)結算");
		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);

		// 設置一個(gè)新的面板
		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);// 給表格添加滾動(dòng)條
		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的文本框添加按鈕事件,顯示一個(gè)表格
			public void mouseClicked(MouseEvent e) {
				if (e.getButton() == MouseEvent.BUTTON1) // 單擊鼠標左鍵
					JScrollPane5.setVisible(true);
			}
		});
		// tx1文本框添加事件,根據文本框內容的改變模糊查詢(xún)到數據庫內容,顯示到表格中
		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的內容模糊查詢(xún)數據庫對應的數據
				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);

						// 連接數據庫,查詢(xún)對應的價(jià)格
						DBUtil dbUtil = new DBUtil();
						Connection con = dbUtil.getConnection();
						ResultSet rs;
						try {
							// 查詢(xún)數據庫中用藥的費用
							String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
									+ "' and PeClass='診斷類(lèi)'or PeClass='藥品類(lèi)'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,否則會(huì )應為再次輸入而無(wú)法清楚原來(lái)的數值
							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='其他類(lèi)'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));// 減除押金后需要交的錢(qián)
						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("隸書(shū)", 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[] = { "就醫檔案編號", "病人編號", "病人姓名", "就醫科室", "用藥費用", "治療費", "檢查費", "掛號費", "處置費", "化驗費",
			"費用總額", "結賬時(shí)間" };

	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);// 給表格添加滾動(dòng)條
		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[] = { "編碼", "名稱(chēng)", "單價(jià)", "數量", "計數單位", "類(lèi)別", "檔案編號" };
	private String columnNames1[] = { "編碼", "名稱(chēng)", "單價(jià)", "計數單位", "類(lèi)別" };
	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);// 把背景圖片顯示在一個(gè)標簽里面

		dtm2 = new DefaultTableModel(columnNames, 0) {// dtm2是項目收費表格模版
			public boolean isCellEditable(int row, int column) {
				if (column == 1 || column == 3)
					return true;// 這個(gè)是可以編輯的列
				// 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("名稱(chēng)");
		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='其他類(lèi)'";
				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='其他類(lèi)'";
		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() { // 刪除按鈕實(shí)現刪除記錄的功能
			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;
	}

	// 關(guān)閉連接
	public void close() {
		try {
			if (con != null) {
				con.close();
			}
			con = null;
			System.out.println("數據庫連接關(guān)閉");
		} 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[] = { "查詢(xún)全部", "按科室編號查詢(xún)", "按科室名稱(chēng)查詢(xún)" };
	private final String[] columnNames = { "科室編號", "科室名稱(chēng)", "科室主任", "科室電話(huà)" };
	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("科室名稱(chēng):");
		la3 = new JLabel("科室主任:");
		la4 = new JLabel("科室電話(huà):");
		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);

		// 查詢(xún)操縱面板設置
		final JPanel panel1 = new JPanel();
		panel1.setLayout(null);
		panel1.setBorder(new TitledBorder(null, "查詢(xún)操作", TitledBorder.DEFAULT_JUSTIFICATION,
				TitledBorder.DEFAULT_POSITION, null, Color.red));
		panel1.setBounds(620, 65, 380, 150);
		panel1.setOpaque(false);

		query = new JButton("查詢(xún)");
		la5 = new JLabel("科室編號:");
		la6 = new JLabel("科室名稱(chēng):");
		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); // 創(chuàng  )建一個(gè)滾動(dòng)條(如果有必要)并設置其視圖
		// table.getColumnModel().getColumn(0).setMinWidth(40);
		// table.getColumnModel().getColumn(0).setMaxWidth(40);
		table.getTableHeader().setReorderingAllowed(false); // 列不可拖動(dòng)
		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);

		// 添加監聽(tīng)器
		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);
			}
			// 名字長(cháng)度不能超過(guò)20個(gè)字符
			else if (tx2.getText().length() > 10 || tx3.getText().length() > 10) {
				JOptionPane.showMessageDialog(null, "名字長(cháng)度不能超過(guò)10個(gè)漢字!", "錯誤", JOptionPane.ERROR_MESSAGE);
			}
			// 電話(huà)號碼為8位數字
			else if (pattern.matcher(tx4.getText()).matches() == false || tx4.getText().length() != 8) {
				JOptionPane.showMessageDialog(null, "請輸入正確的8位數電話(huà)號碼!", "錯誤", 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(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象
					Statement st2 = con.createStatement(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象
					Statement st3 = con.createStatement(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象
					ResultSet rs1 = st1.executeQuery("select * from Department where DeptNo='" + deptNo + "'"); // SQL語(yǔ)句
					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, "該科室電話(huà)號碼已存在,請重新輸入!", "錯誤", 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) { // 查詢(xún)操作
			try {
				DBUtil dbUtil = new DBUtil();
				Connection con = dbUtil.getConnection();
				if (jcbb1.getSelectedIndex() == 0) { // 全部查詢(xún)
					String sql = "select * from Department";
					databaseSearch(sql);
					if (table.getRowCount() != 0) {
						JOptionPane.showMessageDialog(null, "查詢(xún)成功!");
					} else {
						JOptionPane.showMessageDialog(null, "沒(méi)有找到您要的信息!");
					}
				}
				if (jcbb1.getSelectedIndex() == 1) { // 編號查詢(xún)
					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, "查詢(xún)成功!");
							tx5.setText("");
						} else {
							JOptionPane.showMessageDialog(null, "沒(méi)有找到您要的信息!");
						}
					}
				}
				if (jcbb1.getSelectedIndex() == 2) { // 名稱(chēng)查詢(xún)
					if (tx6.getText().trim().equals("")) {
						JOptionPane.showMessageDialog(null, "請輸入正確的科室名稱(chēng)!", "錯誤", 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, "查詢(xún)成功!");
							tx6.setText("");
						} else {
							JOptionPane.showMessageDialog(null, "沒(méi)有找到您要的信息!");
						}
					}
				}
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}
		if (e.getSource() == delete) { // 刪除操作
			try {
				DBUtil dbUtil = new DBUtil();
				Connection con = dbUtil.getConnection();
				Statement stmt = con.createStatement(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象
				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 + "個(gè)科室信息?", "確定",
							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, "請選擇一項科室信息進(jìn)行修改!", "錯誤", JOptionPane.ERROR_MESSAGE);
			} else {
				try {
					DBUtil dbUtil = new DBUtil();
					Connection con = dbUtil.getConnection();
					Statement stmt1 = con.createStatement(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象

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

	// 科室信息修改操作對話(huà)框設置++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	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("科室名稱(chēng):");
			la3 = new JLabel("科室主任:");
			la4 = new JLabel("科室電話(huà):");
			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(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象
						// 輸入信息不能為空
						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);
						}
						// 名字長(cháng)度不能超過(guò)20個(gè)字符
						else if (tx2.getText().length() > 10 || tx3.getText().length() > 10) {
							JOptionPane.showMessageDialog(null, "名字長(cháng)度不能超過(guò)10個(gè)漢字!", "錯誤", JOptionPane.ERROR_MESSAGE);
						}
						// 電話(huà)號碼為8位數字
						else if (pattern.matcher(tx4.getText()).matches() == false || tx4.getText().length() != 8) {
							JOptionPane.showMessageDialog(null, "請輸入正確的8位數電話(huà)號碼!", "錯誤", 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[] = { "查詢(xún)全部", "按科室編號查詢(xún)", "按科室名稱(chēng)查詢(xún)" };
	private final String[] columnNames = { "科室編號", "科室名稱(chēng)", "科室主任", "科室電話(huà)" };
	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("科室名稱(chēng):");
		la3 = new JLabel("科室主任:");
		la4 = new JLabel("科室電話(huà):");
		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);

		// 查詢(xún)操縱面板設置
		final JPanel panel1 = new JPanel();
		panel1.setLayout(null);
		panel1.setBorder(new TitledBorder(null, "查詢(xún)操作", TitledBorder.DEFAULT_JUSTIFICATION,
				TitledBorder.DEFAULT_POSITION, null, Color.red));
		panel1.setBounds(620, 65, 380, 150);
		panel1.setOpaque(false);

		query = new JButton("查詢(xún)");
		la5 = new JLabel("科室編號:");
		la6 = new JLabel("科室名稱(chēng):");
		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); // 創(chuàng  )建一個(gè)滾動(dòng)條(如果有必要)并設置其視圖
		// table.getColumnModel().getColumn(0).setMinWidth(40);
		// table.getColumnModel().getColumn(0).setMaxWidth(40);
		table.getTableHeader().setReorderingAllowed(false); // 列不可拖動(dòng)
		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);

		// 添加監聽(tīng)器
		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);
			}
			// 名字長(cháng)度不能超過(guò)20個(gè)字符
			else if (tx2.getText().length() > 10 || tx3.getText().length() > 10) {
				JOptionPane.showMessageDialog(null, "名字長(cháng)度不能超過(guò)10個(gè)漢字!", "錯誤", JOptionPane.ERROR_MESSAGE);
			}
			// 電話(huà)號碼為8位數字
			else if (pattern.matcher(tx4.getText()).matches() == false || tx4.getText().length() != 8) {
				JOptionPane.showMessageDialog(null, "請輸入正確的8位數電話(huà)號碼!", "錯誤", 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(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象
					Statement st2 = con.createStatement(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象
					Statement st3 = con.createStatement(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象
					ResultSet rs1 = st1.executeQuery("select * from Department where DeptNo='" + deptNo + "'"); // SQL語(yǔ)句
					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, "該科室電話(huà)號碼已存在,請重新輸入!", "錯誤", 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) { // 查詢(xún)操作
			try {
				DBUtil dbUtil = new DBUtil();
				Connection con = dbUtil.getConnection();
				if (jcbb1.getSelectedIndex() == 0) { // 全部查詢(xún)
					String sql = "select * from Department";
					databaseSearch(sql);
					if (table.getRowCount() != 0) {
						JOptionPane.showMessageDialog(null, "查詢(xún)成功!");
					} else {
						JOptionPane.showMessageDialog(null, "沒(méi)有找到您要的信息!");
					}
				}
				if (jcbb1.getSelectedIndex() == 1) { // 編號查詢(xún)
					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, "查詢(xún)成功!");
							tx5.setText("");
						} else {
							JOptionPane.showMessageDialog(null, "沒(méi)有找到您要的信息!");
						}
					}
				}
				if (jcbb1.getSelectedIndex() == 2) { // 名稱(chēng)查詢(xún)
					if (tx6.getText().trim().equals("")) {
						JOptionPane.showMessageDialog(null, "請輸入正確的科室名稱(chēng)!", "錯誤", 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, "查詢(xún)成功!");
							tx6.setText("");
						} else {
							JOptionPane.showMessageDialog(null, "沒(méi)有找到您要的信息!");
						}
					}
				}
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}
		if (e.getSource() == delete) { // 刪除操作
			try {
				DBUtil dbUtil = new DBUtil();
				Connection con = dbUtil.getConnection();
				Statement stmt = con.createStatement(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象
				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 + "個(gè)科室信息?", "確定",
							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, "請選擇一項科室信息進(jìn)行修改!", "錯誤", JOptionPane.ERROR_MESSAGE);
			} else {
				try {
					DBUtil dbUtil = new DBUtil();
					Connection con = dbUtil.getConnection();
					Statement stmt1 = con.createStatement(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象

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

	// 科室信息修改操作對話(huà)框設置++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	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("科室名稱(chēng):");
			la3 = new JLabel("科室主任:");
			la4 = new JLabel("科室電話(huà):");
			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(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象
						// 輸入信息不能為空
						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);
						}
						// 名字長(cháng)度不能超過(guò)20個(gè)字符
						else if (tx2.getText().length() > 10 || tx3.getText().length() > 10) {
							JOptionPane.showMessageDialog(null, "名字長(cháng)度不能超過(guò)10個(gè)漢字!", "錯誤", JOptionPane.ERROR_MESSAGE);
						}
						// 電話(huà)號碼為8位數字
						else if (pattern.matcher(tx4.getText()).matches() == false || tx4.getText().length() != 8) {
							JOptionPane.showMessageDialog(null, "請輸入正確的8位數電話(huà)號碼!", "錯誤", 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("職稱(chēng):");
		la6 = new JLabel("學(xué)歷:");
		la7 = new JLabel("所屬科室:");
		la8 = new JLabel("籍貫:");
		la9 = new JLabel("入職日期:");
		la10 = new JLabel("電話(huà)號碼:");
		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);

		// 職稱(chēng)下拉框設置
		str5 = new String[] { "", "醫師", "主治醫師", "副主任醫師", "主任醫師" };
		position = new JComboBox(str5);
		position.setBounds(80, 75, 100, 25);
		position.setFont(laFont);

		// 學(xué)歷下拉框設置
		str6 = new String[] { "", "大專(zhuān)", "本科", "碩士", "博士", "博士后" };
		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(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象
			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);

		// 入職時(shí)間設置
		showDate1.setFont(new Font("", 1, 20));
		dateChooser1.register(showDate1);
		panel.add(showDate1);
		showDate1.setBounds(110, 125, 150, 30);

		// 表格設置
		columnNames = new String[] { "醫生編號", "醫生姓名", "性別", "年齡", "職稱(chēng)", "學(xué)歷", "所屬科室", "籍貫", "入職日期", "電話(huà)號碼" };
		defaultTableModel();
		setTableColumnCenter();
		setbgcolor();
		JScrollPane1.setBounds(new Rectangle(60, 70, 935, 230));
		doctorInput.add(JScrollPane1);
		JScrollPane1.setViewportView(table); // 創(chuàng  )建一個(gè)視口(如果有必要)并設置其視圖
		table.getTableHeader().setReorderingAllowed(false); // 列不可拖動(dòng)
		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);

		// 添加監聽(tīng)器
		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, "名字長(cháng)度不能超過(guò)10個(gè)漢字!", "錯誤", JOptionPane.ERROR_MESSAGE);
			} else if (tx8.getText().length() > 10) {
				JOptionPane.showMessageDialog(null, "籍貫長(cháng)度不能超過(guò)10個(gè)漢字!", "錯誤", 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(); // 創(chuàng  )建一個(gè)數據庫會(huì )話(huà)對象
					ResultSet rs = stmt.executeQuery("select * from Doctor where DrId='" + DrId + "'"); // SQL語(yǔ)句
					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[] = { "編碼", "名稱(chēng)", "單價(jià)", "數量", "計數單位", "類(lèi)別", "病例編碼" };
	private String columnNames2[] = { "編碼", "名稱(chēng)", "單價(jià)", "計數單位", "類(lèi)別" };
	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;// 這個(gè)是可以編輯的列
				// 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("名稱(chēng)");
		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='其他類(lèi)'";
				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='其他類(lèi)'";
		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;// 這個(gè)是可以編輯的列
				// if(rowIndex!=0) return false;
				return false;
			}// 表格不允許被編輯 }
		};

		table3 = new JTable(dtm3);//
		JScrollPane JScrollPane3 = new JScrollPane(table3);
		TableColumn b1 = table3.getColumn("名稱(chēng)");
		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='診斷類(lèi)'or PeName like '%"
						+ s1 + "%' and PeClass='藥品類(lèi)'";
				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='診斷類(lèi)'or PeClass='藥品類(lèi)'";
		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);
		// 給按鈕添加監聽(tīng)事件
		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() { // 刪除按鈕實(shí)現刪除記錄的功能
			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() { // 刪除按鈕實(shí)現刪除記錄的功能
			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, "請輸入藥物名稱(chēng)", "錯誤", 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, "請輸入藥物名稱(chēng)", "錯誤", 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("隸書(shū)", 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);// 把背景圖片顯示在一個(gè)標簽里面

		panel2.setLayout(null);
		button = new JButton("保存");
		la0 = new JLabel("修改就醫檔案");
		la1 = new JLabel("就醫檔案編號:");
		la2 = new JLabel("病人編號 :");
		la3 = new JLabel("病人姓名 :");
		la4 = new JLabel("錄入時(shí)間 :");
		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("隸書(shū)", Font.BOLD, 30);
	Font f1 = new Font("草書(shū)", 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("查詢(xún)");
	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);// 把背景圖片顯示在一個(gè)標簽里面

		panel.add(label);
		String columnNames[] = { "就醫檔案編號", "病人編號", "病人姓名", "就醫檔案錄入時(shí)間", "醫生編號", "醫生姓名", "所屬科室", "病因" };
		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, "查詢(xún)操作", 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() {// 下拉框添加事件,用于顯示相應的查詢(xún)文本框,以及標簽
			public void actionPerformed(final ActionEvent e) {
				Object SelectName = jcbb1.getSelectedItem();
				String selectNamecontent = SelectName.toString();

				if (selectNamecontent.equals("請選擇查詢(xún)種類(lèi)")) {
					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[] { "請選擇查詢(xún)種類(lèi)", "病例編號", "病人姓名" }));
		jcbb1.setBounds(20, 28, 135, 25);
		panel1.add(jcbb1);

		// 添加背景
		panel.add(label);
		label.setBounds(0, 0, 1100, 700);

		button3.addMouseListener(new MouseAdapter() { // 刪除按鈕實(shí)現刪除記錄的功能
			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() {// 查詢(xún)按鈕添加鼠標事件,對應相應的查詢(xún)功能
			public void mouseClicked(final MouseEvent e) {
				System.out.println("Good idea!!!");
				Object SelectName = jcbb1.getSelectedItem();
				String selectNamecontent = SelectName.toString();
				if (selectNamecontent.equals("請選擇查詢(xún)種類(lèi)")) {
					System.out.println("什么也不做");
					return;
				} else if (selectNamecontent.equals("病例編號")) {
					if (tx5.getText().equals("")) {
						JOptionPane.showMessageDialog(null, "  請輸入病例編號!", "注意", JOptionPane.ERROR_MESSAGE);
						return;
					}
					String sickName = tx5.getText().trim();
					String SQL = "select * from Medical_records where MrId like '%" + sickName + "%'";
					databaseSearch(SQL, 8);

					return;
				}

				else if (selectNamecontent.equals("病人姓名")) {
					if (tx6.getText().equals("")) {
						JOptionPane.showMessageDialog(null, "  請輸入病人姓名!", "注意", JOptionPane.ERROR_MESSAGE);
						return;
					}
					String sickCaseID = tx6.getText().trim();

					String SQL = "select * from Medical_records where PaName like '%" + sickCaseID + "%'";
					databaseSearch(SQL, 8);
					return;
				}
			}

		});

	}

	private void setbgcolor() {
		// TODO Auto-generated method stub
		// 設置表格隔行背景顏色不同

		try {
			DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
				public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
						boolean hasFocus, int row, int column) {
					if (row % 2 == 0)
						setBackground(new Color(223, 220, 239)); // 設置奇數行底色
					else if (row % 2 == 1)
						setBackground(Color.white); // 設置偶數行底色
					return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
				}
			};
			for (int i = 0; i < table.getColumnCount(); i++) {
				table.getColumn(table.getColumnName(i)).setCellRenderer(tcr);
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}

	}

	private void databaseSearch(String SQL, int i) {
		// TODO Auto-generated method stub
		Connection con;

		con = dbUtil.getConnection();
		ResultSet rs;

		try {
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		try {
			int rowcount = dtm.getRowCount() - 1;
			if (rowcount != -1) {
				for (int i1 = rowcount; i1 >= 0; i1--) {
					dtm.removeRow(i1); // 刪除Jtable中的所有行
				}
				dtm.setRowCount(0); // 將Jtable中的行數設為零
			}
			Statement stmt = con.createStatement();
			rs = stmt.executeQuery(SQL);
			String[] data = new String[8];
			while (rs.next()) {
				for (int j = 1; j <= 8; j++) {
					data[j - 1] = rs.getString(j); // 取出數據庫中的數組裝載到數組中
				}
				dtm.addRow(data); // 在Jtabl
			}

			con.close();

		} catch (Exception err) {
			String error = err.getMessage();
			JOptionPane.showMessageDialog(null, error);
			err.printStackTrace();
		} finally {
		}
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if (e.getSource() == button2) {
			JIUYIModify t = new JIUYIModify();
			t.openDialog(table, dtm);

		} else if (e.getSource() == button4) {
			ChufangModify y = new ChufangModify("診療明細");

			int row = table.getSelectedRow();
			String r = (String) table.getValueAt(row, 0);
			String SQL1 = "select * from DrugTable where MrId='" + r + "'and PeClass='其他類(lèi)'";
			y.databaseSearch2(SQL1, 6);
			y.addrow(table);
		} else if (e.getSource() == button5) {
			ProjectModify y = new ProjectModify("用藥明細");

			int row = table.getSelectedRow();
			String r = (String) table.getValueAt(row, 0);

			String SQL1 = "select * from DrugTable where MrId='" + r + "' and PeClass='藥品類(lèi)'or MrId='" + r
					+ "'and PeClass='診斷類(lèi)'";
			y.databaseSearch2(SQL1, 7);
			y.addrow(table);
		}
	}

}

MainPanelCashier.java

package com.sjsq;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.swing.*;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class MainPanelCashier extends JFrame implements MouseListener {
	// 基本組件
	public CardLayout layout = new CardLayout(); // 卡片布局方式
	JPanel top, left, bottom, right;
	JLabel head;
	Font f1 = new Font("隸書(shū)", Font.BOLD, 54);
	Font f2 = new Font("隸書(shū)", Font.BOLD, 25);
	// 菜單欄組件
	private JPanel pNorth, pSouth, subMenuContainer;
	private JButton item1, item2, item3, item4, item5, item6, item7, item8, htn[], gtn[], btn[], ctn[], dtn[], etn[],
			ftn[];
	// 時(shí)間組件
	private JPanel timePanel;
	private JLabel displayArea;
	private String DEFAULT_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; // 設置時(shí)間格式
	private String time;
	private int ONE_SECOND = 1000; // 設置時(shí)間間隔
	JLabel label1 = new JLabel("歡迎你:");

	public MainPanelCashier(String title) {

		super("醫院管理系統(收費員界面)");

		String aa = Login.username; // 獲取登錄的用戶(hù)名,放在標簽中,顯示在上面板。
		JLabel label8 = new JLabel(aa);

		// 窗口圖標設置
		Toolkit tk = getToolkit();
		Image icon = tk.getImage("picture/icon.jpg");
		setIconImage(icon);

		// 時(shí)間控件設置
		timePanel = new JPanel();
		displayArea = new JLabel();
		configTimeArea();
		timePanel.add(displayArea);
		timePanel.setBounds(1000, 0, 200, 50);
		timePanel.setOpaque(false); // 時(shí)間面板設置為透明

		// 組件基本設置
		left = new JPanel();
		left.setBounds(5, 150, 150, 515);
		this.add(left);

		right = new JPanel();
		right.setLayout(layout);
		right.setBounds(155, 155, 1045, 510);
		HomePage s = new HomePage();
		right.add(s.homePage);
		this.add(right);

		bottom = new JPanel();
		bottom.setLayout(null);
		bottom.setBounds(0, 666, 1200, 35);
		bottom.setBackground(Color.WHITE);
		bottom.add(timePanel); // 添加時(shí)間控件
		this.add(bottom);

		top = new JPanel(); // 設置背景圖片"picture/top_bg.jpg"
		ImageIcon background = new ImageIcon("picture/top_bg.jpg");
		JLabel label = new JLabel(background);
		top.setLayout(null);
		label.setBounds(0, 0, 1200, 145);
		top.setBounds(0, 0, 1200, 145);
		this.add(top);
		top.add(label8);
		label8.setBounds(1080, 90, 100, 50);
		label8.setFont(f2);

		head = new JLabel("醫院信息管理系統");
		head.setFont(f1);
		head.setBounds(375, 40, 500, 75);
		top.add(head);

		top.add(label1);
		label1.setBounds(980, 90, 200, 50);
		label1.setFont(f2);
		top.add(label);

		// Left面板折疊式菜單設置,三面板網(wǎng)格式布局
		pNorth = new JPanel();
		pNorth.setLayout(new GridLayout(4, 1));
		pSouth = new JPanel();
		subMenuContainer = new JPanel();

		subMenuContainer.setLayout(new GridLayout(4, 1));

		item1 = new JButton("首頁(yè)"); // 設置按鈕

		item6 = new JButton("價(jià)格管理");
		item7 = new JButton("收費管理");
		item8 = new JButton("系統設置");

		item1.setPreferredSize(new Dimension(150, 47)); // 優(yōu)先設置按鈕大小

		item6.setPreferredSize(new Dimension(150, 47));
		item7.setPreferredSize(new Dimension(150, 47));
		item7.setPreferredSize(new Dimension(150, 47));
		item8.setPreferredSize(new Dimension(150, 47));

		item1.setContentAreaFilled(false); // 設置為透明
		item6.setContentAreaFilled(false);
		item7.setContentAreaFilled(false);
		item8.setContentAreaFilled(false);

		pNorth.add(item1);
		pNorth.add(item6);
		pNorth.add(item7);
		pNorth.add(item8);

		ftn = new JButton[1];
		ftn[0] = new JButton("綜合操作");
		for (int i = 0; i < ftn.length; i++) {
			ftn[i].setBackground(Color.WHITE);
			ftn[i].setPreferredSize(new Dimension(150, 30));
			ftn[i].addMouseListener(this);
		}
		gtn = new JButton[2];
		gtn[0] = new JButton("結賬頁(yè)面");
		gtn[1] = new JButton("綜合操作");
		for (int i = 0; i < gtn.length; i++) {
			gtn[i].setBackground(Color.WHITE);
			gtn[i].setPreferredSize(new Dimension(150, 30));
			gtn[i].addMouseListener(this);
		}
		htn = new JButton[1];
		htn[0] = new JButton("修改密碼");

		for (int i = 0; i < htn.length; i++) {
			htn[i].setBackground(Color.WHITE);
			htn[i].setPreferredSize(new Dimension(150, 30));
			htn[i].addMouseListener(this);
		}

		left.add(pNorth, "North"); // 按鈕添加到left面板中
		left.add(subMenuContainer, "Center");
		left.add(pSouth, "South");

		// 監聽(tīng)器添加
		item1.addMouseListener(this);

		item6.addMouseListener(this);
		item7.addMouseListener(this);
		item8.addMouseListener(this);

		// 窗體設置
		this.setLayout(null);
		this.setSize(1200, 730);
		this.setLocationRelativeTo(null); // 窗口居中顯示
		this.setVisible(true);
		this.setResizable(false); // 窗體不可改變大小
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

	public static void main(String[] args) {
		MainPanelCashier mainPanelCashier = new MainPanelCashier("醫院信息管理系統");
	}

	// 時(shí)間控件方法
	private void configTimeArea() {
		Timer tmr = new Timer();
		tmr.scheduleAtFixedRate(new JLabelTimerTask(), new Date(), ONE_SECOND);
	}

	protected class JLabelTimerTask extends TimerTask {
		SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT);

		public void run() {
			time = dateFormatter.format(Calendar.getInstance().getTime());
			displayArea.setText(time);
		}
	}

	public void mouseClicked(MouseEvent e) {
		if (e.getSource() == item1) {
			this.add(right);
			HomePage s = new HomePage(); // 調用主頁(yè)的類(lèi)。
			right.add(s.homePage, "homePage");
			layout.next(right);
		}
		// 設置折疊按鈕功能,先把南面板清空,讓后在給各面板設置布局方式,添加按鈕也添加子功能按鈕,清楚別的子功能按鈕

		if (e.getSource() == item6) {
			pSouth.removeAll();
			pNorth.setLayout(new GridLayout(2, 1));
			pSouth.setLayout(new GridLayout(2, 1));
			pNorth.add(item1);

			pNorth.add(item6);
			pSouth.add(item7);
			pSouth.add(item8);

			for (int i = 0; i < ftn.length; i++)
				subMenuContainer.add(ftn[i]);
			for (int i = 0; i < gtn.length; i++)
				subMenuContainer.remove(gtn[i]);
			for (int i = 0; i < htn.length; i++)
				subMenuContainer.remove(htn[i]);
			validate();
			getContentPane().repaint();
		}
		if (e.getSource() == item7) {
			pSouth.removeAll();
			pNorth.setLayout(new GridLayout(3, 1));
			pSouth.setLayout(new GridLayout(1, 1));
			pNorth.add(item1);

			pNorth.add(item6);
			pNorth.add(item7);
			pSouth.add(item8);

			for (int i = 0; i < ftn.length; i++)
				subMenuContainer.remove(ftn[i]);
			for (int i = 0; i < gtn.length; i++)
				subMenuContainer.add(gtn[i]);
			for (int i = 0; i < htn.length; i++)
				subMenuContainer.remove(htn[i]);
			validate();
			getContentPane().repaint();
		}
		if (e.getSource() == item8) {
			pSouth.removeAll();
			pNorth.setLayout(new GridLayout(4, 1));

			pNorth.add(item1);

			pNorth.add(item6);
			pNorth.add(item7);
			pNorth.add(item8);

			for (int i = 0; i < ftn.length; i++)
				subMenuContainer.remove(ftn[i]);
			for (int i = 0; i < gtn.length; i++)
				subMenuContainer.remove(gtn[i]);
			for (int i = 0; i < htn.length; i++)
				subMenuContainer.add(htn[i]);
			validate();
			getContentPane().repaint();
		}

		else if (e.getSource() == ftn[0]) {
			this.add(right);
			PriceManage s = new PriceManage();
			s.save.setEnabled(false);
			s.modify.setEnabled(false);
			s.delete.setEnabled(false);
			right.add(s.priceManage, "priceManage");
			layout.next(right);
		} else if (e.getSource() == gtn[0]) {

			this.add(right);
			Charge t = new Charge();

			right.add(t.panel2, "第一0個(gè)面板");
			layout.next(right);
		} else if (e.getSource() == gtn[1]) {

			this.add(right);
			ChargeQuery t = new ChargeQuery();

			right.add(t.panel2, "第一0個(gè)面板");
			layout.next(right);
		} else if (e.getSource() == htn[0]) {

			this.add(right);
			PassWordModifyCashier t = new PassWordModifyCashier("密碼修改");

			right.add(t.panel2, "第一0個(gè)面板");
			layout.next(right);

		}
	}

	public void mouseEntered(MouseEvent arg0) {
	}

	public void mouseExited(MouseEvent arg0) {
	}

	public void mousePressed(MouseEvent arg0) {
	}

	public void mouseReleased(MouseEvent arg0) {
	}

}

到此這篇關(guān)于Java+Swing實(shí)現醫院管理系統的文章就介紹到這了,更多相關(guān)Java Swing醫院管理系統內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

欧美大屁股喷潮水XXXX| 国产精品51麻豆CM传媒| 国内精品久久久久影院蜜芽| 少妇无码AV无码专区线 | 亚洲AV无码乱码国产精品| 精品国产制服丝袜高跟|