人力资源管理毕业论文设计

发布时间:2020-05-05

毕业论文声明
本人郑重声明:
1此毕业论文是本人在指导教师指导下独立进行研究取得的成果。除了特别加以标注地方外,本文不包含他人或其它机构已经发表或撰写过的研究成果。对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。本人完全意识到本声明的法律结果由本人承担。
2.本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。本人授权大学学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。
3.若在大学学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。
4.本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。论文中凡引用他人已经发布或未发表的成果、数据、观点等,均已明确注明出处。论文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究成果做出重要贡献的个人和集体,均已在论文中已明确的方式标明。


学位论文作者(签名)





关于毕业论文使用授权的声明
本人在指导老师的指导下所完成的论文及相关的资料(包括图纸、实验记录、原始数据、实物照片、图片、录音带、设计手稿等)知识产权归属华北电力大学。本人完全了解大学有关保存,使用毕业论文的规定。同意学校保存或向国家有关部门或机构送交论文的纸质版或电子版,允许论文被查阅或借阅。本人授权大学可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存或编汇本毕业论文。如果发表相关成果,一定征得指导教师同意,且第一署名单位为大学。本人毕业后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为大学。本人完全了解大学关于收集、保存、使用学位论文的规定,同意如下各项内容:
按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存或汇编本学位论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,允许论文被查阅和借阅。人授权大学可以将本学位论文的全部或部分内容编入学校有关数据库和收录到《中国学位论文全文数据库》进行信息服务。在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。
论文作者签名: 日期: 指导教师签名: 日期:



山东商业职业技术学院


毕业设计(论文)



人力资源管理






毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
名: 期: 指导教师签名: 期:
使用授权说明

本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名: 期:



1 绪论
1.1 研究背景与研究意义 1.2 系统研究现状 1.3 论文各章内容介绍
2 系统开发工具及开发技术介绍 2.1 系统建模工具UML 2.2系统的开发工具 2.3 数据库的选择 2.4 Struts架构简介 2.5 数据持久性 2.6 本章小结
3 系统需求分析
3.1 可行性分析 3.2 需求分析 3.2.1 功能需求 3.2.2 系统用例图分析
3.2.3 用户界面需求
3.2.4 数据库需求分析 3.3 本章小结
4 系统总体设计 4.1 系统总体结构设计



4.1.1 系统流程
4.1.2 系统模块结构设计 4.2 需求分析 4.2.1 系统数据库关系模型的设计 4.2.2 系统数据库概念设计
4.2.3 系统数据库逻辑结构设计
4.3 本章小结
5 系统详细设计及实现
5.1 详细设计 5.1.1 功能设计
5.1.2 模块设计 5.2 系统的运行及实现 5.2.1 管理员管理模块设计 5.2.2 系统主页设计
5.2.3 员工管理模块设计
5.3 本章小结
6 系统测试 6.1 测试的定义及目的
6.2 测试的原则 6.3 测试的方法 6.3.1 界面测试 6.3.2 功能测试



6.3.3 需求测试 6.3.4 性能测试
6.4 测试中其它要注意的地方 6.5 人力资源管理系统的测试
结论 参考文献 致谢 附录
1 绪论

1.1 研究背景与研究意义
现在网络的发展已呈现商业化、全民化、全球化的趋势。目前,几乎世界上所有的公司都在利用网络传递商业信息,进行商业活动,从宣传企业、发布广告、招聘雇员、传递商业文件乃至拓展市场、网上销售等,无所不能。如今网络已成为企业进行竞争的战略手段。企业经营的多元化拓展,企业规模的进一步扩大,对于企业的管理、业务扩展、企业品牌形象等提供了更高的要求。在以信息技术为支撑的新经济条件下,越来越多的企业利用起网络这个有效的工具。
全球范围内的企业内部组织正在发生巨变,未来企业成功的关键的依靠企业人力资源,人才之争已经成为市场竞争中的核心内容之一,以人为本成为企业立足和发展的根本。有效力管理企业的人力资源,为企业提供强有力的储备力量,使之成为企业发展的主动力。通过人力资源的有效管理,掌握最新的、准确的企业人力资源信息,并对其进行复杂的统计与分析,从而充分发挥每个员工的潜能,为企业创造更大的价值。
1.2 系统研究现状
人力资源管理系统是建立在先进的软件和高速、大容量的硬件基础上的新的人力资源管理模式。其与企业人力资源相合,通过集中式的信息库、自动处理信息、员工自助服务、外协以及服务共享,达到降低成本、提高效率、改进员工服务模式的目的。其服务于企业的最高决策层,管理层,以及运作层,重点围绕职


工和组织机构两大主题数据库,建立企业人力资源管理体系。这个体系涵盖了人力资源部门对员工在企业的全部生命周期的管理,从机构管理,职工管理,劳动管理到工资管理等各个方面,并提供各种查询功能。能动态直接反映企业人力资源的状况,为人力资源管理和高层决策领导提供高效的决策支持。
它的起源可以追溯到20世纪60年代末期,由于当时计算机发展水平的限制,HRMS只不过是一种自动计算薪资的工具。90年代末,由于个人电脑的普及,数据库技术、客户/服务器技术,特别是Internet/Intranet技术的发展,出现了现代人力资源管理系统。现代人力资源管理系统的特点是从人力资源管理的角度出发,用集中的数据库将几乎所有与人力资源相关的数据(如薪资福利、招聘、个人职业生涯的设计、培训、职位管理、绩效管理、岗位描述、个人信息和历史资统一管理起来,形成了集成的信息源。友好的用户界面,强有力的报表生成工具、分析工具和信息的共享使得人力资源管理人员得以摆脱繁重的日常工作,集中精力从战略的角度来考虑企业人力资源规划和政策。
目前,人力资源管理系统从科学的人力资源管理角度出发,从企业的人力资源规划开始,一般包括招聘、岗位描述、培训、技能、绩效评估、个人信息、薪资和福利、各种假期、到离职等与员工个人相关的信息,并以一种相容的、一致的、共享的、易访问的和检索的方式储存到集中的数据库中,从而将企业内员工的信息统一地管理起来。其灵活的报表生成功能和分析功能使得人力资源管理人员可以从繁琐的日常工作中解脱出来,将精力放到更富有挑战性和创造性的人力资源分析、规划、员工激励和战略等工作中去。完整的历史信息记载了员工从面试开始到离职整个周期的薪资、福利、岗位变迁、绩效等信息。同时由于这类系统可管理较全面的人力资源和薪资数据,因而还可以生成许多综合性的报表供企业决策人员参考,如生成按岗位的平均历史薪资图表,员工配备情况的分析图表,个人绩效与学历、技能、工作经验、接受的培训等关系的分析等。
1.3 本文主要内容
本论文重点介绍了人力资源管理系统的实现过程:包括系统分析、系统总体结构设计、数据库设计、系统界面设计,同时也给出了重要功能的代码实现,全文共分五章。
1章是绪论,介绍了当前国内人力资源管理背景及形势。提出开发人力资源管理系统的必要性。
2章是系统开发技术以及系统工具的介绍,主要介绍系统建模工具UML前端开发工具JSP的功能和特点,MySQL数据库的有关知识。
3章是系统需求分析,从技术可行性、系统目标、系统特色三部分对系统


进行了分析。
4章是系统总体设计,对系统总体流程,模块结构设计以及数据库的设计都做了详细的介绍。
5章介绍了系统模块的功能,对主要界面的设计做了介绍,并附之以图,必要的部分增添了代码说明。
6章介绍了系统测试,包括测试目的,测试原则和测试方法等。
2 系统开发工具及开发技术介绍

在一个系统的开发过程中,开发工具和开发技术的选择,对系统的整个运行环境的要求以及系统的运行效果有很大的影响。因此,要根据系统设计的目标来慎重选择。
2.1 系统的建模工具UML

本系统是基于UML设计和实现的,UMLUnified Modeling Language的缩写)统一建模语言,是用来对软件密集系统进行可视化建模的一种语言。UML面向对象的系统分析和设计的可视化建模语言,它充分运用面向对象的概念来构造系统模型,建立起从概念模型直至运行体之间的明显的对应关系。它着眼于那些有重大影响的问题,是一种对任何机器都适用的建模语言。它还提供了扩展和专用机制,为新概念和特定应用提供了支持。
UML统一了面向对象建模的基本概念、术语及其图形符号,为不同领域的人员提供了一个交流的标准,它不仅可以应用于软件开发从分析到测试的各个阶段,还可以支持多种领域的建模。
UML作为一种可视化建模语言,由视图、图、模型元素和通用机制等部分组成。视图表示系统的各个方面,如功能、结构、实现等,它由多个图构成。每个图使用了多个模型元素。在此基础上,通用机制为图做进一步的补充说明,注释、元素的语义说明。
UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,是一种总结了以往建模技术的经验并吸收当今优秀成果的标准建模方法。UML包括概念的语义,表示法和说明,提供了静态、动态、系统环境及组织结构的模型。它可被交互的可视化建模工具所支持,这些工具提供了代码生成器和报表生成器。UML标准并没有定义一种标准的开发过程,但它适用于迭代式的开发过程。它是为支持大部分现存的面向对象开发过程而设计的。
UML描述了一个系统的静态结构和动态行为。UML将系统描述为一些离散


