基于SpringBoot的公司员工移动管理系统的设计与实现

  要

现如今,在我国现行的企业制度中,公司员工移动信息处于一个非常重要的位置,人的主观判断对一个企业生产经营中作决策有着重要的作用。企业员工信息的管理的基础就是公司员工移动信息,但是往往一些企业对员工信息的管理模块是不够重视的,投入不足,而传统的管理方法,信息量不够全面,不但员工信息查询效率比较低,而且信息不易保存,随着公司员工移动不断调动,公司员工移动信息处于一个变化的过程中,员工的信息经常需要不断的维护和更新。因此,企业应配置自己的信息化管理平台来提高人员管理效率。

本文以研究企业人员管理平台为根基,阐述了开发员工管理系统的整个过程。该系统是使用Java技术开发的基于B/S架构的企业级公司员工移动管理系统,并使用MySQL数据库来处理、存储系统数据。系统主要实现了对企业的具体部门结构信息、职工的基本信息、薪资发放信息、每月出勤情况信息、职工请假等方面的管理功能。按照软件工程学科思想,分别对系统的开发进行了可行性分析、需求分析,接着完成了系统详细设计模块的内容撰写,最后,系统经过详细的测试,其功能均符合要求,性能良好。

关键词:JavaB/S结构员工信息管理系统测试 

ABSTRACT

Nowadays, in the current enterprise system in our country, personnel information is in a very important position, and human subjective judgment plays an important role in the decision.making of an enterprise's production and operation. The foundation of enterprise employee information management is enterprise personnel information, but often some enterprises do not pay enough attention to the management module of employee information, and the investment is insufficient. However, the traditional management method, the amount of information is not comprehensive, not only the efficiency of employee information query is relatively low, but also Information is not easy to save. With the continuous mobilization of personnel, personnel information is in a process of change, and employee information often needs to be maintained and updated continuously. Therefore, companies should configure their own information management platform to improve personnel management efficiency.

Based on the research of enterprise personnel management platform, this paper expounds the whole process of developing employee management system. The system is an enterprise.level personnel management system based on B/S architecture developed using Java technology, and uses MySQL database to process and store system data. The system mainly realizes the management functions of the company's specific departmental structure information, basic employee information, salary distribution information, monthly attendance information, and employee leave review. According to the thought of software engineering discipline, the feasibility analysis and requirement analysis of the system development were carried out, and then the content writing of the detailed system design module was completed. Finally, the system was tested in detail, and its functions met the requirements and the performance was good.

Key words: Java; B/S structure; Employee information management;System Test

目录

南京工业职业技术大学

毕业论文(设计)诚信承诺书

摘  要

ABSTRACT

Key words:

第一章 绪论

1.1 项目背景与意义

1.1.1 提升员工的工作效率

1.1.2 进一步将员工资源部门的业务流程规范化

1.1.3 给企业和工作人员提供一个增值服务

1.2 国内外发展现状

1.3 论文组织结构

第二章 系统需求分析

2.1 系统总体目标

2.2 系统可行性分析

2.2.1 经济可行性

2.2.2 技术可行性

2.2.3 运营可行性

2.3 系统功能分析

2.3.1  系统功能需求

2.3.2 系统性能需求

2.4 系统用例图

2.4.1 管理员用例图

2.4.2 普通员工用例图

第三章 系统总体设计

3.1 系统概要设计

3.1.1 系统功能模块设计

3.1.2 类图设计

3.2 数据库设计

3.3.1 数据库设计概述

3.3.2  数据表实体设计

3.3.3 数据库关系设计

3.3.4  数据库系统设计

3.3.5  数据表设计

第五章 系统实现

5.1 登录模块

@RestController

5.2 管理员模块

5.2.1 管理员菜单

5.2.2 修改密码

5.2.3 部门管理功能模块

5.2.4 员工管理功能模块

5.2.5 员工出勤管理功能模块

5.2.6 工资管理功能模块

5.2.7 请假审核模块

5.3 普通员工模块

5.3.1 员工修改自己的密码

5.3.2 员工工资管理

5.3.3 员工请假申请管理

第六章 系统测试

6.1 软件测试目的

6.2 软件测试类型

6.3 系统功能测试

6.3.1 主页面的登录模块测试

6.3.2 修改密码的模块测试

6.3.3 部门管理模块测试

6.3.4 员工管理模块测试

6.3.5 出勤管理模块测试

6.3.6 工资管理模块测试

6.3.7 请假审核模块测试

6.3.8 员工请假申请模块测试

6.4  测试结论

第七章  总结

参考文献

致  谢

第一章 绪论

1.1 项目背景与意义

现代化技术的引进和应用,不但能够推动企业的快速发展,也能够提高员工的工作效率,还能够给客户提供一个良好的服务质量。随着市场经济的持续优化,企业在管理水平、行政管理职能、规范化等方面均有着高要求、严标准。目前,一些企业的管理者已经明白了拥有现代化员工管理系统的重要性,在促进企业人员管理信息化的建设上投入了很多成本,当然,现阶段,也存在一些公司没有建设员工信息管理系统,也缺乏一定的认知,还是采用办公软件来统计员工的信息,这样的情况就存在信息共享和查询均存在效率低下的问题,并且有的中小型企业关于员工的信息管理只有基础的录入、修改、删除功能,或者管理层面将员工的信息通过办公软件展示,将其打印出来,但是在信息查询、优化方面、信息统计、分析、可视化方面还十分欠缺。因此,开发一个应用便利功能齐全的信息系统是必要的。

