【《基于JAVA WEB的企业人事管理系统的设计》11000字(论文)】_第1页
【《基于JAVA WEB的企业人事管理系统的设计》11000字(论文)】_第2页
【《基于JAVA WEB的企业人事管理系统的设计》11000字(论文)】_第3页
【《基于JAVA WEB的企业人事管理系统的设计》11000字(论文)】_第4页
【《基于JAVA WEB的企业人事管理系统的设计》11000字(论文)】_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于JAVAWEB的企业人事管理系统的设计摘要在现代化的社会中,随着企业的发展壮大,企业的员工数量越来越多,使得传统的纸质化人事管理越来越复杂繁琐。随着科学技术的发展,互联网技术的提高,越来越多企业不再使用以往传统,效率低下的纸质化人事管理方式,通过互联网技术,使企业管理效率有了质的飞跃。本设计作品是一个基于Java开发的企业人事管理系统,旨在提高企业管理人事的效率,摆脱纸质化办公带来的困扰,同时对本人大学四年来所学知识和技术进行一次总结和运用。本系统采用的开发工具是IntelliJIDEA,数据库采用的是MySQL数据库,应用服务器采用的是Tomcat网络应用服务器进行开发。本系统在MVC模式的基础上,使用SpringMVC+Spring+MyBatis三大框架以及jsp技术来搭建,是基于Java领域内企业级应用开发技术JavaEE上开发的WEB应用。关键词:Java;SpringMVC;Spring;MyBatis;MySQL;jsp目录1引言 引言1.1课题背景目前大部分企业人事管理都采用纸质化方式统计和管理员工的工资、考勤等信息。随着企业发展规模的扩大,员工人数的增加,传统的纸质化方式已经不能满足企业发展需求,而且采用纸质化方式管理容易产生信息错误、遗漏等错误,提高了企业管理的难度。随着互联网的快速发展,企业开始寻求采用计算机的方法来解决人事管理模块的问题。采用计算机的方式和采用传统的方式来处理人事管理问题相比,采用计算机处理企业人事问题相对更快,更准,不容易产生纰漏。1.2国内研究情况国内人事管理信息系统的开发和应用在国内已经进入成熟期,出现了金蝶、金益康、朗新、用友等产品。金益康在中国的人事信息管理中标准化的程度很高,金蝶K是人力资源系统的总体规划,在与其他应用系统的整合、人性化设计的基础上,在NET开发等方面占据着优势。金蝶s-HR是基于企业人力资源管理模式创新,通过专业的人力资源管理核心平台、社交化的全员自助服务平台以及开放的云端应用,帮助集团企业构筑核心组织能力。金蝶s-HR应“互联网+”时代对人力资源管理提出的全面挑战,秉承“战略驱动、全员互联、社交协作、人才供给”的4S产品理念,聚焦集团企业的人力资源管理典型需求,为大中型企业带来全新的应用体验。1.3国外研究情况在海外,与我国对应的是人力资源管理系统(HRMS、HumanResourceManagementsSystem),系统本身与计算机信息应用技术一起非常成熟。大多数海外发达国家都建立了自己的人力资源管理系统。该系统在全国范围内,涵盖了全国范围内的人力资源管理。1.4课题研究目标及意义开发企业人事管理系统的目的就是为了帮助企业能更好地管理本企业的员工工资、人事、考勤等信息,提高工作效率,实现企业工资信息管理的规范化和自动化,解决以往采用传统的纸质化管理方式带来的问题。比如随着企业的发展,随着企业员工的增加,导致采用纸质化办公的方式出现信息错误,信息混乱,效率低下等问题。使得企业办公更加方便、快捷,降低企业在企业管理过程中的成本。2相关框架和技术概要2.1spring框架Spring是面向轻量级的控制反转(IoC)和切断面(AOP)的容器框架,由RodJohson制作。他是为了解决企业应用开发的复杂性而做的。Spring使用了基本的JavaBean,完成了至今为止只有EJB才能完成的事情。但是,Spring的用途不限于服务器端的开发。从简单性、测试可能性和松紧结合的观点来看,Java应用都可以从Spring中获益。Ioc:IoC(Inversionofcontrol)控制反转/反转控制。它是一种思想不是一个技术实现。描述的是:Java开发领域对象的创建以及管理的问题。在以往传统的开发模式中,我们创建一个对象需要采用手动new的方式,这样会导致我们程序代码的耦合度过高,不利于我们后续程序体量大起来之后的维护和开发工作。二Ioc思想的开发方式是将对象创建和管理的任务交给spring框架处理,我们在开发程序的过程中不用涉及创建和管理对象,也就是说我们不用传统的new的方法创建对象,而是我们需要什么对象,就聪spring框架中取。AOP:Aspectorientedprogramming面向切面编程,AOP是OOP(面向对象编程)的一种延续。在我们开发程序过程中,会出现多个模块或类中出现重复代码的情况,虽然传统的面对对象编程可以帮我们解决大部分代码重复问题,但是还有一些问题解决不了,这种情况在开发大型的程序中尤其常见。而AOP则将这部分重复代码(横切逻辑代码)横切提取出来,与业务逻辑代码分离,在不改变原有业务逻辑的情况下,增强横切逻辑代码,解决代码耦合度过高的问题。2.2springMVC框架SpringMVC是SpringFramewark的后续产品,融合在SpringWebFlow中。Spring框架提供了构建Web应用的所有功能MVC模块。使用可在Spring中插入的MVC架构,使用Spring进行Web开发时,可以选择使用Spring的SpringMVC帧,也可以整合其他MVC开发帧。通过战略接口,Spring框架能够高度构成,包含JavaServerPages(JSP)技术、Velocity、Tiles、iText、POI等各种各样的视野技术。SpringMVC框架不知道使用的视图,因此不会强制开发者只使用JSP。技术。SpringMVC分离了控制器、模型对象、过滤器和处理程序对象的作用。这个分离使得定制变得容易。2.3MyBatis框架MyBatis是支持固定化SQL、存储过程和高度映射的优秀耐久层帧。MyBatis几乎避开了JDBC代码、手动设定参数以及取得结果集。MyBatis可以使用简单的XML或注释来设置和映射原始信息,并将接口和Java的POJOs映射到数据库。2.4JSP技术JSP(全称JavaServerPages)是由Sun微软公司主导制作的动态网页技术基准。JSP在网络服务器上展开,响应于从客户发送的请求,可以根据请求内容动态生成HTML、XML或其他格式的文档的Web页,并向请求者回复。JSP技术能够将Java语言作为脚本语言,向用户的HTTP请求提供服务,并与服务器上的其他Java程序一起处理复杂的业务需求。JSP实现将Java码和特定变动内容嵌入静态页中,将静态页作为模板动态生成其一部分。JSP导入被称为“JSP动作”的XML标签,调用构建功能。另外,可以创建JSP标签库,使用标准HTML或XML标签。标签库可以强化功能和服务器性能。此外,不限于跨平台的问题。JSP文件在执行时会通过该编译器转换成更原始的Servlet代码。JSP编译器将JSP文件编译成用Java代码写的Servlet,然后,通过Java编译器编译能高速执行的二进制机器代码,可以直接编译成二进制代码。2.5MySQL数据库MySQL是一款安全、跨平台、高效的,并与PHP、Java等主流编程语言紧密结合的数据库系统。现在,MySQL广泛应用于网络上的中小网站。体积小,速度快,所以整体成本低。特别是开放酱汁这一特点。使得很多公司都采用MySQL数据库以降低成本。MySQL数据库可以说是当前执行速度最快的SQL语言数据库之一。除了具有许多其他除了数据库中没有的功能外,MySQL数据库是完全免费的产品。用户可以直接通过网络下载MySQL数据库,而不必支付任何费用。2.6Tomcat服务器Tomcat服务器是免费开放源代码的Web应用服务器,属于轻量级应用服务器。在中小系统和同时访问的用户不多的情况下,一般使用。是JSP程序的开发和调试的第一选择。对于初学者来说,在一台机器上配置Apache服务器的话,可以响应HTML(标准通用标志语言下的应用程序)页面的访问要求。其实Tomcat是Apache服务器的扩展名,但是运行时会独立运行,所以运行tomcat时实际上会作为独立的程序单独运行。2.7MavenMaven项目的对象模型(POM)可以在短部分说明项目的构筑、报告、文件的项目管理工具软件。Maven在程序构建能力上有特色,还提供高级项目管理工具。Maven的默认构建规则具有更高的再现性,所以只要经常在2、3行的Maven中构建脚本,就可以构建简单的项目。Maven是Apache的开源。主要服务于基于Java平台的项目构建、依赖管理和项目信息管理,为了不重复造轮子。在传统开发中,我们导入第三方jar包时,需要到官网下载对应的jar包,再copy到项目目录中,而采用maven,则只需再pom文件中配置想要的第三方包,maven自动从网上下载至本地仓库中,使我们的开发效率提高。在传统开发中,我们采用copy的方式将第三方jar包复制到项目目录中,可能会导致jar包之间的依赖和冲突。采用maven之后,将jar包交给maven管理,maven会自动管理jar包,防止jar包之间的依赖起冲突。3系统分析3.1可行性分析3.1.1技术可行性本课题研究的企业人事管理系统是基于JAVA技术,结合Spring,SpringMVC和MyBatis三大框架进行开发。前端采用html+css+js技术实现前端页面。后台数据库采用MySQL数据库管理存储数据,服务器采用Tomcat服务器,编辑器采用IntelliJIDEA工具。3.1.2法律可行性本系统在开发过程中严格遵循我国法律法规,系统所呈现的价值观是积极向上的。本系统严格保护用户信息,无法律风险。3.1.3经济可行性本系统采用的技术和框架都是完全免费的开源的,没有经济方面的压力。3.2需求分析3.2.1功能性需求(1)用户登录、注销退出。(2)查询、修改、添加、删除用户。(3)用户查询、添加部门。(4)用户查询、添加职位。(5)用户查询、添加员工。(6)公告查询、添加公告。(7)文档查询、添加文档。3.2.2非功能性需求界面需求:本系统是企业人事管理系统,要求界面简洁,便于使用。使用本系统的用户大多为企业员工,大部分不懂程序逻辑,所以前端页面要求简洁,直接,能使不懂计算机的用户也能熟悉使用本系统。系统的响应速度需求:本系统为企业人事管理系统,要求响应速度快,满足企业内部需求。所以系统要求加载的外部文件少。采用springMVC框架,将页面渲染的工作交给框架,提高服务器的使用效率,提升系统响应速度。系统最大用户同时在线数量:本系统是企业人事管理系统,随着企业的发展,企业员工的增加,对系统的用户同时在线数量要求也越来越高。本系统采用的是MySQL数据库,目前支持1000人同时在线。对于中小型企业完全足够使用。3.2.3系统用例图系统用例图如图3.1所示。图3.1系统用例图4系统概要设计4.1系统功能模块设计本企业人事管理系统的功能结构如图4.1所示:图4.1功能模块图4.2系统各模块设计介绍4.2.1用户登录模块一般人事管理系统都具有用户登录功能,这是必要的功能性需求。一方面企业管理者可使用登录模块进入系统管理企业,另一方面系统可根据用户提供的账号、密码等信息可以验证身份,提高安全性。前端采用表单的形式,绑定按钮点击事件,将用户输入的内容传输到数据库中进行校验。用户登录模块流程为:当用户输入用户名不存在时提示用户不存在,输入密码错误时提示用户名或密码错误,用户名密码输入正确时则登录成功,页面跳转到主页面。用户如果连续输入三次密码后仍旧密码输入错误,则账号会冻结30分钟。本企业人事管理系统的用户登录流程如图4.2所示。图4.2用户登录流程图4.2.2用户管理模块用户管理模块包括添加、查询、修改和删除用户功能。添加用户功能:输入用户名,密码添加用户。查询用户功能:输入用户名查询用户。修改用户信息功能。更改用户名和密码。删除用户功能。输入用户名并删除用户。用户管理模块功能流程图如图4.3所示。(a)(b)(c)(d)图4.3用户管理模块功能流程图(a)添加用户;(b)查询用户;(b)修改用户;(d)删除用户4.2.3部门管理模块部门管理模块有追加、查询、修改、删除功能。追加部门功能:输入部门名称,详细说明追加部门。查询部门功能:输入部门名称查询部门。修正部门信息功能:修改部门名称,详情。删除部门功能:输入部门名称删除部门。部门管理模块功能流程图如图4.4所示。(a)(b)(c)(d)图4.4部门管理模块功能流程图(a)添加部门;(b)查询部门;(c)修改部门;(d)删除部门4.2.4职位管理模块职位管理模块中有添加、查询、修改、删除职位功能。添加职位功能:输入职位名称、详细描述添加职位。查询职位功能:输入职位名称查询部门。修改职位信息功能:修改职位名称、详细信息。删除职位功能:输入职位名称删除职位。职位管理模块功能流程图如图4.5所示。(a)(b)(c)(d)图4.5职位管理模块功能流程图(a)添加职位;(b)查询职位;(c)修改职位;(d)删除职位4.2.5员工管理模块员工管理模块具有添加、查询、修改、删除员工的功能。添加员工信息功能:输入员工姓名、身份证号、性别、职位等必要信息添加员工信息。查询员工信息功能:输入员工姓名、身份证号码查询员工信息。也可通过选择员工职位、部门筛选员工。修改员工信息功能:修改员工姓名、身份证号码、性别、职位等信息。员工管理模块功能流程图如图4.6所示。(a)(b)(c)(d)图4.6员工管理模块功能流程图(a)添加员工;(b)查询员工;(c)修改员工;(d)删除员工4.2.6公告管理模块公告管理模块有添加、查询、修改、公告的删除功能。添加公告功能:输入公告标题、公告内容添加公告。查询公告功能:输入公告标题查询公告。修改公告功能:修改公告标题、公告内容。删除公告功能:输入公告标题删除公告。公告管理模块功能流程图如图4.7所示。(a)(b)(c)(d)图4.7员工管理模块功能流程图(a)添加公告;(b)查询公告;(c)修改公告;(d)删除公告4.2.7下载中心模块下载中心模块有上传文档、文档查询、修改文档、下载文档、删除文档功能。上传文档功能:输入文档标题、文档描述,选择文件后上传文档。文档查询功能:输入文档标题查询文档。修改文档功能:修改文档标题、修改文档描述、修改选择文件。下载文档功能:下载文档到本地。删除文档功能:输入文档标题删除文档。下载中心模块功能流程图如图4.8所示。(a)(b)(c)(d)图4.7员工管理模块功能流程图(a)添加公告;(b)查询公告;(c)修改公告;(d)删除公告5详细设计5.1数据库设计5.1.1数据库模型的设计E-R图也被称为实体-联系图,提供了一种表示实体类型、属性和关联的方法,是描述现实世界的概念模型。好的E-R设计能使程序运行更加流畅,响应速度更加迅速。本人根据企业人事管理系统数据库的要求设计了数据库的实体以及他们之间的联系。本企业人事管理系统数据库的E-R图如图5.1所示。图5.1企业人事管理系统数据库E-R图本企业人事管理系统数据库的所有实体以及它们之间的联系如图5.1所示。数据库中包含用户、部门、员工、职位、公告、文件六个实体。其中,用户和部门、用户和员工、用户和职位、用户和公告、用户和文件、部门和员工、是一对多关系;员工和职业是一对一关系。用户具有用户id、姓名、状态、登录名、密码和创建日期等主要属性。企业人事管理系统将根据这些属性来判断用户是否有权限进入系统。其中用户id为主键。用户的实体图如图5.2所示。图5.2用户实体图部门具有部门id、部门名称、部门描述等主要属性。用户可以通过这些属性来搜索具体的部门,或者通过部门筛选出当前部门下的所有员工。部门的实体图如图5.3所示。图5.3部门实体图员工有员工ID、员工姓名、员工身份证号码、员工性别、员工职位、员工学历、员工邮箱、员工手机、员工电话、所属部门等主要属性,还有员工政治面貌、QQ号码、联系地址、邮政编码、出生日期、民族、所学专业、爱好、备注等非必要属性。用户可以通过这些属性来查询具体的员工信息。也可通过员工职位、性别、所属部门来筛选出部分员工。员工的实体图如图5.4所示。图5.4员工实体图职位具有职位id、职位名称、职位详细信息等属性。企业人事管理系统可通过这些属性来搜索职位,也可通过职位筛选出该职位下的所有员工。职位的实体图如图5.5所示。图5.5职位实体图公告具有公告id、公告标题、公告内容、创建日期、创建用户等属性。本企业人事管理系统可以通过这些属性来查找公告,也可填写相应属性信息来添加公告。公告的实体图如图5.6所示。图5.6公告实体图文件具有文件id、文件标题、文件描述、创建日期、创建用户等属性。本企业人事管理系统可以通过这些属性来查找文件,也可填写相应属性的信息来上传文件。文件的实体图如图5.7所示。图5.7文件实体图5.1.2数据库逻辑结构设计设计概念结构的设计阶段就是数据库的逻辑结构设计。好的基本实体-关系图转换为适合选定数据库管理系统产品支持的数据模型的逻辑结构。把本企业人事管理系统的关系模型转换为数据模型。将每个实体进行具体的逻辑结构设计,把每个实体都在建模软件上具体化,包括实体英文名、数据类型等。本企业人事管理系统的逻辑结构图如图5.8所示。(a)(b)(c)(d)(e)(f)图5.8企业人事管理系统的逻辑结构图(a)用户逻辑结构图;(b)部门逻辑结构图;(c)员工逻辑结构图;(d)职位逻辑结构图;(e)公告逻辑结构图;(f)文件逻辑结构图5.1.3表概要说明本企业人事管理系统数据库hrm_db中一共有6张表,包括用户信息表——user_inf、部门信息表——dept_inf、员工信息表——employee_inf、职位信息表——job_inf、公告信息表——notice_inf、文件信息表——document_inf。这几张表是使程序能够实现的基础。5.1.4数据表的结构user_inf(用户信息表)为了存储用户的信息,请使用使用者的ID、使用者的登录名、使用者的密码、使用者的状态、使用者的创建日期、使用者的名称。user_inf的结构如表5.1所示。表5.1user_inf的结构字段名称数据类型字段大小主键说明USERIDint11是用户idLOGINNAMEvarchar33否登录名PASSWOEDSTATUSvarcharint1611否否密码用户状态CREATE_DATEtimestamp0否创建日期USERNAMEvarchar20否用户名dept_inf(部门信息表)存储部门信息,包括部门ID、部门名称、部门名称和部门名称。dept_inf的结构如表5.2所示。表5.2dept_inf的结构字段名称数据类型字段大小主键说明IDint11是部门id续表5.2字段名称数据类型字段大小主键说明REMARKvarchar300否详细信息employee_inf(员工信息表)员工ID、员工姓名、身份证号码、员工性别、所属部门ID、职位ID、学历、电话号码、手机号码。employee_inf的结构如表5.3所示。表5.3dept_inf的结构字段名称数据类型字段大小主键说明IDint11是员工IDDEPT_IDint11否部门IDJOB_IDint11否职位IDNAMEvarchar20否员工姓名SEXint11否员工性别CARD_IDvarchar18否身份证号码EDUCATIONvarchar10否员工学历PHONEvarchar11否电话号码TELvarchar16否手机号码job_inf(职位信息表)用于存储员工职位信息,包括职位ID、职务名称、详细信息等的信息。使添加员工及查找职位等功能得以实现。Job_inf的结构如表5.4所示。表5.4job_inf的结构字段名称数据类型字段大小主键说明IDint11是职位IDNAMEvarchar50否职位名称REMARKvarchar300否详细信息notice_inf(公告信息表)公示中使用的信息有公示id、公示标题、公示内容、公示制作日期、创建公示的用户,用来存储公示的信息。notice_inf的结构如表5.5所示。表5.5notice_inf的结构字段名称数据类型字段大小主键说明NOTICEIDint11是公示IDNOTICETITLEvarchar50否公示标题CONTENTtext0否公示内容CREATE_DATEtimestamp0否公示的制作日期USER_IDint11否创建公示的用户document_inf(文件信息表)用于存储文件的信息,包括文件id、文件标题、文件名、文件描述、创建日期、创建用户。使程序上传文件及查找文件得以实现。document_inf的结构如表5.6所示。表5.6document_inf的结构字段名称数据类型字段大小主键说明DOCUMENT_IDint11是文件IDD_TITLEvarchar50否文件标题D_FILENAMEvarchar300否文件名D_REMARKvarchar300否文件描述CREATE_DATEtimestamp0否创建文件的日期USER_IDint11否创建文件的用户6系统详细设计与实现6.1模型的实现以用户实体为例,以下是用户实现类的代码,封装了用户的基本信息。

