本科毕业设计(论文)
题 目 企业人事管理系统设计与实现 完成时间 2015年 6月1日
毕业设计(论文)任务书
题目 企业人事管理系统设计与实现 主要内容、基本要求、主要参考资料等: 主要内容:
为了应对现代企业越来越复杂的组成结构和由此产生的繁重的管理工作,提高企业的工作效率和凝聚力,避免因人为因素造成的数据丢失等严重后果,使用Java、SqlServer、JSP技术设计一个企业人事管理系统,为企业日常业务的综合管理工作提供帮助,主要模块有员工资料、部门管理、职位管理、签到、请假管理、招聘、奖惩管理、加班管理、公告系统、资料共享等模块。基本满足企业日常的业务需求,实现企业的现代化管理。
基本要求:
1. 所实现的功能基本满足企业的日常使用。 2.安全可靠,易于开发和维护、有较强可扩充性。
主要参考资料:
[1]刘浩.Java从入门到精通[M].北京:人民邮电出版社,2010.
[2]陈海山.深入Java Servlet网络编程[M].北京:清华大学出版社,2010. [3]耿祥义,张跃平.Java基础教程[M].北京:清华大学出版社,2009.
指导教师签名: 专业负责人签名:
2015 年 3 月 3 日
目 录
摘 要 .................................................................................................................................................... I ABSTRACT ....................................................................................................................................... II 1 绪论 ................................................................................................................................................... 1
1.1 开发背景............................................................................................................................ 1 1.2 开发目标............................................................................................................................ 1 1.3 开发思想............................................................................................................................ 2 2 技术介绍 ......................................................................................................................................... 3
2.1 B/S结构 ............................................................................................................................. 3 2.2 Java语言简介 ................................................................................................................ 3 2.3 MyEclipse介绍 ............................................................................................................. 4 2.4 SqlServer2008 .............................................................................................................. 4 2.5 JDBC ...................................................................................................................................... 4 3 可行性分析 ................................................................................................................................... 7
3.1 技术可行性 ...................................................................................................................... 7 3.2 运行可行性 ...................................................................................................................... 7 3.3 经济可行性 ...................................................................................................................... 8 4 需求分析 ......................................................................................................................................... 5
4.1 功能需求............................................................................................................................ 5 4.2 性能需求............................................................................................................................ 5 4.3 其他需求............................................................................................................................ 6 5 概要设计 ......................................................................................................................................... 9
5.1 系统总体设计 ................................................................................................................. 9 5.2 各个模块设计 ................................................................................................................. 9 5.3 应聘子系统设计 .......................................................................................................... 10 6 数据库设计 ................................................................................................................................. 12
6.1 数据分析.......................................................................................................................... 12 6.2 数据表实现 .................................................................................................................... 13 7 系统实现 ....................................................................................................................................... 19
7.1 各个模块实现 ............................................................................................................... 19 7.2 应聘子系统实现 .......................................................................................................... 30 7.3 关键方法.......................................................................................................................... 32 8 系统测试 ....................................................................................................................................... 35
8.1 用例设计.......................................................................................................................... 35 8.2 测试实施.......................................................................................................................... 36 8.3 测试结论.......................................................................................................................... 37 结束语 ................................................................................................................................................. 38 致 谢 ................................................................................................................................................. 39 参考文献 ............................................................................................................................................ 40
企业人事管理系统设计与实现
企业人事管理系统设计与实现
摘 要
随着现代企业的发展,企业组成的复杂度变得越来越大,单纯的手工管理在处理业务时效率低下,已无法满足企业的需求,开发一个简单方便、可靠性好的人事管理系统显得极为必要。
针对这些需求,在分析了业务逻辑后,进行人事管理系统的设计工作,采用B/S架构,Java作为开发语言,SqlServer2008作为数据库,主要实现了员工信息、部门管理、招聘管理、薪资管理、考勤管理、文件共享等功能。另外设计了一个应聘子系统作为主系统的补充,让应聘者创建信息、浏览公司职位和查看自己的处理结果,增强系统的人事管理功能,以软件工程开发流程为指导,并借鉴MVC设计模式,最终完成了企业人事管理系统的开发。
该系统的实现为企业管理工作带来了便利,降低了管理成本,提高效率,可以基本满足中小型企业的需求,这也是该系统的开发目的所在。
关键词 人事管理,B/S,SQLServer,JDBC
I
企业人事管理系统设计与实现
THE DESIGN AND IMPLEMENTATION OF ENTERPRISE
PERSONNEL MANAGEMENT SYSTEM
ABSTRACT
With the development of modern enterprises, the complexity of the Enterprise has become more and more big, simple manual management is inefficiency in dealing with business, has been unable to meet the needs of enterprises, to develop a simple, reliable, appears good personnel management system become extremely necessary.
In response to these needs, after the analysis of the business logic, design work and personnel management system, use the B / S architecture, Java as a development language, SqlServer2008 as a database, Had achieved the employee information, sector management, recruitment management, payroll function, and attendance management function, file sharing and other functions. Also we designed a candidate subsystem to supplement the primary system, so that candidates create information, visit the company's position and view their results, and enhance the system's personnel management to software engineering processes as a guide, and learn MVC design pattern, finally completed the development of personnel management system.
Implementation of the system of enterprise management is made easier, reduce management costs, improve efficiency, it can basically meet the needs of Small and Medium Enterprises, which is the system's development purpose.
KEY WORDS personnel management,B/S,SQLServer,JDBC
II
企业人事管理系统设计与实现
1 绪论
1.1 开发背景
随着计算机技术的进步,中国的高速发展,企业的管理机制正在发生着重要变化,现代企业在管理中逐渐引入了现代化的管理技术,当今社会正在朝着信息化、科学化的方向快速发展,信息自动化的意义和作用已经越来越大,他可以使我们不再疲惫于繁重的人力资源管理工作,而是利用信息化的技术去进行管理[1]。目前很多企业仍然没有一个系统化、规范化的人事管理软件,人事管理还处于最基础的人工管理阶段,效率低下,已经远远不能满足当今社会对人事管理的需求,并且人工管理有很多显而易见的弊病,会出现因为人为的操作失误,错误操作,造成数据的丢失、损坏、误报,给企业造成不可挽回的损失,另外,时间一长,这种管理方式会产生大量的文件,对于更新维护带来了不少困难。这些现象层出不穷[2]。
人事管理是现代企业管理中不可忽视的一个重要组成部分,竞争对于企业管理者提出了更多的挑战,人事的管理另一种意义,就是对企业生命和前途的管理,人事是最宝贵的资源,一个企业没有了可用之才,那么这个企业会变得岌岌可危,实现办公自动化已经得到了企业的重视,企业要想在当今激烈的竞争中生存下来,就必须要引入信息化管理,做好人才的管理工作。
1.2 开发目标
目前在市场上已经存在很多人事管理系统,人事管理系统在现代化的企业管理中越来越受到管理者的重视,但是这些都并不一定满足企业的日常应用,这些软件确实很好,但是对于企业来说,需要的是一个实用、高效、价格低廉的软件,购买一个这样的软件,本身就是一笔很大的开销,再加上日常的维护处理,带来的工作成本会大大提高,得不偿失。在企业管理中并不需要特别大型的管理系统,操作简便、功能强大、满足基本的日常工作处理即可[3]。降低人事管理的成本,提高效率,科学化的管理企业。这就是本系统开发目标所在。
1
企业人事管理系统设计与实现
1.3 开发思想
在设计一个系统之前,首先要对这个系统要有一个清晰的认识,知道要实现什么功能,要设计什么模块,以及权限控制,安全控制等,这些因素都要考虑到[4],这是对一个系统最基本的认识,一个简单好用的系统应该包括操作便捷、界面美观大方、运行速度快、学习成本小等等优点,让使用者可以快速上手,方便快捷的对企业进行管理。由此分析出,此系统应该具有以下几个特点:
(1)高技术性:采用比较先进的开发工具,本系统采用了Java开发最为流行的集成开发工具:MyEclipse和SqlServer2008数据库相结合,进行开发和实现工作,MyEclipse是一个功能非常强大的IDE,微软开发的SqlServer在市场一直有着良好的评价,可以大容量的进行数据存储,使用Java作为开发语言,采用了MVC[5]思想进行模型构建,充分运用了先进的技术来开发本系统。
(2)实用性:在开发系统之前,做了很多相关方面的调查,包括和公司领导进行沟通交流,发现在企业中的实际需求,以及上网查询资料,观察类似的软件都实现了什么功能,一切从需求出发,以需求为引导,以用户的方便为准则,进而提出了需求分析和概要设计,切实满足用户需求和要求,达到让用户满意的程度。
(3)严谨性:企业最看重的是数据的安全问题[6],数据安全也是软件设计工作中的重中之重,为了保持数据的完整性和保密性,在充分调查了企业的需求之后,本系统设计了三种登录身份,一种是普通用户身份,权限最低,一种是管理员身份,可以对系统的各个模块进行操作,比如录入工资,更新公告,更新奖惩办法,处理请假申请等等一系列信息,但是不能对一些敏感数据进行操作,如果想进行操作,就需要以第三种身份进行登录:超级管理员,可以对敏感信息进行操作,比如删除考勤记录、删除工资记录、用户管理等,防止有人恶意篡改数据,在一定程度上保证了数据的安全性。
(4)复用性:采用模块化方法进行开发和设计,对于各个模块都相同的代码进行了通用类的设计,达到设计出高内聚,低耦合的程序的目标,提高了系统的复用性。
2
企业人事管理系统设计与实现
2 技术介绍
2.1 B/S结构
B/S结构,即服务器/浏览器结构,它是随着Web技术的发展建立起来的模型,在当前的Web开发中属于一种比较常见的模式,应用较为广泛,从传统的C/S(客户端/服务端)结构转变而来,是一种新的网络模式架构,其实本质就是三层的C/S架构,在B/S架构下,用户界面是用JSP编写,通过浏览器进行显示,在前端只执行极少数的业务逻辑,主要业务均在后端(Server端)实现,极大的简化了客户端的电脑负荷,使得日后的维护工作只要对服务器端进行维护即可,减轻了开发成本与系统维护、升级的费用[7]。但是由此带来的后果是服务器负荷交大,对服务器的性能要求较高,具体结构如图2-1所示。
浏览器请求信息结果信息Web服务器SQL结果数据库服务器 图2-1 B/S模型结构示意图
2.2 Java语言简介
当前有许多开发语言可以选择,面对这些开发语言,在项目开发的准备工作中,最终选择了Java作为开发语言,因为Java有强大的面向对象特性,可以很好的区分业务逻辑和页面开发。
Java是在1995年,由Sun Microsystem公司发布的一种面向对象的设计语言,以及开发平台的总称,最初命名是Oak,当初被作为嵌入式语言为消费类的电子产品而设计的,现在被广泛用于开发Internet程序,Java是一种平台无关的语言[8],可以跨平台编写开发应用。
自从Java被开发出来,让整个Web开发发生了翻天覆地的变化。Java有着通用性、高效性等诸多特点,在各个平台可以很方便的进行移植,广泛的用于个人PC、数据库服务器、移动开发、游戏服务器、互联网开发、Web开发等领域,Java在全球的使用度和C不相上下。
3
企业人事管理系统设计与实现
2.3 MyEclipse介绍
MyEclipse是在Eclipse的基础上,加入插件插件而形成的企业级应用开发环境,主要用于JAVA、JAVAEE以及移动应用的开发,MyEclipse因为其强大的功能,拥有者广泛的支持,对各种开源框架的支持也相当不错。全称是MyEclipse Enterprise Workbench,是一个功能非常丰富的JAVAEE集成开发环境,是对Eclipse的IDE的扩展,利用Myeclipse可以使用数据库进行JAVASE、JAVAEE的开发,发布以及应用程序的整合,Myeclipse因为其强大的开发环境支持,可以大大提高工作进度和效率,包括了完整的编码、调试、发布功能。Myeclipse几乎囊括了市场上所有主流的专属开发工具。
2.4 SqlServer2008
SqlServer2008数据库是由微软公司推出的,在Sqlserver2005的基础上做出改进的关系型数据库系统。可以在各个Windows操作系统上正常使用,Sqlserver是一个非常全面的数据库平台,可以为任何规模的企业和机构提供强大的信息管理解决方案,使用了智能的商业智能工具提供了企业级的数据管理[9],可以让开发者构建更为强大的数据应用程序,因此本系统采用了SqlServer2008作为系统数据库进行开发。
2.5 JDBC
JDBC[10],全称是Java DataBase Connectivity,即Java与数据库的连接技术,是一组针对连接数据库而开发的API,可以支持多个数据库,提供统一的访问方法,是一种标准,开发厂商可以由此定制自己的开发工具和结构,使系统的开发人员可以用此让Java和数据库得到连接,JDBC是一种数据库连接的基准,JDBC开发标准的的接口,并为数据库厂商和使用者提供了标准的数据库连接方法,由一组用Java编写的类和接口组成。有了JDBC技术,使从Java向数据库发送数据变得容易,就不必再为每个数据库再专门编写程序,使得程序员不必再为跨平台的问题而担心,不必再为不同的平台编写不同的程序,真正实现了“一次编写,到处运行”。
4
企业人事管理系统设计与实现
3 可行性分析
在开展开发工作之前,需要对可行性进行分析和调查,可行性分析是一个系统在开发之前研究项目是否可行的技术,在分析系统之后,发现开发中存在的问题和可能性,主要从经济、技术、运行、进行分析和研究,减少开发风险,避免人力物力的浪费,调查的方式有很多种,包括上网查阅资料,观察其他类似系统是怎么实现的,以及走访企业,和系统分析员进行交流,和人事管理员进行沟通等等,并了解企业的工作方式和工作流程,以及具体的实施办法,分析结果是使用完善的企业人事管理系统可以非常方便的进行企业管理,极大的提高管理效率,根据上述分析,开始进行可行性研究工作。
3.1 技术可行性
开发环境(IDE[11])可行性:从目前主流的开发技术来看,使用基于JAVAEE的开发架构,B/S作为系统结构,使用Java开发语言以及SqlServer数据库完全可以胜任本系统的开发工作,Java语言向来比较安全,加上SqlServer强大的数据管理,以及MyEclipse的开发工具,完全满足本系统的开发环境要求。
开发硬件可行性:系统在开发的过程中开发人员所具有的资料和计算机设备以及相关资源,以及在系统开发完成后,使用企业所具有的计算机设备以及其他资源,要综合考虑双方的情况,设计一个最合理的方案,保证系统在开发出来后,在客户的环境下可以完美运行,同时还要考虑性价比的因素。本系统对于计算机的运行有一定的性能要求,内存不低于1G,硬盘容量大于40G,并需要安装JRE,如果低于这个需求,将会影响系统的正常运行,从目前来看,主流的计算机均达到了这个要求,所以在硬件方面是可行的。
3.2 运行可行性
由于本系统是一个内部系统,不向外部公开,所以避免了外来的恶意访问,本系统在运行过程中只是面向企业内部使用,包括员工、组长、经理等,尽管这些人之前可能没有使用过相关管理软件的经验,但是本系统是建立在Windows操作系统之上,操作界面友好,简单明了,学习成本较低,操作人员无需进行专业的培训即可胜任此
5
企业人事管理系统设计与实现
工作,可以在专业人员的知道下迅速的掌握系统的使用方法,如果有必要的话,可以编写一个操作说明书,供相关人员进行学习,正确的操作人事管理系统。
3.3 经济可行性
由于现阶段企业的管理仍然存在很多问题,仍然存在很多人工管理的现象,耗时多,效率低下,极易出错,得不偿失,利用计算机来管理人事成为了当今管理的主流方式,开发一套人事管理系统是非常有必要的。人事管理水平的提高,能够提高企业各方面的能力综合提高,利用本系统作为管理系统,减少因为操作事物造成的数据损失,也可以使企业在管理方面减少很多费用支出,比如实现了自动化操作,可以分配较少的人手去执行数据管理工作,精简人员,减少开支。
由以上三方面可以看出,本系统经过可行性分析,从多个方面来考虑,系统的开发工作是可行的。
6
企业人事管理系统设计与实现
4 需求分析
需求分析又称为需求调查,是整个系统开发过程的重要组成阶段,也是一个系统开发的基础,它明确了这个系统要实现什么功能,有哪些模块,有哪些数据是要被输入到系统的,最后会获得什么结果,要充分分析用户对系统的要求,对用户提出的问题进行详细的分析,弄清楚客户要求,才能进行下一步的工作,系统开发是以需求为引导的一个过程,为了开发一个实用的系统,首先要进行的就是需求调查和需求分析,明确调查方式,明确调查目的。
要了解各个部门的大致工作流程和工作划分,由于开发者和使用者存在着各种各样的问题,提出需求的并不一定都是开发人员,个别用户不了解需要实现的功能,只是根据企业的业务需求提出要求,所以在系统的设计过程中需要两者紧密交流,充分了解对方的业务需求以及实际情况,明确用户需求,进行可行性分析,确认系统的开发工作是否可以进行下去,为系统的开发工作提供有力帮助。在对企业需求进行了充分的分析工作后,对企业的业务需求有了一定的了解,对这些需求进行整理,并借鉴了软件工程的思想,最终分析出如下需求:
4.1 功能需求
(1)功能完备,实现足够多的模块,要了解企业中各个部门的组成情况和主要业务,和相应的日常活动和职能,充分了解企业构造,一个完整的企业人事管理系统应该包括员工信息记录、考勤管理、薪资管理、应聘管理、请假管理、加班管理、公告、资料共享等,企业中的实际业务都要考虑到,并且在开发过程中与使用企业保持沟通,为企业量身定制,充分满足企业需求。
(2)有严格的权限管理机制,由于企业的日常工作中会涉及到商业机密,员工的薪资信息、考勤信息都要妥善保存,要防止人为破坏,在系统的设计中要体现业务的严谨性,要保证数据安全,仅仅设置两种身份是不够的,对一些敏感数据的操作对象也要加以限制。
4.2 性能需求
(1)运行稳定,不易出错,系统在设计过程中应该以安全和稳定运行为原则,
7
企业人事管理系统设计与实现
对错误输入要进行处理,在处理错误输入时要有良好的提示,避免因为操作不当而引起的系统错误,造成服务器宕机等恶劣后果。
(2)性能可靠,有一定安全保护措施,比如在实现后台方法时,避免使用Statement,要使用PrepareStatement来防止SQL注入攻击。
(3)在面对高并发操作时仍然具有良好的反应速度,比如在早晨员工签到的高峰期,以及晚上网络不好时,也应当可以正常的处理数据。
4.3 其他需求
(1)易于学习,系统设计过程中应当保持注意页面的简洁,以及考虑操作的简便性,在系统实施的过程中保证使用人员可以迅速上手,降低学习成本。
(2)设计严谨,代码规范,可扩展性好,借鉴MVC设计模式,将业务层、控制层、显示层分开实现,方法不应当写在实体类中,而是要建立接口和实现类,当有一个模块需要改变时,可以只对该模块进行修改,而不会对其他模块产生影响,便于日后的修改维护和二次开发。
(3)运行和维护成本低,考虑到中小型企业的经济承受能力,要尽量降低对服务器的性能要求尽量减少资金投入,满足经济性要求。
总之,在系统开发之前,必须要对现有的系统进行调查,明确需求,保证所作的功能符合用户的需求,详细的调查情况,研究现有系统的内部结构,设计出一个精确的开发逻辑模型,为之后的开发打好基础。避免耗费大量人力物力,最后却没有开发出让客户满意的系统的现象发生。
8
企业人事管理系统设计与实现
5 概要设计
5.1 系统总体设计
在这个模块中使用结构图来对本系统进行详细描述,树形结构的顶层代表了系统的名称和功能范围,下面的分支则代表相应的子集,最底层的元素则代表具体的功能模块和系统组成,这些模块是最小元素,不能再进行分割,
本系统一共包括十三个主要模块,已经基本覆盖了企业的日常业务,此外还有一个附加的应聘子系统,可以由应聘人员注册账号并登录,可以填写自己的应聘信息,以及查看公司的所有职位,还可以使用一些通用功能,以及查看自己是否被录用等等,但是这个系统是相对于主系统独立的,不能进入主系统的界面,为了保证系统的安全性,设计这个附属系统的原因是考虑到招聘录入资料的工作较为繁琐,可以让应聘者自行登录,进行资料的填写,作为主系统的补充,可以让整个系统变得更为完善。
本系统的总体设计图如图5-1所示。
企业人事管理系统 员工信息 应聘管理 部门管理 职位管理 薪资管理 公告系统 奖惩管理 出勤管理 请假管理 加班管理 资料共享 通用功能 系统设置 图5-1 人事系统总体结构图
5.2 各个模块设计
本系统共有十三个功能模块,基本已经覆盖了企业日常的所有业务,各个模块实现的功能有:
(1)部门管理:可以分页查看企业的所有部门列表,点击查看部门详细信息,以及查询部门信息,管理员则可以进行添加部门,以及修改部门信息,同时可以查看该部门有多少员工,可以查看员工详细信息,部门不能删除。
(2)职位管理:员工可以查看企业的所有职位以及查看职位详细信息,查询职
9
企业人事管理系统设计与实现
位,管理员则可以增加职位,以及修改职位信息,管理员可以查看每个职位有多少个员工,并可以查看这些员工的详细信息。
(3) 员工信息:员工信息是整个系统最重要的组成部分,员工可以查看自己的信息,以及对信息进行修改,但是不能查看其他人的信息,管理员则可以查询和查看所有员工的信息,但是不能修改。
(4)招聘管理:本模块是专门为招聘人员设计,并且普通用户无法进入到该页面查看里面的内容,管理员可以添加应聘人员的信息,修改应聘人员的信息,以及查询某个应聘人员的信息,还可以根据应聘人员的处理状态进行分类查看,如:未处理、未录用、已录用。
(5)薪资管理:员工可以查看自己的薪资记录,管理员可以增加薪资信息,为了保证数据的完整性,薪资管理没有提供修改方法,只能删除。
(6)公告管理:为了方便公司业务,员工身份也可以发布公告,管理员则可以修改公告和删除公告。
(7)奖惩管理:员工可以查看和查询奖惩方法列表以及查看奖惩办法详情,管理员可以对奖惩信息进行增加、修改和删除。
(8)出勤管理:员工每天进行签到,并且可以按月份查看自己的签到信息,出勤信息不能修改,不能手动增加,只有超级管理员可以删除出勤记录。
(9)请假管理:员工可以申请请假,内容有请假天数,开始时间,理由等,以及查询自己的请假信息,请假信息初始为未处理状态,管理员可以处理请假申请,以及查询、删除请假记录。
(10)加班管理:员工可以添加加班记录,添加后不能修改,管理员可以对加班信息进行修改和删除。
(11)资料共享:所有人都可以上传和下载资料,方便企业的资料传递和交流,但是只有管理员可以删除。
(12)通用功能:打开系统自带的计算器软件,方便日常使用。
(13)系统设置:可以修改员工的身份,以及新建帐号、修改权限、禁用账号。
5.3 应聘子系统设计
为了方便人事人员的日常工作,考虑到录入大量的应聘人员资料是一个非常繁琐
10
企业人事管理系统设计与实现
的工作,不如让应聘人员自己注册账号,登录系统进行应聘资料的填写,基于这个想法,在采纳了指导老师的意见后,开发了企业人事管理系统的附属子系统:应聘系统,作为主系统的补充,可以由应聘人员自己注册账号进行登录,填写自己的应聘资料,同时应聘人员可以查看公司的所有职位,但是这个系统是相对于主系统独立的,不能进入到主系统的界面,保证了主系统的安全,具体的组成如图5-2所示。
应聘子系统 应聘资料 查看结果 公司职位信息 填写信息 修改信息 查看职位 图5-2附属应聘子系统总体结构图
子系统功能介绍:
(1)应聘资料:应聘人员可以填写自己的应聘信息,并且可以修改信息,可以查看自己是否被录用。
(2)公司职位信息:应聘人员可以查看企业的所有职位,不能进行修改。
11
企业人事管理系统设计与实现
6 数据库设计
6.1 数据分析
数据分析是数据库在设计之前就要考虑的第一个步骤,设计者要分析数据库的物理结构和逻辑结构,确定需要获取哪些信息,以一种直接的、分类的方法来捕捉用户的信息。
在本系统中,最为直观的对象就是员工,通过员工表将其余的各个表连接起来,来实现对员工信息的综合管理,是本系统的设计思路。
在系统的设计过程中使用信息建模的技术,通过实体、关系、属性这三个最重要的因素来确定对象,实体是在系统的使用中需要维护的相关特征的集合,属性是这些实体的特征和特性,而最后的关系则是各个实体之间的联系,关系为各个实体之间的联系建立了基础。
通过之前一系列的分析,根据各个实体之间的关系,设计出本系统的数据表结构,本系统的数据库E-R图如图6-1所示。
角色 出勤 薪资 奖惩 制定 用户 申请 请假 处理 拥有 属于 发布 公告 上传 应聘 查看 职位 部门 资料 发放 属于 生成 申请 加班 图6-1 数据库E-R图
12
企业人事管理系统设计与实现
6.2 数据表实现
数据库是每个系统必不可少的组成部分,在系统的实际使用过程中,不可能直接调用数据库中的信息,而是要通过JDBC技术去获得数据库中的信息,所以必须将软件设计的概念转化为数据表去操作数据,要将其转换为逻辑结构[12]。
本系统使用SqlServer2008作为数据库使用,一共有十二张数据表。 (1)部门表(department):记录各个部分的详细信息。 (2)职位表(position):保存企业的职位信息,以及进行修改。
(3)用户信息表(userinfo):是整个系统中最重要的表,记录了系统的所有使用者的信息。
(4)应聘信息表(candidate):为人事部设计,专门用来招聘工作的使用。 (5)公告表(news):更新和发布、删除公告。
(6)薪资表(salary):记录每个员工每个月的薪资信息。
(7)奖惩方法表(jc):明确企业中对于每个奖惩办法的处理情况,使企业办事更加公开透明,有利于企业内部团结。
(8)出勤记录表(attendancerecord):记录每个员工每天的出勤情况,员工每天的签到记录都保存在这张表中,每人每天只能插入一条数据。
(9)请假表(leaves):员工可以在这个表中记录请假信息和请假申请,并由管理员负责处理这些请假信息。
(10)资料共享表(datum):每个员工都可以自由的上传和分享资料,并且可以下载,方便企业中资料的流传,有利于员工的日常交流。
(11)加班表(extrawork):记录每个员工的加班信息,用作月末时计算工资使用。 (12)角色表(roles):保存了系统中的所有身份,用来实现权限控制。 保存在cpmns.MDF文件中,这些表分工明确,分别记录了不同的数据,共同为系统的运行提供支持。
下面将对数据库中的各个表内容做出详细解释。 (1)部门表Department
部门表包括部门ID,部门名称、部门负责人、部门联系电话、部门创建时间这几个信息,部门ID被userinfo表作为外键引入,每个员工都有自己的部门,员工表通过引入部门外键可以查看部门的详细信息以及进行相关统计工作,部门表的详细设计
13
企业人事管理系统设计与实现
如表6-1所示。
表6-1 部门表Department
字段名 did departmentname manager tel createtime 数据类型 int varchar(20) varchar(10) varchar(11) varchar(50) 是否主键 Yes 有无外键 描述 部门ID 部门名称 负责人 部门电话 创建时间 (2)职位表Position
保存企业中的所有职位和信息,如ID、职位名称、添加时间等、并作为用户表的外键引入,每个用户都有一个职位,创建时间不能修改,详细设计如表6-2所示。
表6-2 职位信息表Position
字段名 pid positionname memo addtime 数据类型 int varchar(20) varchar(80) varchar(50) 是否主键 Yes 有无外键 描述 职位ID 职位名称 备注 创建时间 (3)公告表News
公告表用来保存发布的公告,可以记录发布者的名字,发布时间等信息,表中引入了用户表userinfo中的userid作为外键,在添加公告时可以记录发布者的名字,可以保存企业中的公告信息,详细设计如表6-3所示。
表6-3公告表News 字段名 id newstitle userid newstime newscontent 数据类型 int varchar(20) varchar(20) datetime varchar(500) 是否主键 Yes 有无外键 Userinfo(userid) 描述 公告ID 公告标题 发布者ID 发布时间 公告内容 (4)用户表Userinfo
用户表是企业中保存实际使用者的表,设计最为复杂,保存了用户的所有信息,员工用来登录的帐号密码也保存在此表中,每个使用者都有一个身份信息,表中的isuseable字段代表了该帐号是否可用,默认为1,如果是0则帐号无法使用。
因为用户表是整个系统中最为重要的信息,如果删除会造成其他数据出现异常,所以不能删除,只能禁用,pid则对应职位表中的职位ID,代表员工在企业中的职位。详细设计如表6-4所示。
14
企业人事管理系统设计与实现
表6-4 用户表Userinfo
字段名 userid uaccount upassword isuseable personname sex age cardid visage ancestralhome borndate school Major Schooling Tel Homeaddress departmentid intime pid rid memo leavetime 数据类型 int varchar(20) varchar(20) int varchar(20) varchar(5) int varchar(18) varchar(20) varchar(20) datetime varchar(20) varchar(10) varchar(10) varchar(11) varchar(50) int datetime int int varchar(50) datetime 是否主键 Yes 有无外键 department(did) position(pid) role(rid) 描述 员工ID 帐号 密码 是否可用 姓名 性别 年龄 身份证号 政治面貌 籍贯 出生日期 毕业院校 专业 学历 电话 住址 所属部门 入职时间 职位外键 角色外键 备注 离职时间 (5)薪资表Salary
薪资表用来保存员工的每月的薪资信息,包括发放时间、基础工资、奖金、罚金以及备注信息等,详细设计如表6-5所示。
表6-5薪资表Salary
字段名 id userid paymonth basemoney reward forfeit totalmoney memo 数据类型 int int datetime decimal decimal decimal decimal varchar(50) 是否主键 Yes 有无外键 userinfo(userid) 描述 薪资ID 员工编号 发放日期 基本工资 奖金 罚金 实际薪资 备注 (6)应聘信息表Candidate
为了方便人事部的招聘工作,设计了这个应聘信息表,用来记录所有应聘者的信息,对应聘人员进行筛选,该表保存了应聘者的所有信息,在附属子系统中,应聘人
15
企业人事管理系统设计与实现
员可以使用帐号和密码进行登录,并可以查看自己是否被录用。
详细设计如表6-6所示,应聘人员的登录信息都存放在这张表中,便于管理员进行操作。
表6-6 应聘表Candidate
字段名 id canaccount canpassword canname sex age borndate school major schooling experience tel homeaddress memo createtime positionname ispass 数据类型 int varchar(20) varchar(20) varchar(20) varchar(5) int datetime varchar(20) varchar(20) varchar(10) varchar(20) varchar(11) varchar(50) varchar(200) datetime varchar(20) int 是否主键 Yes 有无外键 描述 应聘者ID 帐号 密码 应聘者名字 性别 年龄 出生日期 毕业院校 专业 学历 工作经验 电话 住址 备注 创建时间 应聘职位 是否通过 (7)奖惩方法表Jc
奖惩方法表记录了企业对于各种奖惩方法的详细实施办法,员工在出现这类状况时,可以根据这些信息进行具体的奖惩办法实施,可以使办事制度公开透明化,有利于企业的团结和凝聚力,详细设计如下,详细设计如表6-7所示。
表6-7奖惩方法表Jc
字段名 id jctype jcname jcmoney memo addtime 数据类型 int int varchar(20) decimal varchar(50) datetime 是否主键 Yes 有无外键 描述 奖惩方法ID 奖惩类别 奖惩名称 奖惩金额 备注 创建时间 (8)出勤记录表Attendancerecord
出勤信息表记录了所有员工日常的签到信息,所有员工的签到记录都保存在这张表中,记录每天的出勤信息,录入时间时调用GETDATE()变量,录入时间晚于9
16
企业人事管理系统设计与实现
点则视为当天迟到,详细设计如表6-8所示。
表6-8出勤记录Attendancerecord
字段名 id userid attendancetime flag 数据类型 int int datetime int 是否主键 Yes 有无外键 userinfo(userid) 描述 出勤编号 员工编号 签到时间 是否迟到 (9)请假表Leaves
为了更好的管理员工的请假记录,设计了请假表,该表保存了所有的请假信息,包括申请人,申请时间,离开时间,理由,以及处理人和处理时间等信息,添加请假记录时默认为未处理状态,处理时可以保存处理人的信息,系统中可以根据月份计算出每个月每名员工的请假次数,管理员可以根据员工每个月的请假次数来进行工资的发放,详细设计如表6-9所示。
表6-9请假表Leaves
字段名 id userid applytime leavetime daycount reason ispassed dealid dealtime memo 数据类型 int int datetime datetime int varchar(50) int int datetime varchar(50) 是否主键 Yes 有无外键 userinfo(userid) userinfo(userid) 描述 请假编号 员工编号 申请时间 离开时间 离开天数 理由 是否批准 处理人 处理时间 备注 (10)资料共享表 Datum
资料共享列表可以记录所有资料上传者信息,以及资料的名称,上传时间等信息,上传的资料相关信息会记录到这张表上,作为管理员管理资料的依据,详细设计如表6-10所示。
表6-10资料共享Datum
字段名 Id Userid Datumname Uploadtime 数据类型 int int varchar(100) datetime 是否主键 Yes 有无外键 userinfo(userid) 描述 资料编号 员工编号 资料名称 上传时间 (11)加班信息表Extrawork
17
企业人事管理系统设计与实现
几乎所有企业都存在加班的情况,所以本系统设计了加班信息表,记录了加班信息,如加班人、加班开始时间、加班时长、加班费等,加班信息表的数据最后会作为工资发放的依据之一。详细设计如表6-11所示。
表6-11加班信息表Extrawork
字段名 id userid starttime extratime extramoney memo 数据类型 int int datetime int decimal varchar(50) 是否主键 Yes 有无外键 userinfo(userid) 描述 加班编号 用户编号 开始时间 加班时长 加班费 备注 (12)角色表Roles
角色表存储了本系统中所用到的角色,在UserInfo表中引入该表作为外键,用来实现系统的权限控制功能,详细设计如表6-12所示。
表6-12 角色表Roles
字段名 rid rolename 数据类型 int varchar(10) 是否主键 Yes 有无外键 描述 角色编号 角色名称
18
企业人事管理系统设计与实现
7 系统实现
本系统主要包括十一大模块,此外还有一个应聘系统作为本系统的附属系统使用,在每个模块中根据具体业务需求,分情况加入了相应的增删改查操作,以下将对这些模块的实现方法进行详细介绍。
7.1 各个模块实现
(1)登录界面
作为一个系统的入口,尤其是企业中使用的需要一定保密程度的系统,对登录人员的验证是必不可少的,在本系统中,如果想要访问主界面,就必须要进行身份验证,本系统的登录界面如图所示,只有成功通过了验证,才能访问主界面,本模块对应数据库中的userinfo数据库,在输入账号和密码后,会由一个form表单提交给后台进行验证,后台处理文件为LoginServlet,在后台中使用request.getparameter()方法得到两个输入框中得到用户输入的信息,然后引入UserDao的实现子类UserDaoImpl,在登录时首先检查用户名密码是否正确,用户表中有无该用户,sql语句为:select upassword from userinfo where uaccount = ?。将输入的用户名和密码输入,如果没有得到User对象则登录失败。
如果通过验证,登录成功时会新建一个user类,调用登录方法:select * from userinfo where uaccount = ? and upassword = ?,从数据库中得到该账号的信息,如果返回的user不为空,则说明数据库中存在该角色,然后需要判断该帐号是否已被禁用,如果已经被禁用,则禁止该账户登录,调用session的session.setattribute()[13]方法创建会话,里面装有登录用户的信息,用来保持该账号的登录状态,以便进行其他操作。登录界面如图7-1所示。
图7-1登录界面
19
企业人事管理系统设计与实现
(2)系统主界面
在成功验证了登录身份后,就可以进入到主界面,主界面由导航栏和左功能条组成,主页可以显示一条最新公告,主要功能模块都在主界面上显示,包括员工信息、应聘管理、部门信息等,左功能条则是考勤信息、公告系统以及资料共享系统,除此之为还为右上角可以显示登录人员的名称,显得更为人性化。
在前台页面的构造中,使用了DIV+CSS的布局,这种布局的好处是可以把代码和显示格式分来,让编程人员可以专注于实现功能,而不用受到布局格式的干扰,使整个页面显得更为简洁,因为页面的导航栏和左功能条都是通用的,每个页面都要引入这两个模块,所以本系统使用两个jsp文件构建前台,一个是Top.jsp,一个是Left.jsp,在系统的每个前台页面中使用两条语句引入这两个jsp文件,达到页面复用的效果,实现代码如下。
这两条语句会引入每个页面所共用的Top和Left部分的jsp文件,不必再每个页面都重复的添加代码,如果需要修改界面,只需要修改一个,所有界面就会发生改变,不必再每个都作出修改,方便,提高了页面复用性,使前台页面的构造变得更加合理。主界面如图7-2所示。
图7-2系统主界面图
20
企业人事管理系统设计与实现
(3)员工信息
员工信息管理是整个系统中最为核心,也是最重要的组成部分,员工在登录成功后,可以点击员工信息中的“查看个人信息”进行个人详细信息的查看,会展示出来用户的所有信息,如姓名、年龄、性别、政治面貌、籍贯、住址等等信息,本模块对应数据库中的userinfo数据库,如果需要修改信息,可以进入到“修改个人信息”页面进行修改。
普通员工只能进行个人信息的查看和修改操作,管理员在验证身份后,则可以进入到信息综合管理中,查询某个员工的信息并进行详细信息的查看。
该模块的实现过程是在前台加入一个form表单,并使用name属性将表单中的各个输入框中的内容加以标识,在Employee_info.jsp中使用session.getparameter()方法得到登录用户的实体类,然后使用UserInfoDaoImpl类中的方法进行实现,将数据保存到数据库中,如果需要输出数据,则调用findUserById()方法,实现的关键sql语句为:select * from userinfo where userid = ?;
使用preparedstatement中的setObject()方法传入数据,将问号替换为员工编号,sql语句处理结束后会返回一个User类,使用setAttribute()方法拿到对应的员工信息,在前台页面使用<%=user.getuserid%>语句拿到用户的所有信息,员工信息界面如图7-3所示。
图7-3员工信息界面
(4)应聘管理
应聘管理也是系统的重要组成部分之一,因为人才的管理也是对企业未来生命的
21
企业人事管理系统设计与实现
管理,如果企业不积极的引入人才,企业将会变得岌岌可危,这个模块是专门为管理人员设计,在点击时会触发身份验证的方法,该方法会判断操作者的身份,需要管理员或管理员以上的身份才能进入,普通用户无权进行操作,本模块对应数据库中的candidate数据库,可以保存应聘者的所有信息,管理员可以进行增加应聘信息的操作,在后台页面使用request.getparameter()方法得到输入的数据,使用CaididateDao中的实现类CandidateDaoImpl类中的addCandidate()方法,将数据存放到数据库中,还可以修改应聘信息,以及查看未处理的应聘信息、未通过的应聘信息、已录用的应聘信息,这些信息的分类实现方式为在显示的时候,会判断应聘表的处理状态。
未处理的表单查询语句为:select * from candidate where ispassed = 1; 未录用的表单查询语句为:select * from candidate where ispassed = 2; 已录用的表单查询语句为:select * from candidate where ispassed = 3;
本模块提供了删除操作,相应的操作都会进入到后台进行处理。应聘人员资料填写界面如图7-4所示。
图7-4应聘资料填写界面图
(5)部门管理
本模块对应数据库中的department数据库,用来保存企业中部门的详细信息,包括部门名称、创建时间、负责人、电话等信息,员工只能进行部门的查看操作,管理员可以增加部门,以及修改部门信息的操作,本模块没有提供部门的删除功能,因为在员工信息表中引入了该表的外键,如果删除部门,会造成员工信息的数据异常,并
22
企业人事管理系统设计与实现
且在调查中发现,解除部门这种现象在企业中极为少见,所以没有提供删除功能,只有修改功能,在部门管理界面还可以显示部门的员工数量,以及显示该部门员工的列表,实现语句为:select COUNT(userid) from userinfo where departmentid = ?,该语句会统计出该职位的员工数量。
部门模块的实现过程为在添加部门时,有一个form表单,会根据name属性记录输入的内容,后台会使用request.getparameter()方法得到这些值,然后调用DepartmentDao的实现类DepartmentDaoImpl类中的addDepartment()方法将数据插入到数据表中,进而实现整个部门模块的业务,界面如图7-5所示。
图7-5部门信息界面图
(6)职位管理
本模块对应数据库中的position表,员工可以查看企业中所有职位的详细信息,如名称、创建时间、备注等,并可以进行查询操作,查询的sql语句为:select * from position where positionname = ?。
语句使用了preparestatement类,后面的问号在执行的时候会被preparedstatementd的setObect[]{},里面存放的变量通过下标代替,替换后就会变成可以让数据库执行的SQL语句,然后执行该语句,将数据存入到数据库中,管理员则可以添加企业的职位信息,以及修改职位信息。
本模块没有提供职位的删除功能,在需求调查中发现,撤销某个职位的业务在企业中基本不存在,并且如果删除某个职位,那么引入这个外键的所有员工信息都将出现数据异常的情况,所以没有提供删除方法。
在职位的管理界面可以查看到该职位共有多少名员工,并且可以点击查看对应员工的详细信息,职位管理界面如图7-6所示。
23
企业人事管理系统设计与实现
图7-6职位管理界面图
(7)薪资信息
本模块对应数据库中的salary表,员工可以查看自己的工资记录,以及查询历史记录,管理员可以添加工资、查询某个员工的工资记录,本模块提供了工资记录的删除功能,可以对员工工资的记录进行删除操作,查询工资只能由超级管理员进行,因为在企业中,薪资是严格保密的,不能随便查阅,薪资的删除操作也只能由超级管理员身份来完成,因为管理员可能会有很多,如果管理员身份就可以进行工资记录的删除操作,可能会有人恶意删除薪资记录,造成数据丢失,但是删除功能是确实需要的,因此把删除权限开放给超级管理员,只有超级管理员可以进行薪资记录的删除操作。员工可以查看自己的薪资记录,管理员则可以进入数据录入界面,在录入工资的时候,可以查看到当月该员工的所有考勤信息,如请假时长、迟到次数、加班时长等,并可以根据这些信息,依靠奖惩办法录入工资,薪资录入界面如图7-7所示。
图7-7薪资信息录入界面图
24
企业人事管理系统设计与实现
(8)奖惩办法管理
本模块对应数据库中的jc数据表,员工可以查询企业中对各种需要进行奖励和处罚的情况所作出的详细规定,管理员则可以进行增加奖惩办法、修改奖惩办法、删除奖惩办法的操作。
本模块的实现过程是在页面中新建一个form表单,将需要输入的内容都包含在表单之中,通过name属性区分每个输入框输入的内容,在后台使用request.getparameter()方法取得输入的各个输入框中的内容,然后使用JcDao接口的JcDaoImpl实现类里的addJc()方法添加奖惩信息,记录奖惩信息时会自动生成添加时间,获得时间的语句为new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”).format(new Date());
插入奖惩办法的sql语句为:insert jc values (?,?,?,?,?),new Object[]{};
用preparedstatement中的setObject方法替换sql语句中的问号,并将数据存储到数据库中,奖惩信息录入界面如图7-8所示。
图7-8薪资信息录入界面图
(9)系统设置
在此模块中,员工可以修改登录密码,在更改密码时需要输入原密码,而且两次输入新密码需要一致,管理员可以创建新账号为新员工使用,但是最高只能创建管理员身份的用户,这是考虑了系统数据安全问题后做出的实现方式,这样可以保证数据安全,如果任意管理员身份都可以创建超级管理员账号,会对系统数据安全造成隐患,如果需要创建超级管理员身份,就需要用超级管理员账号在权限修改界面将权限修改
25
企业人事管理系统设计与实现
为超级管理员,管理员可以查看员工的权限情况,并可以最高修改为管理员身份,不能修改为超级管理员身份,可以对账号做出禁用操作,禁用的账号不能登录系统。
实现方法为在form表单中输入需要修改的员工姓名,输入需要修改的身份,将数据提交到后台,使用preparedstatement的setObject方法将问号替换,执行修改操作,增加账号界面如图7-9所示。
图7-9 添加账号界面图
(10)考勤系统
本模块对应数据库中的attendance数据表,签到在每个企业中都是必须要有的一个功能,为此本系统加入了此模块,员工在每天进入到企业后,需要登录本系统,点击签到按钮进行签到,点击按钮时触发事件,在将签到信息保存到数据库时会进行验证,先查询该账号在当天的签到记录,如果查询到结果,证明该账号今天已经进行签到了,会提示用户不要重复签到,如果是当天第一次签到,则会获取签到时的时间,并保存到数据库中,并对签到时间做出判断,如果签到时间晚于早上9点,则认为该员工迟到,设置flag为0,并将这些信息记录到数据库中,员工可以进行签到操作,并可以按天和月份查询自己的签到信息,考勤记录是对员工进行综合考察的一项重要依据,所以本模块不提供考勤记录的修改方法,任何人都不能修改考勤信息,所以在删除考勤记录的权限方面只开放到了超级管理员,除超级管理员身份之外任何人不能删除考勤信息。
本模块的实现方法为在员工登录后,点击“每日签到”,系统会在后台调用AttendanceDao的实现类AttendanceDaoImpl类中的AddAttendance()方法,该方法会首先执行一个新建日期的语句Format(“yyyy-MM-dd HH:mm:ss”).format(new Date());
该语句会新建一个年月日时分秒格式的时间字符串,然后使用sql语句在数据库
26
企业人事管理系统设计与实现
中查询:select * from attendancerecord where attendancetime like “?-?-? % and userid = ?”;
使用preparedstatement.setObject()方法将年月日三个信息和userid传进去,如果返回有结果,则说明该账号当天已经进行过签到,会提示用户不要重复签到,如果没有查询到数据,则会加入一条记录,并判断时间是否晚于9点,晚点则视为迟到,实现的sql语句为:insert attendancerecord values(?,?,?,?);
然后使用findAttedanceByMonthAndDate()方法查询记录,得到一个装有Attendancerecord的List<>对象,返回给前台后,前台用增强的for循环将List<>中的类取出来,并获得他们的属性,将结果展示在前台页面上,的考勤界面展示列表如图7-10所示。
图7-10 出勤记录信息列表图
(11)请假系统
本系统对应数据库中的leaves数据表,员工可以申请请假,并输入请假信息,包括离开时间、天数、理由等,在前台页面点击提交按钮,请假的表单就会以post方式提交,输入name属性,得到表单中各个数据的输入内容,调用LeavesDao层并使用多态[16]的方法,父类=new子类,将LeavesDaoImpl实例化,调用addLeaves方法将请假信息保平到数据库中,添加时的处理状态默认为未处理,在提交之后,会显示到待处理的请假信息表中,管理员登录系统后,可以查询所有未处理的请假信息,处理这些请假信息,可以允许或拒绝请假申请,更改ispassed为2或3,并会自动保存
27
企业人事管理系统设计与实现
处理人的ID,还可以输入备注信息。
请假信息申请界面如图7-11所示。
图7-11添加请假界面图
(12)加班管理
本系统对应数据库中的extrawork数据表,加班情况在企业中是很正常的现象,为了记录这些信息,实现了这个加班信息的模块,员工可以添加加班信息,管理员可以查看所有人的加班信息,考虑到可能会有人记录虚假的加班信息,在本模块中提供了加班信息的删除功能,本系统把权限开放给了管理员,管理员可以查询某个人的加班信息,并可以对这些信息进行删除操作,加班信息填写界面如图7-12所示。
图7-12加班信息填写界面图
(13)公告系统
本系统对应数据库中的news数据表,考虑到在企业实际运作的过程中,录入公告的不一定是管理员,公告的录入和发布工作可能由员工完成,所以把发布公告的权限开放给了员工,员工可以在这个模块中发布、查询公告、查看公告详情的操作。并且第一条公告会在系统主页中显示,为了保证公告内容的准确和安全,防止有人恶意修改公告,造成数据丢失,本系统没有实现公告的修改功能,至于公告的删除权限则
28
企业人事管理系统设计与实现
开放到了管理员身份,管理员可以对公告进行删除操作,界面如图7-13所示。
图7-13添加公告信息界面图
(14)资料共享
本模块对应的数据表是datum数据表,该表记录了资料的上传时间、上传者、存储路径等信息,和公告系统相同,企业内部任何人都可以上传资料,可以上传doc、docx、pdf等文件,上传的文件存放在apache的upload路径下,每个人都可以查询文件名称,选择文件进行下载,管理员可以对资料进行删除。
本模块的实现方法为在目录中加入了一个开源工具包:smartupload,利用开源包里提供的方法实现文件的上传和下载,执行成功后,会将文件保存到tomcat[15]服务器中的upload文件夹中,并将上传人的信息、上传时间、文件名称等信息记录到Datum数据表中,管理员可以根据数据表中存储的记录进行文件的整理工作,在下载页面可以进行文件的下载操作,下载实现的方法为。
filename=request.getParameter(\"filename\");
String downPath=\"upload/\"+filename;su.downloadFile(downPath);
上传资料界面如图7-14所示。
图7-14 上传文件界面截图
29
企业人事管理系统设计与实现
(15)通用功能
打开计算器:在calcServlet中实现,点击按钮触发调用系统自带的calc.exe文件,然后文件开始执行,就可以完成打开计算器软件的操作,实现过程为新建一个Runtime对象,创建线程Process,用该进程启动需要启动的软件,关键语句为:process p = r.exec(\"calc.exe\"),系统自带的应用不需要输入完整路径,输入exe文件名称即可执行,执行结束后系统自带的计算器程序成功运行,打开计算器界面如图7-15所示。
图7-15 打开计算器界面图
7.2 应聘子系统实现
为了方便人事管理人员的资料录入工作,考虑到招聘工作非常繁忙,人事专员需要花费大量的时间对应聘资料进行录入,所以设计了企业人事管理系统的附加系统:应聘子系统,该系统和主系统的应聘表candidate共用一张数据表,但是页面不相同,应聘人员只能访问自己的信息页面,以及查看企业的所以要职位,和打开excel、计算器、word文档等通用功能,不能访问系统的主页面,此附属系统在界面上是独立于主系统的,并且这个系统会发布到互联网上,所有应聘者可以通过这个页面填写应聘信息,应聘人员可以在这个附属系统上注册账号,并可以登录系统,完善自己的应聘资料,在完善自己的资料后,点击提交,应聘者的信息会出现在主系统的应聘管理中的未处理表中,在进行处理后,状态改变,应聘者可以查看自己的录用情况。
登录界面如图7-16所示。
30
企业人事管理系统设计与实现
图7-16 子系统登录界面图
如果没有账号,可点击左下角的注册按钮注册一个账号,注册提交时会调用checkisExist()方法,检测该帐号是否已存在,如果已存在则无法注册,注册帐号界面如图7-17所示。
图7-17 应聘注册界面
输入账号密码,验证成功后可以登录到主页面中,应聘人员可以填写自己的应聘资料,填写完毕后点击提交,则自己的信息将会出现在应聘管理的未处理表格中,人事人员在登录后,可以处理这些应聘信息,添加备注并可以修改处理状态,1为默认状态,未处理。2为未录用,3为已录用,状态更改后,应聘人员可以在应聘系统中看到结果,处理情况的界面如图7-18所示。
图7-18 应聘处理情况截图
应聘人员可以随时修改自己的应聘资料,备注自己的个人技能等信息,应聘资料填写界面如图7-19所示。
31
企业人事管理系统设计与实现
图7-19 应聘资料填写界面图
7.3 关键方法
(1)JDBC
JDBC是系统和数据库交互的重要组成部分,如果需要使用JDBC让java代码和数据库之间传输数据,首先需要在项目的WebRoot目录下的WebInf,lib文件夹中加入JDBC驱动的jar包,在项目中导入,初始化Connection和PrepareStatement类,加载JDBC驱动,取得连接后用PrepareStatement中的exec方法执行输入的Sql语句,使用SetObject代替Sql语句中的问号,执行结束后根据所执行的语句判断是否需要返回值,如果没有返回值则方法会返回一个布尔类型的值去提交给系统使用,如果有返回值则用ResultSet接收,最后封装成为一个List Class.forName(\"com.microsoft.sqlserver.jdbc.SQLServerDriver\"); con=DriverManager.getConnection(\"jdbc:sqlserver://localhost:1433;databaseName=cpmns\ 32 企业人事管理系统设计与实现 (2)导航栏Tab切换特效的实现 在鼠标移动到导航栏上的模块时,会自动显示该模块下对应的子模块的选项,本系统的实现方法是在Top.jsp页面中,建立一个主menu,下面的子选项则是7个小menu,初始时只有第一个menu可以显示,其他六个不显示,将其余六个子menu的display属性设为none,然后在主menu的七个<>标签中添加onmouseover(i)事件,当鼠标移动到主menu时触发这些事件,方法中有一个for循环,在判断鼠标在哪个主menu上,将对应的子menu的display属性设为block,然后在for循环里将其他子menu的display属性设为none,达到Tab特效的效果,关键实现代码如下。 for(var i=1;i<=7;i++){ if(i == num){ document.getElementById(\"content\"+i).style.display=\"block\";}else{ document.getElementById(\"content\"+i).style.display=\"none\";} (3)分页方法 在系统运行时,必定会有大量的数据,如果这些数据都在同一页显示是很不明智的,这时就要用到分页方法,分页方法实现的思想是先在后台获得前台页面的页数属性,如果为空,则说明是第一页,将currentpage设为1,然后定义每一页显示几条数据,在这里定义了一个页面可以显示8条数据,int pagesize = 8;然后在前台进行操作时,如果是上一页的操作,将currentpage减一,如果是下一页的操作,将currentpage加一,首页则把currentpage设为1,尾页则要先计算数据库中有多少数据,除以pagesize得到总的页面数,再返回最后几条数据即可,最后就是将得到的List返回给前台,关键的实现代码如下。 int pageSize=3; int currPage=Integer.parseInt(scurrPage); int totalPage=PageUtil.pageTotal(pageSize,count); List (4)数据库通用类DBUtil 数据库和系统的交互是经常需要被调用的,然而一次一次的重复写代码是效率非常低下的行为,为了提高代码的复用性,使代码变得简洁高效,在项目中创建了一个cpmns.cpy.dbutil的包,里面的DBUtil类实现了和JDBC交互的通用方法,首先将Connection和preparedstatement初始化为null,然后加载JDBC驱动,使用connection方法建立连接,和数据库得到连接后,执行sql语句,返回需要得到的结果集,最后关闭连接,完成整个交互过程,详细代码如下所示。 33 企业人事管理系统设计与实现 ps=con.prepareStatement(sql); if(args!=null){ for(int i=1;i<=args.length;i++){ ps.setObject(i, args[i-1]); res=ps.executeQuery(); (5)权限管理 在企业管理系统中,权限管理是必不可少的功能,本系统的实现方法如下:在页面跳转的超链接后添加鼠标的onclick事件checkpower(n),方法的代码为。 function checkpower2(rid){ if(rid < 2){ alert(\"you have no root\"); return false; 在session中得到当前登录用户的User实体类,取得rid后进行判断,如果小于对应操作需要的权限后,就会弹出“您没有权限进行该操作”的提示窗口,方法返回false值,取消发送请求,达到权限管理的目的。权限管理截图如图7-20所示。 图7-20权限控制截图 (6)签到功能 员工在进行签到时,首先会到数据库中查找该员工当天是否已经签到,使用sessino.getattribute()方法得到当前操作的用户,得到当天日期的语句为:String date = new SimpleDateFormat(“yyyy-MM-dd”).format(new Date()) 这样就得到了当天日期,在数据库中判断后,如果这个用户当天已经签到,则会提示用户不要重复签到,如果没有查到记录,则说明用户是第一次签到,记录了日期和用户ID后,会对是否迟到进行判断,获得当前签到的小时数,如果这个数字大于9,则说明该员工迟到了,数据表中有一个flag字段,1为正常,0为迟到,记录数据后,完成整个签到业务的处理。 34 企业人事管理系统设计与实现 8 系统测试 软件测试是保证软件可靠性的一个重要方法,利用人工或者自动化的方法对整个系统做出评估,查看和预期结果是否有差别,对软件的质量保证有重要的意义,软件测试要尽早开始,缺陷发现的越早,修复所花费的代价就越低。经过了前面的所有开发阶段,现在要进行的就是软件测试工作,因为在之前的开发过程中可能会存在很多问题,如果不能及时的发现这些缺陷,并改正这些缺陷,软件产品很有可能不能正常使用,就算能够运行起来,也会存在各种各样的风险,如数据丢失、经常宕机等等,会对开发商的信誉造成不良影响,因此软件测试是软件开发工作必须要进行的一个重要阶段。 8.1 用例设计 软件测试阶段的目的就是根据软件开发的过程中产生的文档资料和程序的源代码,测试工作最核心的部分就是编写测试用例,在设计测试用例时应该充分考虑实际情况,一个好的测试用例是发现了迄今为止从未发现的错误。 软件测试是软件开发的整个生命周期中不可缺少的一部分,软件测试是从需求分析就开始的,贯穿于整个软件开发生命周期的工作,目的就是在软件正式发布之前,使用测试工具或者人工的手段,对产品进行功能测试和性能测试等一系列的测试工作,软件测试要尽可能早的开始,尽可能多的找出软件中存在的问题和缺陷,并尽量修复这些错误,并在软件发布之后跟踪这些故障,确保产品的可靠性。 根据项目的实现情况,针对系统设计了四个测试用例,如表8-1所示。 表8-1 测试用例表 用例名称 错误密码登录测试 重复签到测试 已禁用账号登录测试 执行步骤 打开登录界面,输入错误的密码,看是否能登录成功。 登录系统,签到成功后再次签到,观察系统如何处理。 使用管理员身份登录系统,将一个帐号设置为禁用,然后退出,使用该帐号登录系统,观察系统反应。 预期结果 登录失败,系统给出“密码错误”的提示。 系统提示“请勿重复签到”。 已禁用的账号无法登录系统。 重复录入工资测试 在录入一名员工当月的薪资信息后,再系统给出提示“请勿重复录入次为该员工录入工资,观察系统反应。 工资”。 35 企业人事管理系统设计与实现 8.2 测试实施 本系统在测试过程中用到了黑盒测试的方法,通过输入一组数据,检测模块是否按要求正常运行,不考虑内部结构,主要针对界面和接口的测试,对于这些测试用例进行的测试工作如下所示。 (1)登录模块测试 在登录界面时,需要验证登录者的身份,输入正确的账号和密码才能登录成功,如果输入了不存在用户名,或密码错误,登录模块会有友好的提示,提示界面如图8-1所示。 图8-1登录界面输入错误提示图 (2)考勤模块测试 每个员工每天都只能签到一次,不能重复签到,如果重复签到则会有提示,界面如图8-2所示。 图8-2 重复签到界面图 (3)账号模块测试 如果账号已经被禁用,则不能再登录系统,登录时会有提示,界面如图8-3所示。 36 企业人事管理系统设计与实现 图8-3 已禁用账号登录测试图 (4)工资模块测试 如果一名员工在当月已经有了工资记录,则不能再进行工资录入,重复录入工资要进行判断,录入工资判断如图8-4所示。 图8-4 重复录入工资测试图 8.3 测试结论 软件测试是软件开发中不可忽视的一个环节,本系统经过以上的测试过程,对错误的输入进行了判断并进行友好的提示,可以防止错误数据的录入,保证数据的准确性和安全性,提高了系统的可靠性和准确性,达到了预期结果。 37 企业人事管理系统设计与实现 结束语 在毕业设计的这几个月时间里,经历了很多事,从选题到需求分析,再到概要设计和详细设计,在整个系统的开发过程中,遇到了很多困难,为了充分保证系统的功能实用性和界面友好,数据库重新设计了很多次,刚开始时只有7、8张数据表,最后增加到了十多张数据表,在项目开发的过程中,我在网上查阅了很多资料,进行了很多分析,如权限问题、业务问题等,大多数系统只有两个身份:用户和管理员,但是在企业中,如果设计到一些敏感信息的删除问题,将权限开放到管理员肯定是不行的,可能会有人乱用管理员的权限,恶意删除数据,造成数据损失,所以最后我决定加入第三个角色:超级管理员,只有这个身份才能进行敏感数据的删除工作,保证了数据安全,这也是我的项目中认为做的比较好的地方之一。 在后台开发的过程中,我对这些数据表设计了对应的实体类,并且借鉴了MVC的设计模式,将对象和方法分来,设计了Entity包和方法层,即Dao层。 在毕业设计之前,我从来没有接触过java语言,这也是我第一次独立开发一个小型的项目,在这个过程中收获的经验自然不必多言,现在我对java开发有个比较深刻的体验,这个过程中也克服了很多困难,遇到实现不了的功能,就查询资料,请教别人,加上自己的思考,最终坚持了下来。 我在开发本系统的时候遵循了软件工程的思想,按照需求分析、概要设计、详细设计等步骤一步步的完成了项目的开发,本系统已经可以基本满足一个中小型企业日常的办公使用,由于自己之前没有接触过java,这也是第一个独立开发的项目,中间肯定会存在许多能够继续完善的地方,也存在很多不足,比如正则表达式的数据输入格式验证,以及其他的细节,因为自己没有在一个企业中工作过很长时间,对企业的运作不是非常了解,所实现的功能只能局限于我在网上查阅资料和请教别人,实现的比较粗浅,前台界面设计的也不够完美,这些都有进一步提高的空间,在毕业设计的这段时间,我觉得过得非常充实,希望以后可以不断提高自己的开发能力,做出更完美的项目。 38 企业人事管理系统设计与实现 致 谢 在这次毕业设计项目的编写的过程中,首先要感谢的是付老师的指导,让我有了一个清晰的思路去完成项目,在系统功能的设计和业务逻辑方面老师提出了自己的意见,包括附属系统:应聘系统的开发,以及薪资的结算等等,这些意见让我有了一个清晰的目标,给了我很大帮助。 四年,不长也不短,毕业论文完成之际,也是大学生涯即将结束之时,回顾大学四年,经历了太多,在这里也要感谢宿舍的朋友们,四年间,一起欢笑,一起进步,一起成长,经历了困难和挫折,在毕业设计方面也给了我很多帮助,帮我解决技术难题,正是因为这些,我的项目才能一步步的进行下去,这将是我一生的财富,也是我难忘的回忆。 最后要感谢学校的老师为我们所做的一切,因为你们孜孜不倦的教诲,我们才能在大学四年之间收获如此多的知识,感谢老师们在百忙之中组织毕业设计的工作,审阅论文,组织答辩,谢谢你们对我们的指导和帮助,你们辛苦了。 39 企业人事管理系统设计与实现 参考文献 [1]孙一林,彭波.Java数据库编程实例[M].北京:清华大学出版社,2003.90-110. [2]张华丽.基于J2EE的档案管理系统设计与实现[J].现代商贸工业,2010,5(2):14-17. [3]贾军渭.分布式对象技术的Browser/Server结构[J].计算机工程,1998,7(2):11-24. [4]周影.网络编程语言JSP实例教程[M].北京:电子工业出版社,2003.80-112. [5]张华丽.基于J2EE的档案管理系统设计与实现[J].现代商贸工业,2010,4(1):14-17. [6]王建敏,樊永霞.初识SQL语句[J].教育纵横,2010,6(2):15-26. [7]刘长生,丁秋林.Java应用中的汉字乱码问题分析[J].计算机技术与发展,2006,16(1):158-161. [8]苟凌怡,魏生民. SQL Server中索引的有效选取[J].计算机工程与应用, 1999,35(6):70-71. [9]纪红.人事管理信息系统的设计与实施[J].计算机与现代化,2010,3(6):257-280. [10]David Chappell.Java Web Services.北京:电子工业出版社,2003.110-180. [11]BruceEckel.Thinking in Java[M].China Machine Press,2007.230-290. [12]Floyd Marinedscu著,饶若南译.EJB设计模式[M].北京:机械工业出版社,2004.13-56. [13]杜献峰.基于三层 B/S 结构的档案管理系统开发[J].中原工学院学报,2009,5(2):19-25. [14]张海藩.软件工程导论[M].北京:清华大学出版社,2003.56-99. [15]Jon Titus.The Eclipse of stand[J].Journal of Zhongkai Agrotechnical College,2006,19(2):32-25. [16]耿祥义,张跃平.Java基础教程[M].北京:清华大学出版社,2007.100-171. 40 因篇幅问题不能全部显示,请点此查看更多更全内容>对象交给调用方法处理,主要代码如下。