人力资源管理系统毕业设计正文.docx
《人力资源管理系统毕业设计正文.docx》由会员分享,可在线阅读,更多相关《人力资源管理系统毕业设计正文.docx(49页珍藏版)》请在冰豆网上搜索。
人力资源管理系统毕业设计正文
1前言
1.1HRMS系统简述
(1)HRMS的现状
随着时代的发展,社会的进步,越来越多的企业建立、发展、壮大、成熟。
企业是国民经济的基本单元,企业发展得越好,经济进步就越快。
然而随着企业的发展,人员的增多,每年人力资源管理的成本也会不断地增加,这一问题不仅耗费企业大量的资金,也耗费了大量的人力。
当企业规模较小时,人力尚且比较容易完成信息管理,但随着企业规模增大,人员增多,老式的纸质管理方法就会出现许多弊端,比如说,保存困难、不易查询、耗费大量人力却仍然工作效率低下,工作出错率增高等,这种方法已经跟不上时代。
(2)HRMS的发展
在20世纪60年代末期,由于当时计算机发展水平的限制,HRMS只不过是一种自动计算薪资的工具。
90年代末,由于个人电脑的普及,数据库技术、客户/服务器技术,特别是Internet/Intranet技术的发展,出现了现代人力资源管理系统。
现代人力资源管理系统的特点是从人力资源管理的角度出发,用集中的数据库将几乎所有与人力资源相关的数据(如薪资福利、招聘、个人职业生涯的设计、培训、职位管理、绩效管理、岗位描述、个人信息和历史资料)统一管理起来,形成了集成的信息源。
友好的用户界面,强有力的报表生成工具、分析工具和信息的共享使得人力资源管理人员得以摆脱繁重的日常工作,集中精力从战略的角度来考虑企业人力资源规划和政策。
(3)HRMS的作用
本系统利用现代高效的运作方式来开发和管理组织中最重要、最昂贵的资源,实现人力资源管理自动化、人性化。
为公司的发展做出正确的决策,提高人员的利用率,为公司发展和人才储备提供良好的平台。
1.2系统开发平台
(1)数据库(SQLServer2005)简介
SQLServer是一个全面的、集成的、端到端的数据解决方案,它为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用。
SQLServer2005为IT专家和信息工作者带来了强大的、熟悉的工具,同时减少了在从移动设备到企业数据系统的多平台上创建、部署、管理及使用企业数据和分析应用程序的复杂度。
通过全面的功能集、和现有系统的集成性、以及对日常任务的自动化管理能力,SQLServer2005为不同规模的企业提供了一个完整的数据解决方案[1]。
SQLServer有如下特点:
1.它是真正的客户机/服务器体系结构。
2.它的用户界面图形化,使系统管理和数据库管理更加直观、简单。
3.它包含丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
4.SQLServer与WindowsNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。
SQLServer也可以很好地与MicrosoftBackOffice产品集成。
5.它具有很好的伸缩性,可跨越从运行Windows95/98的膝上型电脑到运行Windows2000的大型多处理器等多种平台使用。
6.它对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。
7.SQLServer提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。
(2)MyEclipce6.5简介
MyEclipse,是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。
它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能。
MyEclipce6.5支持Java5和Java6,可以在Windows(XP,Vista)、Linux、Mac操作系统上运行。
它是Spring-JPA的高度集成,提高了EJB3工程项目的灵活度,从数据库模式直接产生bean。
MyEclipce6.5支持AJAX开发和测试,改进了AJAXWeb浏览器,改进了AJAX工具,增强了JavaScript调试。
支持RADWeb开发,具备Matisse4MyEclipse可视化Swing设计器,可以进行快速JavaEE部署和测试。
MyEclipce6.5项目自动部署和启动服务,根据指定的调试和运行模式,自动配置项目和启动服务器;在配置前,自动停止运行的服务器;在现有的应用程序配置中可以重新配置,其包含的MyEclipceDerby服务器可以自动进行JDBC连接,可配置的启动选项。
它也是个学习中心,提供帮助和学习资料,其中包含JavaEE项目源代码和一键安装MyEclipseJavaEE示例项目。
(3)MVC简介
MVC是三个单词的缩写,分别为:
模型(Model),视图(View)和控制Controller)。
MVC模式的目的就是实现Web系统的职能分工。
Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。
View层用于与用户的交互,通常用JSP来实现。
Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。
使用MVC应用程序被分成三个核心部件:
模型、视图、控制器。
它们各自处理自己的任务。
视图是用户看到并与之交互的界面。
对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括MacromediaFlash和象XHTML,XML/XSL,WML等一些标识语言和Webservices.
模型表示企业数据和业务规则。
在MVC的三个部件中,模型拥有最多的处理任务。
例如它可能用象EJBs和ColdFusionComponents这样的构件对象来处理数据库。
被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。
由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器接受用户的输入并调用模型和视图去完成用户的需求。
所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。
它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据[5]。
MVC的优点表现在如下几个方面:
首先视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。
因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
其次随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。
由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。
例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
此外使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
最后分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
(4)J2EE简介
J2EE是一种利用Java2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。
它提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。
通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持EnterpriseJavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。
J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。
这样是Sun公司为了解决两层模式(client/server)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想。
它使得重用业务逻辑和界面逻辑非常困难。
现在J2EE的多层企业级应用模型将两层化模型中的不同层面切分成许多层。
一个多层化应用能够为不同的每种服务提供一个独立的层。
J2EE的四层结构分别是运行在客户端机器上的客户层组件、运行在J2EE服务器上的Web层组件、运行在J2EE服务器上的业务逻辑层组件和运行在EIS服务器上的企业信息系统(Enterpriseinformationsystem)层软件。
J2EE应用程序组件是由组件构成的.J2EE组件是具有独立功能的软件单元,它们通过相关的类和文件组装成J2EE应用程序,并与其他组件交互。
客户层组件的含义是J2EE应用程序可以是基于web方式的,也可以是基于传统方式的。
Web层组件可以是JSP页面或Servlets按照J2EE规范形成的静态HTML页面。
业务层组件是业务层代码的逻辑用来满足银行,零售,金融等特殊商务领域的需要,由运行在业务层上的enterprisebean进行处理.
企业信息系统层处理企业信息系统软件包括企业基础建设系统例如企业资源计划(ERP),大型机事务处理,数据库系统,和其它的遗留信息系统.例如,J2EE应用组件可能为了数据库连接需要访问企业信息系统。
2SSH集成框架
2.1Sturts2
Struts2是一种JSPModel2模式的框架。
JSPModel2模式示意图如图2.1所示,是由sun公司又推出了一种架构模式。
这个模式是结合了servlet,JSP,javabean的优点推出的一种模式。
这个模式分为三部分servlet,JSP,javabean。
servlet做的事情是控制到底最后显示哪个JSP页面给用户、JSP做的就是响应用户请求,把结果数据展现给用户、而javabean做的就不单单是对数据库的数据的存取了,这里复杂的业务功能和逻辑处理都交给了它处理。
从它的设计结构就可以看出JSPModel2的优点。
由于它在设计上很好的分工,也就是做显示的是JSP,做逻辑处理的是javabean,做控制的是servlet。
这样分工以后,对我们开发人员来说,就可以很好的做自己的开发工作了,而美工人员也不必了解和看懂业务逻辑处理代码,在很大的层次上提高开发的效率。
事实上Struts2就是一个大的Servlet,所有的请求都会通过这个Servlet就行转发到相应的action中就行处理。
它是一个典型的MVC模式框架。
虽然Struts2号称是一个全新的框架,但这仅仅是相对Struts1而言。
Struts2与Struts1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:
WebWork基础上发展起来的。
从某种程度上来讲,Struts2没有继承Struts1的血统,而是继承WebWork的血统。
或者说,WebWork衍生出了Struts2,而不是Struts1衍生了Struts2.因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:
而且吸收了Struts1和WebWork两者的优势[2],因此,是一个非常值得期待的框架。
Struts2的工作流程如图2-1所示。
它的整个工作过程如下:
1.当Servlet容器接收到一个Httprequest请求之后,将请求交给在web.xml中配置的过滤器StrutsPrepareAndExecuteFilter,调用它的dofilter方法。
2.StrutsPrepareAndExecuteFilter询问ActionMapper,以便确定这个请求是否有对应的Action调用。
3.ActionMaper返回一个描述Action调用的ActionMapping对象。
4.StrutsPrepareAndExecuteFilter调用Dispatcher类的serviceAction()方法。
5.Dispatcher调用ActionProxy的execute()方法。
6.ActionProxy设置ActionProxy对象的执行上下文,然后调用其invoke()方法。
7.ActionInvocation的invoke()方法从拦截器中查找尚未执行的拦截器,然后调用它的intercept(invocation()方法。
并将自身的引用对象的引用最为参数传递给拦截器。
8.拦截器完成某系预处理工作之后,反过来调用ActionInvocation的invoke()方法。
ActionInvocation维护自己的状态,所以它知道哪些拦截器已经被执行了,如果还没有别执行的拦截器,就继续执行它的intercept(invocation()方法。
9.如果所以的拦截器都已经执行过了,就调用Action实例的execute()方法(如果没有在struts.xml文件中设置其他方法,否则执行其他方法)。
10.ActionInvocation根据Action执行返还的结果码,查找对应的Result,调用Result的execute(invocation),将结果呈现给用户。
11.ActionInvocation的invoke()方法将控制权返还给拦截器映射中的最后一个拦截器,该拦截器完成所有的后期处理工作,如此反复,知道所有的拦截器都成返回。
12.ActionInvocation的invoke()方法执行完毕之后,向ActionProxy返回一个String类型的结果码,最后,ActionProxy清理状态并返回。
图2-1Struts2的工作流程示意图
2.2Spring
Spring是一个开源框架,它由RodJohnson创建。
它是为了解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益[4]。
Spring目标是使现有技术更加易用,推进编码最佳实践。
内容是依赖注入容器,AOP实现(声明式事务),DAO/ORM支持,Web集成,轻量级的非侵入式的基于IOC和AOP的容器框架。
它的核心是AOP。
Spring框架的IOC容器采用设置注入(通过JavaBean的属性设置依赖关系)和构造注入(通过构造器设置依赖关系)两种依赖注入的实现模式,所谓依赖注入(DI),也就是强制将组件的构建和使用分开。
IOC(InversionofControl控制反转)就是把产生对象的权利交给Spring容器,此容器还负责管理(维护)对象之间的关系。
DI(DependencyInjection依赖注入)就是比如A依赖于B,把B注入到A里,DI的思想就是对象不再需要主动产生,而是交给Spring容器,对象之间的关系也不需要主动地获取和维护,也是交给Spring容器。
依赖注入顺序:
Bean->BeanFactory()->Resource->applicationContext.xml配置文件
用IOC的实现方式:
首先得到资源(//导包importorg.springframework.core.io.*)
Resourceresource=newClassPathResource("applicationContext.xml");
其次得到BeanFactory(Spring容器)
BeanFactoryfactory=newXmlBeanFactory(resource);
最后通过id得到Bean
IHellohello=(IHello)factory.getBean("ch");
hello.sayHello();
AOP的含义是面向方面编程,它涉及的概念有如下几个:
Target:
目标,被代理的bean,包含业务代码(真实、代理、抽象角色)
如:
经纪人,代理商,房屋中介。
Advice:
通知,定义一个“方面”要实现的功能。
分前置通知、后置通知、环绕通知和异常通知等类型。
Proxy:
代理,加入了通知或切面的目标,最终通过代理类访问业务逻辑,将“业务逻辑代码”和“方面代码”组装进代理类。
Pointcut:
切入点,切入点决定了一个特定类的特定方法是否满足一条特定的规则,即在哪些地方使用通知。
Advisor:
切面,切面是由定义切面行为的通知和定义切面在什么地方执行的切入点组合而成。
代理模式的作用是:
为其他对象提供一种代理以控制对这个对象的访问。
在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用,Spring有以下几种代理方式:
静态代理(一个类就要有一个代理类),这种代理方式不灵活,动态代理(一个代理类代理无数个类,用到反射,实现反射包里面的接口InvocationHandler代理和真实类实现同一接口),cglib代理(代理类和真实类不需要实现同一接口)和通知(拦截器)(当目标的方法调用时需要调用的代码)几种方式。
2.3Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:
Session、SessionFactory、Transaction、Query和Configuration。
这5个核心接口在任何开发中都会用到。
通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制[16]。
下面对这五个核心接口分别加以介绍。
(1)Session接口:
Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。
)。
但需要注意的是Session对象是非线程安全的。
同时,Hibernate的session不同于JSP应用中的HttpSession。
这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。
(2)SessionFactory接口:
SessionFactory接口负责初始化Hibernate。
它充当数据存储源的代理,并负责创建Session对象。
这里用到了工厂模式。
需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
(3)Configuration接口:
Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。
在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
(4)Transaction接口:
Transaction接口负责事务相关的操作。
它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
(5)Query和Criteria接口:
Query和Criteria接口负责执行各种数据库查询。
它可以使用HQL语言或原生的SQL语句两种表达方式。
HQL语言是一种面向对象的查询语句,它更容易让程序员所接受,同时HQL语言还屏蔽了不同SQL语言之间的差异。
Hibernate工作原理是这样的:
首先它进行初始化.读取Hibernate的配置信息然后再创建SessionFactory。
具体步骤如下:
(1)创建Configeration类的实例。
它的构造方法:
将配置信息(Hibernateconfig.xml)读入到内存。
一个Configeration实例代表Hibernate所有Java类到Sql数据库映射的集合。
(2)创建SessionFactory实例,把Configeration对象中的所有配置信息拷贝到SessionFactory的缓存中。
SessionFactory的实例代表一个数据库存储员源,创建后不再与Configeration对象关联。
缓存(cache):
指Java对象的属性(通常是一些集合类型的属性--占用内存空间。
SessionFactory的缓存中:
Hibernate配置信息。
(3)调用SessionFactory创建Session的方法。
首先用户自行提供JDBC连接, Connectioncon=dataSource.getConnection(); Sessions=sessionFactory.openSession(con);其次让SessionFactory提供连接 Sessions=sessionFactory.openSession()。
(4)通过Session接口提供的各种方法来操纵数据库访问。
Hibernate加载调用的方法有如下几几种方法:
save:
session.save(Objectobj)
get:
session.get(Classarg0,Serializable)
load:
session.get(Classarg0,Serializable)
get是立即加载,如果对象不存在,会报空指针异常。
首先用get查询实体对象,hibernate立即查询真实对象,只要能查到了一个对象,就立即发出SQL语句,访问与其关联的其他对象,也是立即发出SQL语句去查询。
load是采用延迟加载(懒加载)用到了代理模式,如果对象不存在,会报找不到对象的异常,它首先使用load查询对象,不会马上返回一个sql语句,只有查询其他属性的时候,才会发出SQL语句。
2.4软硬件环境要求
系统运行的软硬件环境要求如表2-1所示。
表2-1软硬件环境要求
需求名称
详细要求
硬件环境
服务器:
PIIII及以上CPU,512M内存,硬盘20G,10/100M网络
客户端:
IE6.0及以上
软件环境
WindowsXP,Office,Oracle,Eclipse,MyEclipse,RationalRose,ERWin,Apache,Tomcat,JDK1.4或以上,TestDirector,Junit,WinRunner
3系统功能设计
3.1系统分析
HRMS是基于B/S模式,针对国内软件外包公司复杂的招聘管理业务和流程,而开发的一套人力资源信息化管理系统。
它由系统管理,简历管理,渠道管理,需求管理,数据统计等模块构成。
系统中有如下几种角色:
招聘助理:
系统主要使用者,具有整理简历、查看简历、初选简历、分发简历到项目组等使用权限。
招聘经理:
系统使用者,具有查看简历、统计数据查询等使用权限。
项目助理:
系统主要使用者,具有按项目组各需求分发简历、面试安排、提交面试评价等使用权限。
项目经理:
系统使用者,具有对本项目组所有简历及面试安排进行查看和修改的使用权限。
系统管理员: