Java Swing医院管理系统 Java+Swing实现医院管理系统的完整代码
水坚石青 人气:0想了解Java+Swing实现医院管理系统的完整代码的相关内容吗,水坚石青在本文为您仔细讲解Java Swing医院管理系统的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Java,Swing医院管理系统,Java,医院管理系统,下面大家一起来学习吧。
一、系统介绍
本系统实现的以下功能
管理员功能:登录系统、病人信息的增删改查、就医档案的录入、医生信息的增删改查、科室信息的增删改查、收费统计功能、修改密码。
医生功能:登录系统、病人信息的增删改查、医生信息的增删改查、科室信息的增删改查、收费统计功能、修改密码。
收费员功能:价格管理、收费管理、修改密码。
JDK版本:1.8
数据库:Mysql8.0.13
数据库用到的表
cashier
charge
department
doctor
drugtable
manager
medical_records
patient
price
工程截图
二、系统展示
1.登录页
2.主页面
3.病人信息录入
4.病人信息操作
5.就医档案录入
6.处方单录入
7.就医档案操作
8.医生信息录入
9.医生信息操作
10.科室信息录入
11.科室信息操作
12.收费操作
13.收费统计
14.修改密码
15.医生主页面
16.收费员主页面
三、系统实现
Login.java
package com.sjsq; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPasswordField; import javax.swing.JRadioButton; import javax.swing.JTextField; public class Login extends JFrame { public static String namew; // 输入的用户Id public static String userId; // 输入的用户名 public static String username; // 输入的密码 public static String password; // 验证标识 int loginFlag = 0; private static final long serialVersionUID = 1L; DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); // 账号 JLabel accountJLabel = new JLabel("账号:"); // 错误提示标签 JLabel errorJLabel = new JLabel("用户名或者密码不对,请重新输入"); // 密码 JLabel passwordJLabel = new JLabel("密码:"); // r1:管理员 r2:收费员 r3:医生 public JRadioButton r1, r2, r3; ImageIcon bg = new ImageIcon("picture/login_bg.jpg"); JLabel bgJLabel = new JLabel(bg); JButton loginJButton = new JButton("登录"); JButton cancelJButton = new JButton("取消"); private boolean flag; static JTextField usernameJTextField = new JTextField(); static JPasswordField passwordJPasswordField = new JPasswordField(); Login(String sTitle) { super(sTitle); this.setLayout(null); this.add(errorJLabel); // 添加控件 this.add(accountJLabel); this.add(passwordJLabel); this.add(loginJButton); this.add(cancelJButton); this.add(usernameJTextField); this.add(passwordJPasswordField); final JRadioButton r1 = new JRadioButton("管理员"); final JRadioButton r2 = new JRadioButton("收费员"); final JRadioButton r3 = new JRadioButton("医生"); ButtonGroup rg = new ButtonGroup(); this.add(r2); rg.add(r1); this.add(r3); rg.add(r3); this.add(r1); rg.add(r2); r1.setBounds(150, 180, 80, 30); r2.setBounds(230, 180, 80, 30); r3.setBounds(310, 180, 80, 30); r1.setFocusPainted(false); r2.setFocusPainted(false); r3.setFocusPainted(false); r3.setContentAreaFilled(false); r1.setContentAreaFilled(false); r2.setContentAreaFilled(false); errorJLabel.setBounds(100, 130, 200, 50); errorJLabel.setForeground(Color.black); errorJLabel.setVisible(false); bgJLabel.setBounds(0, 0, 592, 350); // 登录监听 loginJButton.addActionListener(new ActionListener() { public boolean flag = false; public void actionPerformed(ActionEvent e) { // 医生 if (r3.isSelected()) { try { String usernameText = usernameJTextField.getText().toString(); // 获取帐号文本框内容 String passwordText = passwordJPasswordField.getText().toString(); // 获取密码文本框内容 Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select * from doctor"); // 执行SQL语句,返回结果集 while (rs.next()) { userId = rs.getString("DrId"); // 获取登录的用户编号, username = rs.getString("DrName");// 获取登录的用户姓名 password = rs.getString("Password"); // 获取数据库中的数据项的密码 if (userId.equals(usernameText) && password.equals(passwordText)) {// 判断数据库的用户编号以及密码是否与文本框的值相同 loginFlag = 1; break; } } if (loginFlag == 1) { JOptionPane.showMessageDialog(null, "登录成功"); // 显示系统主界面 MainPanelDoctor a = new MainPanelDoctor("医生界面"); a.setVisible(true); Login.this.setVisible(false);// 关闭登录按钮 } else { usernameJTextField.setText(""); // 错误的话则文本框内容设置为空,显示错误标签 passwordJPasswordField.setText(""); JOptionPane.showMessageDialog(null, "登陆错误"); } } catch (SQLException e2) { System.out.println(e2); } } // 管理员 else if (r1.isSelected()) { try { String usernameText = usernameJTextField.getText().toString(); // 获取帐号文本框内容 String passwordText = passwordJPasswordField.getText().toString(); // 获取密码文本框内容 Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select * from manager"); // 执行SQL语句,返回结果集 while (rs.next()) { userId = rs.getString("ManagerID"); // 获取登录的用户编号, username = rs.getString("ManagerName");// 获取登录的用户姓名 password = rs.getString("MaPassWord"); // 获取数据库中的数据项的密码 if (userId.equals(usernameText) && password.equals(passwordText)) {// 判断数据库的用户编号以及密码是否与文本框的值相同 loginFlag = 1; break; } } // 登录成功 if (loginFlag == 1) { JOptionPane.showMessageDialog(null, "登录成功"); new MainPanelManager("管理员界面"); // 显示系统主界面 Login.this.setVisible(false);// 关闭登录按钮 // 登录失败 } else { usernameJTextField.setText(""); // 错误的话则文本框内容设置为空,显示错误标签 passwordJPasswordField.setText(""); JOptionPane.showMessageDialog(null, "登陆错误"); } } catch (SQLException e3) { System.out.println(e3); } } // 收费员 else if (r2.isSelected()) { try { String usernameText = usernameJTextField.getText().toString(); // 获取帐号文本框内容 String passwordText = passwordJPasswordField.getText().toString(); // 获取密码文本框内容 Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select * from cashier"); // 执行SQL语句,返回结果集 while (rs.next()) { userId = rs.getString("cashierId"); // 获取登录的用户编号, username = rs.getString("cashierName");// 获取登录的用户姓名 password = rs.getString("cashierPassWord"); // 获取数据库中的数据项的密码 if (userId.equals(usernameText) && password.equals(passwordText)) {// 判断数据库的用户编号以及密码是否与文本框的值相同 loginFlag = 1; break; } } if (loginFlag == 1) { JOptionPane.showMessageDialog(null, "登录成功"); new MainPanelCashier("收费员页面"); // 显示系统主界面 Login.this.setVisible(false);// 关闭登录按钮 } else { usernameJTextField.setText(""); // 错误的话则文本框内容设置为空,显示错误标签 passwordJPasswordField.setText(""); JOptionPane.showMessageDialog(null, "登陆错误"); } } catch (SQLException e3) { System.out.println(e3); } } else if (r1.isSelected() == false && r2.isSelected() == false && r3.isSelected() == false) { JOptionPane.showMessageDialog(null, "请选择用户类型"); } } }); // 登录按钮添加功能事件 // 账号 accountJLabel.setBounds(150, 50, 100, 50); accountJLabel.setFont(new Font("", 1, 20)); // 密码 passwordJLabel.setBounds(150, 120, 100, 50); passwordJLabel.setFont(new Font("", 1, 20)); // 登录 loginJButton.setBounds(150, 220, 100, 40); loginJButton.setBackground(Color.CYAN); // 取消 cancelJButton.setBounds(280, 220, 100, 40); cancelJButton.setBackground(Color.CYAN); // 账号输入框 usernameJTextField.setBounds(250, 60, 150, 30); // 密码输入框 passwordJPasswordField.setBounds(250, 120, 150, 30); this.add(bgJLabel); this.setVisible(true); this.setSize(600, 350); // 设置窗口大小 this.setResizable(false); // 设置不可调整窗口大小 this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String args[]) { Login login = new Login("医院管理系统"); } }
HomePage.java
HomePage.java package com.sjsq; import java.awt.Font; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class HomePage extends JFrame { JPanel homePage = new JPanel(); private JLabel la1, la2; private Font laFont = new Font("隶书", Font.BOLD, 100); public HomePage() { homePage.setLayout(null); // 获取项目路径 ImageIcon background = new ImageIcon("picture/right_bg.jpg"); JLabel label = new JLabel(background); la1 = new JLabel("欢迎使用"); la2 = new JLabel("医院信息管理系统"); la1.setBounds(330, 0, 800, 300); la1.setFont(laFont); la2.setBounds(120, 150, 1000, 300); la2.setFont(laFont); homePage.add(la1); homePage.add(la2); homePage.add(label); label.setBounds(0, 0, 1100, 700); } }
Charge.java
package com.sjsq; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.border.TitledBorder; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.table.DefaultTableModel; public class Charge extends JFrame implements ActionListener { private JComboBox box1; private JScrollPane JScrollPane5 = new JScrollPane(); JPanel panel2 = new JPanel(); Font f2 = new Font("隶书", Font.BOLD, 30); private JLabel la0, la1, la2, la3, la4, la5, la6, la7, la8, la9, la10, la11, la12, la13, l14, l15, la14, la15; private JTextField tx13, tx0, tx1, tx2, tx3, tx4, tx5, tx6, tx7, tx8, tx9, tx10, tx11, tx12, tx14; public static JTable table3; public static DefaultTableModel dtm3; private JButton btn1, btn2; private double suma = 0; private double sumd = 0; private double sumb = 0; private double sume = 0; private double sumc = 0; private double sumf = 0; String b; private String columnNames[] = { "就医档案编号", "病人编号", "病人姓名", "就医科室" }; Charge() { // 获取时间 Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd"); String dateString = sdf.format(now); ImageIcon background = new ImageIcon("picture/right_bg.jpg"); // 背景图片 JLabel label = new JLabel(background); panel2.setLayout(null); // 控件的定义 btn1 = new JButton("确定结算"); btn2 = new JButton("撤销结算"); la0 = new JLabel("费用总计 :"); la1 = new JLabel("就医档案编号 :"); la2 = new JLabel("姓名: "); la3 = new JLabel("编码: "); la4 = new JLabel("姓名: "); la5 = new JLabel("科室: "); la6 = new JLabel("用药费用: "); la7 = new JLabel("治疗费用: "); la8 = new JLabel("检查费用: "); la9 = new JLabel("挂号费: "); la10 = new JLabel("处置费: "); la11 = new JLabel("化验费: "); la12 = new JLabel("押金累计: "); la13 = new JLabel("押金余额: "); la14 = new JLabel("结账日期: "); la15 = new JLabel("收费操作 "); la13.setForeground(Color.red); la12.setForeground(Color.red); tx0 = new JTextField(); tx1 = new JTextField(); tx2 = new JTextField(); tx3 = new JTextField(); tx4 = new JTextField(); tx5 = new JTextField(); tx6 = new JTextField(); tx7 = new JTextField(); tx8 = new JTextField(); tx9 = new JTextField(); tx10 = new JTextField(); tx11 = new JTextField(); tx12 = new JTextField(); tx13 = new JTextField(); tx14 = new JTextField(dateString); la15.setFont(f2); // 设置文本框的边缘不显示 tx0.setBorder(null); tx2.setBorder(null); tx3.setBorder(null); tx4.setBorder(null); tx14.setBorder(null); tx14.setEditable(false); // 设置一个新的面板 final JPanel panel1 = new JPanel(); JPanel panel12 = new JPanel(); JPanel panel13 = new JPanel(); panel13.setBackground(Color.pink); panel12.setBackground(Color.pink); panel1.setLayout(null);// 设置空布局 panel1.setBorder(new TitledBorder(null, "收费结算", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null)); panel1.setBounds(10, 100, 800, 500); panel1.setBackground(Color.WHITE); panel1.add(panel12); panel12.setBounds(600, 0, 10, 500); panel1.add(panel13); panel13.setBounds(0, 330, 600, 10); btn1.addActionListener(this); // 设置按钮事件 btn2.addActionListener(this); // 默认表格模版的设置,添加表头和设置表格不可编辑 dtm3 = new DefaultTableModel(columnNames, 0); table3 = new JTable(dtm3) { public boolean isCellEditable(int row, int column) { return false; }// 表格不允许被编辑 } }; String sql = "select MrId,PaId,PaName,DeptName from Medical_records"; databaseSearch1(sql, 4); JScrollPane5.setViewportView(table3);// 给表格添加滚动条 panel1.add(JScrollPane5); JScrollPane5.setBounds(10, 0, 400, 100); JScrollPane5.setVisible(false); // 面板添加控件,设置位置 panel2.add(tx0); tx0.setBounds(290, 60, 100, 30); panel1.add(btn1); btn1.setBounds(650, 100, 100, 50); panel1.add(btn2); btn2.setBounds(650, 200, 100, 50); panel1.add(tx2); tx2.setBounds(150, 70, 70, 30); panel1.add(tx3); tx3.setBounds(150, 120, 70, 30); panel1.add(tx4); tx4.setBounds(150, 170, 70, 30); panel1.add(tx5); tx5.setBounds(180, 220, 70, 30); panel1.add(tx6); tx6.setBounds(180, 270, 70, 30); panel1.add(tx7); tx7.setBounds(475, 70, 70, 30); panel1.add(tx8); tx8.setBounds(460, 120, 70, 30); panel1.add(tx9); tx9.setBounds(460, 170, 70, 30); panel1.add(tx10); tx10.setBounds(460, 220, 70, 30); panel1.add(tx11); tx11.setBounds(270, 350, 70, 30); panel1.add(tx12); tx12.setBounds(470, 350, 70, 30); panel1.add(tx13); tx13.setBounds(80, 350, 70, 30); panel2.add(la1); la1.setBounds(20, 50, 100, 50); panel2.add(la2); la2.setBounds(250, 50, 100, 50); panel2.add(tx1); tx1.setBounds(110, 58, 120, 30); panel1.add(la3); la3.setBounds(100, 70, 100, 30); panel1.add(la4); la4.setBounds(100, 120, 100, 30); panel1.add(la5); la5.setBounds(100, 170, 100, 30); panel1.add(la6); la6.setBounds(100, 220, 100, 30); panel1.add(la7); la7.setBounds(100, 270, 100, 30); panel1.add(la8); la8.setBounds(400, 70, 100, 30); panel1.add(la9); la9.setBounds(400, 120, 100, 30); panel1.add(la10); la10.setBounds(400, 170, 100, 30); panel1.add(la11); la11.setBounds(400, 220, 100, 30); panel1.add(la0); la0.setBounds(10, 350, 100, 30); la15.setBounds(30, 0, 200, 50); panel2.add(la15); la12.setBounds(200, 350, 100, 30); panel1.add(la12); la13.setBounds(400, 350, 100, 30); panel1.add(la13); panel2.add(panel1); panel2.add(la14); la14.setBounds(400, 60, 100, 30); panel2.add(tx14); tx14.setBounds(480, 60, 100, 30); // 设置文本框不可编辑 tx0.setEditable(false); tx2.setEditable(false); tx3.setEditable(false); tx4.setEditable(false); tx11.setEditable(false); tx12.setEditable(false); tx13.setEditable(false); panel2.add(label);// 面板添加背景图片,设置位置 label.setBounds(-30, 0, 1100, 700); tx1.addMouseListener(new MouseAdapter() {// 给tx1的文本框添加按钮事件,显示一个表格 public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键 JScrollPane5.setVisible(true); } }); // tx1文本框添加事件,根据文本框内容的改变模糊查询到数据库内容,显示到表格中 tx1.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { updata_combobox(); } @Override public void insertUpdate(DocumentEvent e) { updata_combobox(); } @Override public void changedUpdate(DocumentEvent e) { updata_combobox(); } private void updata_combobox() { String s1 = null; s1 = tx1.getText(); // 根据S1的内容模糊查询数据库对应的数据 JScrollPane5.setVisible(true); String sql = "select MrId,PaId,PaName,DeptName from Medical_records where MrId like '%" + s1 + "%'"; databaseSearch1(sql, 5); } }); // 根据你选择表格的某一行内容,输入到对应的文本框内。 table3.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键 if (e.getClickCount() == 1) { String sum1 = null; String sum3 = null; String sum6 = null; String sum2 = null; String sum4 = null; String sum5 = null; int row = table3.getSelectedRow(); String ao = (String) table3.getValueAt(row, 2); String bo = (String) table3.getValueAt(row, 0); String do1 = (String) table3.getValueAt(row, 1); String co = (String) table3.getValueAt(row, 3); tx2.setText(do1); tx3.setText(ao); tx1.setText(bo); tx0.setText(ao); tx4.setText(co); JScrollPane5.setVisible(false); // 连接数据库,查询对应的价格 DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); ResultSet rs; try { // 查询数据库中用药的费用 String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText() + "' and PeClass='诊断类'or PeClass='药品类'and MrId='" + tx1.getText() + "'"; Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql1); while (rs.next()) { String a = rs.getString(1); String b = rs.getString(2); double a1 = Double.valueOf(a).doubleValue(); int b1 = Integer.valueOf(b).intValue(); double d = a1 * b1; suma = suma + d; sum1 = String.valueOf(suma); } suma = 0;// 设置为0,否则会应为再次输入而无法清楚原来的数值 if (sum1 != null) { tx5.setText(sum1); } else { tx5.setText("0.0"); } } catch (Exception ex) { ex.printStackTrace(); } try { String sql2 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText() + "' and PeClass='其他类'and PeName not in('检查费','挂号费','处置费','化验费')"; Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql2); while (rs.next()) { String a = rs.getString(1); String b = rs.getString(2); double a1 = Double.valueOf(a).doubleValue(); int b1 = Integer.valueOf(b).intValue(); double d = a1 * b1; sumb = sumb + d; sum3 = String.valueOf(sumb); System.out.println(a); System.out.println(b); } sumb = 0; if (sum3 != null) { tx6.setText(sum3); } else { tx6.setText("0.0"); } } catch (Exception ex) { ex.printStackTrace(); } try { String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText() + "' and PeName='检查费'"; Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql1); while (rs.next()) { String a = rs.getString(1); String b = rs.getString(2); double a1 = Double.valueOf(a).doubleValue(); int b1 = Integer.valueOf(b).intValue(); double d = a1 * b1; sumc = sumc + d; sum2 = String.valueOf(sumc); } sumc = 0; if (sum2 != null) { tx7.setText(sum2); } else { tx7.setText("0.0"); } } catch (Exception ex) { ex.printStackTrace(); } try { String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText() + "' and PeName='挂号费'"; Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql1); while (rs.next()) { String a = rs.getString(1); String b = rs.getString(2); double a1 = Double.valueOf(a).doubleValue(); int b1 = Integer.valueOf(b).intValue(); double d = a1 * b1; sumd = sumd + d; sum4 = String.valueOf(sumd); } sumd = 0; if (sum4 != null) { tx8.setText(sum4); } else { tx8.setText("0.0"); } } catch (Exception ex) { ex.printStackTrace(); } try { String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText() + "' and PeName='处置费'"; Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql1); while (rs.next()) { String a = rs.getString(1); String b = rs.getString(2); double a1 = Double.valueOf(a).doubleValue(); int b1 = Integer.valueOf(b).intValue(); double d = a1 * b1; sume = sume + d; sum5 = String.valueOf(sume); } sume = 0; if (sum5 != null) { tx9.setText(sum5); } else { tx9.setText("0.0"); } } catch (Exception ex) { ex.printStackTrace(); } try { String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText() + "' and PeName='化验费'"; Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql1); while (rs.next()) { String a = rs.getString(1); String b = rs.getString(2); double a1 = Double.valueOf(a).doubleValue(); int b1 = Integer.valueOf(b).intValue(); double d = a1 * b1; sumf = sumf + d; sum6 = String.valueOf(sumf); } sumc = 0; if (sum6 != null) { tx10.setText(sum6); } else { tx10.setText("0.0"); } } catch (Exception ex) { ex.printStackTrace(); } try { String sql1 = "select PaPay from Patient where PaId='" + tx2.getText() + "'"; Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql1); while (rs.next()) { String a = rs.getString(1); if (a != null) { tx11.setText(a); } else { tx11.setText("0.0"); } } } catch (Exception ex) { ex.printStackTrace(); } String t; String y; String u; String u1; String u2; String u3; String u4; t = tx5.getText(); u1 = tx6.getText(); u2 = tx8.getText(); u3 = tx9.getText(); u4 = tx10.getText(); u = tx7.getText(); y = tx11.getText(); float c = Float.parseFloat(u); float c1 = Float.parseFloat(t); float c2 = Float.parseFloat(y); float c4 = Float.parseFloat(u1); float c5 = Float.parseFloat(u2); float c6 = Float.parseFloat(u3); float c7 = Float.parseFloat(u4); float q = (float) (c2 - (c7 + c6 + c5 + c4 + c1 + c));// 减除押金后需要交的钱 float q1 = (float) ((c7 + c6 + c5 + c4 + c1 + c));// 费用总计 String s = String.valueOf(q); String s1 = String.valueOf(q1); tx12.setText(s); tx13.setText(s1); tx12.setForeground(Color.BLUE); tx11.setForeground(Color.BLUE); } } }); } private void databaseSearch1(String sql, int i) { // TODO Auto-generated method stub DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); ResultSet rs; try { int rowcount = dtm3.getRowCount() - 1; if (rowcount != -1) { for (int i1 = rowcount; i1 >= 0; i1--) { dtm3.removeRow(i1); // 删除Jtable中的所有行 } dtm3.setRowCount(0); // 将Jtable中的行数设为零 } Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql); String[] data = new String[4]; while (rs.next()) { for (int j = 1; j <= 4; j++) { data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中 } dtm3.addRow(data); // 在Jtabl } con.close(); // 设置表格隔行背景色(隔行背景色不同) } catch (Exception err) { } } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (e.getSource() == btn1) { // 把费用表录入到收费表中 try { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); Statement stmt = con.createStatement(); String sql = "INSERT INTO Charge(MrId,PaId,PaName,DeptName,Drugfee,treatmentfee,checkfee,registrationfee,disposalfee,assayfee,sum,time)VALUES(?,?,?,?,?,?,?,?,?,?,?,?)"; PreparedStatement parepare = con.prepareStatement(sql); parepare.setString(1, tx1.getText()); parepare.setString(2, tx2.getText()); parepare.setString(3, tx3.getText()); parepare.setString(4, tx4.getText()); parepare.setString(5, tx5.getText()); parepare.setString(6, tx6.getText()); parepare.setString(7, tx7.getText()); parepare.setString(8, tx8.getText()); parepare.setString(9, tx9.getText()); parepare.setString(10, tx10.getText()); parepare.setString(11, tx13.getText()); parepare.setString(12, tx14.getText()); // 判断是否有输入错误的,做提示操作 if (tx1.getText().equals("")) { JOptionPane.showMessageDialog(null, "请输入结算的档案号", "错误", JOptionPane.INFORMATION_MESSAGE); } else { parepare.executeUpdate(); JOptionPane.showMessageDialog(null, "结账成功,需要交(退)" + tx12.getText() + "", "结账成功", JOptionPane.INFORMATION_MESSAGE); String sql1 = "delete from Patient where PaId='" + tx2.getText() + "'"; try { stmt.executeUpdate(sql1); tx0.setText(""); tx1.setText(""); tx2.setText(""); tx3.setText(""); tx4.setText(""); tx5.setText(""); tx6.setText(""); tx7.setText(""); tx8.setText(""); tx9.setText(""); tx10.setText(""); tx11.setText(""); tx12.setText(""); tx13.setText(""); tx14.setText(""); JScrollPane5.setVisible(false); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } catch (Exception e2) { e2.printStackTrace(); } } else if (e.getSource() == btn2) { tx0.setText(""); tx1.setText(""); tx2.setText(""); tx3.setText(""); tx4.setText(""); tx5.setText(""); tx6.setText(""); tx7.setText(""); tx8.setText(""); tx9.setText(""); tx10.setText(""); tx11.setText(""); tx12.setText(""); tx13.setText(""); tx14.setText(""); JScrollPane5.setVisible(false); } } }
ChargeQuery.java
package com.sjsq; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; public class ChargeQuery { Font f1 = new Font("隶书", Font.BOLD, 30); public static JTable table; public static DefaultTableModel dtm; private JScrollPane JScrollPane = new JScrollPane(); JPanel panel2 = new JPanel(); private JLabel la1, la2, la3, la4, la5; private JTextField tx1, tx2; private String columnNames[] = { "就医档案编号", "病人编号", "病人姓名", "就医科室", "用药费用", "治疗费", "检查费", "挂号费", "处置费", "化验费", "费用总额", "结账时间" }; ChargeQuery() { // 添加背景 ImageIcon background = new ImageIcon("picture/right_bg.jpg"); // 背景图片 JLabel label = new JLabel(background); panel2.setLayout(null); // 设置默认表格面板 dtm = new DefaultTableModel(columnNames, 0); table = new JTable(dtm) { public boolean isCellEditable(int row, int column) { return false; }// 表格不允许被编辑 } }; String sql = "select * from Charge"; databaseSearch(sql, 12); JScrollPane.setViewportView(table);// 给表格添加滚动条 panel2.add(JScrollPane); JScrollPane.setBounds(30, 200, 950, 300); setbgcolor(); JLabel label1 = new JLabel("收费统计"); panel2.add(label1); label1.setBounds(30, 10, 400, 50); label1.setFont(f1); la1 = new JLabel("总费用统计:"); la2 = new JLabel("人数统计:"); tx1 = new JTextField(); tx2 = new JTextField(); la1.setBounds(30, 80, 100, 50); la2.setBounds(30, 120, 100, 50); tx1.setBounds(100, 90, 100, 30); tx2.setBounds(100, 130, 100, 30); panel2.add(la1); panel2.add(la2); panel2.add(tx1); panel2.add(tx2); tx1.setEditable(false); tx2.setEditable(false); panel2.add(label);// 面板添加背景图片,设置位置 label.setBounds(-30, 0, 1100, 700); DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); ResultSet rs, rs1; try { String sql2 = "select Sum(sum) from Charge "; String sql1 = "select count(*) from Charge "; Statement stmt = con.createStatement(); Statement stmt1 = con.createStatement(); rs = stmt.executeQuery(sql1); rs1 = stmt1.executeQuery(sql2); while (rs.next()) { String a = rs.getString(1); tx2.setText(a); } while (rs1.next()) { String a = rs1.getString(1); tx1.setText(a); } } catch (Exception e) { e.printStackTrace(); } } private void setbgcolor() { // TODO Auto-generated method stub try { DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (row % 2 == 0) setBackground(new Color(223, 220, 239)); // 设置奇数行底色 else if (row % 2 == 1) setBackground(Color.white); // 设置偶数行底色 return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); } }; for (int i = 0; i < table.getColumnCount(); i++) { table.getColumn(table.getColumnName(i)).setCellRenderer(tcr); } } catch (Exception ex) { ex.printStackTrace(); } } private void databaseSearch(String sql, int i) { // TODO Auto-generated method stub DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); ResultSet rs; try { int rowcount = dtm.getRowCount() - 1; if (rowcount != -1) { for (int i1 = rowcount; i1 >= 0; i1--) { dtm.removeRow(i1); // 删除Jtable中的所有行 } dtm.setRowCount(0); // 将Jtable中的行数设为零 } Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql); String[] data = new String[12]; while (rs.next()) { for (int j = 1; j <= 12; j++) { data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中 } dtm.addRow(data); // 在Jtable中添加数据行 } con.close(); // 设置表格隔行背景色(隔行背景色不同) } catch (Exception err) { } } }
ChufangModify.java
package com.sjsq; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.DefaultCellEditor; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.border.TitledBorder; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; public class ChufangModify extends JFrame implements ActionListener, ItemListener { JButton button6 = new JButton("增加"); JButton button7 = new JButton("确定"); JButton button8 = new JButton("删除"); private String columnNames[] = { "编码", "名称", "单价", "数量", "计数单位", "类别", "档案编号" }; private String columnNames1[] = { "编码", "名称", "单价", "计数单位", "类别" }; private JLabel la0; private JComboBox box1, box2; JPanel panel2 = new JPanel(); public static JTable table2, table3; public static DefaultTableModel dtm2, dtm3; private JScrollPane JScrollPane3 = new JScrollPane(); private JScrollPane JScrollPane5 = new JScrollPane(); String y; ChufangModify(String Stitle) { super(Stitle); panel2.setLayout(null); ImageIcon ic; // 按钮图片 ic = new ImageIcon("picture/right_bg.jpg"); JLabel label = new JLabel(ic);// 把背景图片显示在一个标签里面 dtm2 = new DefaultTableModel(columnNames, 0) {// dtm2是项目收费表格模版 public boolean isCellEditable(int row, int column) { if (column == 1 || column == 3) return true;// 这个是可以编辑的列 // if(rowIndex!=0) return false; return false; }// 表格不允许被编辑 } }; String fontSize1[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "12" }; table2 = new JTable(dtm2);// JScrollPane4 项目表 JScrollPane JScrollPane4 = new JScrollPane(table2); TableColumn a1 = table2.getColumn("名称"); TableColumn a2 = table2.getColumn("数量"); JTextField box3 = new JTextField(); box2 = new JComboBox(fontSize1); box2.addActionListener(this); box2.addItemListener(this); box3.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { System.out.println("removeUpdate"); updata_combobox(); } @Override public void insertUpdate(DocumentEvent e) { System.out.println("insertUpdate"); updata_combobox(); } @Override public void changedUpdate(DocumentEvent e) { updata_combobox(); } private void updata_combobox() { String s1 = null; s1 = box3.getText(); String sql = "select * from Price where PeName like '%" + s1 + "%'and PeClass='其他类'"; databaseSearch1(sql, 5); } }); box3.setEditable(true); DefaultCellEditor dce2 = new DefaultCellEditor(box3); a1.setCellEditor(dce2); box2.setEditable(true); box2.setMaximumRowCount(5); DefaultCellEditor dce3 = new DefaultCellEditor(box2); a2.setCellEditor(dce3); box2.addActionListener(this); final JPanel panel = new JPanel(); panel.setLayout(null); panel.setBorder(new TitledBorder(null, "诊疗项目单", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null)); panel.setBounds(20, 150, 530, 180); panel.setBackground(Color.WHITE); panel.add(JScrollPane4); JScrollPane4.setBounds(10, 20, 400, 150); panel2.add(panel); button6.setBounds(420, 20, 100, 40); panel.add(button6); button7.setBounds(420, 70, 100, 40); panel.add(button7); button8.setBounds(420, 120, 100, 40); panel.add(button8); button6.addActionListener(this); button7.addActionListener(this); button8.addActionListener(this); dtm3 = new DefaultTableModel(columnNames1, 0);// 项目明细表 table3 = new JTable(dtm3) { public boolean isCellEditable(int row, int column) { return false; }// 表格不允许被编辑 } }; JScrollPane5.setViewportView(table3); panel2.add(JScrollPane5); JScrollPane5.setBounds(30, 50, 400, 100); JScrollPane5.setVisible(false); String SQL1 = "select * from Price where PeClass='其他类'"; databaseSearch1(SQL1, 5); JScrollPane4.setViewportView(table2); box3.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件 public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键 JScrollPane5.setVisible(true); } }); button8.addMouseListener(new MouseAdapter() { // 删除按钮实现删除记录的功能 public void mouseClicked(MouseEvent e) { int row = table2.getSelectedRow();// 这句选择要删除的行 DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); Statement stmt; String val = (String) table2.getValueAt(row, 6); String val1 = (String) table2.getValueAt(row, 0); String sql = "delete from DrugTable where MrId='" + val + "'and PeNo='" + val1 + "'"; try { stmt = con.createStatement(); stmt.executeUpdate(sql); button6.setEnabled(true); JOptionPane.showMessageDialog(null, " 删除成功!", "注意", JOptionPane.INFORMATION_MESSAGE); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if (row != -1) { // 这句判断是否有选中的行 dtm2.removeRow(row); } // 这句删除指定行 } }); table3.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件 public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键 if (e.getClickCount() == 2) { int o = table3.getSelectedRow(); int row = table2.getSelectedRow(); String ao = (String) table3.getValueAt(o, 1); String bo = (String) table3.getValueAt(o, 0); String co = (String) table3.getValueAt(o, 2); String eo = (String) table3.getValueAt(o, 4); String qo = (String) table3.getValueAt(o, 3); System.out.println(ao); box3.setText(ao); table2.setValueAt(bo, row, 0); table2.setValueAt(co, row, 2); table2.setValueAt(eo, row, 5); table2.setValueAt(qo, row, 4); y = co; JScrollPane5.setVisible(false); } } }); panel2.add(label); label.setBounds(0, 0, 600, 400); this.add(panel2); this.setSize(600, 400); // 设置窗口大小 this.setResizable(false); // 设置不可调整窗口大小 this.setLocationRelativeTo(null); this.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (e.getSource() == button7) { try { String s = (String) box2.getSelectedItem(); int i = Integer.valueOf(s).intValue(); DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); int row = table2.getSelectedRow(); String b = (String) table2.getValueAt(row, 3); String sql = "INSERT INTO DrugTable(PeNo,PeName,PePrice,PeNumber,PeUnit,PeClass,MrId)VALUES(?,?,?,?,?,?,?)"; PreparedStatement parepare = con.prepareStatement(sql); parepare.setString(1, (String) table2.getValueAt(row, 0)); parepare.setString(2, (String) table2.getValueAt(row, 1)); parepare.setString(3, (String) table2.getValueAt(row, 2)); parepare.setString(4, (String) table2.getValueAt(row, 3)); parepare.setString(5, (String) table2.getValueAt(row, 4)); parepare.setString(6, (String) table2.getValueAt(row, 5)); parepare.setString(7, (String) table2.getValueAt(row, 6)); if (i <= 0 || b == "") { JOptionPane.showMessageDialog(null, "数量不能小于0或为空", "错误", JOptionPane.INFORMATION_MESSAGE); } else { parepare.executeUpdate(); JOptionPane.showMessageDialog(null, "录入成功", "录入成功", JOptionPane.INFORMATION_MESSAGE); button6.setEnabled(true); } } catch (Exception et) { et.printStackTrace(); } } } public void databaseSearch1(String SQL1, int i) { // TODO Auto-generated method stub DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); ResultSet rs; try { int rowcount = dtm3.getRowCount() - 1; if (rowcount != -1) { for (int i1 = rowcount; i1 >= 0; i1--) { dtm3.removeRow(i1); // 删除Jtable中的所有行 } dtm3.setRowCount(0); // 将Jtable中的行数设为零 } Statement stmt = con.createStatement(); rs = stmt.executeQuery(SQL1); String[] data = new String[5]; while (rs.next()) { for (int j = 1; j <= 5; j++) { data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中 } dtm3.addRow(data); // 在Jtabl } con.close(); // 设置表格隔行背景色(隔行背景色不同) } catch (Exception err) { } } public void addrow(JTable table) { // TODO Auto-generated method stub int row = table.getSelectedRow(); String b = (String) table.getValueAt(row, 0); button6.addActionListener(new ActionListener() {// 添加事件 public void actionPerformed(ActionEvent e) { String[] da1 = { "", "" }; String[] rowValues = da1; dtm2.addRow(rowValues); // 添加一行 int row1 = table2.getRowCount() - 1; table2.setRowSelectionInterval(row1, row1); table2.setValueAt(b, row1, 6); button6.setEnabled(false); } }); } public void databaseSearch2(String SQL, int i) { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); ResultSet rs; try { int rowcount = dtm2.getRowCount() - 1; if (rowcount != -1) { for (int i1 = rowcount; i1 >= 0; i1--) { dtm2.removeRow(i1); // 删除Jtable中的所有行 } dtm2.setRowCount(0); // 将Jtable中的行数设为零 } Statement stmt = con.createStatement(); rs = stmt.executeQuery(SQL); String[] data = new String[7]; while (rs.next()) { for (int j = 1; j <= 7; j++) { data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中 } dtm2.addRow(data); // 在Jtabl } con.close(); // 设置表格隔行背景色(隔行背景色不同) } catch (Exception err) { } } @Override public void itemStateChanged(ItemEvent e) { // TODO Auto-generated method stub } }
DBUtil.java
package com.sjsq; import java.sql.Connection; import java.sql.DriverManager; public class DBUtil { // 连接 private Connection con = null; public String url = "jdbc:mysql://localhost:3306/swing_hospital_management?serverTimezone=UTC"; public String username = "root"; public String password = "admin"; // 获取连接 public Connection getConnection() { try { con = DriverManager.getConnection(url, username, password); } catch (Exception e) { e.printStackTrace(); System.out.println("获取连接失败:" + e.getMessage()); } return con; } // 关闭连接 public void close() { try { if (con != null) { con.close(); } con = null; System.out.println("数据库连接关闭"); } catch (Exception e) { e.printStackTrace(); } } // 测试 public static void main(String[] args) { DBUtil dbUtil = new DBUtil(); dbUtil.getConnection(); } }
DepartmentManage.java
package com.sjsq; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import java.util.regex.Pattern; import javax.swing.DefaultComboBoxModel; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.border.TitledBorder; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; public class DepartmentManage extends JFrame implements ActionListener { JPanel departmentManage = new JPanel(); private JLabel manageTitle = new JLabel("科室信息综合操作"); private JLabel la1, la2, la3, la4, la5, la6; private JTextField tx1, tx2, tx3, tx4, tx5, tx6; public JButton save, query, modify, delete; private Font laFont = new Font("宋体", Font.BOLD, 15); private JComboBox jcbb1; private String str1[] = { "查询全部", "按科室编号查询", "按科室名称查询" }; private final String[] columnNames = { "科室编号", "科室名称", "科室主任", "科室电话" }; private JScrollPane JScrollPane1 = new JScrollPane(); private java.sql.Connection con = null; private static JTable table; private static DefaultTableModel dtm; private Pattern pattern = Pattern.compile("[0-9]*"); public DepartmentManage() { // 背景设置 departmentManage.setLayout(null); ImageIcon background = new ImageIcon("picture/right_bg.jpg"); JLabel label = new JLabel(background); // 标题设置 manageTitle.setFont(new Font("宋体", Font.BOLD, 50)); manageTitle.setBounds(60, 10, 1000, 50); departmentManage.add(manageTitle); // 录入操作面板设置 final JPanel panel = new JPanel(); panel.setLayout(null); panel.setBorder(new TitledBorder(null, "录入操作", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, Color.red)); panel.setBounds(45, 65, 550, 150); panel.setOpaque(false); la1 = new JLabel("科室编号:"); la2 = new JLabel("科室名称:"); la3 = new JLabel("科室主任:"); la4 = new JLabel("科室电话:"); tx1 = new JTextField(); tx2 = new JTextField(); tx3 = new JTextField(); tx4 = new JTextField(); save = new JButton("保存"); la1.setBounds(20, 20, 100, 50); la1.setFont(laFont); la2.setBounds(240, 20, 100, 50); la2.setFont(laFont); la3.setBounds(20, 80, 100, 50); la3.setFont(laFont); la4.setBounds(240, 80, 100, 50); la4.setFont(laFont); tx1.setBounds(100, 30, 120, 30); tx1.setFont(laFont); tx2.setBounds(320, 30, 120, 30); tx2.setFont(laFont); tx3.setBounds(100, 90, 120, 30); tx3.setFont(laFont); tx4.setBounds(320, 90, 120, 30); tx4.setFont(laFont); save.setBounds(460, 100, 80, 40); panel.add(la1); panel.add(la2); panel.add(la3); panel.add(la4); panel.add(tx1); panel.add(tx2); panel.add(tx3); panel.add(tx4); panel.add(save); departmentManage.add(panel); // 查询操纵面板设置 final JPanel panel1 = new JPanel(); panel1.setLayout(null); panel1.setBorder(new TitledBorder(null, "查询操作", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, Color.red)); panel1.setBounds(620, 65, 380, 150); panel1.setOpaque(false); query = new JButton("查询"); la5 = new JLabel("科室编号:"); la6 = new JLabel("科室名称:"); tx5 = new JTextField(); tx6 = new JTextField(); jcbb1 = new JComboBox(str1); jcbb1.setBounds(20, 28, 150, 25); jcbb1.setFont(laFont); la5.setBounds(20, 73, 80, 50); la5.setFont(laFont); la6.setBounds(20, 73, 80, 50); la6.setFont(laFont); tx5.setBounds(100, 80, 120, 30); tx5.setFont(laFont); tx6.setBounds(100, 80, 120, 30); tx6.setFont(laFont); query.setBounds(290, 100, 80, 40); la5.setVisible(false); la6.setVisible(false); tx5.setVisible(false); tx6.setVisible(false); panel1.add(la5); panel1.add(la6); panel1.add(tx5); panel1.add(tx6); panel1.add(jcbb1); panel1.add(query); departmentManage.add(panel1); // 表格设置 defaultTableModel(); // 设置表格不可编辑 setTableColumnCenter(); // 设置表格内容居中显示 setbgcolor(); // 设置表格隔行不同颜色 JScrollPane1.setBounds(new Rectangle(45, 230, 850, 270)); JScrollPane1.setViewportView(table); // 创建一个滚动条(如果有必要)并设置其视图 // table.getColumnModel().getColumn(0).setMinWidth(40); // table.getColumnModel().getColumn(0).setMaxWidth(40); table.getTableHeader().setReorderingAllowed(false); // 列不可拖动 table.getTableHeader().setResizingAllowed(false); // 列宽不能改变 departmentManage.add(JScrollPane1); // 按钮设置 modify = new JButton("修改"); delete = new JButton("删除"); // reflash=new JButton("刷新"); modify.setBounds(910, 230, 80, 40); delete.setBounds(910, 300, 80, 40); // reflash.setBounds(910, 370, 80, 40); departmentManage.add(modify); departmentManage.add(delete); // departmentManage.add(reflash); // 添加监听器 save.addActionListener(this); delete.addActionListener(this); query.addActionListener(this); modify.addActionListener(this); // reflash.addActionListener(this); jcbb1.addActionListener(this); // 添加背景 departmentManage.add(label); label.setBounds(0, 0, 1100, 700); } // 设置表格不可编辑 private void defaultTableModel() { dtm = new DefaultTableModel(columnNames, 0); table = new JTable(dtm) { public boolean isCellEditable(int row, int column) { return false; } }; } // 设置表格内容居中显示 private void setTableColumnCenter() { DefaultTableCellRenderer r = new DefaultTableCellRenderer(); r.setHorizontalAlignment(JLabel.CENTER); table.setDefaultRenderer(Object.class, r); } // 设置表格隔行背景颜色不同 private static void setbgcolor() { try { DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (row % 2 == 0) setBackground(new Color(223, 220, 239)); // 设置奇数行底色 else if (row % 2 == 1) setBackground(Color.white); // 设置偶数行底色 return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); } }; for (int i = 0; i < table.getColumnCount(); i++) { table.getColumn(table.getColumnName(i)).setCellRenderer(tcr); } } catch (Exception ex) { ex.printStackTrace(); } } public void actionPerformed(ActionEvent e) { if (e.getSource() == jcbb1) { if (jcbb1.getSelectedIndex() == 0) { la5.setVisible(false); la6.setVisible(false); tx5.setVisible(false); tx6.setVisible(false); return; } else if (jcbb1.getSelectedIndex() == 1) { la5.setVisible(true); tx5.setVisible(true); la6.setVisible(false); tx6.setVisible(false); return; } else if (jcbb1.getSelectedIndex() == 2) { tx5.setVisible(false); la5.setVisible(false); tx6.setVisible(true); la6.setVisible(true); return; } } if (e.getSource() == save) { // 录入操作 // 输入信息不能为空 if (tx1.getText().equals("") || tx2.getText().equals("") || tx4.getText().equals("")) { JOptionPane.showMessageDialog(null, "请输入完整的科室信息!", "错误", JOptionPane.ERROR_MESSAGE); } // 编号为3位数字 else if (tx1.getText().length() > 3 || pattern.matcher(tx1.getText()).matches() == false) { JOptionPane.showMessageDialog(null, "请输入正确的3位数科室编号!", "错误", JOptionPane.ERROR_MESSAGE); } // 名字长度不能超过20个字符 else if (tx2.getText().length() > 10 || tx3.getText().length() > 10) { JOptionPane.showMessageDialog(null, "名字长度不能超过10个汉字!", "错误", JOptionPane.ERROR_MESSAGE); } // 电话号码为8位数字 else if (pattern.matcher(tx4.getText()).matches() == false || tx4.getText().length() != 8) { JOptionPane.showMessageDialog(null, "请输入正确的8位数电话号码!", "错误", JOptionPane.ERROR_MESSAGE); } else { String deptNo = tx1.getText().trim(); String deptName = tx2.getText(); String deptPhone = tx4.getText().trim(); try { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); Statement st1 = con.createStatement(); // 创建一个数据库会话对象 Statement st2 = con.createStatement(); // 创建一个数据库会话对象 Statement st3 = con.createStatement(); // 创建一个数据库会话对象 ResultSet rs1 = st1.executeQuery("select * from Department where DeptNo='" + deptNo + "'"); // SQL语句 ResultSet rs2 = st2.executeQuery("select * from Department where DeptName='" + deptName + "'"); ResultSet rs3 = st3.executeQuery("select * from Department where DeptPhone='" + deptPhone + "'"); if (rs1.next()) { // 判断结果集rs是否有记录,并且将指针后移一位 JOptionPane.showMessageDialog(null, "该科室号已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE); st1.close(); } else if (rs2.next()) { JOptionPane.showMessageDialog(null, "该科室名已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE); st2.close(); } else if (rs3.next()) { JOptionPane.showMessageDialog(null, "该科室电话号码已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE); st3.close(); } else { int ok = JOptionPane.showConfirmDialog(null, "是否保存该科室信息?", "确定", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); if (ok == JOptionPane.YES_OPTION) { try { // 信息添加到数据库 String sql = "INSERT INTO Department(DeptNo,DeptName,DrName,DeptPhone)VALUES(?,?,?,?)"; PreparedStatement parepare = con.prepareStatement(sql); parepare.setString(1, tx1.getText()); parepare.setString(2, tx2.getText()); parepare.setString(3, tx3.getText()); parepare.setString(4, tx4.getText()); parepare.executeUpdate(); String[] data = new String[] { tx1.getText(), tx2.getText(), tx3.getText(), tx4.getText() }; dtm.addRow(data); // 在表格添加一行刚添加的数据 JOptionPane.showMessageDialog(null, "录入成功"); tx1.setText(""); tx2.setText(""); tx3.setText(""); tx4.setText(""); } catch (Exception e1) { e1.printStackTrace(); System.out.println("SQL Exception occur.Message is:"); System.out.println(e1.getMessage()); } } } } catch (Exception e2) { e2.printStackTrace(); } } } if (e.getSource() == query) { // 查询操作 try { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); if (jcbb1.getSelectedIndex() == 0) { // 全部查询 String sql = "select * from Department"; databaseSearch(sql); if (table.getRowCount() != 0) { JOptionPane.showMessageDialog(null, "查询成功!"); } else { JOptionPane.showMessageDialog(null, "没有找到您要的信息!"); } } if (jcbb1.getSelectedIndex() == 1) { // 编号查询 if (tx5.getText().trim().equals("")) { JOptionPane.showMessageDialog(null, "请输入正确的科室编号!", "错误", JOptionPane.ERROR_MESSAGE); } else { String deptNo = tx5.getText().trim(); String sql = "select * from Department where DeptNo like'%" + deptNo + "%'"; databaseSearch(sql); if (table.getRowCount() != 0) { JOptionPane.showMessageDialog(null, "查询成功!"); tx5.setText(""); } else { JOptionPane.showMessageDialog(null, "没有找到您要的信息!"); } } } if (jcbb1.getSelectedIndex() == 2) { // 名称查询 if (tx6.getText().trim().equals("")) { JOptionPane.showMessageDialog(null, "请输入正确的科室名称!", "错误", JOptionPane.ERROR_MESSAGE); } else { String deptName = tx6.getText(); String sql = "select * from Department where DeptName like '%" + deptName + "%'"; databaseSearch(sql); if (table.getRowCount() != 0) { JOptionPane.showMessageDialog(null, "查询成功!"); tx6.setText(""); } else { JOptionPane.showMessageDialog(null, "没有找到您要的信息!"); } } } } catch (Exception e1) { e1.printStackTrace(); } } if (e.getSource() == delete) { // 删除操作 try { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); Statement stmt = con.createStatement(); // 创建一个数据库会话对象 int selectCount = table.getSelectedRowCount(); if (selectCount == 0) { JOptionPane.showMessageDialog(null, "请选择您要删除的信息!"); } else if (selectCount == 1) { int ok = JOptionPane.showConfirmDialog(null, "是否删除该科室信息?", "确定", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); if (ok == JOptionPane.YES_OPTION) { int row = table.getSelectedRow(); String deptNo = (String) table.getValueAt(row, 0); String sql = "delete from Department where DeptNo='" + deptNo + "'"; stmt.executeUpdate(sql); dtm.removeRow(row); JOptionPane.showMessageDialog(null, "删除成功!"); } } else { int ok = JOptionPane.showConfirmDialog(null, "是否删除所选" + selectCount + "个科室信息?", "确定", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); if (ok == JOptionPane.YES_OPTION) { for (int i = 1; i <= selectCount; i++) { int row1 = table.getSelectedRow(); String deptNo = (String) table.getValueAt(row1, 0); String sql = "delete from Department where DeptNo='" + deptNo + "'"; stmt.executeUpdate(sql); dtm.removeRow(row1); } JOptionPane.showMessageDialog(null, "删除成功!"); } } } catch (Exception e1) { e1.printStackTrace(); } } // 修改操作设置 if (e.getSource() == modify) { if (table.getSelectedRowCount() != 1) { JOptionPane.showMessageDialog(null, "请选择一项科室信息进行修改!", "错误", JOptionPane.ERROR_MESSAGE); } else { try { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); Statement stmt1 = con.createStatement(); // 创建一个数据库会话对象 int row = table.getSelectedRow(); String value0 = (String) table.getValueAt(row, 0); String value1 = (String) table.getValueAt(row, 1); String value2 = (String) table.getValueAt(row, 2); String value3 = (String) table.getValueAt(row, 3); DepartmentModify dig = new DepartmentModify(); dig.tx1.setText(value0); dig.tx2.setText(value1); dig.tx3.setText(value2); dig.tx4.setText(value3); dig.s.setVisible(true); } catch (Exception e1) { e1.printStackTrace(); } } } } // 把数据库数据传入表格 public void databaseSearch(String SQL) { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); ResultSet rs; try { int rowcount = dtm.getRowCount() - 1; if (rowcount != -1) { for (int i1 = rowcount; i1 >= 0; i1--) { dtm.removeRow(i1); } dtm.setRowCount(0); } Statement stmt = con.createStatement(); rs = stmt.executeQuery(SQL); String[] data = new String[4]; while (rs.next()) { for (int j = 1; j <= 4; j++) { data[j - 1] = rs.getString(j); } dtm.addRow(data); } con.close(); } catch (Exception err) { String error = err.getMessage(); JOptionPane.showMessageDialog(null, error); err.printStackTrace(); } finally { dbUtil.close(); } } // 科室信息修改操作对话框设置++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ class DepartmentModify implements ActionListener { public JDialog s = new JDialog(); public JLabel la1, la2, la3, la4; public JTextField tx1, tx2, tx3, tx4, txWait; public JButton confirm, cancel; public Font laFont = new Font("宋体", Font.BOLD, 15); public int row = table.getSelectedRow(); public DepartmentModify() { ImageIcon background = new ImageIcon("picture/right_bg.jpg"); JLabel label = new JLabel(background); s.setModal(true); s.setSize(500, 250); s.setResizable(false); s.setLocationRelativeTo(null); s.setLayout(null); la1 = new JLabel("科室编号:"); la2 = new JLabel("科室名称:"); la3 = new JLabel("科室主任:"); la4 = new JLabel("科室电话:"); tx1 = new JTextField(); tx2 = new JTextField(); tx3 = new JTextField(); tx4 = new JTextField(); txWait = new JTextField(); confirm = new JButton("确定"); cancel = new JButton("取消"); tx1.setEditable(false); la1.setBounds(30, 30, 100, 40); la1.setFont(laFont); la2.setBounds(250, 30, 100, 40); la2.setFont(laFont); la3.setBounds(30, 90, 100, 40); la3.setFont(laFont); la4.setBounds(250, 90, 100, 40); la4.setFont(laFont); tx1.setBounds(110, 35, 120, 30); tx1.setFont(laFont); tx2.setBounds(330, 35, 120, 30); tx2.setFont(laFont); tx3.setBounds(110, 95, 120, 30); tx3.setFont(laFont); tx4.setBounds(330, 95, 120, 30); tx4.setFont(laFont); confirm.setBounds(110, 150, 100, 40); cancel.setBounds(330, 150, 100, 40); s.add(la1); s.add(la2); s.add(la3); s.add(la4); s.add(tx1); s.add(tx2); s.add(tx3); s.add(tx4); s.add(confirm); s.add(cancel); confirm.addActionListener(this); cancel.addActionListener(this); s.add(label); label.setBounds(0, 0, 500, 250); } public void actionPerformed(ActionEvent e) { if (e.getSource() == cancel) { s.dispose(); } if (e.getSource() == confirm) { int ok = JOptionPane.showConfirmDialog(null, "是否修改该科室信息?", "确定", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); if (ok == JOptionPane.YES_OPTION) { try { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); Statement stmt = con.createStatement(); // 创建一个数据库会话对象 // 输入信息不能为空 if (tx2.getText().equals("") || tx4.getText().equals("")) { JOptionPane.showMessageDialog(null, "请输入完整的科室信息!", "错误", JOptionPane.ERROR_MESSAGE); } // 编号为3位数字 else if (tx1.getText().length() > 3 || pattern.matcher(tx1.getText()).matches() == false) { JOptionPane.showMessageDialog(null, "请输入正确的3位数科室编号!", "错误", JOptionPane.ERROR_MESSAGE); } // 名字长度不能超过20个字符 else if (tx2.getText().length() > 10 || tx3.getText().length() > 10) { JOptionPane.showMessageDialog(null, "名字长度不能超过10个汉字!", "错误", JOptionPane.ERROR_MESSAGE); } // 电话号码为8位数字 else if (pattern.matcher(tx4.getText()).matches() == false || tx4.getText().length() != 8) { JOptionPane.showMessageDialog(null, "请输入正确的8位数电话号码!", "错误", JOptionPane.ERROR_MESSAGE); } else { int row2 = table.getSelectedRow(); String sql = "update Department set DeptName='" + tx2.getText().trim() + "',DrName='" + tx3.getText().trim() + "',DeptPhone='" + tx4.getText().trim() + "'where DeptNo='" + tx1.getText().trim() + "' "; stmt.executeUpdate(sql); String[] data = new String[] { tx1.getText(), tx2.getText(), tx3.getText(), tx4.getText() }; dtm.removeRow(row2); dtm.insertRow(row2, data); JOptionPane.showMessageDialog(null, "修改成功"); s.dispose(); } } catch (Exception e1) { e1.printStackTrace(); } } } } } }
DepartmentManage.java
package com.sjsq; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import java.util.regex.Pattern; import javax.swing.DefaultComboBoxModel; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.border.TitledBorder; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; public class DepartmentManage extends JFrame implements ActionListener { JPanel departmentManage = new JPanel(); private JLabel manageTitle = new JLabel("科室信息综合操作"); private JLabel la1, la2, la3, la4, la5, la6; private JTextField tx1, tx2, tx3, tx4, tx5, tx6; public JButton save, query, modify, delete; private Font laFont = new Font("宋体", Font.BOLD, 15); private JComboBox jcbb1; private String str1[] = { "查询全部", "按科室编号查询", "按科室名称查询" }; private final String[] columnNames = { "科室编号", "科室名称", "科室主任", "科室电话" }; private JScrollPane JScrollPane1 = new JScrollPane(); private java.sql.Connection con = null; private static JTable table; private static DefaultTableModel dtm; private Pattern pattern = Pattern.compile("[0-9]*"); public DepartmentManage() { // 背景设置 departmentManage.setLayout(null); ImageIcon background = new ImageIcon("picture/right_bg.jpg"); JLabel label = new JLabel(background); // 标题设置 manageTitle.setFont(new Font("宋体", Font.BOLD, 50)); manageTitle.setBounds(60, 10, 1000, 50); departmentManage.add(manageTitle); // 录入操作面板设置 final JPanel panel = new JPanel(); panel.setLayout(null); panel.setBorder(new TitledBorder(null, "录入操作", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, Color.red)); panel.setBounds(45, 65, 550, 150); panel.setOpaque(false); la1 = new JLabel("科室编号:"); la2 = new JLabel("科室名称:"); la3 = new JLabel("科室主任:"); la4 = new JLabel("科室电话:"); tx1 = new JTextField(); tx2 = new JTextField(); tx3 = new JTextField(); tx4 = new JTextField(); save = new JButton("保存"); la1.setBounds(20, 20, 100, 50); la1.setFont(laFont); la2.setBounds(240, 20, 100, 50); la2.setFont(laFont); la3.setBounds(20, 80, 100, 50); la3.setFont(laFont); la4.setBounds(240, 80, 100, 50); la4.setFont(laFont); tx1.setBounds(100, 30, 120, 30); tx1.setFont(laFont); tx2.setBounds(320, 30, 120, 30); tx2.setFont(laFont); tx3.setBounds(100, 90, 120, 30); tx3.setFont(laFont); tx4.setBounds(320, 90, 120, 30); tx4.setFont(laFont); save.setBounds(460, 100, 80, 40); panel.add(la1); panel.add(la2); panel.add(la3); panel.add(la4); panel.add(tx1); panel.add(tx2); panel.add(tx3); panel.add(tx4); panel.add(save); departmentManage.add(panel); // 查询操纵面板设置 final JPanel panel1 = new JPanel(); panel1.setLayout(null); panel1.setBorder(new TitledBorder(null, "查询操作", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, Color.red)); panel1.setBounds(620, 65, 380, 150); panel1.setOpaque(false); query = new JButton("查询"); la5 = new JLabel("科室编号:"); la6 = new JLabel("科室名称:"); tx5 = new JTextField(); tx6 = new JTextField(); jcbb1 = new JComboBox(str1); jcbb1.setBounds(20, 28, 150, 25); jcbb1.setFont(laFont); la5.setBounds(20, 73, 80, 50); la5.setFont(laFont); la6.setBounds(20, 73, 80, 50); la6.setFont(laFont); tx5.setBounds(100, 80, 120, 30); tx5.setFont(laFont); tx6.setBounds(100, 80, 120, 30); tx6.setFont(laFont); query.setBounds(290, 100, 80, 40); la5.setVisible(false); la6.setVisible(false); tx5.setVisible(false); tx6.setVisible(false); panel1.add(la5); panel1.add(la6); panel1.add(tx5); panel1.add(tx6); panel1.add(jcbb1); panel1.add(query); departmentManage.add(panel1); // 表格设置 defaultTableModel(); // 设置表格不可编辑 setTableColumnCenter(); // 设置表格内容居中显示 setbgcolor(); // 设置表格隔行不同颜色 JScrollPane1.setBounds(new Rectangle(45, 230, 850, 270)); JScrollPane1.setViewportView(table); // 创建一个滚动条(如果有必要)并设置其视图 // table.getColumnModel().getColumn(0).setMinWidth(40); // table.getColumnModel().getColumn(0).setMaxWidth(40); table.getTableHeader().setReorderingAllowed(false); // 列不可拖动 table.getTableHeader().setResizingAllowed(false); // 列宽不能改变 departmentManage.add(JScrollPane1); // 按钮设置 modify = new JButton("修改"); delete = new JButton("删除"); // reflash=new JButton("刷新"); modify.setBounds(910, 230, 80, 40); delete.setBounds(910, 300, 80, 40); // reflash.setBounds(910, 370, 80, 40); departmentManage.add(modify); departmentManage.add(delete); // departmentManage.add(reflash); // 添加监听器 save.addActionListener(this); delete.addActionListener(this); query.addActionListener(this); modify.addActionListener(this); // reflash.addActionListener(this); jcbb1.addActionListener(this); // 添加背景 departmentManage.add(label); label.setBounds(0, 0, 1100, 700); } // 设置表格不可编辑 private void defaultTableModel() { dtm = new DefaultTableModel(columnNames, 0); table = new JTable(dtm) { public boolean isCellEditable(int row, int column) { return false; } }; } // 设置表格内容居中显示 private void setTableColumnCenter() { DefaultTableCellRenderer r = new DefaultTableCellRenderer(); r.setHorizontalAlignment(JLabel.CENTER); table.setDefaultRenderer(Object.class, r); } // 设置表格隔行背景颜色不同 private static void setbgcolor() { try { DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (row % 2 == 0) setBackground(new Color(223, 220, 239)); // 设置奇数行底色 else if (row % 2 == 1) setBackground(Color.white); // 设置偶数行底色 return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); } }; for (int i = 0; i < table.getColumnCount(); i++) { table.getColumn(table.getColumnName(i)).setCellRenderer(tcr); } } catch (Exception ex) { ex.printStackTrace(); } } public void actionPerformed(ActionEvent e) { if (e.getSource() == jcbb1) { if (jcbb1.getSelectedIndex() == 0) { la5.setVisible(false); la6.setVisible(false); tx5.setVisible(false); tx6.setVisible(false); return; } else if (jcbb1.getSelectedIndex() == 1) { la5.setVisible(true); tx5.setVisible(true); la6.setVisible(false); tx6.setVisible(false); return; } else if (jcbb1.getSelectedIndex() == 2) { tx5.setVisible(false); la5.setVisible(false); tx6.setVisible(true); la6.setVisible(true); return; } } if (e.getSource() == save) { // 录入操作 // 输入信息不能为空 if (tx1.getText().equals("") || tx2.getText().equals("") || tx4.getText().equals("")) { JOptionPane.showMessageDialog(null, "请输入完整的科室信息!", "错误", JOptionPane.ERROR_MESSAGE); } // 编号为3位数字 else if (tx1.getText().length() > 3 || pattern.matcher(tx1.getText()).matches() == false) { JOptionPane.showMessageDialog(null, "请输入正确的3位数科室编号!", "错误", JOptionPane.ERROR_MESSAGE); } // 名字长度不能超过20个字符 else if (tx2.getText().length() > 10 || tx3.getText().length() > 10) { JOptionPane.showMessageDialog(null, "名字长度不能超过10个汉字!", "错误", JOptionPane.ERROR_MESSAGE); } // 电话号码为8位数字 else if (pattern.matcher(tx4.getText()).matches() == false || tx4.getText().length() != 8) { JOptionPane.showMessageDialog(null, "请输入正确的8位数电话号码!", "错误", JOptionPane.ERROR_MESSAGE); } else { String deptNo = tx1.getText().trim(); String deptName = tx2.getText(); String deptPhone = tx4.getText().trim(); try { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); Statement st1 = con.createStatement(); // 创建一个数据库会话对象 Statement st2 = con.createStatement(); // 创建一个数据库会话对象 Statement st3 = con.createStatement(); // 创建一个数据库会话对象 ResultSet rs1 = st1.executeQuery("select * from Department where DeptNo='" + deptNo + "'"); // SQL语句 ResultSet rs2 = st2.executeQuery("select * from Department where DeptName='" + deptName + "'"); ResultSet rs3 = st3.executeQuery("select * from Department where DeptPhone='" + deptPhone + "'"); if (rs1.next()) { // 判断结果集rs是否有记录,并且将指针后移一位 JOptionPane.showMessageDialog(null, "该科室号已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE); st1.close(); } else if (rs2.next()) { JOptionPane.showMessageDialog(null, "该科室名已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE); st2.close(); } else if (rs3.next()) { JOptionPane.showMessageDialog(null, "该科室电话号码已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE); st3.close(); } else { int ok = JOptionPane.showConfirmDialog(null, "是否保存该科室信息?", "确定", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); if (ok == JOptionPane.YES_OPTION) { try { // 信息添加到数据库 String sql = "INSERT INTO Department(DeptNo,DeptName,DrName,DeptPhone)VALUES(?,?,?,?)"; PreparedStatement parepare = con.prepareStatement(sql); parepare.setString(1, tx1.getText()); parepare.setString(2, tx2.getText()); parepare.setString(3, tx3.getText()); parepare.setString(4, tx4.getText()); parepare.executeUpdate(); String[] data = new String[] { tx1.getText(), tx2.getText(), tx3.getText(), tx4.getText() }; dtm.addRow(data); // 在表格添加一行刚添加的数据 JOptionPane.showMessageDialog(null, "录入成功"); tx1.setText(""); tx2.setText(""); tx3.setText(""); tx4.setText(""); } catch (Exception e1) { e1.printStackTrace(); System.out.println("SQL Exception occur.Message is:"); System.out.println(e1.getMessage()); } } } } catch (Exception e2) { e2.printStackTrace(); } } } if (e.getSource() == query) { // 查询操作 try { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); if (jcbb1.getSelectedIndex() == 0) { // 全部查询 String sql = "select * from Department"; databaseSearch(sql); if (table.getRowCount() != 0) { JOptionPane.showMessageDialog(null, "查询成功!"); } else { JOptionPane.showMessageDialog(null, "没有找到您要的信息!"); } } if (jcbb1.getSelectedIndex() == 1) { // 编号查询 if (tx5.getText().trim().equals("")) { JOptionPane.showMessageDialog(null, "请输入正确的科室编号!", "错误", JOptionPane.ERROR_MESSAGE); } else { String deptNo = tx5.getText().trim(); String sql = "select * from Department where DeptNo like'%" + deptNo + "%'"; databaseSearch(sql); if (table.getRowCount() != 0) { JOptionPane.showMessageDialog(null, "查询成功!"); tx5.setText(""); } else { JOptionPane.showMessageDialog(null, "没有找到您要的信息!"); } } } if (jcbb1.getSelectedIndex() == 2) { // 名称查询 if (tx6.getText().trim().equals("")) { JOptionPane.showMessageDialog(null, "请输入正确的科室名称!", "错误", JOptionPane.ERROR_MESSAGE); } else { String deptName = tx6.getText(); String sql = "select * from Department where DeptName like '%" + deptName + "%'"; databaseSearch(sql); if (table.getRowCount() != 0) { JOptionPane.showMessageDialog(null, "查询成功!"); tx6.setText(""); } else { JOptionPane.showMessageDialog(null, "没有找到您要的信息!"); } } } } catch (Exception e1) { e1.printStackTrace(); } } if (e.getSource() == delete) { // 删除操作 try { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); Statement stmt = con.createStatement(); // 创建一个数据库会话对象 int selectCount = table.getSelectedRowCount(); if (selectCount == 0) { JOptionPane.showMessageDialog(null, "请选择您要删除的信息!"); } else if (selectCount == 1) { int ok = JOptionPane.showConfirmDialog(null, "是否删除该科室信息?", "确定", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); if (ok == JOptionPane.YES_OPTION) { int row = table.getSelectedRow(); String deptNo = (String) table.getValueAt(row, 0); String sql = "delete from Department where DeptNo='" + deptNo + "'"; stmt.executeUpdate(sql); dtm.removeRow(row); JOptionPane.showMessageDialog(null, "删除成功!"); } } else { int ok = JOptionPane.showConfirmDialog(null, "是否删除所选" + selectCount + "个科室信息?", "确定", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); if (ok == JOptionPane.YES_OPTION) { for (int i = 1; i <= selectCount; i++) { int row1 = table.getSelectedRow(); String deptNo = (String) table.getValueAt(row1, 0); String sql = "delete from Department where DeptNo='" + deptNo + "'"; stmt.executeUpdate(sql); dtm.removeRow(row1); } JOptionPane.showMessageDialog(null, "删除成功!"); } } } catch (Exception e1) { e1.printStackTrace(); } } // 修改操作设置 if (e.getSource() == modify) { if (table.getSelectedRowCount() != 1) { JOptionPane.showMessageDialog(null, "请选择一项科室信息进行修改!", "错误", JOptionPane.ERROR_MESSAGE); } else { try { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); Statement stmt1 = con.createStatement(); // 创建一个数据库会话对象 int row = table.getSelectedRow(); String value0 = (String) table.getValueAt(row, 0); String value1 = (String) table.getValueAt(row, 1); String value2 = (String) table.getValueAt(row, 2); String value3 = (String) table.getValueAt(row, 3); DepartmentModify dig = new DepartmentModify(); dig.tx1.setText(value0); dig.tx2.setText(value1); dig.tx3.setText(value2); dig.tx4.setText(value3); dig.s.setVisible(true); } catch (Exception e1) { e1.printStackTrace(); } } } } // 把数据库数据传入表格 public void databaseSearch(String SQL) { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); ResultSet rs; try { int rowcount = dtm.getRowCount() - 1; if (rowcount != -1) { for (int i1 = rowcount; i1 >= 0; i1--) { dtm.removeRow(i1); } dtm.setRowCount(0); } Statement stmt = con.createStatement(); rs = stmt.executeQuery(SQL); String[] data = new String[4]; while (rs.next()) { for (int j = 1; j <= 4; j++) { data[j - 1] = rs.getString(j); } dtm.addRow(data); } con.close(); } catch (Exception err) { String error = err.getMessage(); JOptionPane.showMessageDialog(null, error); err.printStackTrace(); } finally { dbUtil.close(); } } // 科室信息修改操作对话框设置++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ class DepartmentModify implements ActionListener { public JDialog s = new JDialog(); public JLabel la1, la2, la3, la4; public JTextField tx1, tx2, tx3, tx4, txWait; public JButton confirm, cancel; public Font laFont = new Font("宋体", Font.BOLD, 15); public int row = table.getSelectedRow(); public DepartmentModify() { ImageIcon background = new ImageIcon("picture/right_bg.jpg"); JLabel label = new JLabel(background); s.setModal(true); s.setSize(500, 250); s.setResizable(false); s.setLocationRelativeTo(null); s.setLayout(null); la1 = new JLabel("科室编号:"); la2 = new JLabel("科室名称:"); la3 = new JLabel("科室主任:"); la4 = new JLabel("科室电话:"); tx1 = new JTextField(); tx2 = new JTextField(); tx3 = new JTextField(); tx4 = new JTextField(); txWait = new JTextField(); confirm = new JButton("确定"); cancel = new JButton("取消"); tx1.setEditable(false); la1.setBounds(30, 30, 100, 40); la1.setFont(laFont); la2.setBounds(250, 30, 100, 40); la2.setFont(laFont); la3.setBounds(30, 90, 100, 40); la3.setFont(laFont); la4.setBounds(250, 90, 100, 40); la4.setFont(laFont); tx1.setBounds(110, 35, 120, 30); tx1.setFont(laFont); tx2.setBounds(330, 35, 120, 30); tx2.setFont(laFont); tx3.setBounds(110, 95, 120, 30); tx3.setFont(laFont); tx4.setBounds(330, 95, 120, 30); tx4.setFont(laFont); confirm.setBounds(110, 150, 100, 40); cancel.setBounds(330, 150, 100, 40); s.add(la1); s.add(la2); s.add(la3); s.add(la4); s.add(tx1); s.add(tx2); s.add(tx3); s.add(tx4); s.add(confirm); s.add(cancel); confirm.addActionListener(this); cancel.addActionListener(this); s.add(label); label.setBounds(0, 0, 500, 250); } public void actionPerformed(ActionEvent e) { if (e.getSource() == cancel) { s.dispose(); } if (e.getSource() == confirm) { int ok = JOptionPane.showConfirmDialog(null, "是否修改该科室信息?", "确定", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); if (ok == JOptionPane.YES_OPTION) { try { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); Statement stmt = con.createStatement(); // 创建一个数据库会话对象 // 输入信息不能为空 if (tx2.getText().equals("") || tx4.getText().equals("")) { JOptionPane.showMessageDialog(null, "请输入完整的科室信息!", "错误", JOptionPane.ERROR_MESSAGE); } // 编号为3位数字 else if (tx1.getText().length() > 3 || pattern.matcher(tx1.getText()).matches() == false) { JOptionPane.showMessageDialog(null, "请输入正确的3位数科室编号!", "错误", JOptionPane.ERROR_MESSAGE); } // 名字长度不能超过20个字符 else if (tx2.getText().length() > 10 || tx3.getText().length() > 10) { JOptionPane.showMessageDialog(null, "名字长度不能超过10个汉字!", "错误", JOptionPane.ERROR_MESSAGE); } // 电话号码为8位数字 else if (pattern.matcher(tx4.getText()).matches() == false || tx4.getText().length() != 8) { JOptionPane.showMessageDialog(null, "请输入正确的8位数电话号码!", "错误", JOptionPane.ERROR_MESSAGE); } else { int row2 = table.getSelectedRow(); String sql = "update Department set DeptName='" + tx2.getText().trim() + "',DrName='" + tx3.getText().trim() + "',DeptPhone='" + tx4.getText().trim() + "'where DeptNo='" + tx1.getText().trim() + "' "; stmt.executeUpdate(sql); String[] data = new String[] { tx1.getText(), tx2.getText(), tx3.getText(), tx4.getText() }; dtm.removeRow(row2); dtm.insertRow(row2, data); JOptionPane.showMessageDialog(null, "修改成功"); s.dispose(); } } catch (Exception e1) { e1.printStackTrace(); } } } } } }
DoctorInput.java
package com.sjsq; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import java.util.regex.Pattern; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.border.TitledBorder; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; public class DoctorInput extends JFrame implements ActionListener { JPanel doctorInput = new JPanel(); private JLabel inputTitle = new JLabel("医生档案信息录入"); private JLabel la1, la2, la3, la4, la5, la6, la7, la8, la9, la10, la11; private JTextField tx1, tx2, tx8, tx10; private JPasswordField tx11; public JButton save, clean; private JComboBox sex, age, position, educated, department; private String str3[], str4[], str5[], str6[], str7[]; private final String columnNames[]; private JTextField showDate1 = new JTextField("单击选择日期"); private Timedate dateChooser1 = Timedate.getInstance("yyyy-MM-dd"); private Font laFont = new Font("宋体", Font.BOLD, 15); private JScrollPane JScrollPane1 = new JScrollPane(); private static JTable table; private static DefaultTableModel dtm; private java.sql.Connection con = null; private Pattern pattern = Pattern.compile("[0-9]*"); public DoctorInput() { // 医生信息录入界面设置 doctorInput.setLayout(null); ImageIcon background = new ImageIcon("picture/right_bg.jpg"); // 背景图片 JLabel label = new JLabel(background); inputTitle.setFont(new Font("宋体", Font.BOLD, 50)); inputTitle.setBounds(60, 10, 1000, 50); doctorInput.add(inputTitle); // 录入操作面板设置 final JPanel panel = new JPanel(); panel.setLayout(null); panel.setBorder(new TitledBorder(null, "录入操作", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, Color.red)); panel.setBounds(60, 310, 950, 200); panel.setOpaque(false); la1 = new JLabel("医生编号:"); // 标签设置 la2 = new JLabel("医生姓名:"); la3 = new JLabel("性别:"); la4 = new JLabel("年龄:"); la5 = new JLabel("职称:"); la6 = new JLabel("学历:"); la7 = new JLabel("所属科室:"); la8 = new JLabel("籍贯:"); la9 = new JLabel("入职日期:"); la10 = new JLabel("电话号码:"); la11 = new JLabel("系统密码:"); la1.setBounds(30, 20, 100, 40); la1.setFont(laFont); la2.setBounds(300, 20, 100, 40); la2.setFont(laFont); la3.setBounds(570, 20, 100, 40); la3.setFont(laFont); la4.setBounds(750, 20, 100, 40); la4.setFont(laFont); la5.setBounds(30, 70, 100, 40); la5.setFont(laFont); la6.setBounds(210, 70, 100, 40); la6.setFont(laFont); la7.setBounds(390, 70, 100, 40); la7.setFont(laFont); la8.setBounds(640, 70, 100, 40); la8.setFont(laFont); la9.setBounds(30, 120, 100, 40); la9.setFont(laFont); la10.setBounds(300, 120, 100, 40); la10.setFont(laFont); la11.setBounds(570, 120, 100, 40); la11.setFont(laFont); tx1 = new JTextField(); tx1.setBounds(110, 25, 150, 30); tx1.setFont(laFont); tx2 = new JTextField(); tx2.setBounds(380, 25, 150, 30); tx2.setFont(laFont); tx8 = new JTextField(); tx8.setBounds(690, 75, 150, 30); tx8.setFont(laFont); tx10 = new JTextField(); tx10.setBounds(380, 125, 150, 30); tx10.setFont(laFont); tx11 = new JPasswordField(); tx11.setBounds(650, 125, 150, 30); tx11.setFont(laFont); save = new JButton("保存"); clean = new JButton("清空"); save.setBounds(630, 163, 150, 30); clean.setBounds(780, 163, 150, 30); // 性别下拉框设置 str3 = new String[] { "", "男", "女" }; sex = new JComboBox(str3); sex.setBounds(620, 25, 100, 25); sex.setFont(laFont); // 年龄下拉框设置 str4 = new String[54]; str4[0] = ""; for (int i = 1; i <= 53; i++) { str4[i] = String.valueOf(i + 17); } age = new JComboBox(str4); age.setBounds(800, 25, 100, 25); age.setFont(laFont); // 职称下拉框设置 str5 = new String[] { "", "医师", "主治医师", "副主任医师", "主任医师" }; position = new JComboBox(str5); position.setBounds(80, 75, 100, 25); position.setFont(laFont); // 学历下拉框设置 str6 = new String[] { "", "大专", "本科", "硕士", "博士", "博士后" }; educated = new JComboBox(str6); educated.setBounds(260, 75, 100, 25); educated.setFont(laFont); // 所属科室下拉框设置 str7 = new String[] { "" }; department = new JComboBox(str7); DBUtil dbUtil = new DBUtil(); try { Connection con = dbUtil.getConnection(); Statement stmt = con.createStatement(); // 创建一个数据库会话对象 String sql = "select * from Department"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { department.addItem(rs.getString("DeptName")); } stmt.close(); } catch (Exception e) { e.printStackTrace(); } department.setBounds(470, 75, 125, 25); department.setFont(laFont); // 入职时间设置 showDate1.setFont(new Font("", 1, 20)); dateChooser1.register(showDate1); panel.add(showDate1); showDate1.setBounds(110, 125, 150, 30); // 表格设置 columnNames = new String[] { "医生编号", "医生姓名", "性别", "年龄", "职称", "学历", "所属科室", "籍贯", "入职日期", "电话号码" }; defaultTableModel(); setTableColumnCenter(); setbgcolor(); JScrollPane1.setBounds(new Rectangle(60, 70, 935, 230)); doctorInput.add(JScrollPane1); JScrollPane1.setViewportView(table); // 创建一个视口(如果有必要)并设置其视图 table.getTableHeader().setReorderingAllowed(false); // 列不可拖动 table.getTableHeader().setResizingAllowed(false); // 列宽不能改变 String sql = "select * from Doctor"; databaseSearch(sql); // 组件添加 panel.add(la1); panel.add(la2); panel.add(la3); panel.add(la4); panel.add(la5); panel.add(la6); panel.add(la7); panel.add(la8); panel.add(la9); panel.add(la10); panel.add(la11); panel.add(tx1); panel.add(tx2); panel.add(sex); panel.add(age); panel.add(position); panel.add(educated); panel.add(department); panel.add(tx8); panel.add(tx10); panel.add(tx11); panel.add(save); panel.add(clean); // 添加监听器 save.addActionListener(this); clean.addActionListener(this); doctorInput.add(panel); doctorInput.add(label); // 添加背景 label.setBounds(0, 0, 1100, 700); } // 数据库数据录入到表格中 private void databaseSearch(String sql) { // TODO Auto-generated method stub DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); ResultSet rs; try { int rowcount = dtm.getRowCount() - 1; if (rowcount != -1) { for (int i1 = rowcount; i1 >= 0; i1--) { dtm.removeRow(i1); } dtm.setRowCount(0); } Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql); String[] data = new String[11]; while (rs.next()) { for (int j = 1; j <= 11; j++) { data[j - 1] = rs.getString(j); } dtm.addRow(data); } con.close(); } catch (Exception err) { String error = err.getMessage(); JOptionPane.showMessageDialog(null, error); err.printStackTrace(); } finally { dbUtil.close(); } } // 设置表格不可编辑 public void defaultTableModel() { dtm = new DefaultTableModel(columnNames, 0); table = new JTable(dtm) { public boolean isCellEditable(int row, int column) { return false; } }; } // 设置表格内容居中显示 public void setTableColumnCenter() { DefaultTableCellRenderer r = new DefaultTableCellRenderer(); r.setHorizontalAlignment(JLabel.CENTER); table.setDefaultRenderer(Object.class, r); } // 设置表格隔行背景颜色不同 public static void setbgcolor() { try { DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (row % 2 == 0) setBackground(new Color(223, 220, 239)); // 设置奇数行底色 else if (row % 2 == 1) setBackground(Color.white); // 设置偶数行底色 return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); } }; for (int i = 0; i < table.getColumnCount(); i++) { table.getColumn(table.getColumnName(i)).setCellRenderer(tcr); } } catch (Exception ex) { ex.printStackTrace(); } } public void actionPerformed(ActionEvent e) { if (e.getSource() == clean) { tx1.setText(""); tx2.setText(""); tx8.setText(""); tx10.setText(""); tx11.setText(""); sex.setSelectedIndex(0); age.setSelectedIndex(0); position.setSelectedIndex(0); educated.setSelectedIndex(0); department.setSelectedIndex(0); showDate1.setText("单击选择日期"); } if (e.getSource() == save) { if (tx1.getText().equals("") || tx2.getText().equals("") || tx8.getText().equals("") || tx10.getText().equals("") || tx11.getText().equals("") || sex.getSelectedIndex() == 0 || age.getSelectedIndex() == 0 || position.getSelectedIndex() == 0 || educated.getSelectedIndex() == 0 || department.getSelectedIndex() == 0 || showDate1.getText().equals("单击选择日期")) { JOptionPane.showMessageDialog(null, "请输完整的医生信息!", "错误", JOptionPane.ERROR_MESSAGE); } else if (tx1.getText().length() != 4 || pattern.matcher(tx1.getText()).matches() == false) { JOptionPane.showMessageDialog(null, "请输入4位数医生编号!", "错误", JOptionPane.ERROR_MESSAGE); } else if (tx2.getText().length() > 10) { JOptionPane.showMessageDialog(null, "名字长度不能超过10个汉字!", "错误", JOptionPane.ERROR_MESSAGE); } else if (tx8.getText().length() > 10) { JOptionPane.showMessageDialog(null, "籍贯长度不能超过10个汉字!", "错误", JOptionPane.ERROR_MESSAGE); } else if (tx10.getText().length() != 11 || pattern.matcher(tx10.getText()).matches() == false) { JOptionPane.showMessageDialog(null, "请输入11位数手机号码!", "错误", JOptionPane.ERROR_MESSAGE); } else if (tx11.getText().length() < 6 || tx11.getText().length() > 8 || pattern.matcher(tx11.getText()).matches() == false) { JOptionPane.showMessageDialog(null, "请输入6-8位数字密码!", "错误", JOptionPane.ERROR_MESSAGE); } else { String DrId = tx1.getText(); try { DBUtil dbUtil = new DBUtil(); Connection con = dbUtil.getConnection(); Statement stmt = con.createStatement(); // 创建一个数据库会话对象 ResultSet rs = stmt.executeQuery("select * from Doctor where DrId='" + DrId + "'"); // SQL语句 if (rs.next()) { JOptionPane.showMessageDialog(null, "该医生编号已存在,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE); rs.close(); } else { int ok = JOptionPane.showConfirmDialog(null, "是否保存该医生信息?", "确定", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); if (ok == JOptionPane.YES_OPTION) { // 添加信息到数据库 String sql = "INSERT INTO Doctor(DrId,DrName,DrSex,DrAge,DrPos,DrEdu,DeptName,DrNative,DrDate,DrPhone,Password)VALUES(?,?,?,?,?,?,?,?,?,?,?)"; PreparedStatement parepare = con.prepareStatement(sql); parepare.setString(1, tx1.getText()); parepare.setString(2, tx2.getText()); parepare.setString(3, sex.getSelectedItem().toString()); parepare.setString(4, age.getSelectedItem().toString()); parepare.setString(5, position.getSelectedItem().toString()); parepare.setString(6, educated.getSelectedItem().toString()); parepare.setString(7, department.getSelectedItem().toString()); parepare.setString(8, tx8.getText()); parepare.setString(9, showDate1.getText()); parepare.setString(10, tx10.getText()); parepare.setString(11, tx11.getText()); parepare.executeUpdate(); String data[] = new String[] { tx1.getText(), tx2.getText(), sex.getSelectedItem().toString(), age.getSelectedItem().toString(), position.getSelectedItem().toString(), educated.getSelectedItem().toString(), department.getSelectedItem().toString(), tx8.getText(), showDate1.getText(), tx10.getText(), tx11.getText() }; dtm.addRow(data); // 在表格添加一行刚添加的数据 JOptionPane.showMessageDialog(null, "录入成功"); tx1.setText(""); tx2.setText(""); tx8.setText(""); tx10.setText(""); tx11.setText(""); sex.setSelectedIndex(0); age.setSelectedIndex(0); position.setSelectedIndex(0); educated.setSelectedIndex(0); department.setSelectedIndex(0); showDate1.setText("单击选择日期"); } } } catch (Exception e1) { e1.printStackTrace(); }finally { } } } } }
Drug.java
package com.sjsq; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.regex.Pattern; import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; public class Drug extends JFrame implements ActionListener { JPanel chufangInput = new JPanel(); private JButton button1, button2, button3, button4, button5, button6, button7, button8; private JLabel inputTitle = new JLabel("处方单录入"); private JLabel la0, la1, la2, la3, la4, la5, la6, la7, la8; private Font laFont = new Font("宋体", Font.BOLD, 15); private Pattern pattern = Pattern.compile("[0-9]*"); private Connection con = null; private JLabel t1, t2; private static JTable table1, table2, table3, table4, table5; private static DefaultTableModel dtm1, dtm2, dtm3, dtm4, dtm5; private JScrollPane JScrollPane = new JScrollPane(); private JScrollPane JScrollPane1 = new JScrollPane(); private JScrollPane JScrollPane4 = new JScrollPane(); private JScrollPane JScrollPane5 = new JScrollPane(); private String columnNames1[] = { "编码", "名称", "单价", "数量", "计数单位", "类别", "病例编码" }; private String columnNames2[] = { "编码", "名称", "单价", "计数单位", "类别" }; private String columnNames3[] = { "病例编码", "病人编号", "病人姓名" }; private JTextField tx1, tx2, tx3, tx4, tx5; private JComboBox box1, box2, box5; public Drug() { DBUtil dbUtil = new DBUtil(); chufangInput.setLayout(null); dtm1 = new DefaultTableModel(columnNames1, 0) {// dtm2是项目收费表格模版 public boolean isCellEditable(int row, int column) { if (column == 1 || column == 3) return true;// 这个是可以编辑的列 // if(rowIndex!=0) return false; return false; }// 表格不允许被编辑 } }; String fontSize1[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "12" }; table1 = new JTable(dtm1);// JScrollPane4 项目表 JScrollPane JScrollPane = new JScrollPane(table1); TableColumn a1 = table1.getColumn("名称"); TableColumn a2 = table1.getColumn("数量"); JTextField box3 = new JTextField(); box2 = new JComboBox(fontSize1); box3.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { updata_combobox(); } @Override public void insertUpdate(DocumentEvent e) { updata_combobox(); } @Override public void changedUpdate(DocumentEvent e) { updata_combobox(); } private void updata_combobox() { String s1 = null; s1 = box3.getText(); System.out.println(s1); JScrollPane1.setVisible(true); String sql = "select * from Price where PeName like '%" + s1 + "%'and PeClass='其他类'"; databaseSearch1(sql, 5); } }); box3.setEditable(true); DefaultCellEditor dce2 = new DefaultCellEditor(box3); a1.setCellEditor(dce2); box2.setEditable(true); box2.setMaximumRowCount(5); DefaultCellEditor dce3 = new DefaultCellEditor(box2); a2.setCellEditor(dce3); box2.addActionListener(this); dtm2 = new DefaultTableModel(columnNames2, 0);// 项目明细表 table2 = new JTable(dtm2) { public boolean isCellEditable(int row, int column) { return false; }// 表格不允许被编辑 } }; String sql = "select * from Price where PeClass='其他类'"; databaseSearch1(sql, 5); JScrollPane1.setViewportView(table2); chufangInput.add(JScrollPane1); JScrollPane1.setBounds(70, 150, 400, 100); JScrollPane1.setVisible(false); // 设置用药表 dtm3 = new DefaultTableModel(columnNames1, 0) {// dtm3是药物收费表格模版 public boolean isCellEditable(int row, int column) { if (column == 1 || column == 3) return true;// 这个是可以编辑的列 // if(rowIndex!=0) return false; return false; }// 表格不允许被编辑 } }; table3 = new JTable(dtm3);// JScrollPane JScrollPane3 = new JScrollPane(table3); TableColumn b1 = table3.getColumn("名称"); TableColumn b2 = table3.getColumn("数量"); JTextField box4 = new JTextField(); box5 = new JComboBox(fontSize1); box4.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { updata_combobox(); } @Override public void insertUpdate(DocumentEvent e) { updata_combobox(); } @Override public void changedUpdate(DocumentEvent e) { updata_combobox(); } private void updata_combobox() { String s1 = null; s1 = box4.getText(); JScrollPane4.setVisible(true); String sql1 = "select * from Price where PeName like '%" + s1 + "%' and PeClass='诊断类'or PeName like '%" + s1 + "%' and PeClass='药品类'"; databaseSearch2(sql1, 5); } }); dtm4 = new DefaultTableModel(columnNames2, 0);// 药物明细表 table4 = new JTable(dtm4) { public boolean isCellEditable(int row, int column) { return false; }// 表格不允许被编辑 } }; String sql1 = "select * from Price where PeClass='诊断类'or PeClass='药品类'"; databaseSearch2(sql1, 5); JScrollPane4.setViewportView(table4); chufangInput.add(JScrollPane4); JScrollPane4.setBounds(550, 150, 400, 100); JScrollPane4.setVisible(false); box4.setEditable(true); DefaultCellEditor dce1 = new DefaultCellEditor(box4); b1.setCellEditor(dce1); box2.setEditable(true); box2.setMaximumRowCount(5); DefaultCellEditor dce0 = new DefaultCellEditor(box5); b2.setCellEditor(dce0); dtm5 = new DefaultTableModel(columnNames3, 0);// 项目明细表 table5 = new JTable(dtm5) { public boolean isCellEditable(int row, int column) { return false; }// 表格不允许被编辑 } }; String sql2 = "select * from Medical_records where MrId not in(select MrId from DrugTable)"; databaseSearch3(sql2, 3); JScrollPane5.setViewportView(table5); chufangInput.add(JScrollPane5); JScrollPane5.setBounds(120, 100, 300, 100); JScrollPane5.setVisible(false); // 设置背景 ImageIcon background = new ImageIcon("picture/right_bg.jpg"); JLabel label = new JLabel(background); inputTitle.setFont(new Font("宋体", Font.BOLD, 30)); inputTitle.setBounds(60, 10, 1000, 50); chufangInput.add(inputTitle); ; // 设置控件 la1 = new JLabel("病例编号:"); la2 = new JLabel("病人编号:"); la3 = new JLabel("病人姓名:"); t1 = new JLabel("项目单"); t2 = new JLabel("药物单"); tx1 = new JTextField(); tx2 = new JTextField(); tx3 = new JTextField(); button1 = new JButton("增加"); button2 = new JButton("确定"); button3 = new JButton("修改"); button4 = new JButton("删除"); button5 = new JButton("增加"); button6 = new JButton("确定"); button7 = new JButton("修改"); button8 = new JButton("删除"); button2.addActionListener(this); button6.addActionListener(this); // 给按钮添加监听事件 button1.addActionListener(new ActionListener() {// 添加事件 public void actionPerformed(ActionEvent e) { String[] da1 = { "", "" }; String[] rowValues = da1; dtm1.addRow(rowValues); // 添加一行 button1.setEnabled(false); } }); button5.addActionListener(new ActionListener() {// 药物表添加事件 public void actionPerformed(ActionEvent e) { String[] da = { "", "" }; String[] rowValues = da; dtm3.addRow(rowValues); // 添加一行 button5.setEnabled(false); } }); button4.addMouseListener(new MouseAdapter() { // 删除按钮实现删除记录的功能 public void mouseClicked(MouseEvent e) { int row = table1.getSelectedRow();// 这句选择要删除的行 Connection con; con = dbUtil.getConnection(); Statement stmt; String val = (String) table1.getValueAt(row, 6); String val1 = (String) table1.getValueAt(row, 0); String sql = "delete from DrugTable where MrId='" + val + "'and PeNo='" + val1 + "'"; try { stmt = con.createStatement(); stmt.executeUpdate(sql); button1.setEnabled(true); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if (row != -1) { // 这句判断是否有选中的行 dtm1.removeRow(row); } // 这句删除指定行 } }); button8.addMouseListener(new MouseAdapter() { // 删除按钮实现删除记录的功能 public void mouseClicked(MouseEvent e) { int row = table3.getSelectedRow();// 这句选择要删除的行 Connection con; con = dbUtil.getConnection(); Statement stmt; String val = (String) table3.getValueAt(row, 6); String val1 = (String) table3.getValueAt(row, 0); String sql = "delete from DrugTable where MrId='" + val1 + "'and PeNo='" + val + "'"; try { stmt = con.createStatement(); stmt.executeUpdate(sql); button5.setEnabled(true); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if (row != -1) { // 这句判断是否有选中的行 dtm3.removeRow(row); } // 这句删除指定行 } }); box3.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件 public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键 JScrollPane1.setVisible(true); } }); box4.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件 public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键 JScrollPane4.setVisible(true); } }); table2.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件 public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键 if (e.getClickCount() == 2) { String xingming = tx1.getText(); int o = table2.getSelectedRow(); int row = table1.getSelectedRow(); String ao = (String) table2.getValueAt(o, 1); String bo = (String) table2.getValueAt(o, 0); String co = (String) table2.getValueAt(o, 2); String do1 = (String) table2.getValueAt(o, 3); String eo = (String) table2.getValueAt(o, 4); box3.setText(ao); table1.setValueAt(bo, row, 0); table1.setValueAt(do1, row, 4); table1.setValueAt(co, row, 2); table1.setValueAt(eo, row, 5); table1.setValueAt(xingming, row, 6); JScrollPane1.setVisible(false); } } }); tx1.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件 public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键 JScrollPane5.setVisible(true); } }); tx1.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { updata_combobox(); } @Override public void insertUpdate(DocumentEvent e) { updata_combobox(); } @Override public void changedUpdate(DocumentEvent e) { updata_combobox(); } private void updata_combobox() { String s1 = null; s1 = tx1.getText(); JScrollPane5.setVisible(true); String sql2 = "select * from Medical_records where MrId like '%" + s1 + "%'and MrId not in(select MrId from DrugTable)"; databaseSearch3(sql2, 3); } }); table4.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件 public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键 if (e.getClickCount() == 2) { String xingming = tx1.getText(); int o = table4.getSelectedRow(); int row = table3.getSelectedRow(); String ao = (String) table4.getValueAt(o, 1); String bo = (String) table4.getValueAt(o, 0); String co = (String) table4.getValueAt(o, 2); String do1 = (String) table4.getValueAt(o, 3); String eo = (String) table4.getValueAt(o, 4); box4.setText(ao); table3.setValueAt(bo, row, 0); table3.setValueAt(do1, row, 4); table3.setValueAt(co, row, 2); table3.setValueAt(eo, row, 5); table3.setValueAt(xingming, row, 6); JScrollPane4.setVisible(false); } } }); table5.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件 public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键 if (e.getClickCount() == 2) { int o = table5.getSelectedRow(); String ao = (String) table5.getValueAt(o, 1); String bo = (String) table5.getValueAt(o, 0); String co = (String) table5.getValueAt(o, 2); tx1.setText(bo); tx2.setText(ao); tx3.setText(co); JScrollPane5.setVisible(false); } } }); // 添加控件到面板以及设置控件位置 chufangInput.add(la1); chufangInput.add(la2); chufangInput.add(la3); chufangInput.add(tx1); chufangInput.add(tx2); chufangInput.add(tx3); chufangInput.add(button1); chufangInput.add(button2); chufangInput.add(button3); chufangInput.add(button4); chufangInput.add(button5); chufangInput.add(button6); chufangInput.add(button7); chufangInput.add(button8); chufangInput.add(t1); chufangInput.add(t2); button1.setBounds(460, 250, 70, 50); button2.setBounds(460, 300, 70, 50); button3.setBounds(460, 350, 70, 50); button4.setBounds(460, 400, 70, 50); button5.setBounds(950, 250, 70, 50); button6.setBounds(950, 300, 70, 50); button7.setBounds(950, 350, 70, 50); button8.setBounds(950, 400, 70, 50); t1.setBounds(50, 200, 100, 50); t2.setBounds(520, 200, 100, 50); la1.setBounds(50, 70, 100, 40); la2.setBounds(300, 70, 100, 40); la3.setBounds(500, 70, 100, 40); tx1.setBounds(120, 75, 100, 30); tx2.setBounds(370, 75, 100, 30); tx3.setBounds(570, 75, 100, 30); chufangInput.add(JScrollPane); JScrollPane.setBounds(60, 250, 400, 200); chufangInput.add(JScrollPane3); JScrollPane3.setBounds(550, 250, 400, 200); chufangInput.add(label); label.setBounds(0, 0, 1100, 700); } private void databaseSearch3(String sql2, int i) { // TODO Auto-generated method stub Connection con; DBUtil dbUtil = new DBUtil(); con = dbUtil.getConnection(); ResultSet rs; try { int rowcount = dtm5.getRowCount() - 1; if (rowcount != -1) { for (int i1 = rowcount; i1 >= 0; i1--) { dtm5.removeRow(i1); // 删除Jtable中的所有行 } dtm5.setRowCount(0); // 将Jtable中的行数设为零 } Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql2); String[] data = new String[3]; while (rs.next()) { for (int j = 1; j <= 3; j++) { data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中 } dtm5.addRow(data); // 在Jtabl } con.close(); // 设置表格隔行背景色(隔行背景色不同) } catch (Exception err) { } } private void databaseSearch2(String sql1, int i) { // TODO Auto-generated method stub DBUtil dbUtil = new DBUtil(); con = dbUtil.getConnection(); ResultSet rs; try { int rowcount = dtm4.getRowCount() - 1; if (rowcount != -1) { for (int i1 = rowcount; i1 >= 0; i1--) { dtm4.removeRow(i1); // 删除Jtable中的所有行 } dtm4.setRowCount(0); // 将Jtable中的行数设为零 } Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql1); String[] data = new String[5]; while (rs.next()) { for (int j = 1; j <= 5; j++) { data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中 } dtm4.addRow(data); // 在Jtabl } con.close(); // 设置表格隔行背景色(隔行背景色不同) } catch (Exception err) { } } private void databaseSearch1(String sql, int i) { // TODO Auto-generated method stub DBUtil dbUtil = new DBUtil(); con = dbUtil.getConnection(); ResultSet rs; try { int rowcount = dtm2.getRowCount() - 1; if (rowcount != -1) { for (int i1 = rowcount; i1 >= 0; i1--) { dtm2.removeRow(i1); // 删除Jtable中的所有行 } dtm2.setRowCount(0); // 将Jtable中的行数设为零 } Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql); String[] data = new String[5]; while (rs.next()) { for (int j = 1; j <= 5; j++) { data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中 } dtm2.addRow(data); // 在Jtabl } con.close(); // 设置表格隔行背景色(隔行背景色不同) } catch (Exception err) { } } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (e.getSource() == button2) { try { String s = (String) box2.getSelectedItem(); int i = Integer.valueOf(s).intValue(); DBUtil dbUtil = new DBUtil(); Connection con; con = dbUtil.getConnection(); int row = table1.getSelectedRow(); String sql = "INSERT INTO DrugTable(PeNo,PeName,PePrice,PeNumber,PeUnit,PeClass,MrId)VALUES(?,?,?,?,?,?,?)"; PreparedStatement parepare = con.prepareStatement(sql); parepare.setString(1, (String) table1.getValueAt(row, 0)); parepare.setString(2, (String) table1.getValueAt(row, 1)); parepare.setString(3, (String) table1.getValueAt(row, 2)); parepare.setString(4, (String) table1.getValueAt(row, 3)); parepare.setString(5, (String) table1.getValueAt(row, 4)); parepare.setString(6, (String) table1.getValueAt(row, 5)); parepare.setString(7, (String) table1.getValueAt(row, 6)); String w = (String) table1.getValueAt(row, 3); String w1 = (String) table1.getValueAt(row, 1); if (table1.getValueAt(row, 0).equals("")) { JOptionPane.showMessageDialog(null, "请输入完整信息", "错误", JOptionPane.INFORMATION_MESSAGE); } else if (w1 == "") { JOptionPane.showMessageDialog(null, "请输入药物名称", "错误", JOptionPane.INFORMATION_MESSAGE); } else if (i <= 0 || w == null) { JOptionPane.showMessageDialog(null, "数量不能为空或者小于0", "错误", JOptionPane.INFORMATION_MESSAGE); } else { parepare.executeUpdate(); JOptionPane.showMessageDialog(null, "录入成功", "录入成功", JOptionPane.INFORMATION_MESSAGE); button1.setEnabled(true); } } catch (Exception et) { et.printStackTrace(); } } else if (e.getSource() == button6) { try { String s = (String) box5.getSelectedItem(); int i = Integer.valueOf(s).intValue(); DBUtil dbUtil = new DBUtil(); Connection con; con = dbUtil.getConnection(); int row = table3.getSelectedRow(); String sql = "INSERT INTO DrugTable(PeNo,PeName,PePrice,PeNumber,PeUnit,PeClass,MrId)VALUES(?,?,?,?,?,?,?)"; PreparedStatement parepare = con.prepareStatement(sql); parepare.setString(1, (String) table3.getValueAt(row, 0)); parepare.setString(2, (String) table3.getValueAt(row, 1)); parepare.setString(3, (String) table3.getValueAt(row, 2)); parepare.setString(4, (String) table3.getValueAt(row, 3)); parepare.setString(5, (String) table3.getValueAt(row, 4)); parepare.setString(6, (String) table3.getValueAt(row, 5)); parepare.setString(7, (String) table3.getValueAt(row, 6)); String w = (String) table3.getValueAt(row, 3); String w1 = (String) table3.getValueAt(row, 1); if (w1 == "") { JOptionPane.showMessageDialog(null, "请输入药物名称", "错误", JOptionPane.INFORMATION_MESSAGE); } else if (i <= 0 || w == null) { JOptionPane.showMessageDialog(null, "数量不能为空或者小于0", "错误", JOptionPane.INFORMATION_MESSAGE); } else { parepare.executeUpdate(); JOptionPane.showMessageDialog(null, "录入成功", "录入成功", JOptionPane.INFORMATION_MESSAGE); button5.setEnabled(true); } } catch (Exception et) { et.printStackTrace(); } } } }
JIUYIModify.java
package com.sjsq; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Vector; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; public class JIUYIModify extends JFrame implements ActionListener { private static final String KeyValue = null; public JLabel la0, la1, la2, la3, la4, la5, la6, la7, la8, la9; public JTextField t1, t2, t3, t4, t5, t6, t7, t8, t9; public JButton button; Font f2 = new Font("隶书", Font.BOLD, 25); public JComboBox jcbb2, comboBox, jcombobox1; public java.sql.Connection con = null; DBUtil dbUtil = new DBUtil(); JIUYIModify() { JPanel panel2 = new JPanel(); ImageIcon ic; // 按钮图片 ic = new ImageIcon("picture/right_bg.jpg"); JLabel label = new JLabel(ic);// 把背景图片显示在一个标签里面 panel2.setLayout(null); button = new JButton("保存"); la0 = new JLabel("修改就医档案"); la1 = new JLabel("就医档案编号:"); la2 = new JLabel("病人编号 :"); la3 = new JLabel("病人姓名 :"); la4 = new JLabel("录入时间 :"); la5 = new JLabel("医生编号 :"); la6 = new JLabel("医生姓名 :"); la7 = new JLabel("就医科室 :"); la8 = new JLabel("病因 :"); la9 = new JLabel(""); t1 = new JTextField(); t2 = new JTextField(); t3 = new JTextField(); t4 = new JTextField(); t5 = new JTextField(); t6 = new JTextField(); t7 = new JTextField(); t8 = new JTextField(); t1.setBounds(90, 150, 100, 40); t1.setEditable(false); t2.setBounds(290, 150, 100, 40); t3.setBounds(90, 200, 100, 40); t4.setBounds(90, 250, 100, 40); t5.setBounds(290, 250, 80, 40); t6.setBounds(90, 300, 120, 40); t7.setBounds(290, 300, 120, 40); t8.setBounds(290, 200, 120, 40); t3.setEditable(false); t4.setEditable(false); t5.setEditable(false); t6.setEditable(false); t2.setEditable(false); la0.setBounds(10, 10, 200, 50); la0.setFont(f2); la1.setBounds(20, 150, 100, 50); la2.setBounds(220, 150, 100, 50); la3.setBounds(20, 200, 100, 50); la4.setBounds(220, 200, 100, 50); la5.setBounds(20, 250, 100, 50); la6.setBounds(220, 250, 100, 50); la7.setBounds(20, 300, 100, 50); la8.setBounds(220, 300, 100, 50); la9.setBounds(20, 350, 100, 50); Vector model1 = new Vector(); String locationid1 = ""; String locationname1 = ""; String locationdept1 = ""; try { con = dbUtil.getConnection(); Statement st = con.createStatement(); String sql = "select DrId, DrName,DeptName from Doctor"; ResultSet rss = st.executeQuery(sql); while (rss.next()) { locationid1 = rss.getString("DrName"); locationname1 = rss.getString("DrId"); locationdept1 = rss.getString("DeptName"); KeyValue Itemlocation1 = new KeyValue(locationname1, locationid1, locationdept1); model1.addElement(Itemlocation1); } } catch (SQLException e) { e.printStackTrace(); } jcbb2 = new JComboBox(model1); jcbb2.addActionListener(this); jcbb2.setBounds(290, 250, 100, 40); panel2.add(jcbb2); panel2.add(button); button.setBounds(350, 400, 80, 50); button.addActionListener(this); label.setBounds(0, 0, 500, 500); panel2.add(la0); panel2.add(la1); panel2.add(la2); panel2.add(la3); panel2.add(la4); panel2.add(la5); panel2.add(la6); panel2.add(la7); panel2.add(la8); panel2.add(la9); panel2.add(t1); panel2.add(t2); panel2.add(t3); panel2.add(t4); panel2.add(t5); panel2.add(t6); panel2.add(t7); panel2.add(t8); panel2.add(label); this.add(panel2); this.setSize(450, 500); // 设置窗口大小 this.setResizable(false); // 设置不可调整窗口大小 this.setLocationRelativeTo(null); this.setVisible(true); } public void openDialog(JTable table, DefaultTableModel dtm) { // TODO Auto-generated method stub int rown; int coln; rown = table.getSelectedRow(); coln = table.getSelectedColumn(); String value0 = (String) table.getValueAt(rown, 0); String value1 = (String) table.getValueAt(rown, 1); String value2 = (String) table.getValueAt(rown, 2); String value3 = (String) table.getValueAt(rown, 3); String value4 = (String) table.getValueAt(rown, 4); String value5 = (String) table.getValueAt(rown, 5); String value6 = (String) table.getValueAt(rown, 6); String value7 = (String) table.getValueAt(rown, 7); t1.setText(value0); t2.setText(value1); t3.setText(value2); t4.setText(value4); t5.setText(value5); t6.setText(value6); t7.setText(value7); t8.setText(value3); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Object aa = jcbb2.getSelectedItem(); String se = aa.toString(); Connection con; con = dbUtil.getConnection(); Statement stmt; String sql = "update Medical_records set PaId='" + t2.getText().trim() + "',PaName='" + t3.getText().trim() + "',MrDate='" + t8.getText().trim() + "',DrId='" + t4.getText().trim() + "',DrName='" + jcbb2.getSelectedItem().toString() + "',DeptName='" + t6.getText().trim() + "',SickCause='" + t7.getText().trim() + "' where MrId='" + t1.getText().trim() + "'"; try { stmt = con.createStatement(); stmt.executeUpdate(sql); JOptionPane.showMessageDialog(null, "修改成功", "修改成功", JOptionPane.INFORMATION_MESSAGE, null); int row2 = table.getSelectedRow(); String[] xiugai = new String[] { t1.getText(), t2.getText(), t3.getText(), t8.getText(), t4.getText(), jcbb2.getSelectedItem().toString(), t6.getText(), t7.getText() }; dtm.removeRow(row2); dtm.insertRow(row2, xiugai); dtm.fireTableDataChanged(); dispose(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (jcbb2 == e.getSource()) { KeyValue item1 = (KeyValue) jcbb2.getSelectedItem(); String a = item1.getId(); String b = item1.getdept(); t6.setText(b); t4.setText(a); } } class KeyValue { public String id; public String name; public String dept; public KeyValue(String id, String name, String dept) { this.id = id; this.name = name; this.dept = dept; } public KeyValue(Object selectedItem) { // TODO Auto-generated constructor stub } public String getId() { return id; } public String getName() { return name; } public String getdept() { return dept; } public String toString() { return name; } } }
JIUYIModifyQuery1.java
package com.sjsq; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.*; import javax.swing.border.TitledBorder; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; public class JIUYIModifyQuery1 extends JFrame implements ActionListener { public JLabel la1, la2, la3, la4, la5, la6, la7, la8, la9; public JTextField tx1, tx2, tx3, tx4, tx5, tx6, tx7; public static DefaultTableModel dtm; Font f2 = new Font("隶书", Font.BOLD, 30); Font f1 = new Font("草书", Font.CENTER_BASELINE, 30); public static JTable table; String o; private JComboBox jcbb1; private JScrollPane JScrollPane = new JScrollPane(); public JPanel panel = new JPanel(); JButton button1 = new JButton("查询"); JButton button2 = new JButton("修改"); JButton button3 = new JButton("删除"); JButton button4 = new JButton("诊疗明细操作"); JButton button5 = new JButton("用药明细操作"); DBUtil dbUtil = new DBUtil(); JIUYIModifyQuery1(String Stitle) { super(Stitle); panel.setLayout(null); this.add(panel); ImageIcon ic; // 按钮图片 ic = new ImageIcon("picture/right_bg.jpg"); JLabel label = new JLabel(ic);// 把背景图片显示在一个标签里面 panel.add(label); String columnNames[] = { "就医档案编号", "病人编号", "病人姓名", "就医档案录入时间", "医生编号", "医生姓名", "所属科室", "病因" }; dtm = new DefaultTableModel(columnNames, 0) { public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } }; table = new JTable(dtm); JScrollPane.setViewportView(table); JScrollPane.setBounds(new Rectangle(40, 60, 870, 250)); String SQL = "select * from Medical_records"; databaseSearch(SQL, 8); // la5 = new JLabel("病例编号:"); la6 = new JLabel("病人姓名:"); la7 = new JLabel("就医档案综合操作"); la8 = new JLabel("病人人数统计:"); la9 = new JLabel("人"); la7.setFont(f2); la8.setFont(f1); la9.setFont(f1); tx5 = new JTextField(); tx6 = new JTextField(); tx7 = new JTextField(); tx7.setFont(f1); button2.setBounds(400, 400, 100, 50); button3.setBounds(600, 400, 100, 50); button4.setBounds(910, 60, 100, 100); button5.setBounds(910, 200, 100, 100); la7.setBounds(40, 0, 300, 50); la8.setBounds(800, 350, 250, 50); la9.setBounds(870, 395, 50, 50); tx7.setBounds(800, 400, 60, 35); button4.addActionListener(this); button5.addActionListener(this); button2.addActionListener(this); panel.add(button4); panel.add(button3); panel.add(button2); panel.add(button5); panel.add(JScrollPane); panel.add(la7); panel.add(tx7); panel.add(la8); panel.add(la9); tx7.setEditable(false); // 设置表格隔行颜色 setbgcolor(); final JPanel panel1 = new JPanel(); panel1.setLayout(null); panel1.setBackground(Color.YELLOW); panel1.setBorder(new TitledBorder(null, "查询操作", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null)); panel1.setBounds(50, 350, 300, 150); panel.add(panel1); button1.setBounds(220, 80, 60, 40); panel1.add(button1); button1.setBackground(Color.white); la5.setBounds(20, 73, 80, 50); la6.setBounds(20, 73, 80, 50); la5.setVisible(false); tx6.setVisible(false); la6.setVisible(false); tx5.setVisible(false); panel1.add(la5); panel1.add(la6); tx5.setBounds(90, 80, 120, 35); panel1.add(tx5); tx6.setBounds(90, 80, 120, 35); panel1.add(tx6); Connection con; con = dbUtil.getConnection(); ResultSet rs; try { String sql1 = "select Count(*) from Medical_records"; Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql1); while (rs.next()) { o = rs.getString(1); } tx7.setText(o); } catch (Exception r) { r.printStackTrace(); } jcbb1 = new JComboBox(); jcbb1.addActionListener(new ActionListener() {// 下拉框添加事件,用于显示相应的查询文本框,以及标签 public void actionPerformed(final ActionEvent e) { Object SelectName = jcbb1.getSelectedItem(); String selectNamecontent = SelectName.toString(); if (selectNamecontent.equals("请选择查询种类")) { la5.setVisible(false); la6.setVisible(false); tx5.setVisible(false); tx6.setVisible(false); System.out.println("什么也不做"); return; } else if (selectNamecontent.equals("病例编号")) { la5.setVisible(true); tx5.setVisible(true); tx5.setText(""); la6.setVisible(false); tx6.setVisible(false); return; } else if (selectNamecontent.equals("病人姓名")) { tx5.setVisible(false); la5.setVisible(false); tx6.setVisible(true); la6.setVisible(true); tx6.setText(""); return; } // ++++++++++++++++++++++++++++++++++++++++++++++++++ } }); jcbb1.setModel(new DefaultComboBoxModel(new String[] { "请选择查询种类", "病例编号", "病人姓名" })); jcbb1.setBounds(20, 28, 135, 25); panel1.add(jcbb1); // 添加背景 panel.add(label); label.setBounds(0, 0, 1100, 700); button3.addMouseListener(new MouseAdapter() { // 删除按钮实现删除记录的功能 public void mouseClicked(MouseEvent e) { int row = table.getSelectedRow();// 这句选择要删除的行 Connection con; con = dbUtil.getConnection(); Statement stmt; String val = (String) table.getValueAt(row, 0); String sql = "delete from Medical_records where MrId='" + val + "'"; try { stmt = con.createStatement(); stmt.executeUpdate(sql); JOptionPane.showMessageDialog(null, " 删除成功!", "成功", JOptionPane.INFORMATION_MESSAGE); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if (row != -1) { // 这句判断是否有选中的行 dtm.removeRow(row); } // 这句删除指定行 } }); table.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件 public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键 if (e.getClickCount() == 2) { JIUYIModify c = new JIUYIModify(); c.openDialog(table, dtm); } } }); button1.addMouseListener(new MouseAdapter() {// 查询按钮添加鼠标事件,对应相应的查询功能 public void mouseClicked(final MouseEvent e) { System.out.println("Good idea!!!"); Object SelectName = jcbb1.getSelectedItem(); String selectNamecontent = SelectName.toString(); if (selectNamecontent.equals("请选择查询种类")) { System.out.println("什么也不做"); return; } else if (selectNamecontent.equals("病例编号")) { if (tx5.getText().equals("")) { JOptionPane.showMessageDialog(null, " 请输入病例编号!", "注意", JOptionPane.ERROR_MESSAGE); return; } String sickName = tx5.getText().trim(); String SQL = "select * from Medical_records where MrId like '%" + sickName + "%'"; databaseSearch(SQL, 8); return; } else if (selectNamecontent.equals("病人姓名")) { if (tx6.getText().equals("")) { JOptionPane.showMessageDialog(null, " 请输入病人姓名!", "注意", JOptionPane.ERROR_MESSAGE); return; } String sickCaseID = tx6.getText().trim(); String SQL = "select * from Medical_records where PaName like '%" + sickCaseID + "%'"; databaseSearch(SQL, 8); return; } } }); } private void setbgcolor() { // TODO Auto-generated method stub // 设置表格隔行背景颜色不同 try { DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (row % 2 == 0) setBackground(new Color(223, 220, 239)); // 设置奇数行底色 else if (row % 2 == 1) setBackground(Color.white); // 设置偶数行底色 return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); } }; for (int i = 0; i < table.getColumnCount(); i++) { table.getColumn(table.getColumnName(i)).setCellRenderer(tcr); } } catch (Exception ex) { ex.printStackTrace(); } } private void databaseSearch(String SQL, int i) { // TODO Auto-generated method stub Connection con; con = dbUtil.getConnection(); ResultSet rs; try { } catch (Exception e1) { e1.printStackTrace(); } try { int rowcount = dtm.getRowCount() - 1; if (rowcount != -1) { for (int i1 = rowcount; i1 >= 0; i1--) { dtm.removeRow(i1); // 删除Jtable中的所有行 } dtm.setRowCount(0); // 将Jtable中的行数设为零 } Statement stmt = con.createStatement(); rs = stmt.executeQuery(SQL); String[] data = new String[8]; while (rs.next()) { for (int j = 1; j <= 8; j++) { data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中 } dtm.addRow(data); // 在Jtabl } con.close(); } catch (Exception err) { String error = err.getMessage(); JOptionPane.showMessageDialog(null, error); err.printStackTrace(); } finally { } } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (e.getSource() == button2) { JIUYIModify t = new JIUYIModify(); t.openDialog(table, dtm); } else if (e.getSource() == button4) { ChufangModify y = new ChufangModify("诊疗明细"); int row = table.getSelectedRow(); String r = (String) table.getValueAt(row, 0); String SQL1 = "select * from DrugTable where MrId='" + r + "'and PeClass='其他类'"; y.databaseSearch2(SQL1, 6); y.addrow(table); } else if (e.getSource() == button5) { ProjectModify y = new ProjectModify("用药明细"); int row = table.getSelectedRow(); String r = (String) table.getValueAt(row, 0); String SQL1 = "select * from DrugTable where MrId='" + r + "' and PeClass='药品类'or MrId='" + r + "'and PeClass='诊断类'"; y.databaseSearch2(SQL1, 7); y.addrow(table); } } }
MainPanelCashier.java
package com.sjsq; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import javax.swing.*; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class MainPanelCashier extends JFrame implements MouseListener { // 基本组件 public CardLayout layout = new CardLayout(); // 卡片布局方式 JPanel top, left, bottom, right; JLabel head; Font f1 = new Font("隶书", Font.BOLD, 54); Font f2 = new Font("隶书", Font.BOLD, 25); // 菜单栏组件 private JPanel pNorth, pSouth, subMenuContainer; private JButton item1, item2, item3, item4, item5, item6, item7, item8, htn[], gtn[], btn[], ctn[], dtn[], etn[], ftn[]; // 时间组件 private JPanel timePanel; private JLabel displayArea; private String DEFAULT_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; // 设置时间格式 private String time; private int ONE_SECOND = 1000; // 设置时间间隔 JLabel label1 = new JLabel("欢迎你:"); public MainPanelCashier(String title) { super("医院管理系统(收费员界面)"); String aa = Login.username; // 获取登录的用户名,放在标签中,显示在上面板。 JLabel label8 = new JLabel(aa); // 窗口图标设置 Toolkit tk = getToolkit(); Image icon = tk.getImage("picture/icon.jpg"); setIconImage(icon); // 时间控件设置 timePanel = new JPanel(); displayArea = new JLabel(); configTimeArea(); timePanel.add(displayArea); timePanel.setBounds(1000, 0, 200, 50); timePanel.setOpaque(false); // 时间面板设置为透明 // 组件基本设置 left = new JPanel(); left.setBounds(5, 150, 150, 515); this.add(left); right = new JPanel(); right.setLayout(layout); right.setBounds(155, 155, 1045, 510); HomePage s = new HomePage(); right.add(s.homePage); this.add(right); bottom = new JPanel(); bottom.setLayout(null); bottom.setBounds(0, 666, 1200, 35); bottom.setBackground(Color.WHITE); bottom.add(timePanel); // 添加时间控件 this.add(bottom); top = new JPanel(); // 设置背景图片"picture/top_bg.jpg" ImageIcon background = new ImageIcon("picture/top_bg.jpg"); JLabel label = new JLabel(background); top.setLayout(null); label.setBounds(0, 0, 1200, 145); top.setBounds(0, 0, 1200, 145); this.add(top); top.add(label8); label8.setBounds(1080, 90, 100, 50); label8.setFont(f2); head = new JLabel("医院信息管理系统"); head.setFont(f1); head.setBounds(375, 40, 500, 75); top.add(head); top.add(label1); label1.setBounds(980, 90, 200, 50); label1.setFont(f2); top.add(label); // Left面板折叠式菜单设置,三面板网格式布局 pNorth = new JPanel(); pNorth.setLayout(new GridLayout(4, 1)); pSouth = new JPanel(); subMenuContainer = new JPanel(); subMenuContainer.setLayout(new GridLayout(4, 1)); item1 = new JButton("首页"); // 设置按钮 item6 = new JButton("价格管理"); item7 = new JButton("收费管理"); item8 = new JButton("系统设置"); item1.setPreferredSize(new Dimension(150, 47)); // 优先设置按钮大小 item6.setPreferredSize(new Dimension(150, 47)); item7.setPreferredSize(new Dimension(150, 47)); item7.setPreferredSize(new Dimension(150, 47)); item8.setPreferredSize(new Dimension(150, 47)); item1.setContentAreaFilled(false); // 设置为透明 item6.setContentAreaFilled(false); item7.setContentAreaFilled(false); item8.setContentAreaFilled(false); pNorth.add(item1); pNorth.add(item6); pNorth.add(item7); pNorth.add(item8); ftn = new JButton[1]; ftn[0] = new JButton("综合操作"); for (int i = 0; i < ftn.length; i++) { ftn[i].setBackground(Color.WHITE); ftn[i].setPreferredSize(new Dimension(150, 30)); ftn[i].addMouseListener(this); } gtn = new JButton[2]; gtn[0] = new JButton("结账页面"); gtn[1] = new JButton("综合操作"); for (int i = 0; i < gtn.length; i++) { gtn[i].setBackground(Color.WHITE); gtn[i].setPreferredSize(new Dimension(150, 30)); gtn[i].addMouseListener(this); } htn = new JButton[1]; htn[0] = new JButton("修改密码"); for (int i = 0; i < htn.length; i++) { htn[i].setBackground(Color.WHITE); htn[i].setPreferredSize(new Dimension(150, 30)); htn[i].addMouseListener(this); } left.add(pNorth, "North"); // 按钮添加到left面板中 left.add(subMenuContainer, "Center"); left.add(pSouth, "South"); // 监听器添加 item1.addMouseListener(this); item6.addMouseListener(this); item7.addMouseListener(this); item8.addMouseListener(this); // 窗体设置 this.setLayout(null); this.setSize(1200, 730); this.setLocationRelativeTo(null); // 窗口居中显示 this.setVisible(true); this.setResizable(false); // 窗体不可改变大小 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { MainPanelCashier mainPanelCashier = new MainPanelCashier("医院信息管理系统"); } // 时间控件方法 private void configTimeArea() { Timer tmr = new Timer(); tmr.scheduleAtFixedRate(new JLabelTimerTask(), new Date(), ONE_SECOND); } protected class JLabelTimerTask extends TimerTask { SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT); public void run() { time = dateFormatter.format(Calendar.getInstance().getTime()); displayArea.setText(time); } } public void mouseClicked(MouseEvent e) { if (e.getSource() == item1) { this.add(right); HomePage s = new HomePage(); // 调用主页的类。 right.add(s.homePage, "homePage"); layout.next(right); } // 设置折叠按钮功能,先把南面板清空,让后在给各面板设置布局方式,添加按钮也添加子功能按钮,清楚别的子功能按钮 if (e.getSource() == item6) { pSouth.removeAll(); pNorth.setLayout(new GridLayout(2, 1)); pSouth.setLayout(new GridLayout(2, 1)); pNorth.add(item1); pNorth.add(item6); pSouth.add(item7); pSouth.add(item8); for (int i = 0; i < ftn.length; i++) subMenuContainer.add(ftn[i]); for (int i = 0; i < gtn.length; i++) subMenuContainer.remove(gtn[i]); for (int i = 0; i < htn.length; i++) subMenuContainer.remove(htn[i]); validate(); getContentPane().repaint(); } if (e.getSource() == item7) { pSouth.removeAll(); pNorth.setLayout(new GridLayout(3, 1)); pSouth.setLayout(new GridLayout(1, 1)); pNorth.add(item1); pNorth.add(item6); pNorth.add(item7); pSouth.add(item8); for (int i = 0; i < ftn.length; i++) subMenuContainer.remove(ftn[i]); for (int i = 0; i < gtn.length; i++) subMenuContainer.add(gtn[i]); for (int i = 0; i < htn.length; i++) subMenuContainer.remove(htn[i]); validate(); getContentPane().repaint(); } if (e.getSource() == item8) { pSouth.removeAll(); pNorth.setLayout(new GridLayout(4, 1)); pNorth.add(item1); pNorth.add(item6); pNorth.add(item7); pNorth.add(item8); for (int i = 0; i < ftn.length; i++) subMenuContainer.remove(ftn[i]); for (int i = 0; i < gtn.length; i++) subMenuContainer.remove(gtn[i]); for (int i = 0; i < htn.length; i++) subMenuContainer.add(htn[i]); validate(); getContentPane().repaint(); } else if (e.getSource() == ftn[0]) { this.add(right); PriceManage s = new PriceManage(); s.save.setEnabled(false); s.modify.setEnabled(false); s.delete.setEnabled(false); right.add(s.priceManage, "priceManage"); layout.next(right); } else if (e.getSource() == gtn[0]) { this.add(right); Charge t = new Charge(); right.add(t.panel2, "第一0个面板"); layout.next(right); } else if (e.getSource() == gtn[1]) { this.add(right); ChargeQuery t = new ChargeQuery(); right.add(t.panel2, "第一0个面板"); layout.next(right); } else if (e.getSource() == htn[0]) { this.add(right); PassWordModifyCashier t = new PassWordModifyCashier("密码修改"); right.add(t.panel2, "第一0个面板"); layout.next(right); } } public void mouseEntered(MouseEvent arg0) { } public void mouseExited(MouseEvent arg0) { } public void mousePressed(MouseEvent arg0) { } public void mouseReleased(MouseEvent arg0) { } }
加载全部内容