摘 要
随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设企业人力资源管理系统。
本设计主要实现集人性化、高效率、便捷等优点于一身的企业人力资源管理系统,完成系统用户(管理员、员工用户、部门负责人)模块管理(员工信息、部门、员工签到、员工请假、员工任务、完成任务、工资发放)等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。只需通过一台电脑,动动手指就可以操作系统,实现数据通信管理。整个系统的设计过程都充分考虑了数据的安全、稳定及可靠等问题,而且操作过程简单。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。
企业人力资源管理系统使用Java语言,采用基于MVVM模式的ssm技术进行开发,使用Eclipse编译器编写,数据方面主要采用的是微软的MySQL关系型数据库来作为数据存储媒介,配合HTML+CSS 技术完成系统的开发。
关键词:Java开发语言;ssm框架技术;企业人力资源管理系统;
- 绪论
- 研究意义
为了提高员工管理的工作效率,减少不必要的开支,以及方便人事管理工作人员全面地掌握冠宇娱乐人事成果的基本情况。因此,设计开发一套专用的人力资源管理系统是十分重要的。然而,系统的具体设计与实现将针对每一个冠宇娱乐的人事管理情况具体进行开展。系统的开发首先要了解现有系统的缺点,为开发新的系统提供一个较为方便的解决方案,使管理人员在日常管理工作过程中,工作效率得以提高,并使冠宇娱乐资源得以更有效配置,从而提高冠宇娱乐的日常管理水平。
根据冠宇娱乐目前的实际情况,开发人员利用个人所拥有的计算机硬件设备和软件条件,从思想上,工作思维和工作方式做起,开发一套完整的人力资源管理系统来实现一些人事基本信息的添加、删除和修改。为减少员工管理人员的负担,我们应该从根本上解决用手工操作工作量大且容易出错的问题,同时,这也是员工管理领域以后发展的必然趋势。
人力资源管理系统的发展历史可以追溯到20世纪60年代末期。由于当时计算机技术已经进入实用阶段,同时大型企业用手工来计算和发放薪资既费时费力又非常容易出差错,为了解决这个矛盾,第一代的人力资源管理系统应运而生。当时由于技术条件和需求的限制,用户非常少,而且那种系统充其量也只不过是一种自动计算薪资的工具,既不包含非财务的信息,也不包含薪资的历史信息,几乎没有报表生成功能和薪资数据分析功能。但是,它的出现为人事的管理展示了美好的前景,即用计算机的高速度和自动化来替代手工的巨大工量,用计算机的高准确性来避免手工的错误和误差,使大规模集中处理大型企业的薪资成为可能。
人力资源管理系统的变革出现在20世纪90年代末。由于市场竞争的需要,如何吸引和留住人才,激发人事的创造性、工作责任感和工作热情已成为关系企业兴衰的重要因素,人才已经成为企业最重要的资产之一。"公正、公平、合理"的企业管理理念和企业管理水平的提高,使社会对人力资源管理系统有了更高的需求;同时由于个人电脑的普及,数据库技术、客户/服务器技术,特别是Internet/Intranet技术的发展,使得第三代人力资源管理系统的出现成为必然。第三代人力资源管理系统的特点是从人事管理的角度出发,用集中的数据库将几乎所有与人事相关的数据(如薪资福利、招聘、个人职业生涯的设计、奖惩、职位管理、绩效管理、岗位描述、个人信息和历史资料)统一管理起来,形成了集成的信息源。友好的用户界面,强有力的报表生成工具、分析工具和信息的共享使得人事管理人员得以摆脱繁重的日常工作,集中精力从战略的角度来考虑企业人事规划和政策。
- 国内外研究现状
上世纪六十年代末,国外学者开始了对人力资源管理的研究,在那个时代,计算机已经逐渐开始在各个领域应用起来。在世界没有信息化之前,大多数企业都是使用手工管理的方式管理企业员工的入职、离职、工资薪酬的计算等业务。对企业员工使用手工方式管理,不仅企业人力资源部员工效率低下,工作也非常繁琐,此种方式找到某个员工的资料就需要耗时许,而且使用此方式非常容易出现失误。国外的第一代人力系统在手工管理的背景下产生,但由于技术的限制,并没有得到广泛应用。这种传统的方式不仅难以实现对历史薪资的管理,也缺乏对财务信息之外的信息处理。因此,第一代的人力资源管理系统只是一个使用计算机对薪资进行自动计算的工具,不具备报表和数据分析的功能。第一代系统相较于手工管理的进步是使用计算机的快速计算替代了人工操作,并且提高了计算薪资的准确性和速度,保证了薪资在计算结果上不会出现问题。虽然第一-代的人力资源资源管理系统功能较少,但相比较与传统手工管理员工薪资的操作,第一代系统也提高了公司管理员工薪资的工作效率。随着计算机相关技术的发展,信息管理系统也相应发展,第二代人力资源管理系统就是随着数据库技术的产生相应而生的。人力系统和财务系统息息相关,第二代人力资源管理系统结合了财务功能相,增加了对员工的统计和分析功能。由于开发人员对系统业务了解甚少,因此第二代的人力资源系统的功能信息不够完善,企业的日常业务使用需求不能得到满足9。在二十世纪九十年代末,人力资源管理系统进入了新的阶段,因为全球各国市场逐渐开放,各企业面对的竞争压力也逐渐增大。在这种情况下,一个企业生存的关键在于要引进人才、管理人才,充分调动企业内部人才的创造性和积极性,提高企业员工的责任感和工作热情[10]。第三代人力资源管理系统在知识经济时代产生,结合了网络和数据库相关技术。第三代系统对企业内部的员工相关信息进行统一管理,使用统计和分析功能对数据进行分析,为企业高层决策提供科学的数据支持1。国外的人力系统相较于国内来说,起步早且系统成熟,目前国外企业广泛使用人力系统,在一些发达国家对系统形成了成熟的开发模式。由于技术不断地进步,国外的人力资源管理系统再设计开发之初就考虑到了企业未来业务的发展,因此在系统中预留了相应接口,为系统未来的维护准备。因此在未来人力资源管系统的发展中,国外系统会发展的更方便和快捷。
由于我国在20世纪经济发展落后与发达国家,因此我国人力资源管理系统的研究相比发达国家较为落后,但是我国近几年计算机技术迅速发展,在人力资源管理系统的研究中取得了一定成绩,但也存在一些不足如管理系统的开发由单位内部自主开发水平较低、应用集中于系统功能的实现、不同企业的系统水平差异较大。国内对于第三代人力资源管理系的研究已经取得-定成绩,主要是将工作流技术引入到系统中,如基于网络的分布式工作流管理、基于工作流的支撑平台等,但通过实践测试,上述系统的交互性和并发控制方面相对较低。随着企业的发展,我国企业同样有购买人力系统的需求,我国有大量研究该系统的公司,如用友、金蝶公司等。我国公司开发的人力系统基本采用原型法,公司构建出一个高度集成的标准产品,后续开发人员再根据需求对系统进行修改。我国企业开发的系统和国外相比,劣势是操作相对复杂,优势是集成较好。在进入二十一世纪后,我国企业使用的人力资源管理系统也在逐渐成熟,在企业成长的同时,企业对员工的管理也更加科学,企业可以针对优秀员工安排定制培训制定职业发展计划,员工在企业中能够得到成长,这也是人力资源管理的目的。
- 相关技术介绍
- B/S架构
B/S架构(浏览器/服务器)是当前应用最为广泛的一种架构,能够使系统的开发变得容易、易操作、易于维护。当你在你的电脑上安装一个数据库和几个非常常见的浏览器时,你就可以使用这个结构。B/S结构可以直接用于 B/S系统,并且 B/S架构可以在实际应用中大大降低了系统的运行维护。在 B/S平台上,各数据库彼此独立,具有很高的安全性。由于 B/S架构可以清晰地观察到系统所处理的业务,使管理者可以及时做出决定,从而避免了企业的亏损。B/S架构的本质特征是集中式管理,用户通过系统产生的数据,将其存入数据库,便于以后的应用,从而达到了各种需要。
B/S模型由一个浏览器、一个网络服务器、一个数据库服务器三个层级构成。数据管理采用了当前大部分现有B/S系统的表现层、应用层和数据层,Web浏览器是为了满足用户的要求而设计的,在数据处理和逻辑过程中使用的中间应用层,从而形成分布式的运行模式。B/S体系结构的逻辑是:在前端完成的处理,将主要的业务逻辑交给后台,而前端只负责少量的请求、渲染等。由于因特网技术的迅速发展,B/S体系结构使得任何时间、任何地点都能访问到该系统。
图2-1 B/S模式三层结构图
- ssm框架介绍
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
1.8.1 Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
1.8.2 SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
1.8.3 mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。
- MySQL数据库
科技的进步,给日常带来许多便利:教室的投影器用到了虚拟成像技术,数码相机用到了光电检测技术,比如超市货物进出库的记录需要一个信息仓库。这个信息仓库就是数据库,而这次的物流信息管理系统也需要这项技术的支持。
用MySQL这个软件,是因为它能接受多个使用者访问,而且里面存在Archive等。它会先把数据进行分类,然后分别保存在表里,这样的特别操作就会提高数据管理系统自身的速度,让数据库能被灵活运用。MySQL的代码是公开的,而且允许别人二次编译升级。这个特点能够降低使用者的成本,再搭配合适的软件后形成一个良好的网站系统。虽然它有缺点,但是综合各方面来说,它是使用者的主流运用的对象。
- 系统分析
- 可行性分析
可行性分析也是为了分析项目的开发系统是否对开发有价值,以及是否真的需要改进管理系统在信息听写方面的不足。以本项目企业人力资源管理系统的设计目标和实施过程为例,如果开发该系统,希望能很好地解决用户的管理信息问题,并且如果这使企业人力资源管理系统可以发展出最大价值学说,并且还可以变相的解决了用户在一定程度上的问题,那么这个项目的研发系统也就是最有价值有意义的系统。但研发目标又是不是达到了所期望的结果,以及科研任务在实现后的最大效用和价值,它是否等于所有总成本。因此,研发阶段本质上就是研发体系能否真正设计的阶段。
-
- 技术可行性
技术可行性主要考虑当前项目所用的技术是否能够符合,在设备上是否能够满足,及各种辅助工具是否提供帮助。本系统用的是Java开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。采用Java编程语言,已无技术上的问题。
-
- 经济可行性
系统所采用的主流的ssm框架进行系统主体框架的搭建和Mysql后端数据库均为免费开发工具。故开发成本主要集中在后期的推广及系统维护上。相对于成本较高的C/S模式,也是选用了成本较低的B/S模式,所以经济上几乎没任何问题。
-
- 操作可行性
此次项目设计的时候我参考了很多类似系统的成功案例,对它们的操作界面以及功能都进行了系统的分析,将众多案例结合在一起,突出以人为本简化操作,所以具有基本计算机知识的人都会操作本项目。因此操作可行性也没有问题。
- 系统功能需求
员工用户用例图如下所示。
图3-1 员工用户用例图
管理员用例图如下所示。
图3-2 管理员用例图
部门负责人用例图如下所示。
图3-3 部门负责人用例图
表3-1 个人信息管理用例描述
用例名称 | 管理和修改个人信息 |
参与者 | 用户 |
描述 | 用户查看、修改个人信息 |
前置条件 | 用户已登录到系统中 |
后置条件 | 无 |
事件流 | (1)用户查看个人信息 (2)用户修改个人信息 |
补充说明 | (a)用户可修改密码 (b)用户可修改个人资料,例如姓名,头像等 |
表3-1 员工用户管理用例描述
描述项 | 说明 |
用例名称 | 员工用户操作 |
用例描述 | 管理员正确登录后台管理的条件下,对员工用户进行管理 |
参与者 | 管理员 |
前置条件 | 管理员登录成功并跳转到后台主界面 |
后置条件 | 操作成功 |
主事件流 | 管理员跳转员工用户管理页面,查询员工用户详情的信息 管理员可以删除员工用户信息 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-1 员工信息管理用例描述
描述项 | 说明 |
用例名称 | 员工信息操作 |
用例描述 | 管理员正确登录后台管理的条件下,对员工信息模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入员工信息管理页面,查询宿舍的信息 (2)管理员可以对员工信息进行增删除和编辑员工信息操作 (3)管理员新增员工信息,添加成功跳转到查询页面 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-1 员工签到管理用例描述
描述项 | 说明 |
用例名称 | 员工签到操作 |
用例描述 | 管理员正确登录后台管理的条件下,对员工签到模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入员工签到管理页面,查询员工签到的信息 (2)管理员可以对员工签到进行增删除和编辑员工签到操作 (3)管理员新增员工签到,添加成功跳转到查询页面 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-1 员工请假管理用例描述
描述项 | 说明 |
用例名称 | 员工请假操作 |
用例描述 | 管理员正确登录后台管理的条件下,对员工请假模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入员工请假管理页面,查询员工请假的信息 (2)管理员可以对员工请假进行增删除和编辑员工请假操作 (3)管理员新增员工请假,添加成功跳转到查询页面 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-1 员工任务管理用例描述
描述项 | 说明 |
用例名称 | 员工任务操作 |
用例描述 | 管理员正确登录后台管理的条件下,对员工任务模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入员工任务管理页面,查询员工任务的信息 (2)管理员可以对员工任务进行增删除和编辑员工任务操作 (3)管理员新增员工任务,添加成功跳转到查询页面 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-1 完成任务管理用例描述
描述项 | 说明 |
用例名称 | 完成任务操作 |
用例描述 | 管理员正确登录后台管理的条件下,对完成任务模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入完成任务管理页面,查询完成任务的信息 (2)管理员可以对完成任务进行增删除和编辑完成任务操作 (3)管理员新增完成任务,添加成功跳转到查询页面 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-1工资发放管理用例描述
描述项 | 说明 |
用例名称 | 系统公告操作 |
用例描述 | 管理员正确登录后台管理的条件下,工资发放模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入工资发放管理页面,查询工资发放内容的信息 (2)管理员可以对工资发放进行删除操作 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
- 系统性能需求
第一,友好界面。企业人力资源管理系统开发设计,界面的友好性比较重要,满足这一要求才能体现出人性化设计特征,和用户应用系统便捷性相适应,动态的人机交互设计,用户应用系统的时候能感受到操作的便利,提高用户的体验良好感受,才能有助于将系统开采设计的作用价值充分发挥出来。
第二,稳定性要求。开发设计的企业人力资源管理系统,需要保持其稳定,系统应用稳定才能有助于各项管理工作高效率完成,提升系统使用体验度。系统运行保障因外部异常造成系统崩溃,系统发生问题后数据能及时备份,第一时间恢复数据信息,保障系统良好运行。
第三,可扩展性。企业人力资源管理系统的开发设计,需要满足可扩展性的要求,系统的设计需要考虑未来系统业务扩展问题,在测试不断应用下,功能需求会不断扩展,通过良好扩展性作用发挥,满足多样化的需要。
- 系统设计
- 总体目标
企业人力资源管理系统主要服务于企业的人力资源管理系统管理,利用网络改变企业人力资源管理系统模式,简化企业人力资源管理系统管理流程,减轻传统企业人力资源管理系统带来的工作负担和降低大量资源的消耗。本系统达到的目标主要有以下几点:
(1)通过简单的页面设计和便捷的功能操作,保证系统的简单性和实用性,形成良好的用户体验。
(2)本系统主要针对企业人力资源管理系统需求进行设计开发,突出较强的针对性。
(3)能够具有一定的安全机制,保证问题记录的安全性。
- 总体结构设计
层次框图是一系列由多层矩形框架组成的树,其顶部为矩形框架,表示整个数据结构,下方的长方形立方体表示独立的数据,下方的长方形表示该数据的实际数据(不能进行分割)。由于这个架构的精炼,层级方块图描述的资料结构也愈加详尽,这个模型很好地满足了需求分析的要求。首先对最上层的信息进行分类,然后在图表中的每个路径上重复地进行优化,直至完整的数据结构被确定。
这个系统由三个模块组成,一个是管理员,二个是员工用户,三个是部门负责人,这三个部分看起来是独立的,实际上却是连接着数据库,每个模块都有自己的权限,唯一不同的,就是访问的方式不同。在调研资料的基础上,完成了各个模块的功能。在对上述功能进行分析的基础上,本系统提出了三个主要的模块,每个单元可划分为若干小单元。
系统的功能结构图如下图所示。
图4-2 系统功能结构图
- 功能模块设计
1.登录模块:
本企业人力资源管理系统的用户登录涉及到三类信息的判断:第一类是用户名和密码是否为空;第二类是验证码是否录入和正确;第三类就是用户登录信息、验证码和权限是否匹配通过。在该用户登录流程对会对用户名和密码是否为空进行判断,以及验证码是否正确进行判断,只有以上的几类信息中的一种存在问题的情况下都是无法登录成功的。
2.员工信息管理模块:
本企业人力资源管理系统中的员工信息管理,管理方式都是对信息的三种基本操作:一种是完成员工信息的添加,在这里会对员工信息的录入情况来判断;一种是对员工信息的修改,另一种就是对员工信息的删除。其后两种操作都是要建立在第一种操作而生成的员工信息列表的基础上完成的。
3.员工请假管理模块
本企业人力资源管理系统中的员工请假管理,管理方式都是对信息的三种基本操作:一种是完成员工请假的添加,在这里会对员工请假的录入情况来判断;一种是对员工请假的修改,另一种就是对员工请假的删除。其后两种操作都是要建立在第一种操作而生成的员工请假列表的基础上完成的。
4.工资发放模块
本企业人力资源管理系统中的工资发放管理,管理方式都是对信息的三种基本操作:一种是完成工资发放的添加,在这里会对工资发放的录入情况来判断;一种是对工资发放的修改,另一种就是对工资发放的删除。其后两种操作都是要建立在第一种操作而生成的工资发放的基础上完成的。
- 数据库设计
- 概念设计
企业人力资源管理系统的总E-R图如下。
图4-3 总体ER图
-
- 逻辑设计
所有系统的应用数据相互区分。一旦在相应的系统中实现,它们将与自己相应的网络和服务器通信。所以这个系统可以连接这些数据。当我们选择桥梁截面时,以下将简要介绍如何建立系统。在单击上一个按键的时候,就会自动在对话框中弹出数据源的名字,之后再单击下一个按键时,就在填写相对应的身份验证和登录信息。按照系统功能设计的特点与职能模块的分类,企业人力资源管理系统的总体设计和实施过程一共涉及到了几个资料表格。
以下就介绍了一些根据各类别主要数据库表的设计结构以及基本功能建立数据库
表complete_the_task (完成任务)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | complete_the_task_id | int | 10 | 0 | N | Y | 完成任务ID | |
2 | task_number | varchar | 64 | 0 | N | N | 任务编号 | |
3 | partial_responsible_person | int | 10 | 0 | Y | N | 0 | 部分负责人 |
4 | department | varchar | 64 | 0 | Y | N | 部门 | |
5 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
6 | employee_id | varchar | 64 | 0 | Y | N | 员工工号 | |
7 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
8 | notification_date | date | 10 | 0 | Y | N | 通知日期 | |
9 | complete_the_task | varchar | 255 | 0 | Y | N | 完成任务 | |
10 | detailed_description | text | 65535 | 0 | Y | N | 详情描述 | |
11 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
12 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
13 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表department (部门)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | department_id | int | 10 | 0 | N | Y | 部门ID | |
2 | department | varchar | 64 | 0 | Y | N | 部门 | |
3 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
4 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表department_head (部门负责人)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | department_head_id | int | 10 | 0 | N | Y | 部门负责人ID | |
2 | name_of_person_in_charge | varchar | 64 | 0 | Y | N | 负责人姓名 | |
3 | department | varchar | 64 | 0 | Y | N | 部门 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
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 | 更新时间 |
表employee_check_in (员工签到)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | employee_check_in_id | int | 10 | 0 | N | Y | 员工签到ID | |
2 | department_head | int | 10 | 0 | Y | N | 0 | 部门负责人 |
3 | department | varchar | 64 | 0 | Y | N | 部门 | |
4 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
5 | employee_id | varchar | 64 | 0 | Y | N | 员工工号 | |
6 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
7 | sign_in_date | date | 10 | 0 | Y | N | 签到日期 | |
8 | sign_in_times | varchar | 64 | 0 | Y | N | 签到次数 | |
9 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
10 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表employee_information (员工信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | employee_information_id | int | 10 | 0 | N | Y | 员工信息ID | |
2 | partial_responsible_person | int | 10 | 0 | Y | N | 0 | 部分负责人 |
3 | department | varchar | 64 | 0 | Y | N | 部门 | |
4 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
5 | employee_id | varchar | 64 | 0 | N | N | 员工工号 | |
6 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
7 | base_pay | int | 10 | 0 | Y | N | 0 | 基本工资 |
8 | employee_profile | varchar | 255 | 0 | Y | N | 员工档案 | |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | limit_times | int | 10 | 0 | N | N | 0 | 限制次数 |
11 | limit_type | tinyint | 4 | 0 | N | N | 1 | 限制次数类型1-每天次,2-总计次 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表employee_leave (员工请假)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | employee_leave_id | int | 10 | 0 | N | Y | 员工请假ID | |
2 | department_head | int | 10 | 0 | Y | N | 0 | 部门负责人 |
3 | department | varchar | 64 | 0 | Y | N | 部门 | |
4 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
5 | employee_id | varchar | 64 | 0 | Y | N | 员工工号 | |
6 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
7 | start_date | date | 10 | 0 | Y | N | 开始日期 | |
8 | end_date | date | 10 | 0 | Y | N | 结束日期 | |
9 | leave_days | int | 10 | 0 | Y | N | 0 | 请假天数 |
10 | leave_content | text | 65535 | 0 | Y | N | 请假内容 | |
11 | leave_attachment | varchar | 255 | 0 | Y | N | 请假附件 | |
12 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
13 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
14 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表employee_tasks (员工任务)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | employee_tasks_id | int | 10 | 0 | N | Y | 员工任务ID | |
2 | task_number | varchar | 64 | 0 | Y | N | 任务编号 | |
3 | partial_responsible_person | int | 10 | 0 | Y | N | 0 | 部分负责人 |
4 | department | varchar | 64 | 0 | Y | N | 部门 | |
5 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
6 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
7 | employee_id | varchar | 64 | 0 | Y | N | 员工工号 | |
8 | notification_date | date | 10 | 0 | Y | N | 通知日期 | |
9 | task_attachment | varchar | 255 | 0 | Y | N | 任务附件 | |
10 | task_content | text | 65535 | 0 | Y | N | 任务内容 | |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表employee_users (员工用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | employee_users_id | int | 10 | 0 | N | Y | 员工用户ID | |
2 | employee_id | varchar | 64 | 0 | N | N | 员工工号 | |
3 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
4 | department | varchar | 64 | 0 | Y | N | 部门 | |
5 | department_head | int | 10 | 0 | Y | N | 0 | 部门负责人 |
6 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表salary_distribution (工资发放)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | salary_distribution_id | int | 10 | 0 | N | Y | 工资发放ID | |
2 | partial_responsible_person | int | 10 | 0 | Y | N | 0 | 部分负责人 |
3 | department | varchar | 64 | 0 | Y | N | 部门 | |
4 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
5 | employee_id | varchar | 64 | 0 | Y | N | 员工工号 | |
6 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
7 | base_pay | int | 10 | 0 | Y | N | 0 | 基本工资 |
8 | achievement_bonus | int | 10 | 0 | Y | N | 0 | 绩效奖金 |
9 | total_management_system | int | 10 | 0 | Y | N | 0 | 全勤奖 |
10 | penalty_amount | int | 10 | 0 | Y | N | 0 | 惩罚金额 |
11 | actual_distribution | varchar | 64 | 0 | Y | N | 实际发放 | |
12 | release_date | date | 10 | 0 | Y | N | 发放日期 | |
13 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
- 系统实现
- 登录模块的实现
用户登录的验证将不再局限于登录信息和权限的匹配验证,而是另外增加了一个验证码,只有界面上所有的编辑框数据都准确的情况下才能实现登录成功。管理员的登录和前台用户登录是一样的过程,其主要就是利用权限字段来完成对用户或管理员的角色识别。
用户登录流程图如下所示。
图5-1 用户登录流程图
登录界面如下图所示。
图5-1 登录界面
- 员工任务模块的实现
用户执行员工任务,并可以操作相关内容,例如查看,编辑。员工任务的添加操作是建立在任务信息的列表基础上,单击查员工任务信息下的员工任务链接;然后单击“员工任务”进行添加,添加成功后的信息会载入到员工任务查询列表中。
员工任务流程图如下所示。
图5-1 员工任务流程图
员工任务界面如图所示。
图5-1 员工任务界面
- 用户管理模块的实现
用户通过注册了方可获得登录使用权限,此时选择用户选项,系统就会自动转到用户注册工作面,在注册该部分信息时系统会自动调用add函数,然后在给定的文本框中填写有关该用户的基础信息后选择确认即可完成注册。检索用户信息,在新增用户信息以后,在检索工具栏中填写对应的用户信息,系统就会将该用户有关的所有信息展示出来。
用户管理流程图如下所示。
图5-1 用户管理流程图
用户管理界面如下图所示。
图5-1用户管理界面
用户管理逻辑代码如下所示。
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
- 部门管理模块的实现
管理员执行部门管理,并可以操作相关内容,例如添加,查看,编辑和删除。通过单击“添加部门”,可以通过部门添加界面添加详细信息。单击查看字段级别链接以查看有关所选字段级别的信息。然后单击“提交”跳转重返到添加页面。添加成功后的信息会载入到部门查询列表中,管理员可进行编辑以及修改。
部门管理流程图如下所示。
图5-1 部门管理流程图
部门管理如下图所示。
图5-1 部门管理界面
部门管理的逻辑代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
- 员工请假管理模块的实现
管理员执行员工请假管理,并可以操作相关内容,例如添加,查看,编辑和删除。通过单击“添加员工请假”,可以通过员工请假添加界面添加详细信息。单击查看字段级别链接以查看有关所选字段级别的信息。然后单击“提交”跳转重返到添加页面。添加成功后的信息会载入到员工请假查询列表中,管理员可进行编辑以及修改。
员工请假管理流程图如下所示。
图5-1 员工请假管理流程图
员工请假管理如下图所示。
图5-1 员工请假管理界面
员工请假管理逻辑代码如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
- 密码修改模块的实现
用户使用该企业人力资源管理系统注册完成后,用户对登录密码有修改需求时,系统也可以提供用户修改密码权限。系统中所有的操作者能够变更自己的密码信息,执行该功能首先必须要登入系统,然后选择密码变更选项以后在给定的文本框中填写初始密码和新密码来完成修改密码的操作。在填写的时候,假如两次密码填写存在差异,那么此次密码变更操作失败,下面的图片展示的就是该板块对应的工作面。
密码修改流程图如下所示。
图5-1 密码修改流程图
密码修改界面如图所示。
图5-1 密码修改管理界面
- 系统测试
- 测试目的
在这个产品被投入使用前,首先需要进行试用,这是重要的环节。考虑到某个部分的开发没有缺陷情况下,把各种模块拼接,也有一定概率就存在矛盾。这就好比每个人都很独特,但聚在一起就显得杂乱无章,需要保证有默契的配合。对于测试,要看它的各项内容是否契合的原则。若与最初定下的标准有一定程度上的出入,那么就需要做出一些调整,让最终的大方向朝着目标前进。
测试是为了发现在开发的程序中所存在的问题,测试这一工作是非常艰巨的,而又是非常困难的,这一部分在程序的设计中占有很大比例,可以说一个程序的开发工作量要是占据了百分至六十,那么剩下的百分之四十必然是测试这一部分,甚至更高。
- 测试用例
- 用户登录测试
用户登录功能测试:
表6-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
-
- 创建数据测试
在系统中,创建功能也是基础功能之一,因此创建功能的测试很有代表性。在此章节主要列举在创建时各种情况下系统结果的测试。由于系统涉及创建功能操作过多,因此将多处统称创建功能。
创建数据用例如下表所示。
表6-5创建数据测试用例
测试用例编号 | YL_05 | |
测试用例名称 | 系统使用者进行创建数据 | |
测试用例描述 | 使用者输入要创建的数据 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
输入完整并且格式正确的数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
核心位置数据但非必要位置不输入数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
核心数据位置不输入数据 | 提示“创建失败” | 预期结果 |
-
- 修改数据 测试
在系统中,修改功能是系统主要实现功能,因此修改功能的测试很有代表性。在此章节主要列举在修改时各种情况下系统结果的测试。由于系统涉及修改功能操作过多,因此将多处数据表记录修改和状态修改统称修改功能。
修改数据用例如下表所示。
表6-6修改数据测试用例
测试用例编号 | YL_06 | |
测试用例名称 | 系统使用者进行修改数据 | |
测试用例描述 | 使用者对可修改的数据项进行修改 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
将现有数据修改成正确的数据 | 提示“修改成功”,并显示所有数据 | 预期结果 |
将现有数据修改成错误的数据 | 提示“修改失败” | 预期结果 |
-
- 查询数据 测试
在系统中,查询功能是使用系统使用最多也是最基础的功能,因此查询功能的测试很有代表性。在此章节主要列举在查询时各种情况下系统结果的测试。
查询数据用例如下表所示。
表6-7查询数据测试用例
测试用例编号 | YL_05 | |
测试用例名称 | 系统使用者进行查询数据 | |
测试用例描述 | 全部查询以及输入关键词查询 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
界面自动查询全部 | 显示对应所有记录 | 预期结果 |
输入已存在且能匹配成功的关键字 | 显示所查询到的数据 | 预期结果 |
输入不存在的关键字 | 显示数据界面为空 | 预期结果 |
- 测试结果
在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都是能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。
结 论
至此,企业人力资源管理系统已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Web、Java技术、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
源码获取
README.md · yuanmadd/HuoQuYuanMa - Gitee.com