基于Python的人事管理系统的设计与实现

46 阅读10分钟

一、为什么要做这个系统?背景与痛点

1.1 行业背景:传统人事管理的效率瓶颈

随着企业规模扩大,人事管理的复杂度呈指数级增长,传统模式的弊端逐渐暴露:

  • 信息管理低效:员工档案、薪酬数据以纸质或 Excel 存储,查询时需手动翻找,修改后易出现版本混乱;
  • 流程协同困难:岗位调动、离职申请需多部门线下签字,流程周期长,且难以追踪进度;
  • 数据统计繁琐:每月薪酬核算、员工考勤统计依赖人工计算,不仅耗时,还易因人为失误导致错误;
  • 员工体验欠佳:员工需联系管理员才能查询薪酬、打卡记录,缺乏自主查询渠道,沟通成本高。

这套系统的核心目标,就是用技术打破这些瓶颈,让人事管理从 “线下繁琐” 转向 “线上高效”。

1.2 系统价值:企业与员工的双向赋能

  • 对管理员:自动化处理薪酬计算、考勤统计,支持员工信息批量管理,减少重复工作量;
  • 对员工:通过个人中心自主查询薪酬、提交离职申请、查看打卡记录,无需依赖管理员;
  • 对企业:实时统计员工结构、薪酬分布、离职率等数据,为人事决策提供数据支撑,降低管理成本。

二、系统用了哪些关键技术?技术栈解析

系统围绕 “稳定、易维护、可扩展” 选型,覆盖后端开发、数据存储、前端交互全流程,具体如下:

技术模块具体选择作用说明
后端开发Python 3.x + Django 3.2Python 负责核心逻辑实现,Django 提供 ORM、Admin 后台、URL 路由,遵循 MVT 架构,降低开发难度;内置的权限控制模块可快速实现 “管理员 / 员工” 角色区分
数据存储MySQL 5.7+存储员工信息、薪酬数据、签到记录等,支持事务处理与高效查询,保障数据一致性;通过索引优化查询速度,应对大量数据场景
架构模式B/S(浏览器 / 服务器)用户无需安装客户端,通过浏览器即可访问系统(管理员端 / 员工端),支持跨设备、远程操作,降低使用门槛
前端展示HTML/CSS + JavaScript实现简洁直观的交互界面,结合表单验证、动态加载等功能,提升用户体验;适配电脑、平板等设备,确保响应式显示
开发工具PyCharm + NavicatPyCharm 用于 Python 代码开发与调试,Navicat 用于 MySQL 数据库可视化管理,提升开发效率

核心技术拆解:Django 框架的优势

Django 是系统开发的 “核心引擎”,其丰富的内置功能大幅减少重复开发:

  1. ORM 机制:无需编写原生 SQL,通过 Python 类定义数据模型(如 “员工类”“薪酬类”),ORM 自动映射到 MySQL 数据表,降低数据库操作难度;
  2. Admin 后台:一行代码即可生成管理员后台,支持对员工信息、薪酬数据的增删改查,无需手动开发管理界面;
  3. 权限控制:内置用户认证与权限系统,可快速区分 “管理员” 与 “员工” 角色,限制功能访问范围(如员工仅能查看个人薪酬,管理员可批量管理);
  4. 表单验证:提供完善的表单验证功能,自动检测员工注册、薪酬录入等场景的字段合法性(如手机号格式、日期有效性),减少错误数据。

三、系统能做什么?功能设计与架构

3.1 核心功能:分角色设计

系统分为管理员普通员工两种角色,权限清晰、功能互补,覆盖人事管理全流程:

(1)管理员功能:全局管理与数据把控

  • 员工信息管理

    • 基础操作:新增 / 删除 / 修改员工信息(工号、姓名、部门、身份证、联系方式、住址);
    • 批量操作:支持员工信息批量导入(Excel)、导出,减少逐一录入的工作量;
  • 组织架构管理

    • 部门管理:新增 / 删除部门(如 “技术部”“人事部”),维护部门层级;
    • 岗位管理:为员工分配岗位,记录岗位名称、职责,支持岗位信息修改;
  • 薪酬与考勤管理

    • 薪酬核算:录入员工基本工资、全勤奖金、扣款事项,系统自动计算实发工资;
    • 签到管理:查看员工每日打卡记录(正常 / 迟到 / 缺勤),支持打卡数据导出;
  • 流程管理

    • 岗位调动:处理员工调动申请,修改岗位信息并记录调动日期、备注;
    • 离职申请:审核员工离职申请,填写审核意见,更新员工状态;
  • 数据统计:生成薪酬分布统计图、员工部门分布表,直观展示人事数据。

