Eclipse+Java+Swing+Mysql实现员工工资管理系统(上)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Eclipse+Java+Swing+Mysql实现员工工资管理系统

一、系统介绍


1.开发环境


开发工具:Eclipse2021


JDK版本:jdk1.8


Mysql版本:8.0.13


2.技术选型


Java+Swing+Mysql


3.系统功能


1.用户匿名登录系统,查询工资信息;


2.管理员登录登出系统;


3.管理员增加员工信息,修改员工信息,删除员工信息;


3.管理员增加部门信息,修改部门信息,删除部门信息;


4.管理员查询员工工资,添加员工工资;


4.数据库

/*
 Navicat Premium Data Transfer
 Source Server         : MySQL
 Source Server Type    : MySQL
 Source Server Version : 80013
 Source Host           : 127.0.0.1:3306
 Source Schema         : swing_salary_management
 Target Server Type    : MySQL
 Target Server Version : 80013
 File Encoding         : 65001
 Date: 23/12/2021 21:19:54
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for department
-- ----------------------------
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department`  (
  `ID` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `Name` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `Director` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `Number` int(16) NOT NULL,
  PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of department
-- ----------------------------
INSERT INTO `department` VALUES ('ks001', '经理室', '赢政', 10);
INSERT INTO `department` VALUES ('ks002', '财务室', '刘邦', 6);
INSERT INTO `department` VALUES ('ks003', '军机部', '李鸿章', 6);
INSERT INTO `department` VALUES ('ks004', '外交部', '张仪', 8);
INSERT INTO `department` VALUES ('ks005', '技术科', '朱元璋', 10);
INSERT INTO `department` VALUES ('ks006', '董事会', '李世民', 10);
-- ----------------------------
-- Table structure for employee
-- ----------------------------
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee`  (
  `ID` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `name` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `sex` char(2) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `age` int(6) NOT NULL,
  `department` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `position` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `phone` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  `time` datetime(0) NULL DEFAULT NULL,
  `address` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of employee
-- ----------------------------
INSERT INTO `employee` VALUES ('0001', '赢政', '男', 37, '经理室', '经理', '10086', '0201-01-01 00:00:00', '咸阳');
INSERT INTO `employee` VALUES ('0002', '刘邦', '男', 40, '技术科', '技术长', '10087910', '2001-05-06 00:00:00', '长安');
INSERT INTO `employee` VALUES ('0003', '武则天', '女', 30, '财务室', '经理', '10088', '1999-08-07 00:00:00', '长安');
INSERT INTO `employee` VALUES ('0004', '刘秀', '男', 46, '军机部', '副部长', '123548788', '2013-05-07 00:00:00', '桂林');
INSERT INTO `employee` VALUES ('0005', '西施', '女', 23, '财务室', '会计', '10089', '2001-02-03 00:00:00', '越国');
INSERT INTO `employee` VALUES ('0006', '李清照', '女', 25, '财务室', '出纳', '125478', '2012-03-04 00:00:00', '宋国');
INSERT INTO `employee` VALUES ('0007', '杨玉环', '女', 29, '财务室', '会计', '125478', '2010-02-04 00:00:00', '长安');
INSERT INTO `employee` VALUES ('0008', '孙权', '男', 35, '外交部', '部长', '150478', '2005-05-04 00:00:00', '江东');
INSERT INTO `employee` VALUES ('0009', '李世民', '男', 54, '董事会', '会长', '100865', '1998-05-08 00:00:00', '西安');
INSERT INTO `employee` VALUES ('0010', '项羽', '男', 40, '经理室', '副经理', '1008670', '2000-02-05 00:00:00', '彭城');
INSERT INTO `employee` VALUES ('0011', '李鸿章', '男', 52, '军机部', '部长', '1008699', '2001-05-08 00:00:00', '北京');
INSERT INTO `employee` VALUES ('0012', '张仪', '男', 44, '外交部', '部长', '10089', '2002-02-04 00:00:00', '魏国');
INSERT INTO `employee` VALUES ('0013', '朱元璋', '男', 35, '技术科', '部长', '100896', '2013-05-07 00:00:00', '南京');
INSERT INTO `employee` VALUES ('0014', '貂蝉', '女', 25, '经理室', '助理', '10086972', '2005-05-04 00:00:00', '洛阳');
INSERT INTO `employee` VALUES ('0015', '李渊', '男', 55, '董事会', '董事', '25897', '2001-02-05 00:00:00', '长安');
INSERT INTO `employee` VALUES ('0016', '1', '男', 1, '经理室', '1', '1', '2001-02-05 00:00:00', '2');
-- ----------------------------
-- Table structure for salary
-- ----------------------------
DROP TABLE IF EXISTS `salary`;
CREATE TABLE `salary`  (
  `salaryID` int(4) NOT NULL AUTO_INCREMENT,
  `ID` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `name` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  `basepay` int(10) NULL DEFAULT NULL,
  `welfare` int(10) NULL DEFAULT NULL,
  `reward` int(10) NULL DEFAULT NULL,
  `insurance` int(10) NULL DEFAULT NULL,
  `funds` int(10) NULL DEFAULT NULL,
  `month` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `remark` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`salaryID`, `ID`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 42 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of salary
-- ----------------------------
INSERT INTO `salary` VALUES (1, '0001', '赢政', 3000, 100, 100, 100, 500, '1月', '未结算');
INSERT INTO `salary` VALUES (13, '0002', '刘邦', 3000, 200, 100, 100, 400, '1月', '未结算');
INSERT INTO `salary` VALUES (15, '0003', '武则天', 2500, 100, 200, 100, 300, '1月', '未结算');
INSERT INTO `salary` VALUES (16, '0004', '刘秀', 2900, 100, 150, 250, 200, '1月', '未结算');
INSERT INTO `salary` VALUES (17, '0005', '西施', 2800, 100, 100, 100, 300, '1月', '未结算');
INSERT INTO `salary` VALUES (18, '0006', '李清照', 2700, 120, 150, 100, 300, '1月', '未结算');
INSERT INTO `salary` VALUES (19, '0007', '杨玉环', 2680, 200, 150, 100, 300, '1月', '未结算');
INSERT INTO `salary` VALUES (20, '0008', '孙权', 2900, 100, 200, 100, 500, '1月', '未结算');
INSERT INTO `salary` VALUES (21, '0009', '李世民', 2870, 200, 100, 100, 300, '1月', '未结算');
INSERT INTO `salary` VALUES (22, '0010', '项羽', 2600, 200, 100, 100, 300, '1月', '未结算');
INSERT INTO `salary` VALUES (23, '0011', '李鸿章', 2800, 200, 100, 100, 300, '1月', '未结算');
INSERT INTO `salary` VALUES (24, '0012', '张仪', 2900, 200, 150, 100, 500, '1月', '未结算');
INSERT INTO `salary` VALUES (25, '0013', '朱元璋', 2600, 250, 200, 100, 400, '1月', '未结算');
INSERT INTO `salary` VALUES (26, '0001', '赢政', 3000, 100, 200, 100, 300, '2月', '未结算');
INSERT INTO `salary` VALUES (27, '0001', '赢政', 3000, 250, 200, 100, 400, '3月', '未结算');
INSERT INTO `salary` VALUES (28, '0002', '刘邦', 3000, 250, 150, 100, 400, '2月', '未结算');
INSERT INTO `salary` VALUES (29, '0002', '刘邦', 3000, 300, 150, 100, 500, '3月', '未结算');
INSERT INTO `salary` VALUES (30, '0003', '武则天', 2900, 200, 150, 100, 300, '2月', '未结算');
INSERT INTO `salary` VALUES (31, '0003', '武则天', 2800, 250, 120, 100, 500, '3月', '未结算');
INSERT INTO `salary` VALUES (33, '0004', '刘秀', 2580, 500, 200, 100, 300, '2月', '未结算');
INSERT INTO `salary` VALUES (35, '0004', '刘秀', 2900, 200, 150, 100, 300, '3月', '未结算');
INSERT INTO `salary` VALUES (37, '0005', '西施', 2900, 200, 100, 100, 300, '2月', '未结算');
INSERT INTO `salary` VALUES (39, '0005', '西施', 2800, 200, 150, 100, 300, '3月', '未结算');
INSERT INTO `salary` VALUES (40, '0006', '李清照', 2900, 200, 100, 100, 300, '2月', '未结算');
INSERT INTO `salary` VALUES (41, '0006', '李清照', 2900, 200, 100, 100, 300, '3月', '未结算');
-- ----------------------------
-- Table structure for userlist
-- ----------------------------
DROP TABLE IF EXISTS `userlist`;
CREATE TABLE `userlist`  (
  `status` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `username` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of userlist
-- ----------------------------
INSERT INTO `userlist` VALUES ('管理员', 'admin', 'admin');
-- ----------------------------
-- Table structure for view_salary
-- ----------------------------
DROP TABLE IF EXISTS `view_salary`;
CREATE TABLE `view_salary`  (
  `ID` int(10) NOT NULL AUTO_INCREMENT,
  `工号` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `姓名` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  `部门` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  `职位` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  `总工资` int(10) NULL DEFAULT NULL,
  `月份` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `备注` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 42 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of view_salary
-- ----------------------------
INSERT INTO `view_salary` VALUES (1, '0001', '赢政', '经理室', '经理', 2600, '1月', '未结算');
INSERT INTO `view_salary` VALUES (9, '0002', '刘邦', '技术室', '技术长', 2800, '1月', '未结算');
INSERT INTO `view_salary` VALUES (11, '0003', '武则天', '财务室', '经理', 2400, '1月', '未结算');
INSERT INTO `view_salary` VALUES (12, '0004', '刘秀', '军机部', '大王', 2700, '1月', '未结算');
INSERT INTO `view_salary` VALUES (13, '0005', '西施', '财务室', '会计', 2600, '1月', '未结算');
INSERT INTO `view_salary` VALUES (14, '0006', '李清照', '财务室', '出纳', 2570, '1月', '未结算');
INSERT INTO `view_salary` VALUES (15, '0007', '杨玉环', '财务室', '会计', 2630, '1月', '未结算');
INSERT INTO `view_salary` VALUES (16, '0008', '孙权', '外交部', '部长', 2600, '1月', '未结算');
INSERT INTO `view_salary` VALUES (17, '0009', '李世民', '董事会', '会长', 2770, '1月', '未结算');
INSERT INTO `view_salary` VALUES (18, '0010', '项羽', '经理室', '副经理', 2500, '1月', '未结算');
INSERT INTO `view_salary` VALUES (19, '0011', '李鸿章', '军机部', '部长', 2700, '1月', '未结算');
INSERT INTO `view_salary` VALUES (20, '0012', '张仪', '外交部', '部长', 2650, '1月', '未结算');
INSERT INTO `view_salary` VALUES (21, '0013', '朱元璋', '技术科', '部长', 2550, '1月', '未结算');
INSERT INTO `view_salary` VALUES (22, '0001', '赢政', '经理室', '经理', 2900, '2月', '未结算');
INSERT INTO `view_salary` VALUES (23, '0001', '赢政', '经理室', '经理', 2950, '3月', '未结算');
INSERT INTO `view_salary` VALUES (24, '0002', '刘邦', '技术室', '技术长', 2900, '2月', '未结算');
INSERT INTO `view_salary` VALUES (25, '0002', '刘邦', '技术室', '技术长', 2850, '3月', '未结算');
INSERT INTO `view_salary` VALUES (26, '0003', '武则天', '财务室', '经理', 2850, '2月', '未结算');
INSERT INTO `view_salary` VALUES (27, '0003', '武则天', '财务室', '经理', 2570, '3月', '未结算');
INSERT INTO `view_salary` VALUES (35, '0004', '刘秀', '军机部', '副部长', 2850, '3月', '未结算');
INSERT INTO `view_salary` VALUES (36, '0004', '刘秀', '军机部', '副部长', 2750, '2月', '未结算');
INSERT INTO `view_salary` VALUES (37, '0005', '西施', '财务室', '会计', 2800, '2月', '未结算');
INSERT INTO `view_salary` VALUES (39, '0005', '西施', '财务室', '会计', 2750, '3月', '未结算');
INSERT INTO `view_salary` VALUES (40, '0006', '李清照', '财务室', '出纳', 2800, '2月', '未结算');
INSERT INTO `view_salary` VALUES (41, '0006', '李清照', '财务室', '出纳', 2800, '3月', '未结算');
INSERT INTO `view_salary` VALUES (42, '0001', '赢政', '经理室', '经理', 1, '1月', '未结算');
SET FOREIGN_KEY_CHECKS = 1;


二、系统展示


1.登录系统


859a99421faa4eaa9646a228e384c32c.jpg


2.用户-登录系统


9ba89b6e45204c6f923b09c59741fb1d.jpg


3.用户-查看工资


c4e18c76a3044df0a2a372ac5d081138.jpg


4.管理员-主界面


26ede656e85e434480db721636927f81.jpg


5.管理员-添加员工信息


e39d973cb7444e9a99822a697c262127.jpg


6.管理员-修改员工信息


0afdc07e09344773b9f81c876306f160.jpg


7.管理员-删除员工信息


ac00b97b8a084c25af447611ac58e95d.jpg


8.管理员-添加部门信息


fe261ce2036f4b4ab7ccb564744aa733.jpg


9.管理员-修改部门信息


463b9ac7f617406ba4501c4341cf5567.jpg


10.管理员-删除部门信息


b84c2848613a4885aaf54bdeed0e23a6.jpg


11.管理员-工资设定


c090bc36a5684ddb9059555a98fcfd86.jpg


12.管理员-工资查询


d766c7ea13ab481a9ad936091817eb85.jpg


13.管理员-工资一览


f4475c5cc0b54ecc81e048ccb804ff78.jpg


三、部分代码


Login.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/*
 * Login.java
 *
 * Created on 2013-6-16, 21:34:00
 */