的相互作用对象,并最终为外部用户提供一定功能的模型结构。静态结构定义了系统中重要对象的属性和操作以及这些对象之间的相互关系。动态行为定义了对象的时间特性和对象为完成目标而相互进行通信的机制。从不同但相互联系的角度对系统建立模型。UML还包括可将模型分解成包的结构组件,以便于将大的系统分解成易于处理的块结构,并理解和控制各个包之间的依赖关系,在复杂的开发环境中管理模型单元。它还包括用于显示系统实现和组织运行的组件。
2.2 系统的开发工具

本系统以JSP为主要编程语言,MySQL为数据库,Dreamweaver8对系统进行美化。主要完成对人力资源管理系统的需求分析、功能模块划分和设计、数据库模式分析及设计,并由此设计了数据库结构和应用系统程序。 2.2.1 JSP发展及简介


JSP(JavaServer Pages是由Sun公司倡导,许多别的公司参与一起创建的一种新动态网页技术标准,类似其他技术标准.在传统的网页HTML文件(*.htm,*.html中加入Java程序片断(ScriptletJSP标签,构成了JSP网页(*.jspServlet/JSP Container收到客户端发出的请求时,首先执行其中的程序片断,然后将执行结果以HTML格式响应给客户端,其中程序片断可以是:操作数据库,重新定向网页以及发送E-Mail等等,这些都是建立动态网站所需要的功能。所有程序操作都在服务器端运行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP称为Server-side Language。所以被许多人认为是未来最有发展前途的动态网站技术之一。 2.2.2 JSP的主要特点
1、将内容的生成和显示进行分离
使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容.生成的内容的逻辑被封装在标识和JavaBeans组件中,那么其他人,Web管理人员和页面设计者,能够编辑和使用JSP页面而不影响内容的生成。
2、一次编写,到处运行
作为Java平台的一部分,JSP拥有Java编程语言“一次编写,到处运行”的特点,随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,但并不影响当前的应用。
3JSP的平台适应性更广
这是JSPASP的优越之处,几乎所有的平台都支持Java,它们可以在任


何平台下通行无阻。虽然NTOS占据了很大的市场的份额,但在服务器方面UNIX的优势仍然很大。从一个平台移植到另一个平台,JSPJavaBeans甚至不用重新编译,因为Java字节码都是标注的字节码与平台无关。
4、健壮的存储管理和安全性
由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP面都被编译为Java ServletJSP页面就具有Java技术的所有优点,包括健壮的存储管理和安全性。
5、数据库连接技术
很多的OS中都带有JDBC驱动程序,Java就通过JDBC与数据库连接,执行查询,提取数据等操作。Sun公司还提供了JDBC-ODBC的桥连接Java也可以访问带ODBC驱动的数据库,目前大多数数据库系统都带有ODBC驱动,所以Java访问诸如OracleSybaseMS SQL Server Access等类型的数据库。
2.3 数据库的选择
2.3.1 MySQL数据库
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。2008116号被Sun公司收购。而2009年,SUN又被Oracle收购。对于Mysql的前途,没有任何人抱乐观的态度。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
2.3.2 MySQL数据库特性
1、使用CC++编写,并使用了多种编译器进行测试,保证源代码的可移植性。

2支持AIXFreeBSDHP-UXLinuxMac OSNovell NetwareOpenBSDOS/2 WrapSolarisWindows等多种操作系统。
3、为多种编程语言提供了API。这些编程语言包括CC++PythonJavaPerlPHPEiffelRubyTcl等。 4、支持多线程,充分利用CPU资源。

5、优化的SQL查询算法,有效地提高查询速度。

6、既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。




7、提供TCP/IPODBCJDBC等多种数据库连接途径。 8、提供用于管理、检查、优化数据库操作的管理工具。

2.4 Struts架构简介
随着Web开发技术的日益成熟,在Web开发开发领域中出现了许多设计好的软件开发框架,Struts就是一种基于MVC经典设计模式的框架,也是当前Web开发中比较成熟的一种框架。 2.4.1 经典的MVC模式
MVC(Model-View-Controller模式,即模型-视图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个组成部分。
1、模型(Model:业务逻辑层实现具体的业务逻辑,状态管理的功能。 2、视图(View:表示层.即与用户实现交互的界面,通常实现数据输入和输出功能。
3、控制器(Controller:控制层.起到控制整个业务流程(Flow Control的作用,实现ViewModel部分的协同工作。
MVC设计模式可以针对需要为同样的数据提供多个不同视图的应用程序,例如:公司产品数据库中同样的产品信息数据,但需要根据用户的不同需求在页面中显示其所需的不同产品信息。
MVC设计模式中,事件一般是指客户端Web浏览器提交的各种不同请求,这些请求由控制器进行处理,控制器根据事件的类型来改变模型或各个视图,图也可以接受模型发出的数据更新的通知,依据数据更新的结果调整视图效果,呈现在用户面前,而模型也可以通过视图所获得的用户提交的数据进行具体业务逻辑的处理。其结构如图2.1所示。

更新

获得数据
更新


获得数据
视图1 改变


控制器
视图
2

改变 改变






2.1 MVC设计模式的结构
显然这样的运行机制可以起到分工明确,指责清晰,各尽所长的效果。而在软件开发的过程中,这样的开发方式无疑可以有效地区分不同的开发者,尽可能减少彼此之间的互相影响。充分发挥每个开发者的特长。这在开发大型复杂的Web项目时体现得尤为突出。 2.4.2 Struts 1.2开发框架
作为基于MVC设计模式的Web应用的一种典型体现,Struts架构实际上是建立在Model2基础上的,对ModelViewController都提供了现成的实现组件。
1Controller控制器部分
Struts中的Controller控制器部分是通过专门的Servlet来实现的,该Servlet是一个Struts API中提供的ActionServlet类型的实例,ActionServlet类继承了javax.servlet.http.HttpServlet类,因此该类的实例可以和普通的Servlet一样工作,其作用是接收客户端浏览器的请求,然后选择执行相应的业务逻辑,再把响应结果送回到客户端。
Action对象是开发者定义的类(该类必须是Struts API中提供的Action类的子类的实例。在继承该类的过程中开发者可以加入具体业务逻辑或调用业务逻辑模块.Action对象在进行了业务逻辑或调用业务逻辑模块。Action对象在进行了业务逻辑的处理以后会将应用程序流程转到合适的View组件,最终将响应送回浏览器客户端。Struts中提倡Action对象只用来决定“做什么”,相当于一个低层面的控制器,因此也可以将Action归纳为Controller的组成部分。
2Model 模型部分
MVC系统中的Model模型部分从概念上可以分为两类:系统的内部状态和改变系统状态的动作。Struts中的Model部分一般由JavaBean以及EJB组成。Struts架构中使用JavaBean来提供具体的业务逻辑,即“怎么做”,对于复杂的系统也可以使用EJB等组件来实现系统状态维护,这种业务逻辑的细分可以增强。
3View视图部分
Struts中的View视图部分依然可以采用JSP来实现。此外,Struts还提供了丰富的自定义标记库,View部分使用这些自定义标签同样可以实现与Model分的有效交互并能够增强显示功能。



2.5 数据持久层
数据是软件系统中不可缺少的环节,数据持久化的解决之道也一直是企业计算标准中最有影响力的部分。如今关系型数据库已经稳定地占据着主要的数据库市场,XML技术和XML数据库技术也日渐成熟。 2.5.1 持久化技术
一直以来,在Java开发领域中基于数据库应用的设计实现一直是面向关系的,也就是说与数据库相关的处理过程并没有实现真正的面向对象。如何在数据存取的操作中实现真正的面向对象,一直是开发人员探索的问题。正在使用中的对象序列化技术,EJBEntity Bean技术等,都是在这方面很好的探索。但是实体Bean设计实现过程中的繁琐和复杂,使得许多开发人员望而却步。
Hibernate的出现,提供了一个符合Java面向对象编程思想,易于使用的数据库持久化解决方案。因此,在目前行业的Java数据库应用项目中,有越来越多的开发人员开始尝试使用Hibernate在数据库外面包裹上一层面向对象的外衣,从而将开发人员从繁琐、重复、技术含量不高的数据库编程中结果出来。 2.5.2 Hibernate概述
Hibernate在英文中的意思是“冬眠”,从这个角度也可以体会到Hibernate架构下提供的相关技术可以实现度十角状态的持久性保存。在传统的数据库编程中,开发人员要面对大量重复行代码的编写,以实现对不同数据表中的数据的获取,并将获取到的记录数据封装成对象,在处理完成之后,如果需要进行对象状态的存取,需要将对象中的数据拆卸成数据库记录中的对应字段的值,然后向数据库中进行存取。
这种工作方式显然没有实现真正意义上的数据存取阶段的面向对象。虽然数据存取过程中的工作步骤是基本固定的,但是由于操作的数据表中字段列表数据的不同,使得开发人员必须要不厌其烦地书写与相应的实体类对应的封装处理过程。
而在Hibernate中,类似这种重复性高,工作量大,但是又必须保证高质量完成的体力活,全部由Hibernate接管过去。这对广大的Java开发人员无疑是个非常好的消息。
Hibernate本质上是一个面向Java开发环境的对象/关系数据库映射工具。在Hibernate之前,开发人员要将面向对象的软件和关系数据库结合在一起,往往会费长麻烦。而借助Hibernate对象/关系数据库映射技术,可以非常轻松地将以


面向对象思想封装的对像的各个状态数据映射到基于SQL的关系模型数据结构中去。Hibernate工作流程如图2.2所示。

SQL语句

数据库

2.2 Hibernate工作示意图

Hibernate HQL语句 XML 映射 文件 Jva应用

2.6 本章小结
本章主要介绍了开发此系统所用到的开发工具以及开发技术。首先介绍了UML统一系统建模语言,然后是JSP以及MySQLStruts框架、Hibernate持久层的介绍。并详细说明了JSP MySQL这两种工具的主要特点,以及StrutsHibernate框架的主要工作流程。
3 系统需求分析

在开发人力资源管理系统之前我们有必要先进行系统的可行性分析和需求分析,这样可以使系统能够合理,符合实际应用的要求。
3.1 可行性分析
1、经济性
由于MySQL数据库和Tomcat服务器都是开源的免费的开发学习工具,而且,本系统使用灵活方便,所需的开发人员不多,技术也不是很复杂,开发周期


较短,因此开发成本较低。市场前景非常看好,所以说经济方面可行。
2、技术性
由于人力资源管理是一个企业必备的管理体系,在现今网络飞速发展的情况下,技术支持也是相对容易的,人们可以利用21世纪这个新兴的网络时代更加便捷运用它。
3、操作可行性
对于用户来说,本系统只要求使用者掌握一定的上网经验,经过仔细设计和测试之后的系统具有操作简单,方便灵活等优点,足可以满足各种用户的不同需求,同时也方便了公司的内部管理。管理人员及用户一定会在短时间内掌握并熟练使用。只要动一动鼠标键盘就可以达到想要的效果。
3.2 需求分析
网络化的今天,网络人力资源管理系统,使新的人力资源协作管理模式成为可能。通过网络管理系统,专门的人力资源管理人员可以提高自身的工作效率,作好人力资源管理的协调工作,提高人力资源利用率;通过网络管理系统,员工可以直接管理自己的技能,有效地发现和挖掘自身的潜能,及时与自己的上级、下属、同事进行的沟通与交流,同心协作,积极为企业的发展与决策贡献力量。通过网络人力资源管理系统对企业人力资源进行管理,使企业人力资源管理适应时代的发展要求,大大提高了企业的核心竞争力。 3.2.1 功能需求
本系统主要是为企业管理者提供便利高效的对企业人力资源进行管理,使企业人力资源管理适应时代发展的要求,大大提高企业的核心竞争力。主要功能是实现对员工信息、培训信息、薪水信息、应聘信息以及奖惩信息进行添加、浏览、修改和删除,实现企业人力资源的高效,现代化管理。 3.2.2 系统用例图分析
系统主要角色有系统管理员及普通管理员。系统管理员可以对整个系统进行管理及维护,普通管理员有对其它模块管理的权限,而对管理员模块仅可查看信息而无权作任何修改,除了修改自己的密码。
1、系统用例
系统用例如图3.1所示:



<>
登录
人员档案
<>
<><><>
人事调配<><>
增加<><><><>
<>administrator<>
教育培训
<>
维护
<>
删除
<>
查询
修改
系统管理
退出

3.1 系统用例图
2、教育培训用例
教育培训用例如图3.2所示:
发布培训信息
<>
<>
增加
维护培训类型
<>
<>
维护
<>
删除
记录培训
<>
<>
administrator
管理培训人员及成绩
修改
记录员工证书
查询培训情况

3.2 系统用例图
在培训模块中涉及的角色有系统管理员,首先系统管理员发布培训消息,录培训信息,管理培训人员及成绩单,记录员工证书,查询培训情况,然后对培训进行维护,包括添加、删除、修改。 3.2.2 环境需求
1、硬件环境
对机型和外设等无特别要求,只要可移植性好,能独立于平台和Web服务器工作。
2、软件环境
1)数据库工具:本系统软件采用MySQL数据库。




2Web服务器:TOMCAT
3)开发工具:Eclipse3.1.1+Myeclipse4.1.1GA 4)外部包:Struts.jar Hibernate.jar 5)建模工具:Together 3.2.3 用户界面需求
用户可直接通过系统提示进行所需资源的模糊查询、精确查询等。而且每个界面的功能都一目了然,所有的操作简单易懂,为用户提供了一个的简洁美观、易于操作的平台,并使用Dreamweaver8对界面进行美化。 3.2.4 数据库需求分析
数据库是应用程序的重要组成部分。设计结构合理、功能齐全的数据库对于提高数据库应用程序的开发效率和系统的性能都是非常重要的。数据库的设计过程大致如下:
1、根据系统需求,确定数据库中要保存的信息
对系统进行分析是数据库设计的第一个阶段。调查研究客户的需求,了解所要运作的流程和系统需求。
2、设计数据库的概念模型 按系统的需求来对数据库建模。 3、逻辑结构设计
把概念结构转化为与所采用的数据库管理系统所支持的数据库模型相符合。并对数据库进行实施和维护。
3.3 本章小结
本章主要是介绍了在开发一个系统之前要进行的可行性分析、需求分析及数据库需求分析。其中,可行性分析是对确定系统的目标、规模与功能是必不可少的,从系统可行性和技术可行性方面进行了分析;需求分析主要介绍了功能需求、环境需求、用户界面需求等。需求分析的设计是数据库的起点,需求分析的结果是否准确很大程度地反映了用户的实际要求,将直接影响到后面各个阶段的实施,并影响到设计结果是否合理和实用。因此是非常重要的一个过程,要加以重视。
4 系统总体设计

系统设计是在系统分析的基础上由抽象到具体的过程。主要目标是将系统分析阶段所提出的反映信息需求的系统逻辑方案转换成可以实施的基于计算机与


通信系统的物理(技术)方案,为下一阶段系统实施提供必要的技术资料,应符合系统性,灵活性,可靠性,经济性的要求。
4.1系统总体结构设计

根据系统分析的结果,得到人力资源管理系统的功能模块结构图,系统总体结构划分为系统管理模块、人事管理模块、招聘管理模块、培训管理模块、薪酬管理模块及管理员管理模块。其结构图如图4.1所示。


人力资源管理系统
系统管理


人事管理 招聘管理 培训管理 薪酬管理 管理员管理









4.1.1 系统流程


系统流程图反映了整个系统的功能实现,即将来程序的控制层次体系。本系统包括信息查询功能和信息管理功能,用户打开程序就可以直接查询相关的信息,理员可直接登录系统对信息进行维护和更新。系统流程图如图4.2所示。

对系统进行操










4.1 人力资源管理系统功能模块图


数据库
数据处理
数据输出

4.2 系统流程图




4.1.2 系统模块结构设计
模块是指在软件系统设计中,这样的一组程序语句,它包括输入与输出、辑处理功能、内部信息及其运行环境。人力资源管理系统划分为人事管理、招聘管理、培训管理、薪水管理、系统管理等模块。人事管理模块主要功能是对人事管理的基础信息、员工信息等进行管理。招聘管理模块主要是对企业招聘信息、企业的应聘信息、企业人才库进行管理。培训管理模块主要是对企业的培训计划、培训实施、培训材料等信息进行管理。薪水管理模块主要功能是对员工的薪水进行管理。系统管理模块主要功能是对操作员信息、操作员权限进行管理。
对于员工管理模块的总体设计,其类图如图4.3所示:

4.3 员工管理模块类图
EmployeeDAO,EmployeeDAOImpl,它们都需要Employee类型参数,UpdateEmployeeActionDeleteEmployeeActionEmployeeInfoActionEmployeeListActionToAddEmployeeActionAddEmployeeAction都是继承自struts提供的Action类,且都需要调用EmployeeDAO来实现相关操作。
对于管理员管理模块的总体设计,其实现类图如图4.4所示:




4.4 管理员管理模块类图
在这个类图中,有一个接口AdminDAO,它的实现类是AdminDAOImpl,它AdminUpdateAdminActionDeletAdminActionAdminInfoActionAdminListActionToAddAdminActionAddAdminActionLoginAction都是继承自struts提供的Action类,并且都需要调用AdminDAO来实现相关操作。
其中登录实现的顺序图如图4.5所示:

4.5 登录实现顺序图
该顺序图的处理步骤如下:



1、用户从浏览器客户端向Web服务器发出请求,服务器将请求转发到Web容器,比如:Tomcat根据请求路径URL找到ActionServletWeb容器调用Servletservic(方法,根据请求参数的不同调用doGet(或者doPost(方法。
2、而ActionServletdoGet(或者doPost(方法调用process(方法处理请求和响应,生成RequestProcess对象处理配置文件struts-config.xml中的配置信息,依次调用processMapping(--查找处理此次请求的Action信息并返回ActionMappingprocessActionForm(--ActionFormprocessActionCreate(--创建处理此次请求的Action实例(LoginAction对象)processActionPerform(--执行Action实例的execute(方法。
3、通过调用execute(方法获取LoginForm存储的用户和密码等数据信息,其中将ActionForm BeanActionMappingrequestresponse对象传递给LoginAction对象(Action实例);执行完必要的逻辑处理,比如查询数据库后,返回一个ActionForwardRequestProcess processForwardConfig(方法解析配置文件中跳转参数,转发到相应的View页面。
其它管理模块的设计与员工管理模块和管理员管理模块相似,在此不再作介绍了。
4.2 数据库的设计
数据库技术作为现代信息技术的重要组成部分,伴随着计算机应用技术的迅速发展,在数据库技术的基础理论、数据库设计方法、数据库应用开发等方面都等到了长足的进步。
数据库技术研究和解决了计算机信息处理过程中大量数据有效地组织和存储的问题。减少了数据冗余、实现数据共享以及保证数据的安全性。通过需求分析,我们在人力资源管理系统中数据库设计主要包括建立系统的数据库,创检索需要的表与字段及存储过程。 4.2.1 系统数据库关系模型的设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完善性和一致性。同时,合理的数据库结构也将有利于程序的实现。

针对人力资源管理系统的需求,通过对实体本身的属性和数据流程分析,计出如下所示的数据:
员工信息:包括的数据项有员工编号、员工姓名、性别、年龄、学历、籍贯、


毕业学校、出生年月、联系电话、身份证号、专业、通讯地址、电子邮箱、工作经验、详细经历、申请时间、入职时间、部门编号、职位编号、培训编号。
部门信息:包括的数据项有部门编号、部门电话、部门负责人、部门名称、备注。
职位信息:包括的数据项有职位编号、职位名称、备注。
薪水信息:包括的数据项有薪水编号、员工编号、基本工资、饭补、房补、全勤奖、额外补助、罚款、赋税、银行账号、发放时间、总计。
培训信息:包括的数据项有培训编号、培训名称、培训目的、开始时间、结束时间、培训材料、讲师、是否培训过、培训效果、培训总结、创建时间。
奖惩信息:包括的数据项有奖惩编号、奖惩名称、原因、说明、添加时间、员工编号。
应聘信息:包括的数据项有应聘者编号、应聘者名称、性别、年龄、学历、籍贯、应聘职位、联系电话、专业、电子邮箱、毕业学校、工作经验、详细经历、创建时间、聘任否。
管理员信息:包括的数据项有管理员编号、管理员名称、密码、权限、注册日期、员工编号。 4.2.2 系统数据库概念设计
概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立具体DBMS的概念模型。它是对现实世界的一种抽象,是实际事物的人为处理。抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。
概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间交流的语言,因此概念模型一方面应该具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识,另一方面它还应该简单、清晰、易于用户理解。
人力资源管理系统根据以上的设计规划出的主要实体,可得本系统数据库关系图,如图4.6所示。





4.6 数据库关系图
4.2.3 系统数据库逻辑结构设计
针对人力资源管理系统的需求,通过对人力资源管理过程的内容和数据流程分析,可以设计出该系统的数据项和数据结构。
1、创建数据库和表
数据库的设计通常是以一个已经存在的数据库管理系统为基础的,常用的数据库管理系统有AccessSQL ServeMySQLOracl等。根据需求分析和业务流程,本系统采用MySQL数据库管理统。
整个系统用到的数据表包括员工信息表“employee,如下表4.1所示, 门信息表“dept,如表4.2所示,职位信息表“job_post,如表4.3所示,薪水信息表“salary,如表4.4所示,培训信息表“educate,如表4.5所示,奖惩信息表“premium,如表4.6所示,应聘信息表“jobber,如表4.7所示,管理员信息表“admin,如表4.8所示。

4.1 员工信息表
字段名 Employee_id Employee_name Sex Age 数据类型 Int Varchar Char Int 11 50 4 11 长度
是否为空 No No No Yes 描述 员工编号 员工姓名 性别 年龄



Birthday IDCard Specialty Study_effort School Experience Native Tel Address Email Create_time Conten Work_begin Detpt_id Id Post_id Datetime Int Varchar Varchar Varchar Varchar Varchar Varchar Varchar Varchar Datetimt mediumtext Datetime Int Int Int 11 50 50 50 50 50 50 50 50 —— —— —— 11 11 11 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes 出生日期 身份证号 专业 学历 毕业学校 工作经历 籍贯 联系电话 通讯地址 电子邮箱 申请时间 详细经历 入职时间 部门编号 培训编号 职位编号
注:此表主要用于保存员工的基础信息。

4.2 部门信息表
字段名 Detpt_id Dept_name Dept_phone Dept_principal Remark int Varchar Varchar Varchar Varchar 数据类型
11 50 20 50 1000 长度
是否为空 No No Yesy No Yes 描述 部门编号 部门名称 部门电话 负责人 备注
注:此表主要用于保存部门基础信息。

4.3 职位信息表
字段名 Post_id Post_name
数据类型 int Varchar 11 50 长度 是否为空 No No 描述 职位编号 职位名称


Remark varchar 1000 Yes 备注
注:此表主要用于保存部门基本信息。
4.4 薪水信息表
字段名 Salary_id Basice Eat House Duty Other Punishment Scott Totalize Grant_time Bank_no Employee_id 数据类型 Int Float Float Float Float Float Float Float Float Datetime Int Int 11 11 11 长度
是否为空 No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes 描述 薪水编号 基本工资 饭补 房补 全勤奖 额外补助 罚款 赋税 总计 发放时间 银行账号 员工编号
注:此表主要用于保存入薪水的数据。

4.5 培训信息表
字段名
Id Educate_name Purpose Begin_time End_time datum Teacher Createtime Educate Effect Summarize
数据类型 int Varchar Varchar Datetime Datetime Varchar Varchar Datetime Int Varchar Varchar 11 长度 是否为空 No No Yes Yes Yes Yes Yes Yes Yes Yes Yes 描述 培训编号 培训名称 培训目的 开始时间 结束时间 培训资料 讲师 创建时间 是否培训过 培训效果 培训总结
100 500 —— —— 2000 50 —— 11 500 2000

注:此表主要用于保存培训信息。

4.6 奖惩信息表t
字段名 Premium_id Premium_name Reason Description Create_time Employee_id
数据类型 int Varchar Varchar Varchar Datetime Varchar 11 50 20 50 —— 1000 长度
是否为空 No No Yesy No Yes Yes 描述 奖惩编号 奖惩名称 原因 奖惩说明 添加时间 员工编号
注:此表主要用于保存奖惩信息。

4.7 员工应聘信息表
字段名 Jobber_id Job_name Sex Age Job Specialty Study_effort School Experience Native Tel Isstock Email Create_time Conten
数据类型 Int Varchar Char Int Varchar Varchar Varchar Varchar Varchar Varchar Varchar Int Varchar Datetimt
mediumtext 11 50 4 11 50 50 50 50 50 50 50 11 50 —— ——
长度
是否为空 No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes 描述 应聘者编号 应聘者姓名 性别 年龄 应聘职位 专业 学历 毕业学校 工作经历 籍贯 联系电话 聘任否 电子邮箱 申请时间 详细经历
注:此表主要用于保存应聘信息。




4.8 管理员信息表t
字段名 Admin_id Admin_name Password Rigths Add_date Employee_id
数据类型 int Varchar Varchar Varchar Datetime
Varchar 11 50 20 50 1000 长度
是否为空 No No No No Yes
Yes 描述 管理员编号 管理员名称 密码 权限 添加时间 员工编号
注:此表主要用于保存管理员信息。

4.3 本章小结
本章主要介绍了系统的总体流程设计,以及如何进行系统总体设计、系统模块设计,并详细介绍了人力资源管理系统的数据库设计。


5 系统详细设计与实现

5.1 详细设计
5.1.1 功能设计
本系统主要用于对企业中的“人”进行管理。具体地讲,人力资源管理系统就是通过人力资源规划、员工考核、薪酬管理、员工激励、人才培训和开发等一系列手段来提高劳动生产率,最终达到发展目标的一种管理行为。具体实现目标如下:
1、实现对员工信息进行全面管理的功能。 2、设置人力资源基础信息管理功能。 3、设置员工考勤管理功能模块。 4、员工薪酬信息管理。
5、实现企业员工培训信息全程跟踪的功能。



6、实现企业的招聘信息、应聘信息的管理功能。 7、企业人才库管理功能。 8、系统用户信息的管理。
9、系统最大限度地实现了易安装性、易维护性和易操作性。 10、系统运行稳定、安全可靠。 5.1.2 模块设计
人力资源管理系统是针对中小企业对现有员工和新聘员工的一个WEB管理平台。主页功能模块主要包括以下功能模块:
管理员管理:主要包括管理员的登录、添加、删除、及密码的修改。 人员管理:主要包括浏览人员信息、添加人员信息、人员信息的添加、人员信息的修改。
招聘管理:主要包括应聘人员信息的详细查看、删除、添加以及信息入库。 培训管理:主要包括培训计划的详细信息、信息删除、添加培训计划和填写培训总结。
奖惩管理:主要包括奖惩详细信息、删除详细信息、添加详细信息、修改详细信息。
薪金管理:主要包括薪金的修改、添加、删除。
5.2 系统的运行及实现
5.2.1 管理员管理模块设计
管理员管理模块主要包括登录,浏览、添加和修改人员信息。登录是用户进入主页面的入口,其运行结果如图5.1 所示。

5.1 登录模块运行结果



系统登录是人力资源管理中最先使用的功能,因为用户登录在数据库中使用的是管理员表,管理员表中有一个rights字段,是来标识管理员的权限。在登录时要根据数据库的这个字段来判断此用户是否具有管理员的权限。在网页里添写用户名和密码后点击【登录系统】按钮,网页会访问一个URL,这个URLlogon.do”代码如下:
action=login.do method=post>
actionStrutsActionURLStrutsstruts-config.xml中是已经配好的,如下所示:
type="com.hit.struts.action.LoginAction" scope="request" name="adminForm"
input="/login.jsp" >

在这个配置文件中,可以了解到如下信息:
1name="adminForm"actionForm"com.hit.struts.form.AdminForm"
2根据type="com.hit.struts.action.LoginAction"可找到处理用户数据的Action类。
3、根据input="/login.jsp"如果当Action验证登录失败时,页面会被返回login.jsp登录页面。
4根据可以了解这个action返回adminLogin时,页面会被转到Default.html文件,这就是登录成功的页面。
LoginAction 是登录时StrutsAction的实现类,是这个登录页的核心内容,主要代码如下所示:
public ActionForward execute(ActionMapping mapping,



ActionForm form, HttpServletRequest request,
HttpServletResponse
response
throws
Exception {





String adminName = request.getParameter("adminName"; String password = request.getParameter("password"; String rights = request.getParameter("rights"; Admin admin = new Admin(; admin.setAdminName(adminName; admin.setPassword(password; admin.setRights(rights;
boolean flag = false; AdminDAO adminDao = new AdminDAOImpl(; flag = adminDao.loginCheck(admin; if (flag {

}
}

if (rights.equals("1" { // 管理员登录 request.getSession(.setAttribute("admin",admin; //System.out.println(admin.getAdminName(; return mapping.findForward("adminLogin";

}else if (rights.equals("2" { //普通用户登录
request.getSession(.setAttribute("admin",admin; return mapping.findForward("userLogin"; request.getSession(.setAttribute("admin",admin; //登录出错
ActionMessages errors = new ActionMessages(; ActionMessage error = new ActionMessage("login";
errors.add("login",error; this.saveErrors(request,errors;
} StrutsAction实现类的execute(方法是最先被执行的,首先从request中得到用户提交的数据,然后在调用AdminDAO(loginCheck (方法。并且把数据封装成admin类做为loginCheck (方法的参数。调用后会返回一个boolean型的mapping.findForward("adminLogin";
return mapping.getInputForward(;



mapping.getInputForward(;”也就是当用户登录成功后,返回给用户登录成功的页面,登录失败后返回用户一个登录页面。该方法的实现如下所示:
public boolean loginCheck(Admin admin {

}

//boolean flag = false; Session session = HibernateSessionFactory.getSession(;
Transaction t = session.beginTransaction(; Query query = session.createQuery("select count(* from Admin as a where a.adminName=? and a.password=? and a.rights=?"; query.setString(0,admin.getAdminName(; query.setString(1,admin.getPassword(; query.setString(2,admin.getRights(; List list = null; list = query.list(; t.commit(; HibernateSessionFactory.closeSession(; if (list!=null {
}
return false; Iterator it = list.iterator(; if (it.hasNext( {
} if (((Integerit.next(.intValue(==1 {
}
return true; 这个方法先通过HibSessionFactory得到一个HibernateSession并且开始一个事务,Session再像使用一个欲编译似的命令似的东西,设定参数、提交事务和最后在关闭Session。得到一个List里面就存储着所有查询出的结果。根据这个结果就可以判断出该用户是否有登录的权根了,在返回true或者false。就这样合法的用户就可以顺利的登录了。那刚才那些类似于欲编译的东西是什么呢,这些就是Hibernate特有的查询语言,被称为Hibernate 查询语言(HQL,而它本身也就是使用的JDBC的欲编译技术。



5.2.2 系统主页设计

管理员登录系统后进入系统主页,运行效果如图5.2所示。

5.2 系统主页运行结果
进入主页后可以看到各个功能模块,如果是超级管理员登录,超级管理员进行所有操作,如管理员的添加、浏览、删除及修改。例如添加管理员实现如图5.3所示。

5.3 添加管理员页面运行结果
如果是普通管理员登录,只能对本身信息进行操作,不能对管理员模块进行操作,但是可以对其他所用模块进行操作。 5.2.3 员工管理模块设计
员工管理模块主要包括浏览员工信息、添加员工信息、员工信息的修改、


工信息的修改。
各项管理工作都是在用户成功登录后的管理页面进行的,在管理控制页面的左侧是各项的相关链接,右侧是操作平台。
单击“添加员工信息”,即打开添加员工信息的页面如图5.4所示。

5.4 添加员工信息页面
添加员工信息的操作步骤如下:
添加员工信息Struts配置文件strtuts-config.xml中,添加员工信息的链接没有使用ActionForm使ActionToAddEmployeeActionToAddEmployeeAction中取得部门和职位数据聚集,并传给addEmployee.jsp接受。addEmployee.jsp文件,只是一个普通的JSP文件,但是它的表单元素都是与EmployeeForm相对应,EmployeeForm类继承了strutsActionForm类,用于封装表单数据。
addEmployee.jsp页面form表单中的action的值是它要提交的URL其代码为
name="form1" method="post" action="addEmployee.do">,在Struts的配置addEmployeeAction
"com.hit.struts.action.AddEmployeeAction",代码如下所示:


type="com.hit.struts.action.AddEmployeeAction" name="employeeForm" scope="request"
>
AddEmployeeActionexecute(方法中,首先是把从EmployeeForm表单转化成的Employee类做为参数传给了EmployeeDAOaddEmployee(方法。再由这个方法向数据库添加员工信息,实现代码如下: public void addEmployee(Employee employee {
} 如果添加成功页面会被发转到/employeeList.doURLemployeeList.do的的配置文件如下所示:

Session session = HibernateSessionFactory.getSession(; Transaction t = session.beginTransaction(; try {

session.save(employee; session.flush(; t.commit(; if (t!=null {

} catch (Exception e { t.rollback(; } }finally{


HibernateSessionFactory.closeSession(; }

type="com.hit.struts.action.EmployeeListAction" scope="request"
>



这样就在页面做一次提交时它访问了"com.hit.struts.action.EmployeeListAction",把所有员工信息取出来显示给用户,同样EmployeeListAction还是调用EmployeeDAO,取数据库的具体操作在EmployeeDAO文件中,它调用的是EmployeeList (方法,并返回封装结果集的PageModel对象,EmployeeList (方法的实现代码如下所示: public PageModel EmployeeList(int offset, int pageSize {
} EmployeeListAction取出从EmployeeDAO中数据,在把它存到request里,然后返回return mapping.findForward("employeeList",在struts的配置文件里返回页employeeList.jsp。所有员工的信息都在这个页中显示出来。在显示页中,从request里面的取出数据,如果有则显示在页面上,使用判断是否存在数据。
这是添加员工信息的整个过程,在这个过程中,有一部分是用于显示员工信息的,就是员工浏|修改,如果在网页中直接点击这个链接地址,同样也会调用出所有用户的信息。这就是“员工浏览|修改”的链接。页面实现效果如图5.5所示。
员工信息的列表的最后一列可以对该条记录进行删除和修改。删除的链接地址是"deleteEmployee.do?id=${employee.employeeId }"它向Action的实现类提交了一个参数,是该员工的id这是根据不同记录取出来的。在Action的实现类中得到页面提交过来的员工id并调用EmployeeDAOdeleteEmployee(方法,实现如下:
public ActionForward execute(ActionMapping mapping,


PageModel pm = new PageModel(; Session session = HibernateSessionFactory.getSession(; Query query = session.createQuery("from Employee"; query.setFirstResult(offset; query.setMaxResults(pageSize; List list = query.list(; pm.setList(list; pm.setCount(this.count(; HibernateSessionFactory.closeSession(; return pm;
ActionForm form,


}

HttpServletRequest request, HttpServletResponse response throws String id = request.getParameter("id"; int employeeId = 0; if (!(id==null||"".equals(id { } new EmployeeDAOImpl(.deleteEmployee(employeeId; return mapping.findForward("deleteEmployee"; Exception {
employeeId = Integer.parseInt(id;

5.5 浏览员工信息页面
具体的删除操作的代码如下所示:

public void deleteEmployee(int employeeId {


Session session = HibernateSessionFactory.getSession(; Transaction t = session.beginTransaction(; try {




Employee employee
=(Employeesession.get(Employee.class,employeeId; session.delete(employee; t.commit(; } catch (Exception e {
if (t!=null { t.rollback(; } }finally{

HibernateSessionFactory.closeSession(; }
} 删除员工时和添加添加一样都是先得到一个HibernateSession,后调用它delete(方法就可以了,操作完成后千万记得要提交事务,即调用commit(法,和关闭Session
修改员工的信息时必须先把要修改的员工信息先查找出来,让用户可以直观的根据以前的信息修改。这样在点击修改时也要传给Action一个用户id,用来查询出用户信息,如下所示:
修改根据页面的链接可以在Struts的配置文件里找到相应的配置信息,如下所示:
type="com.hit.struts.action.EmployeeInfoAction" scope="request"
>
它调用了action的实现类EmployeeInfoAction类,返回到employeeInfo.jsp页面,在EmployeeInfoAction类中同前面一样也是根据id的参数来调用EmployeeDAO selectEmployee方法,得到员工信息封装类Employee的对象并保存在request中,跳转到employeeInfo.jsp页面,效果如图5.6所示:
employeeInfo.jsp页面从request中取出员工信息,在转化成Employee类型,然后显示在页面中,用户可以进行修改,然后提交到URLupdateEmployee.doaction上,在struts配置文件中定义如下:



type="com.hit.struts.action.UpdateEmployeeAction" name="employeeForm" scope="request"
> path="/employeeList.do">
action的实现类为UpdateEmployeeActionUpdateEmployeeActionexecute方法中,把表单employeeForm封装成Emoloyee类,在调用EmployeeDAOupdateEmployee(方法,完成员工信息的修改。


5.6 修改员工信息页面
到此员工管理模块全部功能都以实现,其它模块的实现大致相同。
5.3 本章小结
本章主要介绍了人力资源管理系统的主要功能模块的设计,包括所使用的控件、数据库连接以及对各模块的功能进行了具体的说明。同时介绍了人力资源管理系统的使用及运行结果。






6 系统测试

在完成了程序的编写工作后,接下来将进行软件的测试,这里说的软件,不单单是指程序本身,还包括其他方面。测试和开发一样,也是一项技术性很强的工作,有着很多的技巧。软件测试是软件质量保证的主要活动之一,因此,测试的质量直接影响软件的质量。
6.1 测试的定义及目的
软件测试就是在软件投入运行前,对软件的需求分析,设计规格说明和编码的最终复审,是保证软件质量的关键步骤。如果要给软件测试下定义,可以这样将,软件测试是为了发现错误而执行程序的过程。
测试的目的在于将软件设计时设计者与程序开发者之间理解不一致的地方,功能与需求不一致的地方,不符合逻辑思维的情况都反映给质量控制部门,由质量控制部门调配需求部门统一做出一个明确解答,再由开发人员进行修改和补充。
测试的目标是以最少的时间和人力找出软件中潜在的各种错误和缺陷。
6.2 测试的原则
对于相对复杂的产品或系统来说,Zero-Bug是一种理想,Good-Enough是我们的原则。Good-Enough原则就是一种权衡投入/产出比的原则;不充分的测试是不负责任的;过分的测试是一种资源的浪费,同样也是一种不负责任的表现。我们操作的困难在于,如何界定什么样的测试是不充分的,什么样的测试是过分的。目前状况唯一可用的答案是:制定最低通过标准和测试内容,然后具体问题具体分析。
6.3 测试的方法
依据前面所说的测试对象,我们把测试划分为几个方面来进行测试。 6.3.1 界面测试
界面测试是测试过程中比较简单直观的一种测试方法,只要细心地按界面要求核对就行了。可这快往往是程序开发人员容易忽视和遗漏的地方,也是常常出Bug的地方。下面是界面测试中经常出现的几种Bug
1、错别字,即界面中的标题或者文本内容中出现了错别字。这种Bug如果测试人员不细心,和难找出来,可能会出现在提示信息或界面中。
2、出现了一些根本读不懂的内容,一般多出现在程序的提示信息和一些较



长的文本中。这种情况基本上出现在拼起来显示的提示中,页面的简单陈述是通过变量拼组起来的,通过程序将字一个一个地输出出来。通常是因为程序中的控制错误或是程序开发人员对程序没有进行认真的自测,导致出现这种Bug
3、程序员自创的词语,虽然意思对,但不符合界面的标准及需求。这种情况基本上是由于开发人员使用一些专业术语,并且混杂着自己的理解出现Bug主要是由于开发过程中团队合作没有明确的分工,没有统一的规范用语。
4、页面类似的内容中,明显有字体,字号不同的情况,使界面整体风格看上去不一致,这种情况只出现在没有CSS定义的情况下,或是已经定义的CSS开发人员在开发过程中没有调用。
5、标题相近的程序及模块,把标题弄混.这种情况多是因为业务方面的定义名称很相似或很类似,并且业务实体方面也很类似,开发人员在开发过程中忽略了开发名称和模块,只单独地实现其功能。 6.3.2 功能测试
顾名思义,功能测试主要是测试程序模块是否实现了设计中所有要求的功能。功能测试中需要注意的有:
1、查询功能中,有按单一查询条件进行查询的,也有按多个查询条件组合查询的,这里要注意多个查询条件之间的关系,还有一些常识性的问题,比如按月查询,闰年中二月的天数。
2录入功能中,需要注意的是前台设置的数值长度是否大于后台数值长度,以及前台与后台的数据结构是否相符,很多时候录入功能无法实现是由于这些原因。还有就是必须录入的字段的设置是否有误。
3、测试删除功能中需要注意的是单击“删除”按钮后,一般会出现提示信息,询问是否确定删除。通常情况下,我们单击“确认”按钮查看信息是否被删除掉了,而忽略了单击“取消”按钮后程序的反应,这时有可能的是没有删除,还有一种可能是即便单击了“取消”按钮,也一样删除了数据。另外,在删除多条记录的时候,要注意连续选中的几条记录是否真正都被删除了,即如果再按照这种查询方式查询,是否还能查询出来.有的时候需要在数据库中设一个标志位,而不是真正的物理删除。所以在下一次查询中,可能还会被查询出来,这主要是因为在查询条件中没有将标志位考虑在内。
4、关于修改功能的测试,主要是看修改确认后数据是否真正已被修改了。这是最基本的功能,需要注意的是看是否能把不应该修改的数据也修改成功了。 6.3.3 需求测试
针对需求测试,是测试中很重要的一个环节。因为需求是在软件设计,开发



乃至软件测试中重要的依据。要针对需求测试,首先就要对项目的需求和业务有一定的了解。这些需求很多时候是在实现增、删、查、改这些基本功能之上,针对项目和相关业务所作的一些逻辑上的控制。这就要求程序员在设计和编码的时候要去充分理解考虑需求。 6.3.4 性能测试
性能测试在软件的质量保证中起着重要的作用。通常我们把性能指标全部归结到硬件,操作系统和开发环境上,而忽略了代码本身性能上的考虑。性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。
6.4 测试中其它要注意的地方
1、时常有这样的情况发生,每个模块都能单独工作,但这些模块集成在一起之后却不能正常工作。其主要原因是,模块相互调用时接口会引入许多新问题。这就要求在进行程序设计和编码的时候要尽可能地从整体考虑。
2引用某些控件,实现了程序中未实现的功能的同时,也容易引发新的Bug 3、错误本身出现在程序设计阶段,并非由于程序员编码造成的问题。这就要求我们无论是在开发还是测试阶段,对需求或程序设计存在疑问,应及时提出,及时解决。
4、由于一些模块被修改了,对其他模块造成了影响而出现了新的Bug。发现这些Bug要求我们对程序整体的结构有基本的了解,清楚模块之间的一些联系。
6.5 人力资源管理系统的测试
在完成编码的工作以后,根据以上的方法和步骤进行了如下的测试: 界面测试:在不开启Web服务器的情况下,反复点击网页上的超链接,测试其连接情况,直到所有的链接都达到预期的效果。
功能测试:对网站的几大功能模块逐一测试,尽最大可能发现起潜在的错误。 性能测试:将程序以局域网的形式发布,查看其是否满足多用户的要求。 需求测试:根据需求分析的内容,测试网站是否和当初的设计一样。 通过这几方面的测试,及时修正了系统中存在的问题,很好的提高了系统的性能,达到了预期目标。







本系统是基于UML面向对象的系统分析和设计方法实现的,采用经典MVC设计模式,并以jsp为表现层,Struts为控制层,Hibernate为持久层来具体实现。
在系统设计中,完成了系统的功能主要有员工信息的查询、添加、删除和修改;员工工资信息的查询、添加、和修改;部门信息的查询、添加、删除和修改;以及修改密码和重新登录功能。通过使用该系统可以规范对公司员工的管理,高工作效率。
由于毕业设计的时间有限,以及本人开发能力所限制,所开发的系统还有很多不尽如人意的地方,例如界面设计还缺乏专业美观,查询细节不够全面,缺乏模糊查找等,这些还需进一步完善。

参考文献

[1]刘洋. 精通Hibernate. 电子工业出版社. 2005.15.
[2]张桂元,贾燕枫. Eclipse开发入门与项目实践. 人民邮电出版. 2006.5. [3]张桂元. Struts开发入门与项目实践. 人民邮电出版社. 2005.
[4]孙卫琴. 精通Struts:基于MVCJava Web设计与开发. 电子工业出版社. 2004.26 [5]鲁晓东. JSP软件工程案例精解. 电子工业出版社. 2005. [6] JSP数据库系统开发完全手册. 人民邮电出版社. 2006.3. [7]丁鹏. STRUTS技术解密及WEB开发实例. 清华大学出版社. 2004. [8]夏昕. 深入浅出Hibernate. 电子工业出版社. 2005.6. [9]孙卫琴. 精通Hibernate:Java对象持久化技术详解. 电子工业出版社.2005. [10]陈威、白伟明、李楠. JSP工程应用与项目实践. 机械工业出版社. 2005.2. [11]张锋、刘家能. 数据库信息管理系统设计[J]. 计算机应用. 2007.. [12]王小帅. 企业人力资源管理信息系统分析与设计. 集团经济研究. 2007.1 [13]郑阿奇. MySQL实用教程电子工业出版社. 2009.03. [14]唐汉明、翟振兴、兰丽华. 深入浅出MySQL数据库开发、优化与管理维护. 民邮电出版社. 2008.04.

[15]张永宝、李刚. Dreamweaver 8中文版入门与提高. 清华大学. 2007.05.


[16] Dan Pilone,Neil Pitman . UML2.0 IN A NUTSHELL. 东南大学出版社. 2006.04.

[17] Rod Johnson,Juergen Hoeller. J2EE Development without EJB[M]. Wiley Publishing. 2004. [18] Gay S.HorstmannGary Cornell.JAVA核心技术[M].北京:机械工程出版社,2006.5





经过一个多月的努力,自己终于完成了毕业设计和毕业论文的写作工作,此还要感谢计算机信息管理的全体老师在大学两年里对我的谆谆教诲,使我掌握了大量的专业知识,使我在实际的开发工作中,能够得心应手,顺利完成工作任务。
最后感谢母校商职学院,给了我在这里学习的机会,在这两年里我学到的不仅是知识,更是一种人生态度。正所谓授人以鱼不如授人以渔,这四年置身其间,耳濡目染,潜移默化,使我不仅掌握了丰富的知识,也接受了全新的思想观念,树立了未来的目标。相信拥有这两年历练经历的我,走出校园后会有更美好的明天。











Overview of JSP Technology
Benefits of JSP JSP pages are translated into servlets. So, fundamentally, any task JSP pages can perform could also be accomplished by servlets. However, this underlying equivalence does not mean that servlets and JSP pages are equally appropriate in all scenarios. The issue is not the power of the technology, it is the convenience, productivity, and maintainability of one or the other. After all, anything you can do on a particular computer platform in the Java programming language you could also do in assembly language. But it still matters which you choose. JSP provides the following benefits over servlets alone: • It is easier to write and maintain the HTML. Your static code is ordinary HTML: no extra backslashes, no double quotes, and no lurking Java syntax. You can use standard Web-site development tools. Even HTML tools that know nothing about JSP can be used because they simply ignore the JSP tags. • You can divide up your development team. The Java programmers can work on the dynamic code. The Web developers can concentrate on the presentation layer. On large projects, this division is very important. Depending on the size of your team and the complexity of your project, you can enforce a weaker or stronger separation between the static HTML and the dynamic content. Now, this discussion is not to say that you should stop using servlets and use only JSP instead. By no means. Almost all projects will use both. For some requests in your project, you will use servlets. For others, you will use JSP. For still others, you will


combine them with the MVC architecture . You want the appropriate tool for the job, and servlets, by themselves, do not complete your toolkit. Advantages of JSP Over Competing Technologies Versus .NET and Active Server Pages (ASP .NET is well-designed technology from Microsoft. ASP.NET is the part that directly competes with servlets and JSP. The advantages of JSP are twofold. First, JSP is portable to multiple operating systems and Web servers; you aren't locked into deploying on Windows and IIS. Although the core .NET platform runs on a few non-Windows platforms, the ASP part does not. You cannot expect to deploy serious ASP.NET applications on multiple servers and operating systems. For some applications, this difference does not matter. For others, it matters greatly. Second, for some applications the choice of the underlying language matters greatly. For example, although .NET's C# language is very well designed and is similar to Java, fewer programmers are familiar with either the core C# syntax or the many auxiliary libraries. In addition, many developers still use the original version of ASP. With this version, JSP has a clear advantage for the dynamic code. With JSP, the dynamic part is written in Java, not VBScript or another ASP-specific language, so JSP is more powerful and better suited to complex applications that require reusable components. You could make the same argument when comparing JSP to the previous version of ColdFusion; with JSP you can use Java for the "real code" and are not tied to a particular server product. However, the current release of ColdFusion is within the context of a J2EE server, allowing developers to easily mix ColdFusion and servlet/JSP code. Versus PHP PHP (a recursive acronym for "PHP: Hypertext Preprocessor" is a free, open-source, HTML-embedded scripting language that is somewhat similar to both ASP and JSP. One advantage of JSP is that the dynamic part is written in Java, which already has an extensive API for networking, database access, distributed objects, and the like, whereas PHP requires learning an entirely new, less widely used language. A second advantage is that JSP is much more widely supported by tool and server vendors than is PHP. Versus Pure Servlets


JSP doesn't provide any capabilities that couldn't, in principle, be accomplished with servlets. In fact, JSP documents are automatically translated into servlets behind the scenes. But it is more convenient to write (and to modify! regular HTML than to use a zillion println statements to generate the HTML. Plus, by separating the presentation from the content, you can put different people on different tasks: your Web page design experts can build the HTML by using familiar tools and either leave places for your servlet programmers to insert the dynamic content or invoke the dynamic content indirectly by means of XML tags. Does this mean that you can just learn JSP and forget about servlets? Absolutely not! JSP developers need to know servlets for four reasons: 1. JSP pages get translated into servlets. You can't understand how JSP works without understanding servlets. 2. JSP consists of static HTML, special-purpose JSP tags, and Java code. What kind of Java code? Servlet code! You can't write that code if you don't understand servlet programming. 3. Some tasks are better accomplished by servlets than by JSP. JSP is good at generating pages that consist of large sections of fairly well structured HTML or other character data. Servlets are better for generating binary data, building pages with highly variable structure, and performing tasks (such as redirection that involve little or no output. 4. Some tasks are better accomplished by a combination of servlets and JSP than by either servlets or JSP alone.
Versus JavaScript JavaScript, which is completely distinct from the Java programming language, is normally used to dynamically generate HTML on the client, building parts of the Web page as the browser loads the document. This is a useful capability and does not normally overlap with the capabilities of JSP (which runs only on the server. JSP pages still include SCRIPT tags for JavaScript, just as normal HTML pages do. In fact, JSP can even be used to dynamically generate the JavaScript that will be sent to the client. So, JavaScript is not a competing technology; it is a complementary one. It is also possible to use JavaScript on the server, most notably on Sun ONE (formerly iPlanet, IIS, and BroadVision servers. However, Java is more powerful, flexible, reliable, and portable.


Besides, the tremendous industry support for JSP and servlet technology results in improvements that mitigate many of the criticisms of JSP. For example, the JSP Standard Tag Library and the JSP 2.0 expression language address two of the most well-founded criticisms: the lack of good iteration constructs and the difficulty of accessing dynamic results without using either explicit Java code or verbose jsp:useBean elements.



毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
名: 期: 指导教师签名: 期:
使用授权说明

本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名: 期:

人力资源管理毕业论文设计

相关推荐