公司员工信息管理系统的开发和应用,可以帮助管理人员更方便地经营公司,也可以减少资本投资和人力资源建设投资,并确保公司的经营更加顺畅,管理者更加了解企业的员工,进而安排符合员工要求的关心和奖励,能够侧面提高员工的工作主动性,进而给企业带来更多经济效益,并且通过系统的应用也相对减少了不必要的工作人员,为企业也创造了价值,这是企业发展的一个好的方向和趋势,也会带动社会、国家经济的发展。

综上所述,公司投入、建设引进人力资源管理信息系统,主要体现三个方面的意义:

1.1.1 提升员工的工作效率

在一个企业中,影响员工工作效率有很多,其中最主要的因素就是员工考勤、请假信息:员工信息统计、工资计算等;每月中,这些工作占据人力资源部门工作的大量时间,纯人工的统计方式不但浪费时间、效率低下、还容易由于操作疏忽出现差错。所以,企业中的公司员工移动部门较为看中的就是工作效率提升,帮助工作人员从繁杂的事务中脱离出来,进而能够从事更加有意义的工作。通常情况下,员工管理模块必须包括薪资福利模块、考勤模块等必须存在的选择。

1.1.2 进一步将员工资源部门的业务流程规范化

随着公司规模的增长,组织部门臃肿,分工日益明细,企业管理层次也越来越多,此时最大的麻烦是效率低下,企业员工信息管理系统给出了很好的解决方案,通过管理系统,企业可以清晰明理的管理庞大的公司结构组织,公司员工移动处理的业务流程也会越来越规范化。

1.1.3 给企业和工作人员提供一个增值服务

从企业发展的方向来看,企业的公司员工移动部门逐渐将工作重心从行政管理转向企业战略合作方向。传统方式上,员工公司员工移动部门需要耗费大量的时间在繁杂的工作业务上,下一步将在增值服务方面进一步做工作。换一种理解思路来看,公司员工移动部门需要服务的就是企业管理者和员工,并需要花费思路和时间计划一些增值服务,这也是公司员工移动部门将来需要进一步发展和规划的问题。举例来说,人力资源规划还可以给公司招聘优秀的人才,还可以通过帮助企业制定员工绩效评估标准;上述这些都是公司员工移动部门应该提供的增值服务。

1.2 国内外发展现状

西方的“电子档案”经过不断演变形成了如今的企业员工信息管理系统,员工信息管理系统经过一系列的推广历史和应用现状,为中国员工信息管理系统的发展打下了良好的基础,并做了一个很好的样例,为我国大力发展和使用企业员工信息系统起到一个很好的借鉴作用。

现阶段,伴随着信息技术的发展,企业信息化建设不断加强,一个企业员工信息管理的优劣和企业实现高效管理质量的好坏,关系着企业未来的发展趋势和市场竞争力。由此,大部分企业开始重视企业员工信息管理的高效性和便捷性。我国很多企业管理者十分同意的观念就是:员工信息管理系统是企业快速成长和发展中必不可少的一个模块。事实证明,这个观念是正确的,员工信息管理系统的内容和管理模式是一个企业领导人管理企业的重要手段。随着企业信息化建设的推进,仍然有很多公司还在采用较为传统的方式手工登记信息或者简单的使用word或者excel办公软件来登记和管理员工信息,传统的管理方式有以下几个缺点:

  1. 企业的信息管理员需要对员工的各项信息逐一登记形成档案,较为复杂和繁琐,十分浪费时间,影响工作效率;
  2. 员工在企业除了自身的基本个人信息,还存在职位更换或者部门调动,以及企业的培训等信息,都会给工作者的工作量不断加大,影响其工作效率。
  3. 纸质版或者电子版的文档都存在一个安全性隐患,安全性不高;
  4.  随着企业的运营,企业将会产生和积攒数量庞大的文件和数据,不方便企业工作者的日常查找、使用、维护、更新等工作。

综上,不管是手工记录员工信息还是简单的运用办公软件记录员工信息 这两种方式都给企业工作者和管理者的工作增加了难度,耗费了时间,鉴于此,本系统开发的员工管理系统能解决上述问题,也能够合理、完善的管理企业员工的信息,这也是促进企业发展的基础。所以,利用计算机技术实现员工信息的管理能够促进企业的现代化、信息化管理。

1.3 论文组织结构

本文设计的员工信息管理系统前端界面遵循友好性原则,方便用户操作,作为员工的基础信息存储在MySQL数据库,保证员工隐私数据存储安全,论文的主体结构分为6章,分别介绍如下。

第一章为绪论部分,主要介绍了员工信息管理的研究背景,探讨了国内外的发展状况,以及阐述了本文的组织结构。

第二章是需求分析部分,主要阐述系统的可行性分析、需求分析、基本功能分析以及性能需求,为后面的开发工作奠定坚实的基础。

第三章是系统的总体设计,介绍了系统的概要设计、功能模块设计和数据库设计,在进行开发工作前将需求分析阶段的成果转化为具体数据模型。

第四章是系统实现部分,主要介绍了系统的基本功能实现过程、界面展示以及功能描述内容,初步完成了系统的开发工作。

第五章是系统测试部分,根据系统具体实现的功能逐一进行测试,并撰写测试用例,方便开发人员维护的同时保证系统的质量。

最后是总结、致谢部分,主要是回顾项目过程中遇到的问题,总结自己的经验,并对在项目开发过程中给予我帮助的老师、同学表示感谢之情。

