毕业设计实战:基于Spring Boot的人事管理系统,从需求到测试全流程避坑指南!

95 阅读13分钟

毕业设计实战:基于Spring Boot的人事管理系统,从需求到测试全流程避坑指南!

谁懂啊!当初做“人事管理系统”毕设时,光“员工工资表”的字段设计就卡了3天——一开始没把“实发工资”设为计算字段,每次发工资都要手动算一遍,导师看了直接说“你这数据库设计得重新来”😫 后来踩遍无数坑才摸出高效落地流程,今天把需求分析、技术选型、功能实现到测试的核心细节说透,宝子们不用熬夜改代码,轻松搞定毕设!

一、先搞懂“人事管理系统”要啥!需求分析别瞎蒙

刚开始我跳过需求分析就写代码,花一周加了个“智能排班算法”,结果导师一句“核心是考勤管理、请假审批、工资核算,不是复杂算法”直接打回重改!后来才明白,需求分析得先抓准“谁用系统、要干啥”,这步做对,少走90%弯路。

1. 核心用户&功能拆解(踩坑后总结版)

系统有两类核心用户:管理员(HR)、员工(千万别加“部门经理”子角色!我当初加了后审批权限混乱,经理能查看所有部门工资,砍掉才顺畅),功能明确区分:

  • 管理员端(HR必备功能):
    • 员工档案:管理员工信息(入职登记、信息维护、离职处理)、按部门/职位筛选、查看完整档案
    • 部门管理:设置组织架构(部门、职位)、维护部门信息
    • 考勤管理:查看员工考勤记录(打卡类型、时间)、处理异常考勤、导出考勤报表
    • 审批管理:处理请假申请(审核理由、批准/驳回)、处理加班申请、记录审批意见
    • 工资管理:计算员工工资(自动计算实发工资=基本+补贴-扣款)、发放工资、生成工资条
    • 培训管理:安排员工培训(时间、地点、内容)、安排部门培训、记录培训结果
    • 招聘管理:发布招聘计划(岗位、要求、人数)、跟踪招聘流程
  • 员工端(核心需求):
    • 个人档案:查看个人信息(工号、姓名、部门、职位)、更新联系方式、查看完整档案
    • 考勤打卡:在线打卡(上班/下班打卡)、查看个人考勤记录、申请补卡
    • 请假申请:提交请假申请(事假/病假/年假)、填写请假时间/天数/理由、查看审批状态
    • 加班申请:提交加班申请(填写时间/时长/事由)、查看审批结果
    • 工资查询:查看工资明细(基本工资、各项补贴、扣款详情)、下载电子工资条
    • 培训查看:查看个人培训安排、部门培训通知

2. 需求分析避坑指南(血泪教训!)

  • 别空想!找2个HR朋友和同事模拟使用场景:比如员工说“想提前知道请假是否批准”,我才加了“审批状态实时更新”(待审核-黄色、已通过-绿色、已驳回-红色),比瞎加“智能排班”实用
  • 一定要画用例图!用DrawIO画“员工-请假申请”“HR-工资核算”“HR-招聘管理”,跟导师汇报时比光说“我要做XX功能”直观10倍
  • 写“需求规格说明书”!把约束条件写清楚(如“请假天数≤年假余额”“加班时长≥1小时”“工资发放每月一次”),编码时对着做,不跑偏

3. 可行性分析别敷衍!3点写清楚就能过

导师超爱问“系统可行吗”,别只说“我觉得可行”,从3个角度写,显专业:

  • 技术可行性:Spring Boot、Java、MySQL都是课堂学过的,图书馆有《Spring Boot实战》《MySQL数据库设计与优化》,遇到问题能查资料(别用Spring Boot 3.x!我当初试了,跟MySQL 8.0联调时工资计算接口卡2天,换回2.7稳定版才顺)
  • 经济可行性:工具全免费!开发工具学生版、MySQL、Navicat(学生版)、Tomcat官网直接下,答辩时说“开发成本0,还能帮企业节约人事管理成本,实现HR工作信息化”
  • 操作可行性:界面参考主流HR系统(如钉钉),常用功能放显眼位置(如“我的考勤”在员工首页顶部),找同学测试,10分钟学会请假、查工资,导师直接认可