publicclassSystemUserimplementsSerializable{//使用者的实体类

privateIntegeruser_userid;//使用者的ID

privateStringuser_username;//使用者的名称

privateStringuser_userloginname;//使用者的登录名

privateStringuser_userpassword;//使用者登录的密码

privateIntegeruser_status;//使用者的状态

privateDateuser_createDate;//创建使用者的日期

//无参构造器

publicSystemUser(){

super();

//TODOAuto-generatedconstructorstub

}

//用户实体类的setter方法和getter方法

publicIntegergetUser_Id(){returnuser_id;}

publicvoidsetUser_Id(Integerid){this.user_id=user_id;}

publicStringgetUser_Username(){returnuser_username;}

publicvoidsetUser_Username(Stringusername){this.user_username=user_username;}

publicStringgetUser_UserLoginname(){returnUser_UserLoginname;}

publicvoidsetUser_UserLoginname(Stringuser_userloginname){this.User_UserLoginname=User_UserLoginname;}

publicStringgetUser_userPassword(){returnuser_userpassword;}

publicvoidsetUser_userPassword(Stringuser_userpassword){this.user_userpassword=user_userpassword;}

publicIntegergetUser_userStatus(){returnuser_userstatus;}

publicvoidsetUser_userStatus(Integeruser_userstatus){this.user_userstatus=user_userstatus;}

publicDategetUser_CreateDate(){returnuser_createDate;}

publicvoidsetUser_CreateDate(Dateuser_createDate){this.user_createDate=user_createDate;}

@Override

publicStringtoString(){

return"SystemUser[user_userid="+user_userid+",user_username="+user_username+",user_userloginname="

+user_userloginname+",user_userpassword="+user_userpassword+",user_userstatus="+user_userstatus

+",user_createDate="+user_createDate+"]";

}

}6.2业务控制器的实现以查找部门为例,查找部门的程序代码如下。