二章 系统需求分析

2.1 系统总体目标

随着科技的发展,企业办公过程也越来越信息化,如果企业的员工信息管理方式过于传统,或者繁杂,某种意义上已经不适合现代企业的发展,在企业经营效益方面和办公效率方面均受到了影响。企业员工之间信息的交流和反馈不能够实现及时性。国家不断推动科学技术发展的同时,企业也随之建立一些企业制度和方案进一步推动和响应信息化办公逐步构建质量高、效率高的办公自动化信息系统和管理系统,进而提升员工的办事效率,给员工创造一个较为高效的办公场所,为企业的正常、及时、准确的办公工作提供及时的信息服务,进而帮助企业提高市场竞争力和影响力。

本系统设计的目标主要是管理公司的部门信息和员工个人出勤、工资、请假审核等信息,系统保障员工的正确性和完整性。根据企业现有的实际需求为基础,系统实现的目标有4个方面,介绍如下:

  1. 系统界面友好,功能齐全,应用操作简单,提示明显,针对不同层次的用户都能够快速使用。
  2. 系统的能够根据使用对象的不同,划分相应的权限,提供不同的账号和密码,对系统内部的管理进一步强化。
  3. 系统的安全性,因为本系统的特殊性,会接触到很多的隐私数据,这些数据一旦泄露,公司就会产生较大的损失,相对于系统而言,有效的数据加密措施保障系统数据安全性,十分必要。
  4. 在系统设计之初,应考虑操作的稳定性,以确保系统具有一定的容错性和抗干扰能力。还要派专人定期检查系统,如果出现问题要及时维护,以防影响公司的正常运行。

2.2 系统可行性分析

为保障项目顺利进行,在进行正式开发之前,本章从以下几个方面对公司员工移动管理系统展开可行性研究:

2.2.1 经济可行性

系统开发需要的硬件设备电脑以及软件,硬件电脑要求不高,正常操作即可;软件选择开源的,整体开发需要投入的经费较少。系统开发完成后,利用互联网和局域都可以运行系统,进而减少使用人员和开发人员的压力。

2.2.2 技术可行性

系统在开发过程中,要确定能够应用现有的技术和方案,必要时进行技术评价,以防万一受到技术的限制。由于大学期间,学校开设了相关课程,由此可见,在技术层面,本系统具备技术可行性。

2.2.3 运营可行性

系统的完整开发与其能够执行的环境息息相关,要综合考虑现有的设备硬件环境,并观察企业环境和系统运行环境之间是否融合。系统的使用对象具备最基础的计算机常识,具有简单操作计算机的本领,通过系统的培训即可。因此,在系统的运营方面,具备运营可行性。

2.3 系统功能分析

本系统设计之初就是为中小型公司的公司员工移动信息管理而开发的,经过实地调研,多次和相关企业人员探讨,根据他们反馈的建议,汇总了系统的需求分析。

2.3.1  系统功能需求

本系统采用基于Web技术的B/S框架进行设计,按照企业人员管理需要,初步为系统设以下功能。

系统功能要求如下:

  1. 公司员工基本信息管理:

录入和更新员工的基本信息主要包括员工的姓名、年龄、性别、部门、职务、是否为领导、登录账号和密码等信息。如果信息发生变化,需要及时更新,保证公司员工移动信息的有效性。

  1. 员工工资信息的管理:

该部分主要对每个员工的工资按月进行录入和汇总。单个员工的薪资信息包括月份、金额、员工姓名。最后,实现打印员工薪资的操作。

  1. 公司部门信息的管理:

该部分主要是对员工进行部门划分,使得公司在人员管理上更加井井有条。

该模块主要有添加部门、添加子部门、删除部门等功能,实现对公司部门结构调整的操作。

  1. 员工出勤信息管理:

该部分主要是按月为单位记录员工的出勤天数,给员工的考评和应得工资提供依据。考勤信息主要包括具体员工姓名、出勤日期和实到天数

  1. 员工的请假审核信息:

该部分主要实现管理员对员工提交的休假信息进行批复。请假信息主要包括请假人姓名、请假多长时间、请假的具体原因、管理员的审核信息以及批复信息。

2.3.2 系统性能需求

为了保证数据库安全性,需要掌握系统架构和开发目标,以此保证系统正常的运行。系统设计原则以及性能体现在以下三个方面:

  1. 安全性:系统中注册用户信息安全性、员工个人信息安全性以及公司任职详情信息的安全性
  2. 易用性:易用性原则站在用户角度上,更加重视用户的使用感。网站系统体验良好可以给企业创造极大的价值

系统的实用性分析:

  1. 可靠性:系统可靠性原则重点是系统的操作稳定,不会出现卡顿、黑白屏现象,用户点击数量过多时,响应速度仍能处于正常的状态,代码编程规范,保证功能具备严密的逻辑性,给用户提供一个安全可操作的平台。

经济效益:考勤系统的实现对公司十分有帮助,因此要充分考虑系统开发之后带来的经济效益。

2.4 系统用例图

2.4.1 管理员用例图

系统管理员管理以下功能模块,可以操作部门信息、员工基本信息、薪资、考勤等信息,保证员工信息的有效性,以满足公司的需要。用例图如图2.1所示:

图2.1 管理员用例图

2.4.2 普通员工用例图

本系统普通员工相对管理员来说权限较少,主要可以修改自己的密码,查询自己的工资情况以及向公司提交自己的请假申请,用例图如图2.2所示:

