员工管理系统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实现数组中的逆序对

    首先,让我们先来了解逆序对的概念。逆序对是指在一个数组a中,对于任意两个元素a[i]和a[j],当且仅当ia[j]时,就称这两个元素是一个逆序对。 为了实现数组中的逆序对,我们可以采用归并排序的思路,利用分治算法的思想来实现。 具体的实现过程如下: 将数组从中间分成两个子数组,递归地对两个子数组进行排序,直到每个子数组只剩下一个元素。 然后将两个子数组合并成…

    Java 2023年5月26日
    00
  • springboot~关于md5签名引发的问题

    事实是这样的,我有个接口,这个接口不能被篡改,于是想到了比较简单的md5对url地址参数进行加密,把这个密码当成是sign,然后服务端收到请求后,使用相同算法也生成sign,两个sign相同就正常没有被篡改过。 问题的出现 接口中的参数包括userId,extUserId,时间,其中extUserId字符编码,中间会有+这种符号 有些用户使用签名接口正常 有…

    Java 2023年4月23日
    00
  • Redis分布式锁这样用,有坑?

    背景 在微服务项目中,大家都会去使用到分布式锁,一般也是使用Redis去实现,使用RedisTemplate、Redisson、RedisLockRegistry都行,公司的项目中,使用的是Redisson,一般你会怎么用?看看下面的代码,是不是就是你的写法 String lockKey = “forlan_lock_” + serviceId; RLock…

    Java 2023年4月17日
    00
  • Maven仓库分类的优先级

    当使用 Maven 构建项目时,Maven 会从一系列仓库中查找项目的依赖。 Maven 仓库分类的优先级体现在 Maven 会按照一定顺序去仓库中查找依赖。在 Maven 中,仓库可以分为以下几类,优先级由高到低排列: 本地仓库 (Local Repository) 中央仓库 (Central Repository) 远程仓库 (Remote Reposi…

    Java 2023年5月19日
    00
  • Java高级架构之FastDFS分布式文件集群详解

    Java高级架构之FastDFS分布式文件集群详解 FastDFS是一个开源的高性能分布式文件系统,可伸缩的分布式文件存储系统,是以跨平台、高效、高可靠性为特点的分布式文件系统,并以其优异性能成为国内外互联网公司分布式文件存储的不二之选。 概述 FastDFS是一个由跟踪服务器、存储服务器组成的分布式文件系统。跟踪服务器负责调度存储服务器,存储服务器则负责文…

    Java 2023年5月19日
    00
  • maven打包如何指定jdk的版本

    Maven是一个非常流行的Java项目管理和构建工具。在使用Maven进行代码打包时,我们经常遇到需要指定JDK版本的情况。接下来,我将详细介绍在Maven中如何指定JDK版本。 方式一:在pom.xml文件中指定JDK版本 可以在Maven项目的pom.xml文件中指定JDK版本,这样在构建项目时就可以使用特定版本的JDK。可以使用以下示例代码来指定JDK…

    Java 2023年5月19日
    00
  • Java 7大常见排序方法实例详解

    Java 7大常见排序方法实例详解 排序算法是计算机科学中的重要技能之一,Java为开发者提供了多种常见的排序方法,本文将介绍Java 7大常见排序方法并提供详细的示例说明。 1. 冒泡排序(Bubble Sort) 冒泡排序是最简单的排序算法之一,它的思想是依次比较相邻的两个元素,如果前面的元素比后面的元素大,则交换这两个元素的位置,通过多次比较和交换,将…

    Java 2023年5月26日
    00
  • Java系统运行缓慢等问题的排查思路

    我来详细讲解一下“Java系统运行缓慢等问题的排查思路”的完整攻略。 1. 问题定位 首先,我们需要明确具体的问题现象。如果Java系统运行缓慢,可能会有以下一些表现形式: 请求响应时间过长 CPU占用率较高 内存使用率较高 日志输出异常 根据问题现象,我们可以使用以下一些工具来定位问题: 配置管理工具:例如Ansible、Puppet,可以帮助我们收集系统…

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