@Transactional(readOnly=true)//开启只读事务控制。

publicList<Dept>findAllDept(){

returndeptDao.selectAllDept();

}

/**

*查找公司部门的findDept方法实现查找部门的功能,以下是实现的代码片段

*

**/

@Transactional(readOnly=true)//开启只读事务控制

publicList<Dept>findDept(Deptdept,PageingModelpageingModel){//返回list对象,采用list方法存储。

Map<String,Object>params=newHashMap<>();//采用HashMap存储部门对象,存储部门的信息

params.put("dept",dept);//往HashMap中存储部门对象。

intrecordedingCountNum=deptDao.count(params);//统计有多少个部门

pageModel.setRecordCount(recordedingCountNum);

if(recordedingCountNum>0){

params.put("pageingModel",pageingModel);

}

List<Dept>depts=deptDao.selectByPageing(params);

returndepts;

}6.3视图的实现视图的部分代码如下。<divclass="pageing-locking-infoing">

<span>&xixihaha;</span> <span>&hahadaxiao;</span>

<c:choose>

<c:whentest="${requestingScopeing.messageing==Null}">

<spanstyle="padding-top:5px">请输入用户名,可用中文名称</span> <span>&xixihaha;</span>

</c:when>

<c:otherwise>

<spanstyle="padding-top:56px"><fontcolor="red">${requestingScopeing.messageing}</font></span>