图2.2普通员工用例图

三章 系统总体设计

3.1 系统概要设计

本章主要内容是将之前需求分析阶段得到的系统用例图具体实现,分为功能模块设计和数据库设计两部分。

3.1.1 系统总体架构设计

本系统前端采用Element.UI和VUE技术,服务器采用集成的TomCate,后端采用成熟的SpringBoot框架,数据库存储使用MySql技术,采用Token和JWT令牌技术来拦截判断。详细结构如图3.1所示。

图 3.1系统详细结构图

3.1.1 系统功能模块设计

本系统按登录角色不同分为管理员模块和普通员工模块,其中,管理员和员工又各自有自己的子模块,具体每一模块的具体功能介绍如下:

(1)公司管理员模块

主要有以下六个子模块:

1.修改密码:这部分可以进行管理员对自己密码的更新操作;

2.部门管理:这部分可以实现对公司部门结构的调整;

3.职员管理:这部分主要工作是录入并整理具体的员工信息;

4.薪资管理:这部分主要按出勤天数管理员工的具体薪资;

5.出勤管理:这部分主要登记员工每月实际的出勤信息;

6.请假管理:这部分管理员工的请假信息,审核员工的请假申请并作出批复;

(2)普通员工管理模块

主要有以下三个子模块:

1.修改密码:这部分实现了员工对自己的密码进行修改的操作;

2.请假申请:这部分主要实现员工填写自己的请假申请操作,可在系统中输入请假的开始时间和结束时间以及请假原因,并提交给管理员审核。

3.查询工资:该模块主要实现员工对自己工资的查询操作。

图3.2 功能结构图

3.2 数据库设计

3.2.1 数据库设计概述

数据库是存储数据和操作数据的工具,它集合了企业中所有的数据,数据库的存在是为了给企业提供一个效率好的操作环境,这也是本节的主要工作目标。

3.2.2 数据表实体设计

在系统开发之前,我们需要确定系统需求并设计出 E.R 图,这可以帮助我们清晰地了解实体之间的关系,最终确定数据表之间的联系。在此基础上,我们才能够进行代码编写和系统开发的工作,以保证系统的稳定性和可靠性。因实体过多这里选取部分进行展示。ER图如下图所示,

图3.3 管理员ER图

图3.4 出勤ER图

图3.5 员工ER图

图 3.6 部门ER图

图3.7 请假ER图

图3.8 工资ER图

3.2.3 数据库关系设计

员工管理系统的代码实现,数据库设计的合理性是至关重要的,这对提高数据的查询速率以及操作效率也是极其重要的。根据具体需求设计出数据之间的联系这点是非常关键的。数据联系如图3.5所示。

图3.9数据关系图

3.2.4 数据库系统设计

E.R 图的设计是一个非常重要的环节,它不仅直接影响系统的整体架构和数据库的设计,还能帮助我们更好地理解和把握系统的需求和逻辑关系通过对系统功能进行分析,系统E.R图设计如图3.6所示。

图3.10系统总E.R图

3.2.5  数据表设计

  1. 系统管理员信息表,该表用来存放管理员的信息其中包含三个字段:用户id,用户姓名,用户密码。其中用户id为主键,用户名和用户密码都不能为空。管理员信息表如3.1所示。

表3.1 管理员信息表(t_admin)

序号

列名

数据类型

长度

允许为空

是否为主键

备注

1

userId

Int

11

编号

2

userName

Varchar

40

登录名

3

userPw

Varchar

50

登录密码

  1. 出勤表,该表用于存放员工的出勤信息其中包含4个字段出勤单编号、出勤月份、出勤天数、员工编号。其中出勤单编号为主键,其他字段不能为空。出勤信息表如3.2所示。

表3.2 出勤信息表(t_chuqin)

序号

列名

数据类型

长度

允许为空

是否为主键

备注

1

id

Int

11

出勤单编号

2

yuefen

Varchar

20

出勤月份

3

tianshu

Varchar

50

出勤天数

4

yuangong_id

Int

10

员工编号

  1. 员工基本,信息表该表用于存放员工的基本信息其中包含员工编号、部门编号、工号、姓名、年龄、职位等字段。其中员工编号为主键,部门编号为外键。其他字段不能为空。员工基本信息表如3.3所示。

表3.3 员工基本信息表(t_yuangong)

序号

列名

数据类型

长度

允许为空

是否为主键

备注

1

id

Int

11

员工编号

2

org_id

Int

50

部门编号

3

Bianhao

Varchar

50

工号

4

name

Varchar

50

姓名

5

sex

Varchar

50

性别

6

age

Varchar

50

年龄

7

zhiwei

Varchar

50

职位

8

shifoubumenlingdao

Varchar

50

是否部门领导

9

loginpw

Varchar

50

登录密码

10

loginname

Varchar

55

登录账号ID

11

del

tinyint

1

删除状态

  1. 部门表,记录部门相关信息。其中包含部门编号、部门名称、部门描述、父类部门、删除查询字段。其中部门编号为主键,其他字段都不能为空。部门表如图3.4所示。

表3.4部门表(t_organization)

序号

列名

数据类型

长度

允许为空

是否为主键

备注

1

id

Int

11

部门编号

2

name

Varchar

50

部门名称

3

description

Varchar

55

部门描述

4

P_id

Int

11

父类部门描述

5

del

tinyint

1

