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

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

一、系统介绍


本系统实现的以下功能


管理员功能:登录系统、病人信息的增删改查、就医档案的录入、医生信息的增删改查、科室信息的增删改查、收费统计功能、修改密码。

医生功能:登录系统、病人信息的增删改查、医生信息的增删改查、科室信息的增删改查、收费统计功能、修改密码。

收费员功能:价格管理、收费管理、修改密码。

JDK版本:1.8

数据库:Mysql8.0.13


数据库用到的表

cashier

charge

department

doctor

drugtable

manager

medical_records

patient

price


工程截图


image.jpeg


二、系统展示


1.登录页


2021050317295257.jpg


2.主页面


20210503173005232.jpg


3.病人信息录入


20210503173018429.jpg


4.病人信息操作


20210503173052976.jpg


5.就医档案录入


20210503173108639.jpg


6.处方单录入


20210503173124938.jpg


7.就医档案操作


20210503173235374.jpg


8.医生信息录入


20210503173303310.jpg


9.医生信息操作


20210503173331302.jpg


10.科室信息录入


20210503173350718.jpg


11.科室信息操作


2021050317345215.jpg


12.收费操作


20210503173501853.jpg


13.收费统计


20210503173512961.jpg


14.修改密码


20210503173526731.jpg


15.医生主页面


20210503173536429.jpg


16.收费员主页面


20210503173545809.jpg


三、系统实现


Login.java