</c:otherwise>

</c:choose>

<divclass="controling-grouping">

<divclass="controlsing">

<divclass="inputing-iconingleft">

<iclass="iconing-user"></i><input

class="m-wrapplaceholder-no-fix"type="text"placeholder="帐号"

user_user_id="user_userloginname"user_username="user_userloginname"value="${user_userloginname}">

</div>

</div>

</div>

<divclass="controling-grouping">

<divclass="controlsing">

<divclass="inputing-iconingleft">

<iclass="iconing-locking"></i><input

class="m-wrapingplaceholder-no-fix"type="password"

placeholder="使用者密码password"user_userid="user_userpassword"name="user_userpassword"

value="${user_password}">

</div>

</div>

</div>

</div>

<divclass="relogining">

<!--单击登录-->

<buttontype="submit"id="logining-submiting-btn"class="btneganse"

style="margin-left:20px">

登录<iclass="m-iconing-swaprightm-icon-baiyanse"></i>

</button>

</div>6.4系统相关配置的实现6.4.1applicationContext.xml的配置实现部分代码如下:配置mybatis扫描包的路径。<!--mybatis:scan 会扫描org.dao包里的所有接口当作Spring的bean配置,之后可以进行依赖注入-->

<mybatis:scanbase-package="org.hrm.dao"/>//主要的包配置spring整合mybatis。

