该作者的原创文章目录:
生产制造执行MES系统的需求设计和实现 |
企业后勤管理系统的需求设计和实现 |
行政办公管理系统的需求设计和实现 |
人力资源管理HR系统的需求设计和实现 |
企业财务管理系统的需求设计和实现 |
董事会办公管理系统的需求设计和实现 |
公司组织架构图设计工具 |
库存管理系统的需求设计和实现 |
批量执行SQL脚本导出Excel文件 |
数据库巡检工具Python源码分享 |
E-Learning在线学习平台的需求设计和实现 |
AI知识库在线问答系统的需求设计和实现 |
蛇年特别版贪吃蛇H5小游戏 |
获取微信access_token的Python源码 |
便利店补货系统Python源码 |
图片大小修改工具Python源码 |
Python烟花秀 |
股票分析工具Python源码 |
时钟同步工具Python源码 |
图片转Turtle代码生成器Python源码 |
一个有趣的每日心情追踪器 |
一个有趣的豆瓣电影TOP爬虫 |
一个有趣的春节祝福生成器 |
Hex文件配置工具Python编码 |
年会抽奖系统Python源码 |
音乐歌曲爬虫Python源码 |
前言:借助HR人力资源管理系统,帮助企业把HR管理人员从传统的组织、人事、薪资、考勤、绩效、招聘、培训等基础业务操作过程中解放出来,深度思考公司人力资源发展与建设规划、员工职业发展体系建设等。
系统首页展示:
人事部门职能:
(一)规划管理
1.负责编制公司人力资源发展与建设规划,并组织实施。
2.负责建立完善公司职位评价、任职资格、招聘配置、培养开发、薪酬与激励、绩效管理和职业发展等管理体系,建立完善业务流程,并组织实施。
3.组织制订并完善公司经营层职能部门职责,协同用人部门确定岗位设置和岗位职责。
4.负责对事业总部、分子公司人力资源建设与管理工作予以支持和指导。
5.做好公司干部人才队伍建设,建立干部管理和培养体系;做好管辖范围内干部的培养、选拔、任用、薪酬及绩效考核管理等工作。
(二)招聘配置
1.定期分析公司人力资源状况,科学预测公司人力资源需求,组织制定年度人力资源需求计划;负责开展人力资源招聘与配置工作。
2.负责“招聘”微信公众号等招聘宣传平台的运行管理,提升企业影响力。
3.负责建立并拓展招聘渠道,负责建立校企合作,多渠道引进和培养人才。
(三)培养发展
1.组织开展公司人才库管理,做好管辖范围内人才梯队建设。
2.负责组织制定公司年度培训计划,组织开展公司员工的培训工作。
3.负责分层分类建立培训课程体系,开展员工培养与发展工作。
4.负责组织开发公司内部课程,做好在线学习平台的运行管理。
5.负责组织公司各类职称(技能)等级的评定工作。
(四)薪酬管理
1.负责工资总额管理,组织制定薪酬预算,并对预算执行进行监控与管理。
2.负责研究制定公司薪酬策略与激励方案,并组织实施。
3.负责公司职能部门员工的薪酬管理工作。
(五)绩效管理
1.牵头组织制定公司年度绩效考核指标,负责组织实施年度绩效考核。
2.负责公司职能部门员工的绩效考核与激励、奖励与责任追究管理。
(六)劳动关系
1.负责公司劳动关系管理政策的制订与实施。
2.负责协调处置公司及事业总部、分子公司各类投诉及劳动争议案件,并对公司各部门用工合法性进行监督和检查。
3.负责公司职能部门员工的劳动关系管理,包括入职、转正、调动、离职、劳动合同、档案管理等。
设计文档主要内容:
1. 系统概述
1.1 系统目标
本系统旨在提供一个现代化的人力资源管理平台,实现人力资源各个环节的信息化管理,提高人力资源管理效率。
1.2 系统功能范围
系统包含以下主要功能模块:
• 规划管理
• 招聘配置
• 培养发展
• 薪酬管理
• 绩效管理
• 劳动关系
2. 系统架构
2.1 技术架构
• 后端框架:Flask 2.0.1
• 数据库:SQLAlchemy 1.4.23
• 前端框架:Bootstrap 4.5.2
• 图表库:ECharts 5.2.2
• 认证系统:Flask-Login 0.5.0
2.2 系统结构
hrms/
├── app/ # 应用主目录
│ ├── models/ # 数据模型
│ ├── routes/ # 路由控制
│ ├── templates/ # 页面模板
│ └── static/ # 静态资源
├── config.py # 配置文件
└── run.py # 启动文件
3. 功能模块设计
3.1 用户认证模块
- • 用户登录
- • 会话管理
- • 权限控制
3.2 规划管理模块
- • 人力资源发展规划
- • 职位评价体系
- • 任职资格管理
- • 干部管理体系
3.3 招聘配置模块
- • 招聘需求管理
- • 应聘者信息管理
- • 面试流程管理
- • 录用管理
3.4 培养发展模块
- • 培训计划管理
- • 培训实施管理
- • 培训评估
- • 职业发展规划
3.5 薪酬管理模块
- • 薪酬标准管理
- • 薪酬核算
- • 福利管理
- • 薪酬统计分析
3.6 绩效管理模块
- • 绩效指标管理
- • 绩效考核
- • 绩效分析
- • 绩效反馈
3.7 劳动关系模块
- • 劳动合同管理
- • 员工关系管理
- • 档案管理
- • 离职管理
4. 数据库设计
4.1 用户表(User)
字段名 | 类型 | 说明 |
id | Integer | 主键 |
username | String | 用户名 |
| String | 邮箱 |
password_hash | String | 密码哈希 |
role | String | 角色 |
4.2 部门表(Department)
字段名 | 类型 | 说明 |
id | Integer | 主键 |
name | String | 部门名称 |
description | Text | 部门描述 |
manager_id | Integer | 部门主管 |
4.3 员工表(Employee)
字段名 | 类型 | 说明 |
id | Integer | 主键 |
name | String | 姓名 |
department_id | Integer | 所属部门 |
position_id | Integer | 职位 |
status | String | 在职状态 |
entry_date | Date | 入职日期 |
5. 界面设计
5.1 登录界面
- • 简洁的登录表单
- • 用户名和密码输入
- • 错误提示功能
5.2 仪表盘
- • 员工总数统计
- • 部门人员分布
- • 人员流动趋势
- • 待办事项提醒
5.3 功能模块界面
- • 统一的导航栏
- • 响应式布局
- • 数据表格展示
- • 表单交互设计
设计文档下载地址:https://download.csdn.net/download/mosquito_lover1/90311504
项目结构:
hrms/
├── app/
│ ├── __init__.py
│ ├── models/
│ │ ├── __init__.py
│ │ ├── user.py
│ │ ├── department.py
│ │ ├── position.py
│ │ ├── employee.py
│ │ ├── salary.py
│ │ ├── performance.py
│ │ └── contract.py
│ ├── routes/
│ │ ├── __init__.py
│ │ ├── auth.py
│ │ ├── planning.py
│ │ ├── recruitment.py
│ │ ├── development.py
│ │ ├── salary.py
│ │ ├── performance.py
│ │ └── labor.py
│ ├── templates/
│ │ ├── base.html
│ │ ├── auth/
│ │ │ ├── login.html
│ │ │ └── register.html
│ │ └── admin/
│ └── static/
├── config.py
├── requirements.txt
└── run.py
配置文件:
import os
class Config:
SECRET_KEY = os.environ.get('SECRET_KEY') or 'your-secret-key-here'
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
'sqlite:///hrms.db'
SQLALCHEMY_TRACK_MODIFICATIONS = False
应用程序入口文件:
from app import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
应用程序工厂:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
from config import Config
db = SQLAlchemy()
login_manager = LoginManager()
login_manager.login_view = 'auth.login'
def create_app():
app = Flask(__name__)
app.config.from_object(Config)
db.init_app(app)
login_manager.init_app(app)
from app.routes import auth, planning, recruitment, development, salary, performance, labor
app.register_blueprint(auth.bp)
app.register_blueprint(planning.bp)
app.register_blueprint(recruitment.bp)
app.register_blueprint(development.bp)
app.register_blueprint(salary.bp)
app.register_blueprint(performance.bp)
app.register_blueprint(labor.bp)
return app
用户模型:
from app import db, login_manager
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import UserMixin
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
password_hash = db.Column(db.String(128))
role = db.Column(db.String(20), nullable=False, default='user')
def set_password(self, password):
self.password_hash = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.password_hash, password)
@login_manager.user_loader
def load_user(id):
return User.query.get(int(id))
认证路由:
from flask import Blueprint, render_template, redirect, url_for, flash, request
from flask_login import login_user, logout_user, login_required
from app.models.user import User
from app import db
bp = Blueprint('auth', __name__)
@bp.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = User.query.filter_by(username=username).first()
if user and user.check_password(password):
login_user(user)
return redirect(url_for('planning.index'))
flash('Invalid username or password')
return render_template('auth/login.html')
@bp.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('auth.login'))
基础模板:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="#">HRMS</a>
<div class="collapse navbar-collapse">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="{
{ url_for('planning.index') }}">规划管理</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{
{ url_for('recruitment.index') }}">招聘配置</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{
{ url_for('development.index') }}">培养发展</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{
{ url_for('salary.index') }}">薪酬管理</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{
{ url_for('performance.index') }}">绩效管理</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{
{ url_for('labor.index') }}">劳动关系</a>
</li>
</ul>
<ul class="navbar-nav ml-auto">
{% if current_user.is_authenticated %}
<li class="nav-item">
<a class="nav-link" href="{
{ url_for('auth.logout') }}">退出</a>
</li>
{% endif %}
</ul>
</div>
</nav>
<div class="container mt-4">
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<div class="alert alert-info">{
{ message }}</div>
{% endfor %}
{% endif %}
{% endwith %}
{% block content %}{% endblock %}
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.4/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
登陆模板:
{% extends "base.html" %}
{% block content %}
<div class="row justify-content-center">
<div class="col-md-6">
<div class="card">
<div class="card-header">登录</div>
<div class="card-body">
<form method="POST">
<div class="form-group">
<label for="username">用户名</label>
<input type="text" class="form-control" id="username" name="username" required>
</div>
<div class="form-group">
<label for="password">密码</label>
<input type="password" class="form-control" id="password" name="password" required>
</div>
<button type="submit" class="btn btn-primary">登录</button>
</form>
</div>
</div>
</div>
</div>
{% endblock %}