Java+Swing实现医院管理系统的完整代码
一、系统介绍
本系统实现的以下功能
管理员功能:登录系统、病人信息的增删改查、就医档案的录入、医生信息的增删改查、科室信息的增删改查、收费统计功能、修改密码。
医生功能:登录系统、病人信息的增删改查、医生信息的增删改查、科室信息的增删改查、收费统计功能、修改密码。
收费员功能:价格管理、收费管理、修改密码。
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) { } }
到此这篇关于Java+Swing实现医院管理系统的文章就介绍到这了,更多相关Java Swing医院管理系统内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
赞 (0)