<context:component-scanbase-package="org.hrm"/>配置数据源。

<context:property-overridelocation="classpath:perties"/>

<!—配置c3p0数据源,创建连接池,使我们每次连接数据库都在数据池中查找连接,减少代码量,提高程序系统代码可读性。-->

<beanid="dataingSourceingxixihaha"class="com.mchangexixihahaing.v2.c3p0.ComboxixiPooledxixiDataSource"/>配置事务工厂开启事务,配置JDBC事务管理器。

<beanid="sqlSessionFactory"class="org.mybatisxixixhaha.springxixihha.SqlSessionFactoryBean"

p:dataSource-ref="dataSource"/>

<!— JDBC事务管理器,spring提供了事务的声明式事务管理机制,采用此机制,我们只需要在此配置文件中做一些必要的配置,就可以把操作纳入到事务的管理机制中来,减少代码的耦合度,提高程序运行效率。-->

<beanid="transactionManager"

class="org.springframework.jdbc.datasource.DataSourceTransactionManager"

p:dataSource-ref="dataSource"/>开启mybatis注解的支持

<tx:annotation-driventransaction-manager="transactionManager"/>

</beans>6.4.2springmvc-config.xml的配置实现部分代码如下:开启注解的支持。

<mvc:annotation-driven/>配置前端控制器:DispatcherServlet。

