人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目
作者:mmseoamin日期:2023-12-27

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.任务与要求:

  1. 掌握数据库设计和实现的基本过程。
  2. 掌握数据库模式设计、分析和实现的方法。
  3. 了解数据库应用系统软件开发的一般过程。
  4. 学习相关的预备知识。
  5. 按照数据库设计与实现过程通过系统分析,从数据库数据和应用系统功能两方面设计实现一个完整的数据库应用系统。
  6. 培养团队合作精神,要求5-6人组成开发小组,每位同学承担开发过程中的不同角色。
  7. 每个小组需要答辩,讲解设计方案,演示系统运行,汇报分工合作情况。
  8. 撰写并提交课程设计报告课程设计说明。

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.概念模型图

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第1张

            图1    xpu_hrms概念模型

            2.概念结构设计——ER实体图

            2.1员工表

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第2张图2    ER图   员工实体


            2.2部门表

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第3张

            图3    ER图   部门实体

             

                    2.3文件(制度公告)表:

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第4张

            图4    ER图   文件实体

            2.4用户表:

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第5张

            图5    ER图   用户实体

            2.5职位表:

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第6张

            图6    ER图   职位实体

            2.6面试者表:

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第7张

            图7       ER图   简历实体

              

            3.概念结构设计——ER实体关系图

            关系图:

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第8张

            图8       ER图   实体关系

            ER图解释:

            一个员工隶属于一个部门,一个部门包含多个员工

            一个员工就职于一个职位,一个职位可以有多个员工

            一个部门拥有多个职位,一个职位可存在于多个部门

            一个内推面试者通过面试成为一名员工

            一名普通面试者通过笔试成为一名用户,一名用户通过面试成为一名员工

            一个用户管理多个文件

            四、应用系统功能模块

            1.具体模块分析及流程

            人力资源管理系统具体由机构管理、常用业务、权限管理、通知公告四部分组成。机构管理权限由总经理持有,总经理对人力资源管理具有所权限可以对公司部门、员工职位进行修改;总经理和人事部经理,拥有常用业务中入职管理、人事档案管理、求职者管理、和人才库管理;用户管理是用户自己进行用户账号管理和用户相应权限可操作范围管理,通知公告即公司公告的发布管理具体见图9所示:

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第9张

            图9          系统功能模块图

            系统登录流程图:

            不同的员工账号具有不同的权限,登录系统后显示的界面及功能不同,详见图10。

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第10张

            图10        登录流程图

            2.总体业务流程:

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第11张

            图11   总体业务流程

            五、数据库逻辑结构设计:

            1.ER图——关系模型转化

            1.1员工关系模型:

            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    数据字典   简历表

            六、详细设计及实现

            1.建立数据库(表,视图,索引等

            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
            

             2.编码规范定义:

            名称

            规范

            常量名

            全大写

            魔法字(无意义的常量和变量)

            不允许

            变量名、方法名

            驼峰命名规则

            全局字符编码

            utf8

            表8          编码规范

            3.界面设计:

                登录首页展示,(前端界面来自于网络)如图12:

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第12张

            图12   页面设计

            4.项目文件结构及说明

            人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目,第13张

            图13   项目文件结构

            5.源程序代码

            详见github仓库

            https://github.com/whd1996/hrms