员工管理系统java版

这里为您详细讲解“员工管理系统java版”的完整攻略。

系统概述

这是一个基于Java语言开发的员工管理系统,主要功能包括员工信息录入、查询、修改和删除,部门信息录入、查询和修改,以及用户权限管理等。

系统环境

本系统运行需要JDK1.8及以上版本,建议使用IntelliJ IDEA等集成开发环境进行开发和调试。

数据库设计

本系统使用MySQL数据库进行数据存储,数据库设计如下:

员工表

字段名称 数据类型 备注
id int(11) 自增主键
name varchar(50) 员工姓名
gender tinyint(1) 性别(0表示女性,1表示男性)
birthday date 出生日期
id_number varchar(18) 身份证号码
entry_date date 入职日期
department_id int(11) 所属部门ID

部门表

字段名称 数据类型 备注
id int(11) 自增主键
name varchar(50) 部门名称
manager_id int(11) 部门经理ID
description varchar(200) 部门描述

用户表

字段名称 数据类型 备注
id int(11) 自增主键
username varchar(50) 用户名
password varchar(50) 密码
role tinyint(1) 角色(0表示普通用户,1表示管理员)

功能实现

员工信息管理

添加员工信息

添加员工信息流程如下:

  1. 首先在界面上显示一个填写员工信息的表单,包含员工姓名、性别、出生日期、身份证号码、入职日期和所属部门等信息;
  2. 用户填写完整员工信息后点击保存按钮,系统对输入进行合法性检查,如检测到输入内容格式不正确或者必填信息为空,则提示用户相应的错误信息;
  3. 将合法的员工信息存储到数据库中,显示保存成功的提示信息。

示例说明:当用户在录入员工信息时,输入了空字段或者身份证号码格式不正确,系统将会弹出提示框,告知用户必填信息不能为空或者身份证号码格式不正确。

// 身份证号码格式校验
public static boolean isIDNumberValid(String idNumber) {
    // 省略身份证号码格式校验逻辑...
    return true;
}

// 员工信息保存
public void saveEmployee(Employee employee) {
    // 检查输入内容是否完整和合法
    if (StringUtils.isBlank(employee.getName()) || 
        StringUtils.isBlank(employee.getIdNumber()) || 
        employee.getDepartmentId() == null || 
        !isIDNumberValid(employee.getIdNumber())) {
        throw new IllegalArgumentException("员工姓名、身份证号码和所属部门不能为空,且身份证号码必须为有效格式。");
    }
    // 其他保存逻辑...
}

查询员工信息

查询员工信息可以按照员工姓名、性别、所属部门等条件进行筛选,查询结果以列表形式展示。

示例说明:当用户在查询员工信息时,输入了员工姓名作为条件进行查询,系统将会返回与该姓名匹配的员工信息列表,并在界面上展示。

// 按照员工姓名进行查询
public List<Employee> queryEmployeeByName(String name) {
    String sql = "SELECT * FROM employee WHERE name LIKE ?";
    try (Connection conn = dataSource.getConnection();
         PreparedStatement stmt = conn.prepareStatement(sql)) {
        stmt.setString(1, "%" + name + "%");
        try (ResultSet rs = stmt.executeQuery()) {
            List<Employee> employeeList = new ArrayList<>();
            while (rs.next()) {
                Employee employee = new Employee();
                employee.setId(rs.getInt("id"));
                employee.setName(rs.getString("name"));
                employee.setGender(rs.getInt("gender"));
                // 其他字段省略...
                employeeList.add(employee);
            }
            return employeeList;
        }
    } catch (SQLException e) {
        throw new RuntimeException("查询员工信息失败", e);
    }
}

用户权限管理

管理员可以对系统中的用户进行管理,包括添加用户、修改用户密码、删除用户等操作。

示例说明:当管理员在用户列表中选择了一个普通用户,并点击重置密码按钮时,系统将会将该用户的密码重置为初始密码,并确保用户在下次登录时需要修改密码以确保安全性。

// 重置用户密码
public void resetPassword(int userId, String password) {
    String sql = "UPDATE user SET password = ? WHERE id = ?";
    try (Connection conn = dataSource.getConnection();
         PreparedStatement stmt = conn.prepareStatement(sql)) {
        stmt.setString(1, password);
        stmt.setInt(2, userId);
        stmt.executeUpdate();
    } catch (SQLException e) {
        throw new RuntimeException("重置用户密码失败", e);
    }
}