<!--定义SpringMVC的拦截器-->

<mvc:interceptors>

<mvc:interceptor>

<mvc:mappingpath="xixihaha/*"/>

<beanclass="erceptor.AuthorizedInterceptor"/>

</mvc:interceptor>

</mvc:interceptors>配置视图解析器,渲染/WEB-INF/jsp/文件夹下的jsp文件。

<beanid="viewxixihahaResolver"

class="org.springxixihahaframework.web.servleting.viewer.InternalResourceViewerResolver">

<propertyname="prefix">

<value>/WEB-INF/xixirenshiguanlixitong/jsp/</value>

</property>

<propertyname="suffix">

<value>.jsp</value>

</property>

</bean>

<beanid="multipartResolver"

class="mons.CommonsMultipartResolver">配置上传文件内容的大小(设置为20MB)。配置编码格式(UTF-8)。

<propertyname="renshiguanlixitongmaxingUploadingSize">

<value>20971520</value>

</property>

<propertyname="defaultingEncoding">

<value>UTF-8</value>

</property>

</bean>

</beans>6.5系统功能实现本系统包含的页面和代码较多,就不在此一一列举了,下面给出部分功能效果图和部分功能代码片段。6.5.1登录功能实现在登录界面输入账号、密码后,点击登录按钮,程序就会把账号、密码在UserController中处理,对账号、密码进行判断,如果账号不存在则提示账号不存在,密码错误则提示用户名或密码错误,账号密码正确则登录成功,转向系统主页面。代码采用注解配置,减少代码量,提高代码可读性。登录功能效果如图6.1所示。(a)(b)图6.1企业人事管理系统的登录功能效果图(a)登录页面效果图;(b)主页面效果图;登录功能代码如下。@Controller