二、技术选型别跟风!这套组合稳到爆

刚开始我跟风用Spring Boot 3.x+Vue 3+Redis,结果“考勤打卡缓存”卡2天——Redis配置错,打卡记录丢失😫 后来换成Java 8+Spring Boot 2.7+MySQL 8.0+B/S结构,新手友好,调试效率翻倍!

1. 技术栈核心选择(附避坑提醒)

别盲目选“最新技术”,稳定比炫酷重要!核心工具选择理由和坑点直接抄:

技术工具为啥选它避坑提醒!
Java 8语法简洁,Spring Boot 2.7兼容性最佳别用Java 11+!部分依赖支持差
Spring Boot 2.7简化配置,自带Tomcat,适合快速开发直接用官方starter,别自定义
MySQL 8.0支持事务/外键,存人事数据足够用安装设“utf8mb4”编码!防乱码
B/S结构跨平台使用,只需浏览器,维护方便别用C/S结构!部署麻烦
MyEclipse集成开发环境,适合Java Web开发配置jre为sun的jdk
JSP与Java无缝衔接,适合管理系统界面别用纯HTML5替代!

2. 开发环境搭建(step by step 实操)

很多宝子卡“环境配置”,跟着步骤来,一次成功:

  1. 装JDK 1.8:配置“JAVA_HOME”环境变量,cmd验证
  2. 装MyEclipse:配置jre为sun的jdk,工作空间编码设“UTF-8”
  3. 装MySQL 8.0:建数据库“hr_management_system”,编码设“utf8mb4”
  4. 建Spring Boot项目:引入Web、MyBatis、MySQL依赖
  5. 配前端页面:用JSP+Bootstrap写员工管理、考勤打卡、工资查询页面
  6. 联调测试:写“查询员工列表”接口,前端调用能显示员工信息即完成

三、数据库设计:别让表关联坑了你

这是毕设“核心骨架”,我当初没把“员工工资表”的计算逻辑理清,每次发工资都要手动算一遍,导师说“这不符合自动化管理”😫 后来按“实体-属性-关系”设计,终于理清。

1. 核心实体&属性(附ER图技巧)

先确定“实体”(员工、部门、考勤、请假、加班、工资),再想“属性”,别漏关键字段!必做13张核心表:

  • 员工表(employee):id、yuangonggonghao(员工工号)、mima、yuangongxingming(员工姓名)、bumen(部门)、zhiwei(职位)、xingbie(性别)、nianling(年龄)、yuangongshouji(员工手机)、zhaopian(照片路径)、jibengongzi(基本工资)
  • 部门表(department):id、bumen(部门名称)、zhiwei(职位)
  • 员工考勤表(attendance):id、yuangonggonghao(员工工号)、dakaleixing(打卡类型:上班/下班)、dakashijian(打卡时间)、beizhu(备注)
  • 请假申请表(leave_application):id、yuangonggonghao(员工工号)、qingjialeixing(请假类型)、qingjiashijian(请假时间)、qingjiatianshu(请假天数)、qingjialiyou(请假理由)、sfsh(是否审核)、shhf(审核回复)
  • 加班申请表(overtime_application):id、yuangonggonghao(员工工号)、jiabanshijian(加班时间)、jiabanshizhang(加班时长)、jiabanshiyou(加班事由)、sfsh(是否审核)
  • 员工工资表(salary):id、yuangonggonghao(员工工号)、fafangshijian(发放时间)、jibengongzi(基本工资)、jixiao(绩效)、chebu(车补)、canbu(餐补)、fangbu(房补)、quanqinjiang(全勤奖)、jiabanfei(加班费)、wuxianyijin(五险一金)、koujixiao(扣绩效)、kuanggongfei(旷工费)、qitakoukuan(其它扣款)、shifagongzi(实发工资)
  • 员工详细表(employee_detail):id、yuangonggonghao(员工工号)、yuangongdizhi(员工地址)、minzu(民族)、xueli(学历)、hunfou(婚否)、zhengzhimianmao(政治面貌)、biyeyuanxiao(毕业院校)、zhuanye(专业)、shenfenzhenghao(身份证号)