删除查询

  1. 请假信息表,记录员工的请假申请中具体的信息。其中包含请假单编号、开始时间、结束时间、备注、员工编号等字段。其中请假单编号为主键,员工编号为外键。其他字段都不能为空。请假信息表如图3.5所示。

表3.5 请假信息表(t_qingjia)

序号

列名

数据类型

长度

允许为空

是否为主键

备注

1

id

Int

11

请假单编号

2

kaishishijian

Varchar

50

开始时间

3

jieshushijian

Varchar

50

结束时间

4

beizhu

Varchar

2000

备注

5

yuangong_id

Int

11

员工编号

6

shenhezhuangtai

Varchar

50

管理员审核状态

7

huifuxinxi

Varchar

60

管理员批复信息

  1. 工资表,按月份记录员工资情况。该表包含4个字段分别为:工资单编号、月份、工资金额、员工编号。其中 工资单编号为主键,员工编号为外键,其他字段皆不允许为空。工资信息表如图3.6所示。

表3.6 工资信息表(t_gongzi)

序号

列名

数据类型

长度

允许为空

是否为主键

备注

1

id

Int

11

工资单编号

2

yuefen

varchar

4

月份

3

jine

Int

11

工资金额

4

yuangong_id

Int

11

员工编号

3.3 系统详细设计

3.3.1系统类图设计

在软件开发的设计中,类图是至关重要的一步。通过绘制类图,我们可以展示各个实体之间的静态结构和逻辑关系,同时也有助于我们更好地理解和把握整体架构。本文选取了2个重点的类图,分别为部门类和员工类的类图设计。其类图设计如下图所示。

  1. 部门类:包括部门名称、部门编号、添加时间等信息,用于描述组织内的各个部门及其属性。

图3.11 部门类图

  1. 员工类:员工是组织的核心,该类包含员工的各种信息,如员工编号、姓名、头像、性别、年龄、职位、薪酬情况等。员工与部门之间存在关联,表示员工属于某个部门。

图3.12 员工类图

3.3.2功能模块设计

  1. 用户登录模块

用户登录模块是系统的主要模块之一,当用户输入账号密码后根据数据库传回的数据对比账号密码是否正确若密码不正确则提示账号或密码错误,然后用户在选择身份若身份信息和账号密码不匹配则提示账号或密码错误,具体流程如图3.13所示。

图3.13 用户登录模块流程图

  1. 后台添加数据模块模块

程序的添加功能就是提供给操作者录入信息的功能,不管是涉及到用户信息添加,还是其它功能模块涉及到的信息添加,程序的信息添加流程(图3.14所示)都是一致的。程序都是先对操作者录入的数据进行判定,这个判定规则是一段提前编写完成的程序代码,当程序判定数据符合要求时,才会把操作者录入的数据登记在数据表里面,比添加的用户信息,就会把新添加的用户信息写入用户信息的数据表文件里面。

图3 . 14  信息添加流程图

  1. 后台删除数据模块模块

当从程序里面删除某种无效数据时,遵循程序的信息删除流程(图3.15所示),先要选中操作者需要删除的数据,程序为了预防操作者误删信息,也会进行提示,当操作者真正确定要删选中的信息时,该信息就会从数据库中被永久删除。

图3.15 信息删除流程图

第五章 系统实现

5.1 登录模块

登录界面如图5.1所示,在登录页面选择登录系统的角色类型(管理员或者普通员工)并正确填写登录用户名和密码,即可转跳到不同的系统页面。

图5.1 系统登陆页面设计

核心代码如下:

@RestController

@RequestMapping("/api/users")

public class UserController {

    @Autowired

    private UserService userService;

    @PostMapping("/register")

    public ResponseEntity<String> registerUser(@RequestBody UserDTO userDTO) {

        userService.registerUser(userDTO);

        return ResponseEntity.ok("User registered successfully.");

    }

    @PostMapping("/login")

    public ResponseEntity<String> loginUser(@RequestBody UserDTO userDTO) {

        String token = userService.loginUser(userDTO);

        if (token != null) {

            return ResponseEntity.ok(token);

        } else {

            return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Invalid credentials.");

        }

    }

}

@Service

public class UserService {

    @Autowired

    private UserMapper userMapper;

    public void registerUser(UserDTO userDTO) {

        User user = new User();

        user.setUsername(userDTO.getUsername());

        // 其他用户信息的设置

        userMapper.insert(user);

    }

    public String loginUser(UserDTO userDTO) {

        User user = userMapper.findByUsername(userDTO.getUsername());

        if (user != null && user.getPassword().equals(userDTO.getPassword())) {

            // 登录成功,生成token并返回

            String token = generateToken(user);

            return token;

        } else {

            return null;

        }

    }

    private String generateToken(User user) {

        // 生成token的逻辑

        return "generated_token";

    }

}

@Mapper

public interface UserMapper {

    @Insert("INSERT INTO users(username, password) VALUES(#{username}, #{password})")

    void insert(User user);

    @Select("SELECT * FROM users WHERE username = #{username}")

    User findByUsername(String username);

}

5.2 管理员模块

5.2.1 管理员菜单

说明:以管理员身份登录进入系统后,界面如图5.2所示:

图5.2 管理员主页面

核心代码如下:

    @RequestMapping("/page")

    public R page(@RequestParam Map<String, Object> params,UsersEntity user){

        EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();

     PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));

        return R.ok().put("data", page);

    }