package com.sjsq;
import java.awt.Toolkit;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JOptionPane;
/**
 *
 * @author Administrator
 */
public class Login extends javax.swing.JFrame {
  static String status;
  static String name;
  private Toolkit tk = Toolkit.getDefaultToolkit();
  int x = tk.getScreenSize().width / 2 - 180;
  int y = tk.getScreenSize().height / 2 - 180;
  /** Creates new form Login */
  public Login() {
    initComponents();
    setLocation(x, y);
    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
  }
  /**
   * This method is called from within the constructor to initialize the form.
   * WARNING: Do NOT modify this code. The content of this method is always
   * regenerated by the Form Editor.
   */
  @SuppressWarnings("unchecked")
  // <editor-fold defaultstate="collapsed" desc="Generated
  // Code">//GEN-BEGIN:initComponents
  private void initComponents() {
    jComboBox1 = new javax.swing.JComboBox();
    username = new javax.swing.JTextField();
    jPasswordField1 = new javax.swing.JPasswordField();
    jLabel1 = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();
    jLabel3 = new javax.swing.JLabel();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jLabel4 = new javax.swing.JLabel();
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("登录界面");
    jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "管理员", "员工" }));
    jComboBox1.addItemListener(new ItemListener() {
      @Override
      public void itemStateChanged(ItemEvent e) {
        // TODO Auto-generated method stub
        if (e.getStateChange() == ItemEvent.SELECTED) {
          if ("员工".equals(e.getItem())) {
            jButton1.setText("查询工资");
            jLabel2.hide();
            username.hide();
            jPasswordField1.hide();
            jLabel3.hide();
            jPasswordField1.hide();
          } else {
            jButton1.setText("登录");
            jLabel2.show();
            username.show();
            jPasswordField1.show();
            jLabel3.show();
            jPasswordField1.show();
          }
        }
      }
    });
    // username.setText("quan");
    jLabel1.setText("身份:");
    jLabel2.setText("账号:");
    jLabel3.setText("密码:");
    jButton1.setText("登录");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        jButton1ActionPerformed(evt);
      }
    });
    jButton2.setText("退出");
    jButton2.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        jButton2ActionPerformed(evt);
      }
    });
    jLabel4.setForeground(new java.awt.Color(255, 0, 0));
    jLabel4.setText("注:员工可以匿名登录");
    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout
        .createSequentialGroup()
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout
            .createSequentialGroup().addGap(80, 80, 80)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                .addComponent(jLabel1).addComponent(jLabel3).addComponent(jLabel2))
            .addGap(18, 18, 18)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, 92,
                    javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(username, javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jComboBox1, javax.swing.GroupLayout.Alignment.LEADING, 0,
                            javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGap(18, 18, 18).addComponent(jLabel4))))
            .addGroup(layout.createSequentialGroup().addGap(110, 110, 110).addComponent(jButton1)
                .addGap(39, 39, 39).addComponent(jButton2)))
        .addContainerGap(54, Short.MAX_VALUE)));
    layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup().addGap(65, 65, 65)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE,
                    javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel1).addComponent(jLabel4))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(username, javax.swing.GroupLayout.PREFERRED_SIZE,
                    javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel2))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabel3).addComponent(jPasswordField1,
                    javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                    javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGap(35, 35, 35)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jButton1).addComponent(jButton2))
            .addContainerGap(102, Short.MAX_VALUE)));
    pack();
  }// </editor-fold>//GEN-END:initComponents
  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton1ActionPerformed
    // TODO add your handling code here:
    status = (String) jComboBox1.getSelectedItem();
    name = username.getText();
    String password = jPasswordField1.getText();
    if (status.equals("管理员")) {
      if (name.equals("")) {
        JOptionPane.showMessageDialog(null, "用户名不能为空!!");
      } else if (password.equals("")) {
        JOptionPane.showMessageDialog(null, "密码不能为空!!");
      } else {
        String sql = "select username from userlist where status = '" + status + "' and username = '" + name
            + "' and password = '" + password + "'";
        // String sql = "select * from userlist";
        System.out.println(sql);
        DBConn db = new DBConn();
        if (db.Check(sql) != 0) {
          new MainFrame().setVisible(true);
          this.hide();
        } else {
          JOptionPane.showMessageDialog(null, "用户名与密码不对!!");
        }
      }
    } else {
      new SalarySearch().setVisible(true);
    }
  }// GEN-LAST:event_jButton1ActionPerformed
  private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton2ActionPerformed
    // TODO add your handling code here:
    int selection = JOptionPane.showConfirmDialog(this, "是否退出?", "退出提示", JOptionPane.OK_CANCEL_OPTION,
        JOptionPane.WARNING_MESSAGE);
    if (selection == JOptionPane.OK_OPTION) {
      System.exit(0);
    }
  }// GEN-LAST:event_jButton2ActionPerformed
  /**
   * @param args the command line arguments
   */
  public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
        new Login().setVisible(true);
      }
    });
  }
  // Variables declaration - do not modify//GEN-BEGIN:variables
  private javax.swing.JButton jButton1;
  private javax.swing.JButton jButton2;
  private javax.swing.JComboBox jComboBox1;
  private javax.swing.JLabel jLabel1;
  private javax.swing.JLabel jLabel2;
  private javax.swing.JLabel jLabel3;
  private javax.swing.JLabel jLabel4;
  private javax.swing.JPasswordField jPasswordField1;
  private javax.swing.JTextField username;
  // End of variables declaration//GEN-END:variables
}


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
30
分享
相关文章
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
169 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
69 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
构建高效Java后端与前端交互的定时任务调度系统
通过以上步骤,我们构建了一个高效的Java后端与前端交互的定时任务调度系统。该系统使用Spring Boot作为后端框架,Quartz作为任务调度器,并通过前端界面实现用户交互。此系统可以应用于各种需要定时任务调度的业务场景,如数据同步、报告生成和系统监控等。
20 2
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
73 5
时间轮-Java实现篇
在前面的文章《[时间轮-理论篇](https://developer.aliyun.com/article/910513)》讲了时间轮的一些理论知识,然后根据理论知识。我们自己来实现一个简单的时间轮。
|
5天前
|
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
112 60
【Java并发】【线程池】带你从0-1入门线程池
|
1天前
|
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码
当我们创建一个`ThreadPoolExecutor`的时候,你是否会好奇🤔,它到底发生了什么?比如:我传的拒绝策略、线程工厂是啥时候被使用的? 核心线程数是个啥?最大线程数和它又有什么关系?线程池,它是怎么调度,我们传入的线程?...不要着急,小手手点上关注、点赞、收藏。主播马上从源码的角度带你们探索神秘线程池的世界...
24 0
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
78 14
Java 面试必问!线程构造方法和静态块的执行线程到底是谁?
大家好,我是小米。今天聊聊Java多线程面试题:线程类的构造方法和静态块是由哪个线程调用的?构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节有助于掌握Java多线程机制。下期再见! 简介: 本文通过一个常见的Java多线程面试题,详细讲解了线程类的构造方法和静态块是由哪个线程调用的。构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节对掌握Java多线程编程至关重要。
49 13
【JAVA】封装多线程原理
Java 中的多线程封装旨在简化使用、提高安全性和增强可维护性。通过抽象和隐藏底层细节,提供简洁接口。常见封装方式包括基于 Runnable 和 Callable 接口的任务封装,以及线程池的封装。Runnable 适用于无返回值任务,Callable 支持有返回值任务。线程池(如 ExecutorService)则用于管理和复用线程,减少性能开销。示例代码展示了如何实现这些封装,使多线程编程更加高效和安全。

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等