画ER图用Visio/亿图,记3规则:

  1. 矩形=实体(如“员工”“部门”“工资”)
  2. 椭圆=属性(如员工“工号”“职位”“基本工资”,工资“各项补贴”“扣款”“实发工资”)
  3. 菱形=关系(如“员工-考勤”一对多,一个员工有多条考勤记录;“部门-员工”一对多,一个部门有多名员工)

避坑提醒工资计算逻辑一定要在数据库设计时明确! 实发工资=基本工资+绩效+车补+餐补+房补+全勤奖+加班费-五险一金-扣绩效-旷工费-其它扣款,这个公式要写在系统里自动计算,别手动算!

2. 表关联测试!别等编码才发现错

建表后一定要测:在“员工表”插数据(id=1,yuangonggonghao=“E001”,yuangongxingming=“张三”),“请假申请表”插关联数据(yuangonggonghao=“E001”,qingjialeixing=“病假”,qingjiatianshu=2),用JOIN查“某员工的请假记录”:

SELECT e.yuangongxingming, e.bumen, l.qingjialeixing, l.qingjiashijian, l.qingjiatianshu, l.sfsh
FROM leave_application l
JOIN employee e ON l.yuangonggonghao = e.yuangonggonghao
WHERE e.yuangonggonghao = 'E001';

能查出“员工姓名+部门+请假类型+时间+天数+审核状态”说明关联对;若报错,赶紧检查外键设置。

四、功能实现:核心模块操作+页面设计

不用做所有功能!先搞定3个核心模块,答辩足够出彩,附操作逻辑和页面要点:

1. 员工端:请假申请模块(必做!)

核心是“规范请假流程”,重点“时间冲突校验”和“审批流”,别漏这两步!

  • 操作逻辑
    1. 提交申请前校验:选择请假类型(事假/病假/年假/调休)、填写请假时间(开始-结束)、系统自动计算天数
    2. 冲突检查:检查该时间段内是否有已批准的请假或加班,有冲突提示“该时段已有安排”
    3. 提交审批:填写请假理由,提交后状态为“待审核”,HR审批后自动通知员工
    4. 审批结果:HR可“批准”(状态变已通过)或“驳回”(需填写理由,状态变已驳回)
  • 页面设计(JSP+Bootstrap)
    • 申请表单:请假类型下拉框、日期时间选择器(支持开始-结束时间)、自动计算天数显示、理由文本框、提交按钮
    • 申请列表:显示历史申请(状态颜色区分:待审核-黄色、已通过-绿色、已驳回-红色)、支持查看详情
    • 日历视图:可选功能,在日历上显示已批准的请假时间段

2. HR端:工资核算模块(答辩亮点!)

体现“HR核心工作”,导师超爱问!核心“自动计算+明细清晰”。

  • 操作逻辑
    1. 工资项配置:设置各项工资参数(基本工资基数、五险一金比例、各项补贴标准)
    2. 数据导入:自动导入考勤数据(全勤奖判断)、加班数据(加班费计算)、请假数据(扣款计算)
    3. 自动计算:系统根据公式自动计算每个员工的实发工资,生成工资明细
    4. 人工调整:支持HR手动调整特殊项(如额外奖励、特殊扣款),调整后重新计算
    5. 生成工资条:为每个员工生成电子工资条,可批量发送邮件或员工自行查看
  • 页面设计
    • 工资核算页:选择核算月份→自动加载员工列表→显示各项数据(基本工资、考勤、加班等)→生成核算结果
    • 工资明细页:每个员工的详细工资构成表格,支持导出Excel
    • 工资条预览:模拟工资条样式,显示各项明细和总额

