摘 要
在当今信息化时代,企业人事管理的重要性愈发凸显。贵州富强信息技术有限公司作为一家新兴企业,迫切需要一套高效便捷的人事管理系统来规范和优化人力资源管理流程。基于Spring Boot框架的人事管理系统的开发,将为公司提供一种全面、智能的人事管理解决方案,助力公司实现人力资源的科学配置和精细化管理。通过该系统的建设,公司将能够更好地管理招聘流程、员工信息、培训计划和考勤工资等方面,提升管理本研究旨在开发基于Spring Boot框架的人事管理系统,专为贵州富强信息技术有限公司设计。该系统旨在提供全面的人事管理解决方案,涵盖了管理员、普通用户、员工用户和人事用户四个角色的功能模块效率,促进员工发展,推动企业的可持续发展;旨在提升公司人事管理效率,优化培训和考勤流程,增强工资管理准确性,实现智能化和规范化的人事管理操作。
关键词:人事管理系统;Springboot框架;Java技术
Springboot Human Resource Management System
abstract
Human resource management is crucial for the development and success of enterprises. With the expansion of enterprise scale and the complexity of organizational structure, traditional human resource management methods are no longer able to meet the growing demand. Therefore, many enterprises have begun to adopt information systems to support human resource management processes, improve efficiency, accuracy, and data reliability. This study aims to develop a fully functional human resource management system based on Spring Boot to meet the needs of enterprises for human resource management. Firstly, through research and analysis of existing human resource management systems, we have identified the functional requirements and characteristics of the system. Then, we used Spring Boot as the development framework, combined with MySQL database for data storage and management, to achieve core functional modules such as employee information management, salary and benefits management, performance evaluation, and training development.After functional testing and performance evaluation, the results show that the system can effectively support the human resource management process of enterprises, improve management efficiency and data accuracy. In addition, the system also has good stability and scalability, which can adapt to enterprises of different scales and needs.
In summary, a fully functional human resource management system has been successfully developed based on Spring Boot, providing enterprises with efficient, accurate, and reliable human resource management tools. In the future, system functionality can be further improved and user experience optimized to meet the constantly changing needs of human resource management.
Keywords: Human Resource Management System;Springboot Framework; Java Technology
目 录
1 绪 论
1.1选题背景
在当今信息化快速发展的时代背景下,企业人力资源管理的重要性日益凸显。贵州富强信息技术有限公司作为一家新兴企业,面临着人力资源管理的挑战和机遇。传统的人事管理模式已经无法满足企业快速发展的需求,因此开发一套基于Spring Boot框架的人事管理系统势在必行。这样的系统将能够为公司提供高效、智能的人事管理解决方案,实现人力资源的科学配置和精细化管理,提升企业管理效率和员工工作质量。通过系统的建设,贵州富强信息技术有限公司将更好地应对日益复杂的人力资源管理挑战,推动企业向数字化、智能化管理转型,为企业的可持续发展奠定坚实基础。
1.2研究意义
本研究致力于开发基于Spring Boot框架的人事管理系统,旨在为贵州富强信息技术有限公司提供全面的人事管理解决方案。该系统将提升管理效率,优化人才管理,提供智能决策支持,推动企业数字化转型,促进企业可持续发展。通过引入先进的信息技术和管理模式,该系统有望提高企业管理水平和竞争力,为企业的长期发展奠定坚实基础。
1.3研究内容
本研究旨在设计和实现基于Spring Boot框架的人事管理系统,专为贵州富强信息技术有限公司量身定制。系统将涵盖管理员、普通用户、员工用户和人事用户四个角色的功能模块,包括后台管理、招聘信息、员工档案、考勤工资等内容。通过系统的建设,旨在提升管理效率,优化人才管理,提供智能决策支持,推动数字化转型,促进企业可持续发展;该系统的功能模块确认完成后进行程序及界面的设计,设计完成后,并且通过测试来判断程序是否完善,对于系统测试,需要不同的用户进行不同的内容编辑及提交,及使用不同的测试方式找出程序中存在的漏洞,并对程序出现的漏洞问题进行在线解决处理,如果测试系统没有任何问题时,可以将系统上传进行正式操作使用。
1.4研究方法
本研究将采用综合的研究方法,包括文献综述与调研、系统分析与设计、技术选型与开发、系统测试与评估以及成果评价与比较。通过对相关文献的综述和调研,了解人事管理系统的发展现状和最佳实践。在此基础上,进行系统需求分析和功能设计,并使用Spring Boot等技术进行系统开发。对开发完成的系统进行功能测试、性能评估和用户体验测试,收集用户反馈并进行系统优化和改进。最后,对所开发的人事管理系统进行评价,与现有系统进行比较,验证其有效性和优势。通过综合应用这些研究方法,本研究旨在设计和开发一款功能全面、易用且可靠的人事管理系统,推动人事管理的现代化和信息化发展。
1.5 开发技术
在开发基于Spring Boot框架的网络文学交流分享平台时,需要考虑以下技术:Spring Boot框架:作为主要的开发框架,Spring Boot提供了快速开发和简化配置的特性,能够帮助开发人员快速搭建Web应用程序。
Spring框架:Spring框架提供了全面的企业级开发解决方案,包括依赖注入、面向切面编程等功能,与Spring Boot结合使用可以提高开发效率。
MySQL数据库:作为关系型数据库管理系统,MySQL可用于存储用户信息、作品内容等数据,通过JPA或MyBatis等持久化框架与Spring Boot进行集成。
前端技术:可以选择Vue.js、React等现代前端框架进行开发,实现交互性强、用户体验好的前端界面。
Java语言:Java作为一种跨平台、面向对象的编程语言,在开发网络文学交流分享平台中发挥着重要作用。通过Java语言的强大特性和丰富的生态系统,开发人员可以利用其稳定性、可靠性和安全性,快速构建功能完善、高效运行的应用程序。Java的广泛应用于企业级开发、大型系统和互联网应用领域,其优秀的性能和可扩展性使其成为开发网络文学平台的理想选择。
1.5.1 JAVA技术
JAVA语言是目前软件市场上应用最广泛的语言开发程序。可以在多种平台上运用的,兼容性比较强,适应市面上大多数操作系统,不会出现乱码的现像,其扩展性和维护性都更好,具有分析问题和解决问题的能力,是面向过程的程序设计方便我们编写的代码更强壮。
JAVA相对其它语言来说,比较简单,编译起来更方便一些,安全可靠性高。不完全统计,现在全世界大约有2000多万人在使用它,JAVA既可以镶嵌使用又可以独力的使用。JAVA大致可以分成两个部分,一种部分是JAVA负责的编译,另一种是JAVA负责的运行。JAVA和C++语言很相像,但JAVA在编程时是一种以对象为导向的方式来进行编译的,使得编出来的软件可以单机使用,也可以在互联网上使用,检查出错更为方便。JAVA分布式、体系结构中立的特点也使得其存储更快,编议更简单。面向对象包括四个特点,一是封装,就是说在定义类的时候可以实现一定的功能和属性。二是抽象,属于类的一种,可以把一个具有共同属性的类封装在一个抽象里,便于简单编议。三是继承,顾名思义就是带有前者的特性。还有一个就是多态的特点,可以多种一起运用,表现了它可扩展性好。
1.5.2 MVVM模式
MVVM模式是常用的开发模式,主要是在代码实现上将其分为M层、V层和C层。
视图(View)代表用户交互界面,一个 Web 应用就可能有很多的界面,在 MVVM 模式中,视图仅仅处理的只有数据采集、处理,还有用户的请求, 并不包括业务流程的处理,业务流程由模型(Model)来处理。
模型(Model)就是业务流程/状态的处理及业务规则的制定。模型处理业务流程的过程其它层是无法看见了的,它就像黑箱子,在接受视图请求的数据之后,然后返回最终的处理结果。MVVM 最主要的核心就是业务模型的设计,一个典型的应用例子就是目前流行的 EJB 模型,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但是它不能作为应用设计模型的框架。
控制器(Controller)可以理解为接收用户的请求,然后视图和模型匹配在一起,一起再完成用户请求。它有非常明显的作用在划分控制层上,可以很清晰地告诉你,它就是一个分发器,选择什么样的模型、视图,可以完成用户的什么样的请求。控制层不做所有的数据处理,比如说:用户点击一个连接,控制层接受到请求之后,并不处理业务信息,它只是向模型传递用户的信息,同时告诉模型做什么,然后选择符合需求的视图返回给用户。
1.5.3 B/S结构
B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。
1.5.4 Spring boot框架
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。
1.5.5 Mysql数据库
Mysql 经过多次的更新,功能层面已经非常的丰富和完善了,从Mysql4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的Mysql支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷。
针对本文中设计的人事管理系统在实际的实现过程中,最终选择Mysql数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的Mysql来对人事管理系统后台数据进行存储操作。
2 系统分析
2.1 可行性分析
本研究基于Spring Boot框架开发人事管理系统的可行性分析主要包括技术可行性、经济可行性和操作可行性三个方面
该系统主要使用Springboot框架啊和MySQL数据库进行开发,Java易于学习和使用灵活。Spring Boot的人事管理系统具有技术、经济、时间和需求上的可行性。采用Spring Boot作为开发框架,可以快速开发、易于配置和扩展,因此开发难度不高,所以从技术上来说是可行的。
本系统设计所选择的开发工具和服务器都是免费的开源软件,又或者是适合学生使用的免费版本,并不需要支付费用,考虑到人力资源管理的重要性和效益,以及信息化系统带来的效率提升和数据准确性改善,具备经济可行性。
社会可行性主要包括法律和用户两个方面,下面将从这两方面进行分析。
(1)法律因素
在法律方面,开发人事管理系统需要遵守相关的劳动法规和隐私保护法律。确保员工信息的合法收集、存储和处理,并保护用户隐私权。同时,还需遵守数据安全和保护的相关法规,确保系统的合规性和数据的安全性。
(2)用户可行性
在用户可行性方面,人事管理系统应该具备易用性和用户友好的界面设计,使得用户能够轻松上手和操作系统。此外,系统还应提供灵活的配置选项,允许用户根据自身需求进行个性化设置。满足用户的需求和期望,提升用户体验,才能在社会中获得广泛的接受和支持。
2.2总体设计原则
一个系统要在开发和维护的过程中方便使用,必须采取一定的设计原则,其主要设计原则有:
简单性:系统功能简单易懂,只需要掌握基本的计算机操作能力即可使用。
针对性:针对特定的用户,没有多余的其他功能,使用户可以专心使用。
先进性:本系统的代码采用读取数据的方式,方便后续开发、拓展。
2.3 系统需求分析
人事管理系统需要满足的需求有以下几个:
1.信息获取方便,用户可在网页上快速浏览到新的信息
2.查看招聘信息等。
3.注册登录,需要吸引用户,即通过注册来提高用户的存留率。
4.修改用户信息,可以修改用户密码或者用户名等一些个性化操作。
5.管理员功能,管理员可以对用户或者招聘信息、员工信息、薪酬福利等进行管理。
6.系统安全,操作简便,不过于复杂。
7.系统可以稳定运行,不存在卡顿等问题造成用户反感。
2.4 业务流程分析
2.4.1登录流程
登录模块主要满足管理员以及用户的权限登录,用户登录流程图如图2-1所示。
图2-1 登录流程图
2.4.2注册流程
未有账号的用户可进入注册界面进行注册操作,用户注册流程图如图2-2所示。
图2-2 注册流程图
2.4.3添加信息流程
用户在添加信息时,信息编号自动生成,系统会对添加的信息进行验证,验证通过则添加至数据库,添加信息成功,反之添加失败。添加信息流程如图2-3所示。
图2-3 添加信息流程图
2.4.4删除信息流程
用户可选择要删除的信息进行信息删除操作,在删除信息时系统提示是否确定删除信息,是则删除信息成功,系统数据库将信息进行删除。删除信息流程图如图2-4所示。
图2-4删除信息流程图
3 系统设计
3.1 系统概要设计
人事管理系统选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图3-1所示:
图3-1 系统工作原理图
3.2系统结构设计
整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。
本人事管理系统结构图如图3-2所示。
图3-2 人事管理系统结构图
3.3 数据库设计
数据库可以说是所有软件的根本,如果数据库存在缺陷,那么会导致系统开发的不顺利、维护困难、用户使用不顺畅等一系列问题,严重时将会直接损害企业的利益,同时在开发完成后,数据库缺陷也更加难以解决。所以必须要对数据库设计重点把握,做到认真细致。因此,数据库设计是这个人事管理系统的重点要素。
3.3.1功能用例结构设计
(1)管理员实体属性图如下图3-3所示
图3-3管理员实体属性图
(2) 员工用户属性如下图3-4所示
图3-4员工用户属性图
(3) 普通用户属性如下图3-5所示
图3-5普通用户属性图
(4) 人事用户属性如下图3-5所示
图3-5人事用户属性图
(4)人事管理系统总E-R图如下图3-6所示
图3-6人事管理系统总E-R图
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
表attendance_information (考勤信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | attendance_information_id | int | 10 | 0 | N | Y | 考勤信息ID | |
2 | personnel_users | int | 10 | 0 | Y | N | 0 | 人事用户 |
3 | personnel_name | varchar | 64 | 0 | Y | N | 人事姓名 | |
4 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
5 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
6 | leave_days | int | 10 | 0 | Y | N | 0 | 请假天数 |
7 | attendance_days | int | 10 | 0 | Y | N | 0 | 出勤天数 |
8 | overtime_days | int | 10 | 0 | Y | N | 0 | 加班天数 |
9 | compensatory_leave_days | int | 10 | 0 | Y | N | 0 | 调休天数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表department_information (部门信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | department_information_id | int | 10 | 0 | N | Y | 部门信息ID | |
2 | department_information | varchar | 64 | 0 | Y | N | 部门信息 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | employee_files_id | int | 10 | 0 | N | Y | 员工档案ID | |
2 | personnel_users | int | 10 | 0 | Y | N | 0 | 人事用户 |
3 | personnel_name | varchar | 64 | 0 | Y | N | 人事姓名 | |
4 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
5 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
6 | employee_gender | varchar | 64 | 0 | Y | N | 员工性别 | |
7 | home_address | varchar | 64 | 0 | Y | N | 家庭住址 | |
8 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
9 | employee_photos | varchar | 255 | 0 | Y | N | 员工照片 | |
10 | department_name | varchar | 64 | 0 | Y | N | 部门名称 | |
11 | date_of_employment | date | 10 | 0 | Y | N | 入职日期 | |
12 | educational_background | varchar | 64 | 0 | Y | N | 教育背景 | |
13 | remarks | text | 65535 | 0 | Y | N | 备注信息 | |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | employee_users_id | int | 10 | 0 | N | Y | 员工用户ID | |
2 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
3 | employee_gender | varchar | 64 | 0 | Y | N | 员工性别 | |
4 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | employment_notice_id | int | 10 | 0 | N | Y | 录用通知ID | |
2 | personnel_users | int | 10 | 0 | Y | N | 0 | 人事用户 |
3 | personnel_name | varchar | 64 | 0 | Y | N | 人事姓名 | |
4 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
5 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
6 | position_name | varchar | 64 | 0 | Y | N | 职位名称 | |
7 | notification_content | text | 65535 | 0 | Y | N | 通知内容 | |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | interview_arrangement_id | int | 10 | 0 | N | Y | 面试安排ID | |
2 | personnel_users | int | 10 | 0 | Y | N | 0 | 人事用户 |
3 | personnel_name | varchar | 64 | 0 | Y | N | 人事姓名 | |
4 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
5 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
6 | position_name | varchar | 64 | 0 | Y | N | 职位名称 | |
7 | interview_time | date | 10 | 0 | Y | N | 面试时间 | |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表job_application_information (应聘信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | job_application_information_id | int | 10 | 0 | N | Y | 应聘信息ID | |
2 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | personnel_users | int | 10 | 0 | Y | N | 0 | 人事用户 |
5 | personnel_name | varchar | 64 | 0 | Y | N | 人事姓名 | |
6 | position_name | varchar | 64 | 0 | Y | N | 职位名称 | |
7 | personal_resume | varchar | 255 | 0 | Y | N | 个人简历 | |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | personnel_users_id | int | 10 | 0 | N | Y | 人事用户ID | |
2 | personnel_name | varchar | 64 | 0 | Y | N | 人事姓名 | |
3 | contact_number | varchar | 64 | 0 | Y | N | 联系电话 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表recruitment_information (招聘信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | recruitment_information_id | int | 10 | 0 | N | Y | 招聘信息ID | |
2 | personnel_users | int | 10 | 0 | Y | N | 0 | 人事用户 |
3 | personnel_name | varchar | 64 | 0 | Y | N | 人事姓名 | |
4 | position_name | varchar | 64 | 0 | Y | N | 职位名称 | |
5 | recruitment_poster | varchar | 255 | 0 | Y | N | 招聘海报 | |
6 | recruitment_number | int | 10 | 0 | Y | N | 0 | 招聘人数 |
7 | educational_requirements | varchar | 64 | 0 | Y | N | 学历要求 | |
8 | job_introduction | text | 65535 | 0 | Y | N | 职位简介 | |
9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | salary_information_id | int | 10 | 0 | N | Y | 工资信息ID | |
2 | personnel_users | int | 10 | 0 | Y | N | 0 | 人事用户 |
3 | personnel_name | varchar | 64 | 0 | Y | N | 人事姓名 | |
4 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
5 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
6 | basic_salary | int | 10 | 0 | Y | N | 0 | 基本薪资 |
7 | achievement_bonus | int | 10 | 0 | Y | N | 0 | 绩效奖金 |
8 | overtime_pay | int | 10 | 0 | Y | N | 0 | 加班工资 |
9 | welfare_allowance | int | 10 | 0 | Y | N | 0 | 福利津贴 |
10 | leave_deduction | int | 10 | 0 | Y | N | 0 | 请假扣款 |
11 | total_salary | varchar | 64 | 0 | Y | N | 工资总计 | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | training_activities_id | int | 10 | 0 | N | Y | 培训活动ID | |
2 | personnel_users | int | 10 | 0 | Y | N | 0 | 人事用户 |
3 | personnel_name | varchar | 64 | 0 | Y | N | 人事姓名 | |
4 | activity_name | varchar | 64 | 0 | Y | N | 活动名称 | |
5 | activity_poster | varchar | 255 | 0 | Y | N | 活动海报 | |
6 | training_time | datetime | 19 | 0 | Y | N | 培训时间 | |
7 | training_content | text | 65535 | 0 | Y | N | 培训内容 | |
8 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | training_information_id | int | 10 | 0 | N | Y | 培训信息ID | |
2 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
3 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
4 | personnel_users | int | 10 | 0 | Y | N | 0 | 人事用户 |
5 | personnel_name | varchar | 64 | 0 | Y | N | 人事姓名 | |
6 | activity_name | varchar | 64 | 0 | Y | N | 活动名称 | |
7 | training_time | varchar | 64 | 0 | Y | N | 培训时间 | |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
第4章 系统实现
4.1普通用户功能模块
用户注册:用户在注册页面通过填写用户账号、密码、昵称、姓名、邮箱、电话等信息完成用户注册,如图4-1所示。
图4-1用户注册界面图
用户注册逻辑代码如下:
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = service.readBody(request.getReader());
query.put("username",String.valueOf(map.get("username")));
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
baseMapper.insert(entity);
log.info("[{}] - 插入操作:{}",entity);
}
用户登录,用户通过注册时的用户名+密码进行验证登录,如图4-3所示。
图4-2登录界面图
登录代码如下:
package com.project.demo.interceptor;
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
private String tokenName = "x-auth-token";
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader(this.tokenName);
setHeader(request, response);
log.info("[请求接口] - {} , [请求类型] - {}",request.getRequestURL().toString(),request.getMethod());
if (request.getRequestURL().toString().contains("/api/user/login")){
return true;
}
else if (request.getRequestURL().toString().contains("/api/user/state")){
return true;
}
else if (request.getRequestURL().toString().contains("/api/user/register")){
return true;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
//更新token
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
private void failure(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setHeader("Content-type", "application/json;charset=UTF-8");
response.setStatus(401);
response.sendRedirect("https://www.baidu.com");
}
private void setHeader(HttpServletRequest request, HttpServletResponse response) {
//跨域的header设置
response.setHeader("Access-control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Headers", request.getHeader("Access-Control-Request-Headers"));
response.setHeader("Access-Control-Max-Age", "1800");
//防止乱码,适用于传输JSON数据
response.setHeader("Content-Type", "application/json;charset=UTF-8");
response.setStatus(HttpStatus.OK.value());
}
}
招聘信息,用户可以在招聘信息页面查看到职位名称、招聘人数、学历要求等信息。如图4-3所示。
图4-3招聘信息面图
点击可以查看招聘信息详情,并进行应聘、点赞和收藏操作。如图4-4所示。
图4-4招聘心情详情界面图
4.2员工用户功能模块
工资信息:员工在在个人中心的工资信息页面,可查看到基本薪资、绩效奖金、加班工资、福利津贴、请假扣款等信息。如图4-5所示。
考勤信息:员工在在个人中心的考勤信息页面,可查看到请假天数、出勤天数、加班天数、调休天数等信息;如图4-6所示。
图4-6 考勤信息界面图
员工档案:员工在在个人中心的员工档案页面,可查看到员工姓名、员工性别、家庭住址、联系方式、部门名称、入职日期等信息。如图4-7所示。
图4-7 员工档案界面图
4.3管理员功能模块
管理员登录,通过填写注册时输入的账号+密码进行登录,如图4-8所示。
图4-9管理员登录界面图
管理员登录的关键代码如下。
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
管理功能页面有系统用户、部门类型管理、部门信息管理、主管薪资管理、员工薪资管理、请假信息管理、财政支出管理、资产类型管理、资产信息管理、员工资产管理、培训信息管理;如图4-10所示。
图4-10管理员功能界面图
系统用户界面逻辑代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
用户管理,管理员可对前台注册的用户以进行查询、添加或删除等操作,如图4-11所示。
图4-11用户管理界面图
用户管理界面逻辑代码如下:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
系统管理:管理员可在轮播图管理页面进行查询、删除和添加等操作。如图4-12所示。
图4-12轮播图管理界面图
通知公告管理:管理员可在通知公告页面进行查询、删除和添加等操作。如图4-13所示。
图4-13通知公告管理界面图
4.4人事用户功能模块
招聘信息管理:人事用户可在招聘信息添加页面提交招聘海报、职位名称、招聘人数、学历要求、职位简介等信息。如图4-14所示。
图4-14招聘信息界面图
面试安排管理:人事用户可在面试安排列表查看职位名称、用户姓名、面试时间等信息。如图4-13所示。
图4-13面试安排列表界面图
第5章 软件测试
人事管理系统的软件测试是确保系统质量和稳定性的关键步骤。测试应包括功能测试、性能测试和安全测试等,以验证系统的功能完整性、响应时间和数据安全性。同时,还应进行用户界面测试、兼容性测试和易用性测试,以确保系统与不同操作系统和浏览器的兼容性,并提供友好的用户体验。通过综合的软件测试,可以发现和修复潜在的问题,提高系统的可靠性和用户满意度。
5.1软件测试的重要性
软件测试的重要性体现在发现和纠正缺陷、确保功能完整性、提高系统性能、保护数据安全以及提升用户体验和满意度等方面。通过全面的测试,可以提高软件质量,减少故障风险,确保系统的稳定性和可靠性。
5.2测试实例的研究与选择
测试有白盒测试和黑盒测试两种方式。
其中,白盒测试是将软件看成一个透明的白盒子,按照程序的内部控制结构和处理技术逻辑来选定测试用例、软件系统测试的逻辑路径及过程需要进行管理测试,又称玻璃盒测试。因此白盒测试需要选择足够多的测试用例,覆盖尽可能多的代码来发现程序中的错误。
黑盒测试,也称为功能测试。它将需软件看作一个黑盒,像一个普通用户一样来模拟软件的使用流程。黑盒测试通过大量的输入边界值或错误数据,来检查是否可产生正确的输出。
本系统测试 主要选择黑盒测试,少量采用白盒测试。通过测试达到以下测试目的:
1.检查各大功能模块的运行,确保其能够正确运行,并检查各页面的完整性,保证页面完整。
2.检查各个接口是否可以正确地输入和输出,保证数据流通稳定可行。
3.检查数据结构,保证其和外部接口没有访问错误,访问顺利。
4.检查原计划的性能需求有没有完成,运行流畅。
本系统的测试用例(部分):
登录部分测试用例 | |||||
编号 | 对象 | 项目 | 操作 | 预期结果 | 结果 |
1 | 登录 | 登录提示 | 使用正确的账号密码登录 | 成功登录 | 预期结果 |
2 | 登录提示 | 使用正确的账号但错误的密码登录 | 提示密码错误 | 预期结果 | |
3 | 登录提示 | 使用错误的账号登录 | 提示不存在账户 | 预期结果 | |
4 | 登录提示 | 不输入账号,点击登录 | 提示输入账号 | 预期结果 | |
5 | 登录提示 | 输入账号但不输入密码点击登录 | 提示输入密码 | 预期结果 | |
6 | 登录入口 | 已登录账号,查看登录入口 | 不显示登录入口 | 预期结果 |
5.3测试环境与测试条件
处理器:Inter Core I7-4710MQ四核处理器
内存:4GB
硬盘:1T
操作系统:Windows 10
数据库:MySQL
5.4系统运行情况
全部测试用例都已通过(包括但不限于以上测试用例),且不存在漏洞,实现了论文开始时所作要求。本系统运行稳定,使用流畅,可以满足客户需求。
5.5系统评价
试运行后进行系统评估,可以认为该系统达到预定的目标要求,可以满足用户的需求,也满足了系统开发前所作目标。
系统在经过大量重复测试后运行十分稳定,安全实用,功能模块已经达到预定目标所需。
在规定的时间内实现系统的大部分功能,且满足要求,节省开发成本,有助于提高科学管理水平,符合本人经济情况。
第6章 总 结
Spring Boot人事管理系统是一个基于Spring Boot框架开发的软件应用,旨在提供高效、可靠和易用的人力资源管理解决方案。基于Spring Boot框架开发人事管理系统对贵州富强信息技术有限公司具有重要意义。通过技术可行性、经济可行性和操作可行性的分析,确定了该系统在技术上具备高效开发、稳定性强、易于维护等优势,经济上具备投资回报期短、成本效益高的特点,操作上具备用户友好、易用性强的特点。该系统的开发有望提升公司的管理效率、优化人才管理、提供智能决策支持、推动数字化转型、促进企业可持续发展。综合分析,基于Spring Boot框架开发人事管理系统是符合公司需求且具备可行性的有效解决方案,有望为公司带来更高效、智能化的人力资源管理体验。
未来,基于Spring Boot框架开发的人事管理系统将为贵州富强信息技术有限公司带来管理效率的提升、人才管理的优化、决策支持的增强、数字化转型的推进以及员工满意度的提升。通过系统的持续优化和完善,公司将实现更高效的管理、更科学的人才培养、更明智的决策、更智能的管理转型,进而推动公司的可持续发展和成功。
参考文献
[1]徐少军,李宗哲,梅杰等.基于Springboot+Vue框架的质量检验监督管理系统研发[J].纺织标准与质量,2024,(01):11-14+21.
[2]孙晓宇.教师分类管理下智慧校园人事管理信息系统建设[J].办公自动化,2024,29(03):18-20.
[3]何晶.基于PHP+MySQL的电子书阅读系统的设计与实现[J].科技资讯,2024,22(02):20-22+30.DOI:10.16661/j.cnki.1672-3791.2308-5042-0321.
[4]刘畅,王陈.MySQL数据库课程的教学评价体系设计[J].电子技术,2024,53(01):393-395.
[5]石雨昕,关家兴,邹博华等.基于SpringBoot微服务架构设计与实现实验室开放课题管理系统[J].实验室检测,2024,2(01):101-106.
[6]白茹鑫.基于SpringBoot+SSM框架的企业安全培训管理系统设计与实现[J].现代信息科技,2024,8(01):44-49.DOI:10.19850/j.cnki.2096-4706.2024.01.009.
[7]唐家乐.浅析组织人事管理系统的开发与探索[J].中国管理信息化,2024,27(01):132-135.
[8]吴伶琳.基于SpringBoot的客户关系管理系统设计与实现[J].无线互联科技,2023,20(24):60-62.
[9]唐媛媛,王晓楠,李京培等.基于SpringBoot的病原生物学在线智能化实验考试系统建设探索[J].赤峰学院学报(自然科学版),2023,39(12):75-78.DOI:10.13398/j.cnki.issn1673-260x.2023.12.024.
[10]彭仕鑫,肖彪,赵正彩等.航天复杂薄壁零件加工工艺知识图谱构建及其应用[J/OL].机电工程,1-11[2024-03-17].http://kns.cnki.net/kcms/detail/33.1088.TH.20231206.1611.016.html.
[11]MENG X .Discussion and analysis on the management of book circulation service in higher vocational colleges[J].Region - Educational Research and Reviews,2023,5(4):
[12]Ximeless Unveils Revolutionary Event Management System, Set To Transform The Event Industry.[J].M2 Presswire,2023,
[13]杨芬,宋晓燕.MySQL数据库应用的课程教学分析[J].电子技术,2023,52(10):180-181.
[14]E J M ,A K M ,M J Z , et al.Understanding pathways to health-system pharmacy administration: A journey mapping study.[J].American journal of health-system pharmacy : AJHP : official journal of the American Society of Health-System Pharmacists,2023,
[15]杨华,徐扬.MySQL数据库对中文编码支持的探讨[J].网络安全和信息化,2023,(10):157-160.
[16]BuehrleJ D ,ShieldsJ ,LopezM , et al.A model program for pharmacist‐managed healthcare delivery: A tixagevimab–cilgavimab (EVUSHELD) clinic at a Veterans Affairs healthcare system[J].Journal of the American College of Clinical Pharmacy,2023,7(1):31-38.
[17]肖莹.工资信息系统在高校人事管理中的深化应用实践[J].财讯,2023,(18):50-52.
[18]刘晓霞.浅议人事管理信息系统在高校人力资源管理中的应用[J].数字通信世界,2023,(09):89-91.
[19]周培根.信息化背景下高校人事管理系统建设研究[J].辽宁经济职业技术学院.辽宁经济管理干部学院学报,2023,(04):30-32.
[20]魏旗鹏,李亚子.基于数据共享的高校全量人员管理体系研究与设计[J].软件,2023,44(08):53-55.
致 谢
在完成这篇关于Spring Boot人事管理系统的论文时,我要向许多人致以最诚挚的谢意;我要感谢我的指导教师们。他们的专业知识、悉心指导和鼓励使我能够顺利地完成这个研究项目。他们的建议和反馈对我论文的质量提升起到了至关重要的作用。
感谢所有参与调研和访谈的人员。他们慷慨地分享了他们的经验和见解,为我的研究提供了宝贵的数据和信息。没有他们的积极配合和真诚回答,我无法展开深入的分析和讨论。此外再次向上述所有人表示衷心的感谢和深深的敬意。正是有了你们的支持和帮助,我才能够顺利完成这篇论文。最后,也要感谢评审委员会对我的论文进行评审和指导,感谢您们宝贵的意见和建议。