/**

     * 列表

     */

    @RequestMapping("/list")

    public R list( UsersEntity user){

        EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();

       ew.allEq(MPUtil.allEQMapPre( user, "user"));

        return R.ok().put("data", userService.selectListView(ew));

    }

界面左侧为系统菜单页面,包含如图六大模块,每个模块中又包含自己的子菜单,为提高系统安全性,每个jap页面会对用户操作进行拦截,防止未获得权限的用户进入相关子菜单界面随意操作数据。

5.2.2 修改密码

图5.3 密码修改界面

核心代码如下:

    @RequestMapping("/update")

    public R update(@RequestBody UsersEntity user){

//        ValidatorUtils.validateEntity(user);

     UsersEntity u = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername()));

     if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {

     return R.error("用户名已存在。");

     }

        userService.updateById(user);//全部更新

        return R.ok();

    }

5.2.3 部门管理功能模块

1.部门组织结构页面,如图5.3所示:

图5.3 部门管理页面

2.通过图5.3中的“添加部门”,“添加子部门”功能按钮,可以实现相关的操作,其中,添加子部门的操作要在已经成功选择父部门的基础之上进行,

如图5.4所示:

图5.4 部门添加页面

核心代码如下:

    @RequestMapping("/page")

    public R page(@RequestParam Map<String, Object> params,YuangongchuqinEntity yuangongchuqin,

HttpServletRequest request){

String tableName = request.getSession().getAttribute("tableName").toString();

if(tableName.equals("yuangong")) {

yuangongchuqin.setYuangonggonghao((String)request.getSession().getAttribute("username"));

}

        EntityWrapper<YuangongchuqinEntity> ew = new EntityWrapper<YuangongchuqinEntity>();

PageUtils page = yuangongchuqinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuangongchuqin), params), params));

        return R.ok().put("data", page);

    }

3.除了添加部门操作,本页面还可以对冗余的部门进行删除操作,还可以刷新界面,以便显示最新的部门信息,为公司管理员管理公司人员架构提供便利。

5.2.4 员工管理功能模块

1.员工信息录入

在此页面主要是输入员工的基本信息,包括选择具体部门、填写工号、姓名、性别、年龄、职位、是否领导、登陆账号、密码等,如图5.5所示:

图5.5 员工信息录入页面

核心代码如下:

    @RequestMapping("/lists")

    public R list( YuangongchuqinEntity yuangongchuqin){

        EntityWrapper<YuangongchuqinEntity> ew = new EntityWrapper<YuangongchuqinEntity>();

       ew.allEq(MPUtil.allEQMapPre( yuangongchuqin, "yuangongchuqin"));

        return R.ok().put("data", yuangongchuqinService.selectListView(ew));

    }

    @RequestMapping("/query")

    public R query(YuangongchuqinEntity yuangongchuqin){

        EntityWrapper< YuangongchuqinEntity> ew = new EntityWrapper< YuangongchuqinEntity>();

  ew.allEq(MPUtil.allEQMapPre( yuangongchuqin, "yuangongchuqin"));

YuangongchuqinView yuangongchuqinView =  yuangongchuqinService.selectView(ew);

return R.ok("查询员工出勤成功").put("data", yuangongchuqinView);

    }

2.员工信息管理页面,如图5.6所示:

图5.6员工信息管理页面

管理员对员工信息有增、删、改、查等操作权限,界面操作简单明了,在录入单个员工信息后,刷新一下就可以在汇总表里看到,非常方便。

5.2.5 员工出勤管理功能模块

1.出勤录入

管理员在此页面主要工作是选择具体员工然后录入月份和出勤天数。具体员工和月份都可以点击网页对话框录入,大大减少了工作量。

该程序的呈现如下所示:

图5.7 出勤录入

核心代码如下:

    @RequestMapping("/info/{id}")

    public R info(@PathVariable("id") Long id){

        YuangongchuqinEntity yuangongchuqin = yuangongchuqinService.selectById(id);

        return R.ok().put("data", yuangongchuqin);

    }

@IgnoreAuth

    @RequestMapping("/detail/{id}")

    public R detail(@PathVariable("id") Long id){

        YuangongchuqinEntity yuangongchuqin = yuangongchuqinService.selectById(id);

        return R.ok().put("data", yuangongchuqin);

    }

图5.8 出勤信息管理页面

核心代码如下:

    @RequestMapping("/save")

    public R save(@RequestBody YuangongchuqinEntity yuangongchuqin, HttpServletRequest request){

     //ValidatorUtils.validateEntity(yuangongchuqin);

        yuangongchuqinService.insert(yuangongchuqin);

        return R.ok();

    }

    

    @RequestMapping("/add")

    public R add(@RequestBody YuangongchuqinEntity yuangongchuqin, HttpServletRequest request){

     //ValidatorUtils.validateEntity(yuangongchuqin);

        yuangongchuqinService.insert(yuangongchuqin);

        return R.ok();

    }

2.出勤管理主要负责录入员工的出勤情况,方便后给员工发工资。管理员拥有对员工出勤管理的操作的权限,还可以查询所有员工的出勤情况。

5.2.6 工资管理功能模块

1:描述:管理员在此页面可录入、删除单个员工的工资信息,然后统一显示所有员工工资信息,并实现打印工资报表的功能。

图5.9 员工工资管理界面

核心代码如下:

@RequestMapping("/update")

@Transactional

