毕业设计实战:用SSM+MySQL搭人力资源管理系统,解决企业“人事管理乱”痛点 [特殊字符]

37 阅读8分钟

一、项目背景:企业人事管理该告别“纸质账本”了

之前帮亲戚家的小公司整理过人事资料,堆了半人高的文件夹,找个员工的工资单要翻半天,新员工入职登记错个信息还要重新抄一遍,月底算工资时又要对着Excel反复核对——这就是传统人力资源管理的真实写照:效率低、易出错、查数据难。

现在企业都在数字化,人事管理当然也得跟上!所以我选了人力资源管理系统做毕业设计,想用SSM框架和MySQL数据库,把员工管理、工资核算、招聘应聘这些事儿全搬到线上,让管理员不用再埋在纸质文件里,员工查信息也不用跑人事部,真正实现“人事管理数字化”。

二、技术选型:实用优先,选熟不用生

做毕设不是搞科研,技术栈得选自己熟悉、资料多的,不然遇到bug都没处查。我最终敲定的这套组合,都是课上学过且实战性强的:

技术模块具体工具/技术核心作用
后端框架SSM(Spring+SpringMVC+MyBatis)处理核心业务,比如员工信息增删改、工资计算逻辑
前端技术JSP+CSS做页面展示,像员工列表、招聘信息管理页,简单直观好操作
数据库MySQL 8.0存员工、工资、招聘这些关键数据,安全还支持多表关联查询
系统架构B/S(浏览器/服务器)不用装客户端,打开浏览器就能用,管理员在公司、在家都能办公
开发工具MyEclipse写代码、调接口的主力,自带Tomcat插件,部署测试超方便

三、项目开发全流程:从“不懂”到“能用”的5步走

3.1 第一步:需求分析——搞懂管理员和用户要啥

做系统前先问自己:谁用?用它干嘛?我找了3家小企业的人事姐姐聊,还发了20份问卷,梳理出核心需求:

3.1.1 双角色权限:管理员管事儿,用户查信息

  • 管理员:管员工(新增、改职位、删离职员工)、管工资(算基本工资+奖金、发工资记录)、管招聘(发招聘信息、看应聘记录)、管部门(新增部门、改部门职责),还要能回复用户咨询;
  • 普通用户:查自己的工资单、看公司招聘信息、给管理员留言问人事问题、查应聘进度。

3.1.2 非功能需求:系统得“好用、稳定”

  • 操作简单:人事姐姐大多不是技术出身,界面得像用Excel一样顺手,别搞复杂按钮;
  • 响应快:查员工信息、点“新增工资”别卡顿,最多等3秒就得出来;
  • 数据安全:员工身份证号、工资这些隐私信息,不能随便看,得加密;
  • 容错性强:比如填工资时输错数字,系统得提示“请输入正确金额”,别直接崩。

3.2 第二步:系统设计——把需求画成“结构图”

3.2.1 功能模块设计:清晰划分,不混乱

我把系统拆成“管理员后台”和“用户前台”,每个模块下再分小功能,用结构图一画,逻辑立马清楚:

  • 管理员后台:员工管理、工资管理、招聘信息管理、应聘记录管理、部门管理;
  • 用户前台:个人工资查询、招聘信息查看、留言咨询、应聘进度查询。

3.2.2 数据库设计:核心表要“不缺字段、不冗余”

数据库是系统的“地基”,表设计错了后期改死人!我反复核对需求,设计了8张核心表,举几个关键的:

表名核心字段作用
员工表(yuangong)id、员工姓名、手机号、身份证号、部门id、职位存所有员工的基础信息,头像还能上传照片
工资表(gongzi)id、员工id、基本工资、奖金、实发工资、发放月份记录每个员工每月工资,自动算“实发=基本+奖金”
招聘信息表(zhaopinxinxi)id、招聘名称、类型(校园/社会)、人数、详情发招聘信息,用户能直接看
应聘记录表(yingpinjilu)id、招聘id、应聘人姓名、手机号、面试结果存应聘信息,管理员能标“已面试/未通过”
部门表(bumen)id、部门名称、人数、职责、介绍管公司部门,新增“技术部”“人事部”就在这操作

3.3 第三步:后端开发——写接口,处理“数据逻辑”

后端重点是写“接口”,比如“管理员新增员工”“用户查工资”,本质就是把数据存到MySQL,再返回结果给前端。这里放两段核心代码示例,都是实际跑通的:

// 员工管理接口:新增员工
@Controller
@RequestMapping("/admin/yuangong")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    // 新增员工
    @PostMapping("/add")
    @ResponseBody
    public Result addEmployee(@RequestBody Employee employee, HttpSession session) {
        // 先判断管理员是否登录
        Admin admin = (Admin) session.getAttribute("loginAdmin");
        if (admin == null) {
            return Result.error("请先登录管理员账号");
        }
        // 检查员工手机号是否已存在(避免重复添加)
        Employee existEmp = employeeService.getByPhone(employee.getYuangongPhone());
        if (existEmp != null) {
            return Result.error("该手机号已注册员工,请勿重复添加");
        }
        // 调用服务层保存员工信息
        boolean flag = employeeService.addEmployee(employee);
        if (flag) {
            return Result.success("员工新增成功!");
        } else {
            return Result.error("新增失败,请重试");
        }
    }

    // 员工查询工资(给普通用户用)
    @GetMapping("/mySalary")
    @ResponseBody
    public Result getMySalary(Long empId, String month) {
        Salary salary = employeeService.getSalaryByEmpIdAndMonth(empId, month);
        if (salary == null) {
            return Result.error("暂无该月份工资记录");
        }
        return Result.success("查询成功", salary);
    }
}

3.4 第四步:前端开发——做界面,让“人能操作”

前端不用搞花里胡哨的特效,重点是“清晰、好点”。我用JSP写页面,按钮放显眼处,比如“新增员工”用绿色,“删除”用红色,一眼就能分清:

3.4.1 核心界面展示

  • 管理员员工列表页:能看所有员工的姓名、部门、职位,顶部有搜索框,输“张三”就能快速找,点“修改”能改职位,点“删除”会提示“确定要删吗?”,防止误操作;
  • 工资管理页:选员工、填月份、输基本工资和奖金,系统自动算“实发工资”,点“提交”就存到数据库,还能导出Excel工资表;
  • 用户工资查询页:选月份,点“查询”就能看自己的工资单,基本工资、奖金、实发数清清楚楚,还能打印。

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

3.4.2 设计小技巧

  • 用浅蓝色当主色调,像办公软件一样,看着不刺眼;
  • 表单必填项标红,比如“员工姓名”“手机号”,提醒管理员别漏填;
  • 分页显示数据,员工多的时候一页只看10条,不用拉半天滚动条。

3.5 第五步:系统测试——把“bug”提前揪出来

系统做完不能直接交,得测试“好不好使”。我用“黑盒测试”(不管代码,只看操作结果),测了10多个关键场景:

测试场景测试操作预期结果实际结果
管理员登录输错密码提示“密码错误”功能正常 ✅
新增员工填重复手机号提示“手机号已存在”功能正常 ✅
算工资基本工资3000+奖金1000实发工资4000计算正确 ✅
用户查工资选没有工资的月份提示“暂无记录”功能正常 ✅

测试时也踩过坑:比如“删除员工后,工资表还显示该员工”,后来发现是没加“外键关联删除”,改了MySQL表结构就好了;还有“用户留言后管理员看不到”,查了半天是接口传参错了,把“userId”写成“userID”,大小写没对上😂。

四、毕业设计复盘:踩过的坑和最大的收获

4.1 那些“踩过的坑”

  1. SSM配置报错:一开始SpringMVC的.xml文件没配对,接口一直调不通,后来对着教程逐行改,终于通了;
  2. MySQL中文乱码:存员工姓名时变成“???”,查了资料才知道是数据库编码没设成UTF-8,改了my.ini配置文件就好;
  3. 页面适配问题:在自己电脑上界面好好的,放别人电脑上按钮就挤在一起,后来用了CSS的“自适应布局”,不管屏幕大小都正常。

4.2 最大的收获

以前学SSM、MySQL只知道“怎么用”,做了这个系统才明白“为什么这么用”——比如为什么要写Service层、为什么数据库要加索引。答辩时老师说“这个系统能真正解决小企业人事管理的问题,实用性强”,听到这话比拿奖学金还开心!

五、项目资源:给学弟学妹的“避坑包”

做毕设时特别希望有人给我“现成资料”,所以我整理了这些,有需要的可以拿走:

  • 完整源代码(后端SSM+前端JSP,注释写得超详细);
  • MySQL脚本(直接导入就能用,含测试数据,比如3个员工、2条招聘信息);
  • 答辩PPT(含系统演示视频,还有我踩过的坑和解决方法);
  • 操作手册(给管理员的使用说明,图文并茂,像“怎么新增工资”一步一步教)。

做这个系统的过程,从一开始对着需求文档发呆,到后来能独立解决bug,我才明白“实践出真知”。如果你的毕设想做管理系统,建议从“小企业痛点”入手,不用做太复杂,把核心功能做好、做稳定,就是一个好项目。

如果这篇分享对你有帮助,欢迎点赞收藏,有问题也可以评论区问我,看到会回复!祝大家毕业设计顺利通过!🎓