SpringBoot人力资源管理系统
数据库采用 sqlserver2019或mysql8.0
• 环境及技术说明:页面全部为html页面,交互由ajax与Bootstrap-table完成
目前项目已修改为mysql数据库,如果想要使用sqlserver数据库
只需要将com.xpu.hrms.data.source.config.DataBaseConfigure文件中注解
@ConfigurationProperties(prefix = "mysql .datasource.hrms") 中的mysql改为sqlserver
将pom文件中mysql驱动依赖注释掉并反向注释sqlserver驱动依赖
同时时将application.properties属性文件中的有关mysql配置注释掉,有关sqlserver配置反向注释即可
1.设计题目
人力资源管理系统
人力资源部门希望建立一个数据库来管理它的员工。一个公司有几个部门,而一个员工属于一个部门。这个部门指派一个经理来全面负责部门事务和部门员工。为了有助于管理好部门工作,某些工作人员被任命来管理一组人员。当有一个新的员工进入公司时,需要他以前的工作经历和成绩。通常来说,每个员工都要经历一次面试,这通常是由经理来进行的。公司定义了一系列的职位类型,例如经理、业务分析员、销售人员和秘书,而且每个类型都有相关的等级,员工所处的位置决定了员工的工资。职位依据其工作量来分配给一个部门。例如,一个部门可能分配给两个业务分析员的职位。每个岗位会分配给一个员工,随着时间的过去,各个职位都会被分配给工作人员。
2.任务与要求:
3.开发环境说明
名称 | 工具及版本 |
Java | Jdk1.8 |
开发工具 | Eclipse IDE Version: 2022-03 |
数据库 | Sql server2019 |
数据库连接池 | Druid1.1.0 |
服务器 | Tomcat 9.0 |
代码仓库 | 本地 |
后端框架 | Springboot2.0.4+mybatis1.3.2 |
前端框架 | BootStrap框架+jQuery |
构建工具 | Maven3.84 |
文件字符编码 | Utf8 |
表1 开发环境说明
1.做一个人力资源管理系统 ,要求采用前后端分离、分布式架构。
2.要求能够实现以下功能:
其他部门员工登录时提示无权限使用该系统。只有总经理和隶属人事部的人员才能使用。
入职管理:即为面试,只有总经理才能决定面试结果。
人事档案管理:即为员工信息的增删改查,修改职位同时会更新员工的账号权限。
人才库管理:离职员工不会真正删除,也会存到人才库中。
求职者管理:即为初次求职者信息的录入,进行笔试,通过笔试的人才可以推荐前往面试(面试全部由总经理进行)。直接添加或注册的账户视为内推账户,可以免笔试进行面试。
上述各业务依据人事部员工职位的不同而具有不同的增删改权限。
制度文件(公告)管理:制度文件与通知公告的增、删、改、查。权限会根据职位有所不同
图1 xpu_hrms概念模型
图2 ER图 员工实体
图3 ER图 部门实体
图4 ER图 文件实体
2.4用户表:
图5 ER图 用户实体
2.5职位表:
图6 ER图 职位实体
2.6面试者表:
图7 ER图 简历实体
3.概念结构设计——ER实体关系图
关系图:
图8 ER图 实体关系
ER图解释:
一个员工隶属于一个部门,一个部门包含多个员工
一个员工就职于一个职位,一个职位可以有多个员工
一个部门拥有多个职位,一个职位可存在于多个部门
一个内推面试者通过面试成为一名员工
一名普通面试者通过笔试成为一名用户,一名用户通过面试成为一名员工
一个用户管理多个文件
1.具体模块分析及流程
人力资源管理系统具体由机构管理、常用业务、权限管理、通知公告四部分组成。机构管理权限由总经理持有,总经理对人力资源管理具有所权限可以对公司部门、员工职位进行修改;总经理和人事部经理,拥有常用业务中入职管理、人事档案管理、求职者管理、和人才库管理;用户管理是用户自己进行用户账号管理和用户相应权限可操作范围管理,通知公告即公司公告的发布管理具体见图9所示:
图9 系统功能模块图
系统登录流程图:
不同的员工账号具有不同的权限,登录系统后显示的界面及功能不同,详见图10。
图10 登录流程图
2.总体业务流程:
图11 总体业务流程
db_staff(id,name,sex,age,place,birth,tel,staff_department,staff_position,entry_time,leave_time,isdelete)
1.2部门关系模型:
db_department(id,department_name,position,duty)
1.3文件关系模型:
file(id,file_name,file_content,0post_time,post_staff)
1.4用户关系模型:
db_user(id,staff_name,user_account,user_password,creat time,role_id)
1.5职位关系模型
db_position(id,position_level,position_salary,position)
1.6简历关系模型:
db_Interviewee(id,name,sex,age,desired_position,desired_department,work_experience,work_grade)
2.数据字典
2.1员工表:
编号 | 数据项名 | 数据项含义 | 与其他数据项的关系 | 存储结构 | |
db_staff | D1-1 | id | 员工编号 | 员工表主码 | char(32) |
D1-2 | name | 员工性名 | 属性 | varchar(50) | |
D1-3 | sex | 员工性别 | 属性 | varchar(20) | |
D1-4 | birth | 出生日期 | 属性 | datetime | |
D1-5 | place | 出生地 | 属性 | varchar(50) | |
D1-6 | age | 员工年龄 | 属性 | int | |
D1-7 | tel | 员工电话 | 属性 | varchar(50) | |
D1-8 | department | 部门 | 部门表id外码 | varchar(50) | |
D1-9 | position | 员工职位 | 职位表id外码 | varchar(50) | |
D1-10 | entry-time | 入职时间 | 属性 | Datetime | |
D1-11 | leave-time | 离职时间 | 属性 | Datetime | |
D1-12 | isdelete | 工作状态 | 属性 | varchar(10) |
表2 数据字典 员工表
2.2部门表:
数据项 编号 | 数据项名 | 数据项含义 | 与其他数据项的关系 | 存储结构 | |
db_department | D5-1 | id | 部门编号 | 部门表主码 | varchar(50) |
D5-2 | name | 部门名称 | 主属性 | varchar(50) | |
D5-3 | position | 部门职务 | 属性 | varchar(50) | |
D5-4 | duty | 部门职责 | 属性 | varchar(255) |
表3 数据字典 部门表
2.3文件表:
数据项 编号 | 数据项名 | 数据项含义 | 与其他数据项的关系 | 存储结构 | |
db_file | D3-1 | id | 文件编号 | 档案表主码 | Char(32) |
D3-2 | file_name | 文件名 | 属性 | varchar(255) | |
D3-3 | file_content | 文件内容 | 属性 | varchar(255) | |
D3-4 | post_time | 入档时间 | 从属 | datetime | |
D3-5 | post_staff | 入档人员 | 员工表id外码 | char(32) |
表4 数据字典 文件表
2.4用户表:
数据项 编号 | 数据项名 | 数据项含义 | 与其他数据项的关系 | 存储结构 | |
db_user | D4-1 | id | 用户编号 | 用户表主码 | Char(32) |
D4-2 | staff_name | 用户姓名 | 属性 | varchar(50) | |
D4-3 | user_account | 账户 | 主属性 | varchar(50) | |
D4-4 | user_password | 用户密码 | 属性 | varchar(50) | |
D4-5 | creat_time | 创建时间 | 属性 | datetme | |
D4-6 | role_id | 用户ID | 属性 | int |
表5 数据字典 用户表
2.5职位表:
数据项 编号 | 数据项名 | 数据项含义 | 与其他数据项的关系 | 存储结构 | |
db_position | D5-1 | id | 职位编号 | 职位表主码 | varchar(32) |
D5-2 | position_level | 职位等级 | 属性 | char(50) | |
D5-3 | position_salary | 职位薪资 | 属性 | real | |
D5-4 | position | 职位 | 职位表id外码 | varchar(50) |
表6 数据字典 职位表
2.6简历表:
数据项 编号 | 数据项名 | 数据项含义 | 与其他数据项的关系 | 存储结构 | |
db_interviewee | D6-1 | id | 面试者编号 | 面试者表主码 | char(32) |
D6-2 | name | 面试者姓名 | 属性 | varchar(50) | |
D6-3 | sex | 面试者性别 | 属性 | varchar(20) | |
D6-4 | age | 面试者年龄 | 属性 | int | |
D6-5 | desired_position | 期望职位 | 属性 | varchar(50) | |
D6-6 | desired_department | 期望部门 | 属性 | varchar(50) | |
D6-7 | work_experience | 工作经验 | 属性 | varchar(255) | |
D6-8 | work_grade | 工作成绩 | 属性 | varchar(50) |
表7 数据字典 简历表
CREATE DATABASE xpu_hrms; USE xpu_hrms; -- ---------------------------- -- Table structure for db_department -- ---------------------------- IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[db_department]') AND type IN ('U')) DROP TABLE [dbo].[db_department] GO CREATE TABLE [dbo].[db_department] ( [id] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL, [department_name] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL, [position] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL, [duty] varchar(255) COLLATE Chinese_PRC_CI_AS NOT NULL ) GO ALTER TABLE [dbo].[db_department] SET (LOCK_ESCALATION = TABLE) GO EXEC sp_addextendedproperty 'MS_Description', N'部门名', 'SCHEMA', N'dbo', 'TABLE', N'db_department', 'COLUMN', N'department_name' GO EXEC sp_addextendedproperty 'MS_Description', N'职位类型 职位名', 'SCHEMA', N'dbo', 'TABLE', N'db_department', 'COLUMN', N'position' GO EXEC sp_addextendedproperty 'MS_Description', N'职责', 'SCHEMA', N'dbo', 'TABLE', N'db_department', 'COLUMN', N'duty' GO -- ---------------------------- -- Table structure for db_file -- ---------------------------- IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[db_file]') AND type IN ('U')) DROP TABLE [dbo].[db_file] GO CREATE TABLE [dbo].[db_file] ( [id] char(32) COLLATE Chinese_PRC_CI_AS NOT NULL, [file_name] varchar(255) COLLATE Chinese_PRC_CI_AS NOT NULL, [file_content] varchar(255) COLLATE Chinese_PRC_CI_AS NOT NULL, [post_time] datetime NOT NULL, [post_staff] char(32) COLLATE Chinese_PRC_CI_AS NOT NULL ) GO ALTER TABLE [dbo].[db_file] SET (LOCK_ESCALATION = TABLE) GO -- ---------------------------- -- Table structure for db_interviewee -- ---------------------------- IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[db_interviewee]') AND type IN ('U')) DROP TABLE [dbo].[db_interviewee] GO CREATE TABLE [dbo].[db_interviewee] ( [id] char(32) COLLATE Chinese_PRC_CI_AS NOT NULL, [name] varchar(50) COLLATE Chinese_PRC_CI_AS NULL, [sex] varchar(20) COLLATE Chinese_PRC_CI_AS NULL, [age] int NULL, [desired_position] varchar(50) COLLATE Chinese_PRC_CI_AS NULL, [desired_department] varchar(50) COLLATE Chinese_PRC_CI_AS NULL, [work_experience] varchar(255) COLLATE Chinese_PRC_CI_AS NULL, [work_grade] varchar(50) COLLATE Chinese_PRC_CI_AS NULL ) GO ALTER TABLE [dbo].[db_interviewee] SET (LOCK_ESCALATION = TABLE) GO -- ---------------------------- -- Table structure for db_position -- ---------------------------- IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[db_position]') AND type IN ('U')) DROP TABLE [dbo].[db_position] GO CREATE TABLE [dbo].[db_position] ( [id] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL, [position_level] char(50) COLLATE Chinese_PRC_CI_AS NOT NULL, [position_salary] real DEFAULT 0 NULL, [position] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL ) GO ALTER TABLE [dbo].[db_position] SET (LOCK_ESCALATION = TABLE) GO -- ---------------------------- -- Table structure for db_staff -- ---------------------------- IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[db_staff]') AND type IN ('U')) DROP TABLE [dbo].[db_staff] GO CREATE TABLE [dbo].[db_staff] ( [id] char(32) COLLATE Chinese_PRC_CI_AS NOT NULL, [name] varchar(50) COLLATE Chinese_PRC_CI_AS NULL, [sex] varchar(20) COLLATE Chinese_PRC_CI_AS NULL, [age] int NULL, [place] varchar(50) COLLATE Chinese_PRC_CI_AS NULL, [birth] datetime NULL, [tel] varchar(50) COLLATE Chinese_PRC_CI_AS NULL, [staff_department] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL, [staff_position] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL, [entry_time] datetime NULL, [leave_time] datetime NULL, [isdelete] varchar(10) COLLATE Chinese_PRC_CI_AS NULL ) GO ALTER TABLE [dbo].[db_staff] SET (LOCK_ESCALATION = TABLE) GO -- ---------------------------- -- Table structure for db_user -- ---------------------------- IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[db_user]') AND type IN ('U')) DROP TABLE [dbo].[db_user] GO CREATE TABLE [dbo].[db_user] ( [id] char(32) COLLATE Chinese_PRC_CI_AS NOT NULL, [staff_name] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL, [user_account] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL, [user_password] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL, [creat_time] datetime NOT NULL, [role_id] int NOT NULL ) GO ALTER TABLE [dbo].[db_user] SET (LOCK_ESCALATION = TABLE) GO -- ---------------------------- -- Primary Key structure for table db_department -- ---------------------------- ALTER TABLE [dbo].[db_department] ADD CONSTRAINT [PK__db_depar__3213E83F09B759E2] PRIMARY KEY CLUSTERED ([id]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO -- ---------------------------- -- Primary Key structure for table db_file -- ---------------------------- ALTER TABLE [dbo].[db_file] ADD CONSTRAINT [PK__db_file__3213E83F09615A31] PRIMARY KEY CLUSTERED ([id]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO -- Primary Key structure for table db_interviewee -- ---------------------------- ALTER TABLE [dbo].[db_interviewee] ADD CONSTRAINT [PK__db_inter__3213E83F7DB31B7E] PRIMARY KEY CLUSTERED ([id]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO -- ---------------------------- -- Primary Key structure for table db_position -- ---------------------------- ALTER TABLE [dbo].[db_position] ADD CONSTRAINT [PK__db_posit__3213E83FCA3D5B20] PRIMARY KEY CLUSTERED ([id]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO -- ---------------------------- -- Primary Key structure for table db_staff -- ---------------------------- ALTER TABLE [dbo].[db_staff] ADD CONSTRAINT [PK__db_staff__3213E83F739A3F95] PRIMARY KEY CLUSTERED ([id]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO -- ---------------------------- -- Primary Key structure for table db_user -- ---------------------------- ALTER TABLE [dbo].[db_user] ADD CONSTRAINT [PK__db_user__3213E83F1A21E87A] PRIMARY KEY CLUSTERED ([id]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO -- ---------------------------- -- Foreign Keys structure for table db_file -- ---------------------------- ALTER TABLE [dbo].[db_file] ADD CONSTRAINT [FK__db_file__post_st__00DF2177] FOREIGN KEY ([post_staff]) REFERENCES [dbo].[db_user] ([id]) ON DELETE NO ACTION ON UPDATE NO ACTION GO -- ---------------------------- -- Foreign Keys structure for table db_interviewee -- ---------------------------- ALTER TABLE [dbo].[db_interviewee] ADD CONSTRAINT [FK__db_interview__id__03BB8E22] FOREIGN KEY ([id]) REFERENCES [dbo].[db_user] ([id]) ON DELETE CASCADE ON UPDATE CASCADE GO -- ---------------------------- -- Foreign Keys structure for table db_position -- ---------------------------- ALTER TABLE [dbo].[db_position] ADD CONSTRAINT [FK__db_positi__posit__05A3D694] FOREIGN KEY ([position]) REFERENCES [dbo].[db_department] ([id]) ON DELETE NO ACTION ON UPDATE NO ACTION GO -- ---------------------------- -- Foreign Keys structure for table db_staff -- ---------------------------- ALTER TABLE [dbo].[db_staff] ADD CONSTRAINT [FK__db_staff__id__04AFB25B] FOREIGN KEY ([id]) REFERENCES [dbo].[db_interviewee] ([id]) ON DELETE NO ACTION ON UPDATE NO ACTION GO ALTER TABLE [dbo].[db_staff] ADD CONSTRAINT [FK__db_staff__staff___7849DB76] FOREIGN KEY ([staff_position]) REFERENCES [dbo].[db_position] ([id]) ON DELETE NO ACTION ON UPDATE NO ACTION GO ALTER TABLE [dbo].[db_staff] ADD CONSTRAINT [FK__db_staff__staff___7C1A6C5A] FOREIGN KEY ([staff_department]) REFERENCES [dbo].[db_department] ([id]) ON DELETE NO ACTION ON UPDATE NO ACTION GO ALTER TABLE [dbo].[db_staff] ADD CONSTRAINT [FK__db_staff__id__7D0E9093] FOREIGN KEY ([id]) REFERENCES [dbo].[db_user] ([id]) ON DELETE NO ACTION ON UPDATE NO ACTION GO
名称 | 规范 |
常量名 | 全大写 |
魔法字(无意义的常量和变量) | 不允许 |
变量名、方法名 | 驼峰命名规则 |
全局字符编码 | utf8 |
表8 编码规范
登录首页展示,(前端界面来自于网络)如图12:
图12 页面设计
4.项目文件结构及说明
图13 项目文件结构
详见github仓库
https://github.com/whd1996/hrms