public R update(@RequestBody YuangongchuqinEntity yuangongchuqin, HttpServletRequest request){

    //ValidatorUtils.validateEntity(yuangongchuqin);

    yuangongchuqinService.updateById(yuangongchuqin);//全部更新

    return R.ok();

}

    @RequestMapping("/delete")

    public R delete(@RequestBody Long[] ids){

        yuangongchuqinService.deleteBatchIds(Arrays.asList(ids));

        return R.ok();

    }

增添员工工资如下图5.10所示:

图5.10 录入员工工资页面

2.工资管理主要负责按月份录入员工的工资,管理员有对员工工资信息的增删改查的权限,在选择员工是采用了调用部门信息里的员工信息,可以在网页里单击“选择”控件直接选择具体员工,最后汇总所有员工的工资信息,实现统一打印工资条的功能。

5.2.7 请假审核模块

描述:管理员查看请假信息,并加以批复。

图5.11 请假审核

回复员工请假信息如下图5.12所示

图5.12 请假批复

5.3 普通员工模块

5.3.1 员工修改自己的密码

描述:职工在登录系统后,在修改密码界面,输入原密码和新密码,然后点击“修改”即可更改成功,如果需要重新输入可以直接重置。

图5.13员工密码修改页面

核心代码如下:

5.3.2 员工工资管理

描述:点击我的工资浏览菜单,既可查询自己的工资信息。

图5.14 员工查询工资页面

5.3.3 员工请假申请管理

描述:职工登录自己的账号后可以向管理员提交请假申请,主要请假内容有开始和结束时间,请假原因等,还可以查询自己的请假申请批复状态。

图5.15 请假申请页面

核心代码如下:

   @RequestMapping("/value/{xColumnName}/{yColumnName}")

    public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) {

        Map<String, Object> params = new HashMap<String, Object>();

        params.put("xColumn", xColumnName);

        params.put("yColumn", yColumnName);

        EntityWrapper<YuangongchuqinEntity> ew = new EntityWrapper<YuangongchuqinEntity>();

String tableName = request.getSession().getAttribute("tableName").toString();

if(tableName.equals("yuangong")) {

            ew.eq("yuangonggonghao", (String)request.getSession().getAttribute("username"));

}

        List<Map<String, Object>> result = yuangongchuqinService.selectValue(params, ew);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");

        for(Map<String, Object> m : result) {

            for(String k : m.keySet()) {

                if(m.get(k) instanceof Date) {

                    m.put(k, sdf.format((Date)m.get(k)));

                }

            }

        }

        return R.ok().put("data", result);

    }

图5.16 查看请假信息

核心代码如下:

    @RequestMapping("/valueMul/{xColumnName}")

    public R valueMul(@PathVariable("xColumnName") String xColumnName,@RequestParam String yColumnNameMul, HttpServletRequest request) {

        String[] yColumnNames = yColumnNameMul.split(",");

        Map<String, Object> params = new HashMap<String, Object>();

        params.put("xColumn", xColumnName);

        List<List<Map<String, Object>>> result2 = new ArrayList<List<Map<String,Object>>>();

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");

        EntityWrapper<YuangongchuqinEntity> ew = new EntityWrapper<YuangongchuqinEntity>();

        String tableName = request.getSession().getAttribute("tableName").toString();

        if(tableName.equals("yuangong")) {

            ew.eq("yuangonggonghao", (String)request.getSession().getAttribute("username"));

        }

        for(int i=0;i<yColumnNames.length;i++) {

            params.put("yColumn", yColumnNames[i]);

            List<Map<String, Object>> result = yuangongchuqinService.selectValue(params, ew);

            for(Map<String, Object> m : result) {

                for(String k : m.keySet()) {

                    if(m.get(k) instanceof Date) {

                        m.put(k, sdf.format((Date)m.get(k)));

                    }

                }

            }

            result2.add(result);

        }

        return R.ok().put("data", result2);

    }

第六章 系统测试

6.1 软件测试目的

系统功能开发完成之后,都会针对系统的每个功能模块进行测试,一般有单元测试,每完成一个功能就会进行一次测试,最后,完成系统整体测试。软件测试也是一个较大的工程,通过实际的输出和输入以此审核系统的功能,及时发现系统中存在逻辑错误,保证软件的正常运行。

在软件开发过程中,测试阶段是也是最重要的一步。验证系统开发是否满足设计要求,是否存在安全方面的漏洞。

6.2 系统功能测试

6.2.1 主页面的登录模块测试

描述:登录功能测试,具体如表6.1所示:

表6.1 登录界面测试

用例编号

测试数据

预期结果

实际结果

是否通过

1

用户名:202101

密码:096019

弹出通过验证,系统登录成功

登录成功

通过

2

用户名:202101

密码:null

弹出错误提示,请输入密码

登录失败,提示输入密码

通过

3

用户名:202101

密码:4637

弹出错误提示,用户名或者密码错误

登录失败,提示

用户名或者密码错误

通过

6.2.2 修改密码的模块测试

描述:修改密码功能测试,具体如表6.2所示:

测试对象:用户名:202101;密码:096019

表6.2 修改密码测试

用例编号

测试数据

预期结果

实际结果

是否通过

1

原密码:null

新密码:null

请输入原密码

请输入原密码

通过

2

原密码:096019新密码:null

新密码不能为空

新密码不能为空

通过

3

原密码:abc

新密码:null

原密码不正确

原密码不正确

通过

4

原密码:1234456

新密码:1314520

修改成功

修改成功

通过

6.2.3 部门管理模块测试

描述:部门管理功能测试,具体如表6.3所示:

表6.3 添加部门模块测试

用例编号

测试数据

预期结果

实际结果

是否通过

1

部门名称:

销售部

操作成功

操作成功

通过

2

部门名称:null

请输入部门名称

请输入部门名称

通过

6.2.4 员工管理模块测试

描述:员工信息管理功能测试,具体如表6.4所示:

表6.4 录入员工信息模块测试

用例编号

测试数据

预期结果

实际结果

是否通过

1

点击删除

删除成功

删除成功

通过

2

点击添加

跳转到录入界面

跳转到录入界面

通过

3

不选择部门

请选择部门

请选择部门

通过

4

工号:null

请输入工号

请输入工号

通过

5

姓名:null

请输入姓名

请输入姓名

通过

6

年龄:null

职位:null

成功

成功

通过

7

帐号:null

请输入帐号

请输入帐号

通过

8

密码:null

请输入密码

请输入密码

通过

9

全部填写

成功

成功

通过

6.2.5 出勤管理模块测试

描述:出勤管理功能测试,具体如表6.5所示:

表6.5 出勤模块测试

用例编号

测试数据

预期结果

实际结果

是否通过

1

出勤管理

员工:null

请选择员工

通过

2

出勤管理

月份:null

请选择月份

通过

3

出勤管理

点击出勤录入

跳转到出勤

录入界面

通过

4

出勤管理

点击重置

信息清空

通过

6.2.6 工资管理模块测试

描述:部门管理功能测试,具体如表6.6所示:

表6.6 工资录入模块测试

用例编号

测试数据

预期结果

实际结果

是否通过

1

工资管理

点击工资录入

跳转到工资

录入界面

通过

2

工资管理

员工:null

请选择员工

通过

3

工资管理

月份:null

请选择月份

通过

4

工资管理

金额:null

请输入金额

通过

5

工资管理

员工:21

月份:4

金额:5000

录入成功

通过

6

工资管理

点击重置

信息清空

通过

6.2.7 请假审核模块测试

描述:管理员请假审核功能测试,具体如表6.7所示:

表6.7 请假审核模块测试

用例编号

测试数据

预期结果

实际结果

是否通过

1

点击审核

弹出操作窗口

弹出操作窗口

通过

2

点击删除

删除成功

删除成功

通过

3

回复信息:null

操作成功

操作成功

通过

6.2.8 员工请假申请模块测试

描述:员工请假申请功能测试,具体如表.8所示:

表6.8 员工请假申请模块测试

用例编号

测试数据

预期结果

实际结果

是否通过

1

点击删除

删除成功

删除成功

通过

2

点击添加申请

跳转到请假

申请界面

跳转到请假

申请界面

通过

3

不选择开始结束时间

请选择时间

请选择时间

通过

4

事由:null

请输入事由

请输入事由

通过

5

点击重置

信息清空

信息清空

通过

6.3  测试结论

本文设计的系统是一个比较复杂的系统,涉及的业务较多,因此,代码编写过程中,需要明确业务之间的联系,设想的设计步骤和实际操作存在一点误差可能就影响系统最终的功能,必须将系统实现的功能符合需求分析。这就需要不断和全面的调试系统,对功能、性能进行测试,并对测试过程、内容、时间做详细记录,方便后续维护人员的查看,对已经系统出现的问题能够第一时间发现,测试的最终目的就是减少系统出错的几率,并及时修改,防止出现更大的漏洞,进而发生严重的后果。经过测试,系统错误归纳为三种类型:

第一种,数据库模块发生错误,用户操作错误,导致数据库配置发生改变,数据库连接失败,进而导致系统数据显示异常,数据库操作模块要谨慎。

第二种,系统管理员在输入信息时信息输入错误或者其他异常,需要及时修正和注意。

第三种,用户频繁的操作和请求,服务器执行速度很慢,系统就会出现卡顿和反应慢,这时重新启动系统可以解决。

通过经过测试之后,本系统在功能、性能方面符合设计要求,系统运行基本顺利,不出现明显的错误,页面响应快捷和稳定,并且,系统的安全性得到了充分的保证,数据库设计模块对系统中的数据进行了加密处理,不同的操作用户被授予不同的权限,对于没有注册账号的用户无法登入系统。经过系统测试和总结,本软件开发的功能符合系统设计目标,本系统通过软件测试。

第七章  总结

本课题在系统开发前调查了企业对员工管理系统的需求,方便人力资源部门开展业务,管理员工,明确系统开发的需求,确定系统的开发技术,最终实现一个界面良好,功能齐全、系统稳定可靠、易操作的公司员工管理系统。

系统测试后,经过一段时间的应用,系统基本符合预期需求,从根本上解决了企业员工日常信息的管理,提高了企业的工作效率,以及工作的精准度,减少了由于人为因素产生的问题,给企业的管理提供了便利,降低了风险。

通过对系统的开发,梳理其中的不足之处分析如下:

(1)系统界面设计需要进一步完善,在后续的工作寄以期许,希望继续完善界面设计;

(2)对于系统数据的安全性以及可靠性,需要进一步验证,模拟当数据量变大时,数据的安全是否能保证;当出现错误数据集时,人需要检验数据库存储数据的正确性。

(3)系统的后期维护工作,企业的现代化建设需要记录和追踪用户的使用轨迹以及基本操作流程,进而汇总为报表类的记录。

关于上述的几点问题,在后期的完善过程中,仍要把界面美观和数据安全性作为开发重点。

  • 35
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值