(2)普通员工功能:自助服务与信息查询

  • 账号体系:员工通过工号 + 密码登录,首次登录可修改密码;

  • 个人中心:查看 / 修改个人基本信息(联系方式、住址),上传个人照片;

  • 自助服务

    • 薪酬查询:查看每月薪酬明细(基本工资、奖金、扣款、实发工资);
    • 打卡查询:查看个人每日签到记录,了解考勤状态;
    • 流程申请:在线提交岗位调动申请、离职申请,跟踪审核进度;
  • 信息查看:查看企业发布的通知、部门架构,了解公司组织情况。

3.2 系统架构:B/S 三层架构设计

系统采用 B/S 架构,从下到上分为三层,确保代码模块化、易维护:

  1. 数据层:MySQL 数据库存储所有业务数据(员工表、薪酬表、签到表等),通过 Django ORM 与上层交互;

  2. 业务逻辑层:Django 框架的核心,包含:

    • 模型层(Model):定义数据结构,映射数据库表;
    • 视图层(View):处理用户请求(如 “薪酬计算”“离职审核”),调用模型层操作数据;
    • 路由层(URLConf):配置 URL,将请求分发到对应视图;
  3. 表现层:浏览器展示的前端页面,通过 HTML/CSS 构建界面,JavaScript 实现动态交互(如表单验证、数据提交)。

架构简化图如下:

管理员/员工 → 浏览器(表现层) → Django业务逻辑层(路由+视图+模型) → MySQL数据层

3.3 数据库设计:核心表结构

数据库是系统的 “数据仓库”,我设计了 12 张核心表,覆盖人事管理核心场景,确保数据关联清晰、存储规范:

表名核心字段作用说明
员工信息表(yuangong)id(主键)、工号、密码、姓名、部门、性别、身份证、联系方式存储员工基本信息
部门信息表(bumen)id(主键)、部门名称维护企业部门列表
岗位信息表(gangwei)id(主键)、岗位名称、工号、姓名记录员工岗位分配
薪酬表(xinchou)id(主键)、工号、姓名、部门、基本工资、奖金、扣款、实发工资、发放日期存储员工薪酬明细
签到表(qiandao)id(主键)、工号、姓名、部门、打卡类型(正常 / 迟到)、打卡时间记录员工每日考勤
离职申请表(lizhi)id(主键)、工号、姓名、离职原因、申请日期、审核状态、审核意见跟踪员工离职申请流程
用户表(users)id(主键)、用户名、密码、角色(管理员 / 员工)存储系统登录账号信息

四、系统如何实现?关键模块与代码

4.1 核心模块实现:代码片段示例

(1)员工薪酬自动计算(views.py)

通过 Django 视图函数实现薪酬计算逻辑,自动根据基本工资、奖金、扣款计算实发工资:

from django.shortcuts import render, redirect
from .models import Xinchou  # 导入薪酬模型
from django.contrib import messages

def calculate_salary(request):
    if request.method == "POST":
        # 获取表单提交的薪酬数据
        gonghao = request.POST.get("gonghao")
        xingming = request.POST.get("xingming")
        bumen = request.POST.get("bumen")
        jibengongzi = int(request.POST.get("jibengongzi"))
        quanqinjiangjin = int(request.POST.get("quanqinjiangjin"))
        qitabuzhu = int(request.POST.get("qitabuzhu"))
        koukuanjine = int(request.POST.get("koukuanjine"))
        fafangriqi = request.POST.get("fafangriqi")
        
        # 自动计算实发工资
        shifagongzi = jibengongzi + quanqinjiangjin + qitabuzhu - koukuanjine
        
        # 保存到数据库
        Xinchou.objects.create(
            gonghao=gonghao,
            xingming=xingming,
            bumen=bumen,
            jibengongzi=jibengongzi,
            quanqinjiangjin=quanqinjiangjin,
            qitabuzhu=qitabuzhu,
            koukuanjine=koukuanjine,
            shifagongzi=shifagongzi,
            fafangriqi=fafangriqi
        )
        
        messages.success(request, "薪酬计算成功,实发工资:{}元".format(shifagongzi))
        return redirect("xinchou_list")  # 跳转至薪酬列表页
    
    # GET请求时,渲染薪酬计算表单
    return render(request, "calculate_salary.html")