// 用户列表界面
if (user.getRole() == User.ROLE_ADMIN) {
    // 显示用户列表
    List<User> userList = userService.queryAllUser();
    for (User user : userList) {
        // 用户是否需要修改密码
        boolean needChangePassword = checkIfUserNeedChangePassword(user);
        // 添加“重置密码”按钮
        JButton resetPasswordButton = new JButton("重置密码");
        resetPasswordButton.addActionListener(e -> {
            int result = JOptionPane.showConfirmDialog(null, "是否确认要重置该用户的密码?", "确认重置密码", JOptionPane.YES_NO_OPTION);
            if (result == JOptionPane.YES_OPTION) {
                // 重置用户密码为初始密码
                userService.resetPassword(user.getId(), "123456");
                JOptionPane.showMessageDialog(null, "用户密码已重置为初始密码,请通知该用户在登录后尽快修改密码。");
            }
        });
        // 添加其他相关操作按钮...
    }
}

总结

通过本文的介绍,您应该已经了解到如何从系统环境和数据库设计方面入手,实现一个基于Java语言开发的员工管理系统,涵盖了员工信息管理和用户权限管理等多个方面的功能。希望本文能够对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:员工管理系统java版 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Java实例化类详解

    Java实例化类详解 在Java中,实例化类是创建类对象的过程。当我们创建一个类对象的时候,就可以使用该类所定义的方法和属性。 实例化类的基础知识 我们可以使用 new 关键字来创建一个类的实例,其基本语法如下: ClassName obj = new ClassName(); 其中,ClassName 是需要创建实例的类名,obj 是创建的对象名。在创建对…

    Java 2023年5月26日
    00
  • js如何设置在iframe框架中指定div不显示

    使用JavaScript直接在iframe中指定div不显示的方法: 在iframe框架中使用JavaScript来控制指定div元素的display属性,让其不显示。可以使用以下的代码实现: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&…

    Java 2023年6月16日
    00
  • 利用MyBatis实现条件查询的方法汇总

    关于“利用MyBatis实现条件查询的方法汇总”的完整攻略,可以从以下几个方面进行讲解。 1. MyBatis基本查询 MyBatis的基本查询操作使用select标签,通过where子句编写查询条件,具体示例如下所示: <!– 整合mybatis –> <select id="selectUser" paramet…

    Java 2023年5月20日
    00
  • java线程池中线程数量到底是几

    首先让我们来了解一下Java线程池。 线程池是一种线程使用方式的抽象,它可以优化多线程的资源使用情况。通过重复利用已创建的线程,降低线程创建和销毁的开销,提高响应速度。 而Java中的线程池主要由ThreadPoolExecutor类实现,该类有以下构造方法 public ThreadPoolExecutor(int corePoolSize, //核心线程…

    Java 2023年5月26日
    00
  • JSP 开发之Spring BeanUtils组件使用

    JSP 开发之Spring BeanUtils 组件使用 Spring BeanUtils 是 Spring 框架中非常常用的一个工具类,其提供了很多方便快捷的方法用于对象属性之间的复制。本文将通过两个示例来详细讲解 Spring BeanUtils 组件的使用方法。 一、示例一:简单属性复制 下面是一个使用 Spring BeanUtils 完成简单属性复…

    Java 2023年6月15日
    00
  • Java转JSON串的几种方式

    Java转JSON串的几种方式: 在Java开发中,将Java对象转化成JSON格式数据是很常见的一项操作。下面是几种常见的方式: 1. 使用Gson Gson是Google提供的一个Java JSON库,可以将JSON字符串和Java对象互相转化。可以通过以下步骤来使用Gson将Java对象转化成JSON格式数据: 引入Gson依赖: “` com.go…

    Java 2023年5月26日
    00
  • Java多线程中的Balking模式详解

    让我来给您详细讲解一下“Java多线程中的Balking模式”的攻略。 什么是Balking模式 Balking是一种设计模式,它用于在并发编程中避免重复执行代码。这种模式通常用于程序中存在运行条件无法实现的情况下(例如正在发生的网络超时或其他必要资源无法访问等)。 Balking模式的实现过程 Balking模式的核心思想是,检查并避免尝试重复执行正在发生…

    Java 2023年5月18日
    00
  • java基本教程之join方法详解 java多线程教程

    Java中的join()方法是多线程编程常用的一个方法,它的作用是让调用该方法的线程等待被调用线程执行完毕后再继续执行。本文将详细讲解join()方法的使用和注意事项。 什么是join()方法 在介绍join()方法之前,我们先回忆一下多线程的基础。在Java中,当创建一个线程对象并调用start()方法后,线程对象就会进入就绪状态,等待CPU分配时间片段并…

    Java 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部