一、项目背景:企业人事管理该告别“纸质账本”了
之前帮亲戚家的小公司整理过人事资料,堆了半人高的文件夹,找个员工的工资单要翻半天,新员工入职登记错个信息还要重新抄一遍,月底算工资时又要对着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 那些“踩过的坑”
- SSM配置报错:一开始SpringMVC的.xml文件没配对,接口一直调不通,后来对着教程逐行改,终于通了;
- MySQL中文乱码:存员工姓名时变成“???”,查了资料才知道是数据库编码没设成UTF-8,改了my.ini配置文件就好;
- 页面适配问题:在自己电脑上界面好好的,放别人电脑上按钮就挤在一起,后来用了CSS的“自适应布局”,不管屏幕大小都正常。
4.2 最大的收获
以前学SSM、MySQL只知道“怎么用”,做了这个系统才明白“为什么这么用”——比如为什么要写Service层、为什么数据库要加索引。答辩时老师说“这个系统能真正解决小企业人事管理的问题,实用性强”,听到这话比拿奖学金还开心!
五、项目资源:给学弟学妹的“避坑包”
做毕设时特别希望有人给我“现成资料”,所以我整理了这些,有需要的可以拿走:
- 完整源代码(后端SSM+前端JSP,注释写得超详细);
- MySQL脚本(直接导入就能用,含测试数据,比如3个员工、2条招聘信息);
- 答辩PPT(含系统演示视频,还有我踩过的坑和解决方法);
- 操作手册(给管理员的使用说明,图文并茂,像“怎么新增工资”一步一步教)。
做这个系统的过程,从一开始对着需求文档发呆,到后来能独立解决bug,我才明白“实践出真知”。如果你的毕设想做管理系统,建议从“小企业痛点”入手,不用做太复杂,把核心功能做好、做稳定,就是一个好项目。
如果这篇分享对你有帮助,欢迎点赞收藏,有问题也可以评论区问我,看到会回复!祝大家毕业设计顺利通过!🎓