3. 考勤管理模块(核心需求!)

考勤是人事管理基础,流程别复杂:员工打卡→数据统计→异常处理。

  • 操作逻辑
    1. 员工打卡:上下班打卡(支持位置验证防代打卡)、打卡后显示打卡成功和时间
    2. 考勤规则:设置上班时间(如9:00)、下班时间(如18:00)、迟到/早退阈值(如30分钟)
    3. 自动统计:系统自动统计每个员工的出勤天数、迟到次数、早退次数、缺勤天数
    4. 异常处理:员工可申请补卡(忘记打卡),HR审核通过后补录考勤
    5. 报表生成:按月生成部门/个人考勤报表,支持导出
  • 页面设计
    • 打卡页面:员工端显示大按钮“上班打卡”/“下班打卡”,打卡后显示打卡成功和时间
    • 考勤日历:HR端按月历显示员工考勤状态(正常-绿色、迟到-黄色、缺勤-红色)
    • 异常列表:显示所有异常考勤(迟到、早退、缺勤、未打卡),支持批量处理 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

五、测试别敷衍!这3步让答辩不翻车

很多宝子觉得“功能能跑就行”,答辩时评委一测就出问题!我当初没测“请假重叠”,导致员工同一时间请两个假都能成功,导师说“这不符合实际”,当场扣分😫 测试要针对性做:

1. 功能测试(必测3模块)

重点测核心功能,整理测试用例表:

测试场景操作步骤预期结果
员工请假时间重叠员工申请6月1-3日病假→再申请6月2-4日事假第二次申请提示“该时段已有请假记录”
HR核算工资漏项HR只填基本工资,未填绩效和补贴→点击计算实发工资自动包含默认值(如绩效为0)
员工忘记打卡申请补卡员工未打卡→申请补卡→HR审核通过考勤记录显示补卡成功,不影响全勤奖

2. 兼容性测试(容易忽略)

别只在自己电脑测!答辩评委可能用不同浏览器:

  • 浏览器:Chrome、Firefox、Edge、IE11(重点测IE)
  • 设备:电脑、手机(测响应式布局)
  • 要求:打卡页面正常,表单提交无错,表格数据显示完整

3. 性能测试

模拟实际使用场景:

  • 100个员工同时打卡:系统响应正常,数据保存完整
  • HR批量核算500人工资:计算时间≤10秒,结果准确
  • 复杂查询:按部门+时间查询考勤记录,响应≤3秒

4. 测试报告要写好!答辩加分

整理“测试报告”,含:

  • 问题总结:“请假重叠未校验,加时间冲突检查;工资计算漏项,补全默认值逻辑;打卡位置验证失效,修复定位接口”
  • 测试结论:“核心功能正常,满足员工管理、考勤打卡、工资核算需求”

六、答辩准备:3个加分小技巧

  1. 演示流程顺畅:提前录视频,按“员工打卡→员工请假→HR审批→HR核算工资→员工查工资”流程演示
  2. 讲“解决的问题”:比如“一开始工资手动计算易错,改自动计算解决;请假审批慢,加状态实时更新;考勤数据混乱,加数据校验规则”
  3. 准备常见问题:导师可能问“系统怎么保证数据安全?”,答“员工只能看自己信息;敏感数据(工资)加密存储;操作留审计日志;数据库定期备份”

最后:毕设通关小私心

以上就是基于Spring Boot的“人事管理系统”从0到1的避坑干货!毕设不难,别瞎做复杂功能(如智能绩效评估、人脸识别打卡),把员工管理、考勤打卡、工资核算做扎实,答辩就能过。

需要核心源码(带注释,直接能跑)、数据库脚本(含测试数据)、ER图模板的宝子,评论区扣“人事管理系统”,我私发你;卡在某个模块(如工资自动计算、考勤统计),也可以留言,看到必回!

点赞收藏,下次找流程不迷路~祝宝子们毕设顺利,轻松毕业!😘