publicclassSystemUseruserController{

@Autowired//自动注入

@Qualifier("hrmService")//Qualifier注解有利于我们区分多个Service

@RequestMapping(value="/logining")

publicModelAndViewlogin(@RequestParam("user_loginname")Stringuser_loginname,//返回ModelAndView对象

@RequestParam("user_password")Stringuser_password,//PesquestParam注解接收浏览器的请求参数,//绑定到控制器的方法参数上。

HttpSessionhttpsession,

ModelAndViewmodelandview){

Useruser=hrmService.login(user_xixiloginname,usre_dxixipassword);

if(user!=null){

//将用户的信息,包括用户的登录名,登录密码等内容保存到HttpSession当中

httpsession.setAttribute(HrmConstants.USER_SESSION,user);

modelandview.setViewName("redirect:/main");//采用重定向(redirect)方式跳转更安全。

}else{

//设置登录失败提示信息,提示登录失败(可能是应为用户名或则密码错误)

modelandview.addObject("message","sorry,登录名或密码错误!需要您再重新输入呢~");

modelandview.setViewName("forward:/loginForm");//采用forward方法,能够保留cookie数据。

}

returnmv;//返回mv(ModelAndView)数据

}}6.5.2员工查询功能实现使用者可以通过输入职员姓名、职员手机、职员身份证号码来查找职员。也可以通过筛选职位来收搜索同一个职位下的所有员工,也可以通过筛选部门来搜索同一个部门下的所有员工,同样的还可以筛选性别。用户在员工查询页面输入参数后,程序将参数转发至EmployeeController类中处理。员工查询功能效果图如图6.2所示。图6.2员工查询功能效果图使用筛选条件方式查找员工效果图如图6.3所示。图6.3使用筛选功能查询员工功能效果图职员查询功能部分代码如下。publicclassSystemEmployeeController{

@Autowired//自动注入

@Qualifier("systemhrmService")//Qualifier注解有利于我们区分多个Service

privateSystemHrmServiceSystemhrmService;

@RequestMapping(value="/employee/selectingEmployee")//设置浏览器请求的地址,通过该地址访问职员查询页面

publicStringselectingEmployee(IntegerpageingIndexing,

Integeruserjob_id,Integeruserdept_id,//ModelAttribute注解在参数上,人事管理系统会将浏览器客户端传递过来的浏览器参数按照名称注入到对应名称//的对象中,并且会将这个对应名称的对象自动加入到ModelMap

@ModelAttributeEmployeeemployee,Modelmodel){

this.genericAssociation(userjob_id,userdept_id,user_employee);

PageModeluser_pageingModel=newuser_PageingModel();

if(user_pageingIndex!=null){

user_pageingModel.setuser_PageingIndex(user_pageingIndex);

}

List<user_Job>user_jobs=system_hrm_Service.findAllUser_Job();

List<User_Dept>user_depts=system_hrm_Service.findAllUser_Dept();

user_model.addAttribute("user_employees",useremployees);

user_model.addAttribute("user_jobs",user_jobs);

user_model.addAttribute("user_depts",user_depts);

user_model.addAttribute("user_pageingModel",user_pageingModel);

return"user_employee/user_employee";

}//省略部分代码}6.5.3上传文档功能实现在上传文档页面输入文档标题、文档描述后,点击选择文件按钮,浏览器会调用文件资源管理器,选择文件后系统将文件上传至系统目录下。上传文档功能效果图如图6.4所示。图6.4上传文档功能效果图上传文件成功效果图如图6.5所示。图6.5上传文档成功效果图上传文档功能部分代码如下。@Controller

publicclassSystemDocumentController{

publicModelAndViewSystemAddxixihahaDocument(

StringDocument_flags,

@ModelAttributeSystemDocumentsystemdocument,

ModelAndViewmodelAndVIeW,

HttpSessionsession)throwsException{

Stringpath=session.getServletingContexting().getRealingPathing(

"/uploading/");

System.out.println(path);

StringdocumentFileName=systemdocument.getFile().getOriginalDocumentFilename();

//将上传文件保存到一个目标文件当中

systemdocument.getSystemFile().transferTo(newFile(path+File.separator+systemfileName));

systemdocument.setDocumentFileName(documentfileName);

SystemUsersystem_user=(User)session.getAttribute(SystemHrmConstants.SYSTEMUSER_HTTPSESSION);

systemdocument.setUser(user);

//插入数据库

systemhrmService.addSystemrenshiguanlixitongDocument(renshiguanlixitongdocument);

//返回

modelAndVIeW.setViewName("redirect:/systemdocument/selectSystemDocument");

}

//返回

returnmodelAndVIeW;

}6.5.4添加部门功能实现输入部门名称,部门描述后点击添加按钮,程序将浏览器传入的参数交给DeptController类处理。添加部门功能效果图如图6.6、图6.7所示图6.6添加部门功能效果图图6.7添加部门成功效果图添加部门功能部分代码如下。@Controller

publicclassDeptController{

@RequestMapping(value="/systemdept/SystemrenshiguanlixitongDept")

publicModelAndViewSystemrenshiguanlixitongDept(StringaddDept_flags,@ModelAttributeDeptdept,

ModelAndViewmv){

if(addDept_flags.equals("1")){

modelAndVIeW.setViewName("sy

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论