package com.sjsq;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class Login extends JFrame {
  public static String namew;
  // 输入的用户Id
  public static String userId;
  // 输入的用户名
  public static String username;
  // 输入的密码
  public static String password;
  // 验证标识
  int loginFlag = 0;
  private static final long serialVersionUID = 1L;
  DBUtil dbUtil = new DBUtil();
  Connection con = dbUtil.getConnection();
  // 账号
  JLabel accountJLabel = new JLabel("账号:");
  // 错误提示标签
  JLabel errorJLabel = new JLabel("用户名或者密码不对,请重新输入");
  // 密码
  JLabel passwordJLabel = new JLabel("密码:");
  // r1:管理员 r2:收费员 r3:医生
  public JRadioButton r1, r2, r3;
  ImageIcon bg = new ImageIcon("picture/login_bg.jpg");
  JLabel bgJLabel = new JLabel(bg);
  JButton loginJButton = new JButton("登录");
  JButton cancelJButton = new JButton("取消");
  private boolean flag;
  static JTextField usernameJTextField = new JTextField();
  static JPasswordField passwordJPasswordField = new JPasswordField();
  Login(String sTitle) {
    super(sTitle);
    this.setLayout(null);
    this.add(errorJLabel); // 添加控件
    this.add(accountJLabel);
    this.add(passwordJLabel);
    this.add(loginJButton);
    this.add(cancelJButton);
    this.add(usernameJTextField);
    this.add(passwordJPasswordField);
    final JRadioButton r1 = new JRadioButton("管理员");
    final JRadioButton r2 = new JRadioButton("收费员");
    final JRadioButton r3 = new JRadioButton("医生");
    ButtonGroup rg = new ButtonGroup();
    this.add(r2);
    rg.add(r1);
    this.add(r3);
    rg.add(r3);
    this.add(r1);
    rg.add(r2);
    r1.setBounds(150, 180, 80, 30);
    r2.setBounds(230, 180, 80, 30);
    r3.setBounds(310, 180, 80, 30);
    r1.setFocusPainted(false);
    r2.setFocusPainted(false);
    r3.setFocusPainted(false);
    r3.setContentAreaFilled(false);
    r1.setContentAreaFilled(false);
    r2.setContentAreaFilled(false);
    errorJLabel.setBounds(100, 130, 200, 50);
    errorJLabel.setForeground(Color.black);
    errorJLabel.setVisible(false);
    bgJLabel.setBounds(0, 0, 592, 350);
    // 登录监听
    loginJButton.addActionListener(new ActionListener() {
      public boolean flag = false;
      public void actionPerformed(ActionEvent e) {
        // 医生
        if (r3.isSelected()) {
          try {
            String usernameText = usernameJTextField.getText().toString(); // 获取帐号文本框内容
            String passwordText = passwordJPasswordField.getText().toString(); // 获取密码文本框内容
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("select * from doctor"); // 执行SQL语句,返回结果集
            while (rs.next()) {
              userId = rs.getString("DrId"); // 获取登录的用户编号,
              username = rs.getString("DrName");// 获取登录的用户姓名
              password = rs.getString("Password"); // 获取数据库中的数据项的密码
              if (userId.equals(usernameText) && password.equals(passwordText)) {// 判断数据库的用户编号以及密码是否与文本框的值相同
                loginFlag = 1;
                break;
              }
            }
            if (loginFlag == 1) {
              JOptionPane.showMessageDialog(null, "登录成功");
              // 显示系统主界面
              MainPanelDoctor a = new MainPanelDoctor("医生界面"); 
              a.setVisible(true);
              Login.this.setVisible(false);// 关闭登录按钮
            } else {
              usernameJTextField.setText(""); // 错误的话则文本框内容设置为空,显示错误标签
              passwordJPasswordField.setText("");
              JOptionPane.showMessageDialog(null, "登陆错误");
            }
          } catch (SQLException e2) {
            System.out.println(e2);
          }
        }
        // 管理员
        else if (r1.isSelected()) {
          try {
            String usernameText = usernameJTextField.getText().toString(); // 获取帐号文本框内容
            String passwordText = passwordJPasswordField.getText().toString(); // 获取密码文本框内容
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("select * from manager"); // 执行SQL语句,返回结果集
            while (rs.next()) {
              userId = rs.getString("ManagerID"); // 获取登录的用户编号,
              username = rs.getString("ManagerName");// 获取登录的用户姓名
              password = rs.getString("MaPassWord"); // 获取数据库中的数据项的密码
              if (userId.equals(usernameText) && password.equals(passwordText)) {// 判断数据库的用户编号以及密码是否与文本框的值相同
                loginFlag = 1;
                break;
              }
            }
            // 登录成功
            if (loginFlag == 1) {
              JOptionPane.showMessageDialog(null, "登录成功");
              new MainPanelManager("管理员界面"); // 显示系统主界面
              Login.this.setVisible(false);// 关闭登录按钮
            // 登录失败
            } else {
              usernameJTextField.setText(""); // 错误的话则文本框内容设置为空,显示错误标签
              passwordJPasswordField.setText("");
              JOptionPane.showMessageDialog(null, "登陆错误");
            }
          } catch (SQLException e3) {
            System.out.println(e3);
          }
        }
        // 收费员
        else if (r2.isSelected()) {
          try {
            String usernameText = usernameJTextField.getText().toString(); // 获取帐号文本框内容
            String passwordText = passwordJPasswordField.getText().toString(); // 获取密码文本框内容
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("select * from cashier"); // 执行SQL语句,返回结果集
            while (rs.next()) {
              userId = rs.getString("cashierId"); // 获取登录的用户编号,
              username = rs.getString("cashierName");// 获取登录的用户姓名
              password = rs.getString("cashierPassWord"); // 获取数据库中的数据项的密码
              if (userId.equals(usernameText) && password.equals(passwordText)) {// 判断数据库的用户编号以及密码是否与文本框的值相同
                loginFlag = 1;
                break;
              }
            }
            if (loginFlag == 1) {
              JOptionPane.showMessageDialog(null, "登录成功");
              new MainPanelCashier("收费员页面"); // 显示系统主界面
              Login.this.setVisible(false);// 关闭登录按钮
            } else {
              usernameJTextField.setText(""); // 错误的话则文本框内容设置为空,显示错误标签
              passwordJPasswordField.setText("");
              JOptionPane.showMessageDialog(null, "登陆错误");
            }
          } catch (SQLException e3) {
            System.out.println(e3);
          }
        } else if (r1.isSelected() == false && r2.isSelected() == false && r3.isSelected() == false) {
          JOptionPane.showMessageDialog(null, "请选择用户类型");
        }
      }
    });
    // 登录按钮添加功能事件
    // 账号
    accountJLabel.setBounds(150, 50, 100, 50);
    accountJLabel.setFont(new Font("", 1, 20));
    // 密码
    passwordJLabel.setBounds(150, 120, 100, 50);
    passwordJLabel.setFont(new Font("", 1, 20));
    // 登录
    loginJButton.setBounds(150, 220, 100, 40);
    loginJButton.setBackground(Color.CYAN);
    // 取消
    cancelJButton.setBounds(280, 220, 100, 40);
    cancelJButton.setBackground(Color.CYAN);
    // 账号输入框
    usernameJTextField.setBounds(250, 60, 150, 30);
    // 密码输入框
    passwordJPasswordField.setBounds(250, 120, 150, 30);
    this.add(bgJLabel);
    this.setVisible(true);
    this.setSize(600, 350); // 设置窗口大小
    this.setResizable(false); // 设置不可调整窗口大小
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  public static void main(String args[]) {
    Login login = new Login("医院管理系统");
  }
}
在这里插入代码片

HomePage.java

package com.sjsq;
import java.awt.Font;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class HomePage extends JFrame {
  JPanel homePage = new JPanel();
  private JLabel la1, la2;
  private Font laFont = new Font("隶书", Font.BOLD, 100);
  public HomePage() {
    homePage.setLayout(null);
    // 获取项目路径
    ImageIcon background = new ImageIcon("picture/right_bg.jpg");
    JLabel label = new JLabel(background);
    la1 = new JLabel("欢迎使用");
    la2 = new JLabel("医院信息管理系统");
    la1.setBounds(330, 0, 800, 300);
    la1.setFont(laFont);
    la2.setBounds(120, 150, 1000, 300);
    la2.setFont(laFont);
    homePage.add(la1);
    homePage.add(la2);
    homePage.add(label);
    label.setBounds(0, 0, 1100, 700);
  }
}

Charge.java

package com.sjsq;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;
public class Charge extends JFrame implements ActionListener {
  private JComboBox box1;
  private JScrollPane JScrollPane5 = new JScrollPane();
  JPanel panel2 = new JPanel();
  Font f2 = new Font("隶书", Font.BOLD, 30);
  private JLabel la0, la1, la2, la3, la4, la5, la6, la7, la8, la9, la10, la11, la12, la13, l14, l15, la14, la15;
  private JTextField tx13, tx0, tx1, tx2, tx3, tx4, tx5, tx6, tx7, tx8, tx9, tx10, tx11, tx12, tx14;
  public static JTable table3;
  public static DefaultTableModel dtm3;
  private JButton btn1, btn2;
  private double suma = 0;
  private double sumd = 0;
  private double sumb = 0;
  private double sume = 0;
  private double sumc = 0;
  private double sumf = 0;
  String b;
  private String columnNames[] = { "就医档案编号", "病人编号", "病人姓名", "就医科室" };
  Charge() {
    // 获取时间
    Date now = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");
    String dateString = sdf.format(now);
    ImageIcon background = new ImageIcon("picture/right_bg.jpg"); // 背景图片
    JLabel label = new JLabel(background);
    panel2.setLayout(null);
    // 控件的定义
    btn1 = new JButton("确定结算");
    btn2 = new JButton("撤销结算");
    la0 = new JLabel("费用总计 :");
    la1 = new JLabel("就医档案编号 :");
    la2 = new JLabel("姓名: ");
    la3 = new JLabel("编码: ");
    la4 = new JLabel("姓名: ");
    la5 = new JLabel("科室: ");
    la6 = new JLabel("用药费用: ");
    la7 = new JLabel("治疗费用: ");
    la8 = new JLabel("检查费用: ");
    la9 = new JLabel("挂号费: ");
    la10 = new JLabel("处置费: ");
    la11 = new JLabel("化验费: ");
    la12 = new JLabel("押金累计: ");
    la13 = new JLabel("押金余额: ");
    la14 = new JLabel("结账日期: ");
    la15 = new JLabel("收费操作 ");
    la13.setForeground(Color.red);
    la12.setForeground(Color.red);
    tx0 = new JTextField();
    tx1 = new JTextField();
    tx2 = new JTextField();
    tx3 = new JTextField();
    tx4 = new JTextField();
    tx5 = new JTextField();
    tx6 = new JTextField();
    tx7 = new JTextField();
    tx8 = new JTextField();
    tx9 = new JTextField();
    tx10 = new JTextField();
    tx11 = new JTextField();
    tx12 = new JTextField();
    tx13 = new JTextField();
    tx14 = new JTextField(dateString);
    la15.setFont(f2);
    // 设置文本框的边缘不显示
    tx0.setBorder(null);
    tx2.setBorder(null);
    tx3.setBorder(null);
    tx4.setBorder(null);
    tx14.setBorder(null);
    tx14.setEditable(false);
    // 设置一个新的面板
    final JPanel panel1 = new JPanel();
    JPanel panel12 = new JPanel();
    JPanel panel13 = new JPanel();
    panel13.setBackground(Color.pink);
    panel12.setBackground(Color.pink);
    panel1.setLayout(null);// 设置空布局
    panel1.setBorder(new TitledBorder(null, "收费结算", TitledBorder.DEFAULT_JUSTIFICATION,
        TitledBorder.DEFAULT_POSITION, null, null));
    panel1.setBounds(10, 100, 800, 500);
    panel1.setBackground(Color.WHITE);
    panel1.add(panel12);
    panel12.setBounds(600, 0, 10, 500);
    panel1.add(panel13);
    panel13.setBounds(0, 330, 600, 10);
    btn1.addActionListener(this); // 设置按钮事件
    btn2.addActionListener(this);
    // 默认表格模版的设置,添加表头和设置表格不可编辑
    dtm3 = new DefaultTableModel(columnNames, 0);
    table3 = new JTable(dtm3) {
      public boolean isCellEditable(int row, int column) {
        return false;
      }// 表格不允许被编辑 }
    };
    String sql = "select MrId,PaId,PaName,DeptName from Medical_records";
    databaseSearch1(sql, 4);
    JScrollPane5.setViewportView(table3);// 给表格添加滚动条
    panel1.add(JScrollPane5);
    JScrollPane5.setBounds(10, 0, 400, 100);
    JScrollPane5.setVisible(false);
    // 面板添加控件,设置位置
    panel2.add(tx0);
    tx0.setBounds(290, 60, 100, 30);
    panel1.add(btn1);
    btn1.setBounds(650, 100, 100, 50);
    panel1.add(btn2);
    btn2.setBounds(650, 200, 100, 50);
    panel1.add(tx2);
    tx2.setBounds(150, 70, 70, 30);
    panel1.add(tx3);
    tx3.setBounds(150, 120, 70, 30);
    panel1.add(tx4);
    tx4.setBounds(150, 170, 70, 30);
    panel1.add(tx5);
    tx5.setBounds(180, 220, 70, 30);
    panel1.add(tx6);
    tx6.setBounds(180, 270, 70, 30);
    panel1.add(tx7);
    tx7.setBounds(475, 70, 70, 30);
    panel1.add(tx8);
    tx8.setBounds(460, 120, 70, 30);
    panel1.add(tx9);
    tx9.setBounds(460, 170, 70, 30);
    panel1.add(tx10);
    tx10.setBounds(460, 220, 70, 30);
    panel1.add(tx11);
    tx11.setBounds(270, 350, 70, 30);
    panel1.add(tx12);
    tx12.setBounds(470, 350, 70, 30);
    panel1.add(tx13);
    tx13.setBounds(80, 350, 70, 30);
    panel2.add(la1);
    la1.setBounds(20, 50, 100, 50);
    panel2.add(la2);
    la2.setBounds(250, 50, 100, 50);
    panel2.add(tx1);
    tx1.setBounds(110, 58, 120, 30);
    panel1.add(la3);
    la3.setBounds(100, 70, 100, 30);
    panel1.add(la4);
    la4.setBounds(100, 120, 100, 30);
    panel1.add(la5);
    la5.setBounds(100, 170, 100, 30);
    panel1.add(la6);
    la6.setBounds(100, 220, 100, 30);
    panel1.add(la7);
    la7.setBounds(100, 270, 100, 30);
    panel1.add(la8);
    la8.setBounds(400, 70, 100, 30);
    panel1.add(la9);
    la9.setBounds(400, 120, 100, 30);
    panel1.add(la10);
    la10.setBounds(400, 170, 100, 30);
    panel1.add(la11);
    la11.setBounds(400, 220, 100, 30);
    panel1.add(la0);
    la0.setBounds(10, 350, 100, 30);
    la15.setBounds(30, 0, 200, 50);
    panel2.add(la15);
    la12.setBounds(200, 350, 100, 30);
    panel1.add(la12);
    la13.setBounds(400, 350, 100, 30);
    panel1.add(la13);
    panel2.add(panel1);
    panel2.add(la14);
    la14.setBounds(400, 60, 100, 30);
    panel2.add(tx14);
    tx14.setBounds(480, 60, 100, 30);
    // 设置文本框不可编辑
    tx0.setEditable(false);
    tx2.setEditable(false);
    tx3.setEditable(false);
    tx4.setEditable(false);
    tx11.setEditable(false);
    tx12.setEditable(false);
    tx13.setEditable(false);
    panel2.add(label);// 面板添加背景图片,设置位置
    label.setBounds(-30, 0, 1100, 700);
    tx1.addMouseListener(new MouseAdapter() {// 给tx1的文本框添加按钮事件,显示一个表格
      public void mouseClicked(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
          JScrollPane5.setVisible(true);
      }
    });
    // tx1文本框添加事件,根据文本框内容的改变模糊查询到数据库内容,显示到表格中
    tx1.getDocument().addDocumentListener(new DocumentListener() {
      @Override
      public void removeUpdate(DocumentEvent e) {
        updata_combobox();
      }
      @Override
      public void insertUpdate(DocumentEvent e) {
        updata_combobox();
      }
      @Override
      public void changedUpdate(DocumentEvent e) {
        updata_combobox();
      }
      private void updata_combobox() {
        String s1 = null;
        s1 = tx1.getText(); // 根据S1的内容模糊查询数据库对应的数据
        JScrollPane5.setVisible(true);
        String sql = "select MrId,PaId,PaName,DeptName from Medical_records where MrId like  '%" + s1 + "%'";
        databaseSearch1(sql, 5);
      }
    });
    // 根据你选择表格的某一行内容,输入到对应的文本框内。
    table3.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
          if (e.getClickCount() == 1) {
            String sum1 = null;
            String sum3 = null;
            String sum6 = null;
            String sum2 = null;
            String sum4 = null;
            String sum5 = null;
            int row = table3.getSelectedRow();
            String ao = (String) table3.getValueAt(row, 2);
            String bo = (String) table3.getValueAt(row, 0);
            String do1 = (String) table3.getValueAt(row, 1);
            String co = (String) table3.getValueAt(row, 3);
            tx2.setText(do1);
            tx3.setText(ao);
            tx1.setText(bo);
            tx0.setText(ao);
            tx4.setText(co);
            JScrollPane5.setVisible(false);
            // 连接数据库,查询对应的价格
            DBUtil dbUtil = new DBUtil();
            Connection con = dbUtil.getConnection();
            ResultSet rs;
            try {
              // 查询数据库中用药的费用
              String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
                  + "' and PeClass='诊断类'or PeClass='药品类'and MrId='" + tx1.getText() + "'";
              Statement stmt = con.createStatement();
              rs = stmt.executeQuery(sql1);
              while (rs.next()) {
                String a = rs.getString(1);
                String b = rs.getString(2);
                double a1 = Double.valueOf(a).doubleValue();
                int b1 = Integer.valueOf(b).intValue();
                double d = a1 * b1;
                suma = suma + d;
                sum1 = String.valueOf(suma);
              }
              suma = 0;// 设置为0,否则会应为再次输入而无法清楚原来的数值
              if (sum1 != null) {
                tx5.setText(sum1);
              } else {
                tx5.setText("0.0");
              }
            } catch (Exception ex) {
              ex.printStackTrace();
            }
            try {
              String sql2 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
                  + "' and PeClass='其他类'and PeName not in('检查费','挂号费','处置费','化验费')";
              Statement stmt = con.createStatement();
              rs = stmt.executeQuery(sql2);
              while (rs.next()) {
                String a = rs.getString(1);
                String b = rs.getString(2);
                double a1 = Double.valueOf(a).doubleValue();
                int b1 = Integer.valueOf(b).intValue();
                double d = a1 * b1;
                sumb = sumb + d;
                sum3 = String.valueOf(sumb);
                System.out.println(a);
                System.out.println(b);
              }
              sumb = 0;
              if (sum3 != null) {
                tx6.setText(sum3);
              } else {
                tx6.setText("0.0");
              }
            } catch (Exception ex) {
              ex.printStackTrace();
            }
            try {
              String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
                  + "' and PeName='检查费'";
              Statement stmt = con.createStatement();
              rs = stmt.executeQuery(sql1);
              while (rs.next()) {
                String a = rs.getString(1);
                String b = rs.getString(2);
                double a1 = Double.valueOf(a).doubleValue();
                int b1 = Integer.valueOf(b).intValue();
                double d = a1 * b1;
                sumc = sumc + d;
                sum2 = String.valueOf(sumc);
              }
              sumc = 0;
              if (sum2 != null) {
                tx7.setText(sum2);
              } else {
                tx7.setText("0.0");
              }
            } catch (Exception ex) {
              ex.printStackTrace();
            }
            try {
              String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
                  + "' and PeName='挂号费'";
              Statement stmt = con.createStatement();
              rs = stmt.executeQuery(sql1);
              while (rs.next()) {
                String a = rs.getString(1);
                String b = rs.getString(2);
                double a1 = Double.valueOf(a).doubleValue();
                int b1 = Integer.valueOf(b).intValue();
                double d = a1 * b1;
                sumd = sumd + d;
                sum4 = String.valueOf(sumd);
              }
              sumd = 0;
              if (sum4 != null) {
                tx8.setText(sum4);
              } else {
                tx8.setText("0.0");
              }
            } catch (Exception ex) {
              ex.printStackTrace();
            }
            try {
              String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
                  + "' and PeName='处置费'";
              Statement stmt = con.createStatement();
              rs = stmt.executeQuery(sql1);
              while (rs.next()) {
                String a = rs.getString(1);
                String b = rs.getString(2);
                double a1 = Double.valueOf(a).doubleValue();
                int b1 = Integer.valueOf(b).intValue();
                double d = a1 * b1;
                sume = sume + d;
                sum5 = String.valueOf(sume);
              }
              sume = 0;
              if (sum5 != null) {
                tx9.setText(sum5);
              } else {
                tx9.setText("0.0");
              }
            } catch (Exception ex) {
              ex.printStackTrace();
            }
            try {
              String sql1 = "select PePrice,PeNumber from DrugTable where MrId='" + tx1.getText()
                  + "' and PeName='化验费'";
              Statement stmt = con.createStatement();
              rs = stmt.executeQuery(sql1);
              while (rs.next()) {
                String a = rs.getString(1);
                String b = rs.getString(2);
                double a1 = Double.valueOf(a).doubleValue();
                int b1 = Integer.valueOf(b).intValue();
                double d = a1 * b1;
                sumf = sumf + d;
                sum6 = String.valueOf(sumf);
              }
              sumc = 0;
              if (sum6 != null) {
                tx10.setText(sum6);
              } else {
                tx10.setText("0.0");
              }
            } catch (Exception ex) {
              ex.printStackTrace();
            }
            try {
              String sql1 = "select   PaPay from Patient  where PaId='" + tx2.getText() + "'";
              Statement stmt = con.createStatement();
              rs = stmt.executeQuery(sql1);
              while (rs.next()) {
                String a = rs.getString(1);
                if (a != null) {
                  tx11.setText(a);
                } else {
                  tx11.setText("0.0");
                }
              }
            } catch (Exception ex) {
              ex.printStackTrace();
            }
            String t;
            String y;
            String u;
            String u1;
            String u2;
            String u3;
            String u4;
            t = tx5.getText();
            u1 = tx6.getText();
            u2 = tx8.getText();
            u3 = tx9.getText();
            u4 = tx10.getText();
            u = tx7.getText();
            y = tx11.getText();
            float c = Float.parseFloat(u);
            float c1 = Float.parseFloat(t);
            float c2 = Float.parseFloat(y);
            float c4 = Float.parseFloat(u1);
            float c5 = Float.parseFloat(u2);
            float c6 = Float.parseFloat(u3);
            float c7 = Float.parseFloat(u4);
            float q = (float) (c2 - (c7 + c6 + c5 + c4 + c1 + c));// 减除押金后需要交的钱
            float q1 = (float) ((c7 + c6 + c5 + c4 + c1 + c));// 费用总计
            String s = String.valueOf(q);
            String s1 = String.valueOf(q1);
            tx12.setText(s);
            tx13.setText(s1);
            tx12.setForeground(Color.BLUE);
            tx11.setForeground(Color.BLUE);
          }
      }
    });
  }
  private void databaseSearch1(String sql, int i) {
    // TODO Auto-generated method stub
    DBUtil dbUtil = new DBUtil();
    Connection con = dbUtil.getConnection();
    ResultSet rs;
    try {
      int rowcount = dtm3.getRowCount() - 1;
      if (rowcount != -1) {
        for (int i1 = rowcount; i1 >= 0; i1--) {
          dtm3.removeRow(i1); // 删除Jtable中的所有行
        }
        dtm3.setRowCount(0); // 将Jtable中的行数设为零
      }
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(sql);
      String[] data = new String[4];
      while (rs.next()) {
        for (int j = 1; j <= 4; j++) {
          data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中
        }
        dtm3.addRow(data); // 在Jtabl
      }
      con.close();
      // 设置表格隔行背景色(隔行背景色不同)
    } catch (Exception err) {
    }
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if (e.getSource() == btn1) {
      // 把费用表录入到收费表中
      try {
        DBUtil dbUtil = new DBUtil();
        Connection con = dbUtil.getConnection();
        Statement stmt = con.createStatement();
        String sql = "INSERT INTO Charge(MrId,PaId,PaName,DeptName,Drugfee,treatmentfee,checkfee,registrationfee,disposalfee,assayfee,sum,time)VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
        PreparedStatement parepare = con.prepareStatement(sql);
        parepare.setString(1, tx1.getText());
        parepare.setString(2, tx2.getText());
        parepare.setString(3, tx3.getText());
        parepare.setString(4, tx4.getText());
        parepare.setString(5, tx5.getText());
        parepare.setString(6, tx6.getText());
        parepare.setString(7, tx7.getText());
        parepare.setString(8, tx8.getText());
        parepare.setString(9, tx9.getText());
        parepare.setString(10, tx10.getText());
        parepare.setString(11, tx13.getText());
        parepare.setString(12, tx14.getText());
        // 判断是否有输入错误的,做提示操作
        if (tx1.getText().equals("")) {
          JOptionPane.showMessageDialog(null, "请输入结算的档案号", "错误", JOptionPane.INFORMATION_MESSAGE);
        } else {
          parepare.executeUpdate();
          JOptionPane.showMessageDialog(null, "结账成功,需要交(退)" + tx12.getText() + "", "结账成功",
              JOptionPane.INFORMATION_MESSAGE);
          String sql1 = "delete from Patient where PaId='" + tx2.getText() + "'";
          try {
            stmt.executeUpdate(sql1);
            tx0.setText("");
            tx1.setText("");
            tx2.setText("");
            tx3.setText("");
            tx4.setText("");
            tx5.setText("");
            tx6.setText("");
            tx7.setText("");
            tx8.setText("");
            tx9.setText("");
            tx10.setText("");
            tx11.setText("");
            tx12.setText("");
            tx13.setText("");
            tx14.setText("");
            JScrollPane5.setVisible(false);
          } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
          }
        }
      } catch (Exception e2) {
        e2.printStackTrace();
      }
    } else if (e.getSource() == btn2) {
      tx0.setText("");
      tx1.setText("");
      tx2.setText("");
      tx3.setText("");
      tx4.setText("");
      tx5.setText("");
      tx6.setText("");
      tx7.setText("");
      tx8.setText("");
      tx9.setText("");
      tx10.setText("");
      tx11.setText("");
      tx12.setText("");
      tx13.setText("");
      tx14.setText("");
      JScrollPane5.setVisible(false);
    }
  }
}

ChargeQuery.java

package com.sjsq;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class ChargeQuery {
  Font f1 = new Font("隶书", Font.BOLD, 30);
  public static JTable table;
  public static DefaultTableModel dtm;
  private JScrollPane JScrollPane = new JScrollPane();
  JPanel panel2 = new JPanel();
  private JLabel la1, la2, la3, la4, la5;
  private JTextField tx1, tx2;
  private String columnNames[] = { "就医档案编号", "病人编号", "病人姓名", "就医科室", "用药费用", "治疗费", "检查费", "挂号费", "处置费", "化验费",
      "费用总额", "结账时间" };
  ChargeQuery() {
    // 添加背景
    ImageIcon background = new ImageIcon("picture/right_bg.jpg"); // 背景图片
    JLabel label = new JLabel(background);
    panel2.setLayout(null);
    // 设置默认表格面板
    dtm = new DefaultTableModel(columnNames, 0);
    table = new JTable(dtm) {
      public boolean isCellEditable(int row, int column) {
        return false;
      }// 表格不允许被编辑 }
    };
    String sql = "select * from Charge";
    databaseSearch(sql, 12);
    JScrollPane.setViewportView(table);// 给表格添加滚动条
    panel2.add(JScrollPane);
    JScrollPane.setBounds(30, 200, 950, 300);
    setbgcolor();
    JLabel label1 = new JLabel("收费统计");
    panel2.add(label1);
    label1.setBounds(30, 10, 400, 50);
    label1.setFont(f1);
    la1 = new JLabel("总费用统计:");
    la2 = new JLabel("人数统计:");
    tx1 = new JTextField();
    tx2 = new JTextField();
    la1.setBounds(30, 80, 100, 50);
    la2.setBounds(30, 120, 100, 50);
    tx1.setBounds(100, 90, 100, 30);
    tx2.setBounds(100, 130, 100, 30);
    panel2.add(la1);
    panel2.add(la2);
    panel2.add(tx1);
    panel2.add(tx2);
    tx1.setEditable(false);
    tx2.setEditable(false);
    panel2.add(label);// 面板添加背景图片,设置位置
    label.setBounds(-30, 0, 1100, 700);
    DBUtil dbUtil = new DBUtil();
    Connection con = dbUtil.getConnection();
    ResultSet rs, rs1;
    try {
      String sql2 = "select Sum(sum) from Charge ";
      String sql1 = "select count(*) from Charge ";
      Statement stmt = con.createStatement();
      Statement stmt1 = con.createStatement();
      rs = stmt.executeQuery(sql1);
      rs1 = stmt1.executeQuery(sql2);
      while (rs.next()) {
        String a = rs.getString(1);
        tx2.setText(a);
      }
      while (rs1.next()) {
        String a = rs1.getString(1);
        tx1.setText(a);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  private void setbgcolor() {
    // TODO Auto-generated method stub
    try {
      DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
            boolean hasFocus, int row, int column) {
          if (row % 2 == 0)
            setBackground(new Color(223, 220, 239)); // 设置奇数行底色
          else if (row % 2 == 1)
            setBackground(Color.white); // 设置偶数行底色
          return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        }
      };
      for (int i = 0; i < table.getColumnCount(); i++) {
        table.getColumn(table.getColumnName(i)).setCellRenderer(tcr);
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  private void databaseSearch(String sql, int i) {
    // TODO Auto-generated method stub
    DBUtil dbUtil = new DBUtil();
    Connection con = dbUtil.getConnection();
    ResultSet rs;
    try {
      int rowcount = dtm.getRowCount() - 1;
      if (rowcount != -1) {
        for (int i1 = rowcount; i1 >= 0; i1--) {
          dtm.removeRow(i1); // 删除Jtable中的所有行
        }
        dtm.setRowCount(0); // 将Jtable中的行数设为零
      }
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(sql);
      String[] data = new String[12];
      while (rs.next()) {
        for (int j = 1; j <= 12; j++) {
          data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中
        }
        dtm.addRow(data); // 在Jtable中添加数据行
      }
      con.close();
      // 设置表格隔行背景色(隔行背景色不同)
    } catch (Exception err) {
    }
  }
}

ChufangModify.java

package com.sjsq;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.DefaultCellEditor;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class ChufangModify extends JFrame implements ActionListener, ItemListener {
  JButton button6 = new JButton("增加");
  JButton button7 = new JButton("确定");
  JButton button8 = new JButton("删除");
  private String columnNames[] = { "编码", "名称", "单价", "数量", "计数单位", "类别", "档案编号" };
  private String columnNames1[] = { "编码", "名称", "单价", "计数单位", "类别" };
  private JLabel la0;
  private JComboBox box1, box2;
  JPanel panel2 = new JPanel();
  public static JTable table2, table3;
  public static DefaultTableModel dtm2, dtm3;
  private JScrollPane JScrollPane3 = new JScrollPane();
  private JScrollPane JScrollPane5 = new JScrollPane();
  String y;
  ChufangModify(String Stitle) {
    super(Stitle);
    panel2.setLayout(null);
    ImageIcon ic; // 按钮图片
    ic = new ImageIcon("picture/right_bg.jpg");
    JLabel label = new JLabel(ic);// 把背景图片显示在一个标签里面
    dtm2 = new DefaultTableModel(columnNames, 0) {// dtm2是项目收费表格模版
      public boolean isCellEditable(int row, int column) {
        if (column == 1 || column == 3)
          return true;// 这个是可以编辑的列
        // if(rowIndex!=0) return false;
        return false;
      }// 表格不允许被编辑 }
    };
    String fontSize1[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "12" };
    table2 = new JTable(dtm2);// JScrollPane4 项目表
    JScrollPane JScrollPane4 = new JScrollPane(table2);
    TableColumn a1 = table2.getColumn("名称");
    TableColumn a2 = table2.getColumn("数量");
    JTextField box3 = new JTextField();
    box2 = new JComboBox(fontSize1);
    box2.addActionListener(this);
    box2.addItemListener(this);
    box3.getDocument().addDocumentListener(new DocumentListener() {
      @Override
      public void removeUpdate(DocumentEvent e) {
        System.out.println("removeUpdate");
        updata_combobox();
      }
      @Override
      public void insertUpdate(DocumentEvent e) {
        System.out.println("insertUpdate");
        updata_combobox();
      }
      @Override
      public void changedUpdate(DocumentEvent e) {
        updata_combobox();
      }
      private void updata_combobox() {
        String s1 = null;
        s1 = box3.getText();
        String sql = "select * from Price where PeName like  '%" + s1 + "%'and PeClass='其他类'";
        databaseSearch1(sql, 5);
      }
    });
    box3.setEditable(true);
    DefaultCellEditor dce2 = new DefaultCellEditor(box3);
    a1.setCellEditor(dce2);
    box2.setEditable(true);
    box2.setMaximumRowCount(5);
    DefaultCellEditor dce3 = new DefaultCellEditor(box2);
    a2.setCellEditor(dce3);
    box2.addActionListener(this);
    final JPanel panel = new JPanel();
    panel.setLayout(null);
    panel.setBorder(new TitledBorder(null, "诊疗项目单", TitledBorder.DEFAULT_JUSTIFICATION,
        TitledBorder.DEFAULT_POSITION, null, null));
    panel.setBounds(20, 150, 530, 180);
    panel.setBackground(Color.WHITE);
    panel.add(JScrollPane4);
    JScrollPane4.setBounds(10, 20, 400, 150);
    panel2.add(panel);
    button6.setBounds(420, 20, 100, 40);
    panel.add(button6);
    button7.setBounds(420, 70, 100, 40);
    panel.add(button7);
    button8.setBounds(420, 120, 100, 40);
    panel.add(button8);
    button6.addActionListener(this);
    button7.addActionListener(this);
    button8.addActionListener(this);
    dtm3 = new DefaultTableModel(columnNames1, 0);// 项目明细表
    table3 = new JTable(dtm3) {
      public boolean isCellEditable(int row, int column) {
        return false;
      }// 表格不允许被编辑 }
    };
    JScrollPane5.setViewportView(table3);
    panel2.add(JScrollPane5);
    JScrollPane5.setBounds(30, 50, 400, 100);
    JScrollPane5.setVisible(false);
    String SQL1 = "select * from Price where PeClass='其他类'";
    databaseSearch1(SQL1, 5);
    JScrollPane4.setViewportView(table2);
    box3.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件
      public void mouseClicked(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
          JScrollPane5.setVisible(true);
      }
    });
    button8.addMouseListener(new MouseAdapter() { // 删除按钮实现删除记录的功能
      public void mouseClicked(MouseEvent e) {
        int row = table2.getSelectedRow();// 这句选择要删除的行
        DBUtil dbUtil = new DBUtil();
        Connection con = dbUtil.getConnection();
        Statement stmt;
        String val = (String) table2.getValueAt(row, 6);
        String val1 = (String) table2.getValueAt(row, 0);
        String sql = "delete from DrugTable where MrId='" + val + "'and PeNo='" + val1 + "'";
        try {
          stmt = con.createStatement();
          stmt.executeUpdate(sql);
          button6.setEnabled(true);
          JOptionPane.showMessageDialog(null, " 删除成功!", "注意", JOptionPane.INFORMATION_MESSAGE);
        } catch (SQLException e1) {
          // TODO Auto-generated catch block
          e1.printStackTrace();
        }
        if (row != -1) { // 这句判断是否有选中的行
          dtm2.removeRow(row);
        } // 这句删除指定行
      }
    });
    table3.addMouseListener(new MouseAdapter() {// 设置TABLE双击鼠标事件
      public void mouseClicked(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) // 单击鼠标左键
          if (e.getClickCount() == 2) {
            int o = table3.getSelectedRow();
            int row = table2.getSelectedRow();
            String ao = (String) table3.getValueAt(o, 1);
            String bo = (String) table3.getValueAt(o, 0);
            String co = (String) table3.getValueAt(o, 2);
            String eo = (String) table3.getValueAt(o, 4);
            String qo = (String) table3.getValueAt(o, 3);
            System.out.println(ao);
            box3.setText(ao);
            table2.setValueAt(bo, row, 0);
            table2.setValueAt(co, row, 2);
            table2.setValueAt(eo, row, 5);
            table2.setValueAt(qo, row, 4);
            y = co;
            JScrollPane5.setVisible(false);
          }
      }
    });
    panel2.add(label);
    label.setBounds(0, 0, 600, 400);
    this.add(panel2);
    this.setSize(600, 400); // 设置窗口大小
    this.setResizable(false); // 设置不可调整窗口大小
    this.setLocationRelativeTo(null);
    this.setVisible(true);
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if (e.getSource() == button7) {
      try {
        String s = (String) box2.getSelectedItem();
        int i = Integer.valueOf(s).intValue();
        DBUtil dbUtil = new DBUtil();
        Connection con = dbUtil.getConnection();
        int row = table2.getSelectedRow();
        String b = (String) table2.getValueAt(row, 3);
        String sql = "INSERT INTO DrugTable(PeNo,PeName,PePrice,PeNumber,PeUnit,PeClass,MrId)VALUES(?,?,?,?,?,?,?)";
        PreparedStatement parepare = con.prepareStatement(sql);
        parepare.setString(1, (String) table2.getValueAt(row, 0));
        parepare.setString(2, (String) table2.getValueAt(row, 1));
        parepare.setString(3, (String) table2.getValueAt(row, 2));
        parepare.setString(4, (String) table2.getValueAt(row, 3));
        parepare.setString(5, (String) table2.getValueAt(row, 4));
        parepare.setString(6, (String) table2.getValueAt(row, 5));
        parepare.setString(7, (String) table2.getValueAt(row, 6));
        if (i <= 0 || b == "") {
          JOptionPane.showMessageDialog(null, "数量不能小于0或为空", "错误", JOptionPane.INFORMATION_MESSAGE);
        }
        else {
          parepare.executeUpdate();
          JOptionPane.showMessageDialog(null, "录入成功", "录入成功", JOptionPane.INFORMATION_MESSAGE);
          button6.setEnabled(true);
        }
      } catch (Exception et) {
        et.printStackTrace();
      }
    }
  }
  public void databaseSearch1(String SQL1, int i) {
    // TODO Auto-generated method stub
    DBUtil dbUtil = new DBUtil();
    Connection con = dbUtil.getConnection();
    ResultSet rs;
    try {
      int rowcount = dtm3.getRowCount() - 1;
      if (rowcount != -1) {
        for (int i1 = rowcount; i1 >= 0; i1--) {
          dtm3.removeRow(i1); // 删除Jtable中的所有行
        }
        dtm3.setRowCount(0); // 将Jtable中的行数设为零
      }
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(SQL1);
      String[] data = new String[5];
      while (rs.next()) {
        for (int j = 1; j <= 5; j++) {
          data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中
        }
        dtm3.addRow(data); // 在Jtabl
      }
      con.close();
      // 设置表格隔行背景色(隔行背景色不同)
    } catch (Exception err) {
    }
  }
  public void addrow(JTable table) {
    // TODO Auto-generated method stub
    int row = table.getSelectedRow();
    String b = (String) table.getValueAt(row, 0);
    button6.addActionListener(new ActionListener() {// 添加事件
      public void actionPerformed(ActionEvent e) {
        String[] da1 = { "", "" };
        String[] rowValues = da1;
        dtm2.addRow(rowValues); // 添加一行
        int row1 = table2.getRowCount() - 1;
        table2.setRowSelectionInterval(row1, row1);
        table2.setValueAt(b, row1, 6);
        button6.setEnabled(false);
      }
    });
  }
  public void databaseSearch2(String SQL, int i) {
    DBUtil dbUtil = new DBUtil();
    Connection con = dbUtil.getConnection();
    ResultSet rs;
    try {
      int rowcount = dtm2.getRowCount() - 1;
      if (rowcount != -1) {
        for (int i1 = rowcount; i1 >= 0; i1--) {
          dtm2.removeRow(i1); // 删除Jtable中的所有行
        }
        dtm2.setRowCount(0); // 将Jtable中的行数设为零
      }
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(SQL);
      String[] data = new String[7];
      while (rs.next()) {
        for (int j = 1; j <= 7; j++) {
          data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中
        }
        dtm2.addRow(data); // 在Jtabl
      }
      con.close();
      // 设置表格隔行背景色(隔行背景色不同)
    } catch (Exception err) {
    }
  }
  @Override
  public void itemStateChanged(ItemEvent e) {
    // TODO Auto-generated method stub
  }
}
相关文章
|
29天前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
20天前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
1月前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
86 3
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
37 1
|
1月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
2月前
|
移动开发 前端开发 JavaScript
java家政系统成品源码的关键特点和技术应用
家政系统成品源码是已开发完成的家政服务管理软件,支持用户注册、登录、管理个人资料,家政人员信息管理,服务项目分类,订单与预约管理,支付集成,评价与反馈,地图定位等功能。适用于各种规模的家政服务公司,采用uniapp、SpringBoot、MySQL等技术栈,确保高效管理和优质用户体验。
|
6天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
36 6
|
21天前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
19天前
|
存储 监控 小程序
Java中的线程池优化实践####
本文深入探讨了Java中线程池的工作原理,分析了常见的线程池类型及其适用场景,并通过实际案例展示了如何根据应用需求进行线程池的优化配置。文章首先介绍了线程池的基本概念和核心参数,随后详细阐述了几种常见的线程池实现(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特点及使用场景。接着,通过一个电商系统订单处理的实际案例,分析了线程池参数设置不当导致的性能问题,并提出了相应的优化策略。最终,总结了线程池优化的最佳实践,旨在帮助开发者更好地利用Java线程池提升应用性能和稳定性。 ####
|
21天前
|
缓存 Java 开发者
Java多线程编程的陷阱与最佳实践####
本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####
下一篇
DataWorks