(2)员工离职申请提交(views.py)

员工提交离职申请后,系统自动记录申请状态,管理员可在后台审核:

from django.shortcuts import render, redirect
from .models import Lizhi, Yuangong
from django.contrib.auth.decorators import login_required  # 登录验证装饰器

@login_required  # 仅登录员工可访问
def submit_resign(request):
    if request.method == "POST":
        # 获取当前登录员工的工号(从session或用户信息中获取)
        gonghao = request.user.username  # 假设用户名存储工号
        # 查询员工信息
        yuangong = Yuangong.objects.get(gonghao=gonghao)
        xingming = yuangong.xingming
        lizhiyuanyin = request.POST.get("lizhiyuanyin")
        shenqingriqi = request.POST.get("shenqingriqi")
        
        # 保存离职申请(默认审核状态为“未审核”)
        Lizhi.objects.create(
            gonghao=gonghao,
            xingming=xingming,
            lizhishenqing="离职申请",
            lizhiyuanyin=lizhiyuanyin,
            shenqingriqi=shenqingriqi,
            sfsh="否",  # 是否审核:否
            shhf=""     # 审核回复:空
        )
        
        messages.success(request, "离职申请提交成功,等待管理员审核!")
        return redirect("personal_center")  # 跳转至个人中心
    
    # GET请求时,渲染离职申请表单
    return render(request, "submit_resign.html")

4.2 系统运行截图标题

五、系统好用吗?测试与优化

为确保系统稳定可用,我采用黑盒测试(功能测试)对核心模块进行验证,重点检测流程通顺性与数据准确性:

5.1 关键测试用例

测试功能测试步骤预期结果实际结果
管理员登录输入正确账号密码 → 点击登录成功进入管理员主界面,显示功能菜单符合预期
薪酬计算录入基本工资 5000、奖金 1000、扣款 500 → 提交系统自动计算实发工资 5500,存入数据库符合预期,计算无误差
员工离职申请员工登录 → 提交离职原因 → 确认提交申请状态为 “未审核”,管理员后台可查看符合预期,流程正常
签到记录查询员工登录 → 进入签到管理 → 选择日期筛选显示对应日期的打卡记录(正常 / 迟到)符合预期,数据准确

5.2 常见问题与解决

  1. 问题 1:员工信息批量导入失败解决:优化 Excel 导入逻辑,增加格式校验(如工号唯一性、手机号格式),导入失败时提示具体错误行,方便管理员修正;
  2. 问题 2:薪酬计算时数据类型错误解决:在前端表单添加输入限制(仅允许数字输入),后端视图函数增加类型转换与异常捕获,避免因非数字输入导致崩溃;
  3. 问题 3:员工忘记密码无法登录解决:扩展 “密码重置” 功能,管理员可通过员工工号重置密码,或员工通过绑定手机号接收验证码重置。

六、总结与未来计划

6.1 项目成果

这套人事管理系统已实现核心目标:

  • 自动化:薪酬自动计算、考勤记录自动存储,减少人工操作;
  • 便捷化:员工自主查询信息、提交申请,无需依赖管理员;
  • 可视化:管理员通过统计图直观查看人事数据,辅助决策。

七、资料获取

论文全文档(含目录、参考文献、致谢,可直接用于毕设答辩);

核心源码(含 Django 前后端代码、数据库脚本,注释清晰易修改);

系统运行教程(环境搭建步骤:Python 安装、MySQL 配置、Django 部署)。

👉 获取方式:关注我的主页,或私信博主,即可获取完整资料!

如果本文对你的毕设或开发有帮助,欢迎点赞 + 收藏 + 关注,后续会持续分享企业管理系统开发技巧!