基于J2EE的企业人事管理系统的设计与实现

2022-10-13 05:08:05   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。下载word有问题请添加QQ:admin处理,感谢您的支持与谅解。点击这里给我发消息

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《基于J2EE的企业人事管理系统的设计与实现》,欢迎阅读!
管理系统,基于,人事,实现,设计





企业人事管理是企业管理的一项重要内容,本文阐述了基于J2EE的企业人事管理系统的设计与实现,通过系统企业管理者可以随时随地对人事信息进行科学、高效的管理,提高了劳动生产率,同时也减少了企业资源的浪费。文中首先论述了软件工程的设计方法,与开发技术,分析了系统实现的框架原理。系统主要采用B/S架构和MVC设计模式,MVC设计模式将整个系统分成视图层、控制层、模型层,多层架构方式使系统具有灵活的可扩展性,为系统进一步完善打下基础。其次文中以UML技术为基础进行系统的需求分析与设计建模,并在此基础上分析了系统的各个模块的功能,系统中包含两种角色,包括人事部员工和普通员工。人事部员工可以通过系统对员工、部门、考勤、薪资等信息进行查询和更改,普通员工可以对自己的信息进行查询。系统采用Struts2框架技术完成了系统的实现,列出系统核心代码。最后对系统技术与系统功能进行了总结,为下一步系统的完善指明了方向。

关键词J2EEStruts2,人事管理,MVC

I






ABSTRACT

Personnel management plays a vital role in the management of enterprise. The paper explains the design and realization of the enterprise human resource management system based on J2EE. Through the system, manager can deal with personnel information scientifically and effectively, improving labor productivity and making full use of enterprise resource. Firstly, the paper discusses the design method and the development technology of software engineering as well as the analysis of the framework theory to put the system in practice. B/S architecture and MVC design module are principally applied in the system which is divided by MVC design module into view layer, control layer and model layer. It is such kind of multi-layer structures that makes the system feasible and flexible, supplying the following improvement with foundation. Secondly, based on UML technology, the paper analyzes the demand and designs the module systematically, exploring the functions of every part of the system which contains two roles, including personnel employees and general employees. By using the system, personnel employees can inquire about and modify the information on employees, departments, attendance, salary and so on; general employees can check their own information. In addition, the system gives the key code with the application of Struts 2 framework technology and AJAX technology. Finally, it generalizes the technology and function of the system, which indicates a further research on the system.

Key words: J2EE, Struts2, Office Automation, MVC

II


南通大学毕业设计(论文)



........................................... I.... ABSTRACT .......................................... II.... 第一章 绪论 .............................................. 3 1.1 研究背景 ............................................. 3 1.2 研究目的和意义 ....................................... 3 1.3 论文结构 ............................................. 4 第二章 开发主要技术 ...................................... 5 2.1 JAVA语言 ............................................ 5 2.2 MVC模式 ............................................. 6 2.3 STRUTS2介绍 ......................................... 8 2.3.1 体系结构 ........................................... 8 2.3.2 工作流程及优点 ..................................... 9 第三章 系统需求和设计 ................................... 11 3.1 需求分析 ............................................ 11 3.2 系统功能结构 ........................................ 12 3.3 系统设计 ............................................ 13 3.3.1 登录模块 .......................................... 13 3.3.2 添加职员模块 ...................................... 14

1


南通大学毕业设计(论文)

3.3.3 修改部门模块 ...................................... 15 3.3.4 修改密码模块 ...................................... 16 第四章 数据库分析和设计 ................................. 18 4.1 概念设计 ............................................ 18 4.2 逻辑设计 ............................................ 21 第五章 系统的实现 ....................................... 24 5.1 登录模块的实现 ...................................... 24 5.2 添加职员模块的实现 .................................. 25 5.3 修改部门模块的实现 .................................. 27 5.4 修改密码模块的实现 .................................. 29 第六章 总结与展望 ....................................... 31 6.1 总结 ................................................ 31 6.2 展望 ................................................ 31 参考文献 ................................................ 32 致谢 ..................................... 错误!未定义书签。

2


南通大学毕业设计(论文)

第一章 绪论

1.1 研究背景

随着企业规模的进一步扩大,企业职工的数量越来越多,管理制度也越来越严密复杂,传统的人工管理方式或C/S架构的管理软件的缺陷逐渐的显露出来,已经远远不能够满足企业人事管理的需求。其缺陷如下所列: 1、人事查询不方便,经常发生错误。

2、只能本地进行管理,进行远程管理即必须重新安装远程管理软件。 3、普通职工无法方便的查询自己的相关信息。 4、软件维护费用高。

5、软件有任何变动,都要重新安装所有客户端。

为了弥补这些缺陷,提高企业人事管理的效率和正确性,方便普通职工对个人信息的查询管理,同时也为了降低管理系统的维护费用,因此有必要研究开发出一套功能完善、齐全,性能优良的基于B/SWeb系统。在B/S模式下,用户工作界面通过0012浏览器来实现,极少部分事务逻辑在客户端(Browser)实现,主要事务逻辑在服务器端(Server)实现,可以大大减轻系统维护与升级的成本和工作量,降低系统的总体成本。

1.2 研究目的和意义

人事管理是一个单位日常工作中不可或缺的重要部分,它对于本单位的决策者和管理者来说都至关重要的,而人员的复杂性却使得人事管理成为难题。针对中小型企事业对人事管理的需求,开发出小型人事管理系统,让人事管理系统对人事档案信息进行管理,力求方便快捷实现人事档案的自动管理。

人事管理系统克服了以往传统人工的方式效率低、保密性差,查找、更新、维护特别困难的缺点,采用计算机对人事档案信息进行管理,检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低廉。而且功能全面、操作简便,能够快速地为员工建立电子档案,而且便于修改、保存和查询,实现了无纸化存档,能够为使用者节省大量资金和空间。人事管理系统利用计算机进行信息控制和数据处理,不仅提高了工作效率,而且还大大的提高了其安全性。

3


南通大学毕业设计(论文)

1.3 论文结构

在人事管理系统设计开发时,综合考虑了代码重用、系统管理、操作简便以及后期维护等方面的要求,决定将系统构建于Struts2框架之上。

第一章 绪论。介绍了人事管理系统的开发背景、意义,明确所要完成的任务。 第二章 开发主要技术介绍。介绍Java语言的特点,以及介绍构建人事管理系统所需的关键技术Struts2。在对MVC设计模式介绍的基础上,详细介绍了Struts2框架体系架构和核心组件。

第三章 系统的需求和设计,首先提出系统需求分析,利用UML建模技术设计出系统的用例图,然后在需求的基础上对系统进行模块化分析和设计。

第四章 人事管理系统数据库设计,包括对数据库的概念设计和逻辑设计。 第五章 人事管理系统的系统实现,给出系统一些核心模块的实现。

第六章 总结与展望。论文的最后对项目进行了总结,总结其中的经验,分析系统中的不足。

4


南通大学毕业设计(论文)

第二章 开发主要技术

2.1 Java语言

Java语言是一种基本结构与C++极为相似却简单得多的适用于网络编程语言。它集成其它一些语言的特点和优势,同时又避开了它们的不足之处。它的主要特点如下: 简单性:

JavaC++相比,不再支持运算符重载、多级继承及广泛的自动强制等易混淆和较少使用的特性,而增加了内存空间自动垃圾收集的功能,复杂特性的省略和实用功能的增加使得开发变得简单而可靠。简单性的另一个方面是Java的系统非常小,使得Java应用软件能在相当小的系统之上独立工作。 平台独立性:

由于Java采用先编译成中间码(字节码),然后装载与校验,再解释成不同的机器码在Java虚拟机上执行,从而“屏蔽”了具体“平台环境”的特性要求。平台独立性使得Java应用软件能在异构平台之间平滑移植。 面向对象特性:

面向对象技术是近年来软件开发中用得最为普遍的程序设计方法,它通过客观事物进行分类组合、参数封装、用成员变量来描述对象的性质、状态,而方法(成员函数)来实现其行为和功能。面向对象技术具有继承性、封装性、多态性等众多特点,Java在保留这些优点的基础上,又具有动态联编的特性,更能发挥出面向对象的优势。 多线程:

多线程机制使应用程序能并行执行。Java有一套成熟的同步原语,保证了共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易实现网络上的实时交互行为。 扩展性:

Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。

5


南通大学毕业设计(论文)

2.2 MVC模式

MVC是一种成熟的面向企业应用的优秀的设计模式。J2EE中把MVC作为Web用的首选架构模式,这是与J2EE应用模型结构和MVC模式在设计理念上的一致性分不开的。MVC英文即Model-View-Controller即把一个应用的输入、处理、输出流程按照ModelViewController的方式进行分离,这样一个应用被分成三层:模型层、视图层和控制层。 视图(View)

视图代表用户交互界面,它是应用程序与最终用户之间的接口:一方面,它为用户提供了输入手段,并触发应用逻辑运行;另一方面,将逻辑运行的结果以某种展示形式显示给最终用户。对于J2EEWeb应用来说,主要是HTMLJSP完成。在复杂的系统中,一个应用可能有很多不同的视图。MVC设计模式对于视图的处理不涉及业务流程的处理,业务流程的处理交予模型(Model)处理。因而,用户或界面开发人员不需要了解数据库方面的知识,也不必了解业务逻辑进行了什么操作。比如一个模拟取款过程的视图只接受来自取款动作模型的数据并显示给用户,以及将用户界面的输入取款数据和相应请求传递给控制层和取款动作的模型。 模型(Model)

模型封装并制定了应用程序的业务逻辑和用到的数据结构,模型实现了软件的功能,MVC框架下应用程序的核心部分。业务逻辑的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。“模型”有对数据直接访问的权利,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。在MVC中,模型采用面向对象的方法,将问题领域的对象抽象为应用程序对象,抽取的层次很重要。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。一个模型可以为多个视图提供数据,这样就提高了应用程序的可重用性。 控制器(Controller)

控制器起到不同层面间的组织作用,用于控制应用程序的流程,它处理事件并做出响应。“事件”包括用户的行为和数据模型上的改变。划分控制层的作用也很明显,“控制”就是一个分发器,分发不同请求到“模型”或者“视图”。控制层并不做任何的数据处理,

6


南通大学毕业设计(论文)

一般采用Servlet来实现控制器角色。用户点击网页中的提交按钮后,触发控制器,由控制器调用相应的模型组件进行业务处理,最后通过相应的视图将处理结果显示出来。

MVC模式通过强制限定应用程序的控制、模型和视图各模块,从而提高应用程序的可读性和代码的可重用性、可扩展性。模型、视图与控制器的分离,使得一个模型可以对应多个视图,这样,一个模型可以被多个视图重用,大大提了代码的可重用性;同时,模型相对独立,对于业务逻辑的修改,不必牵系控制器和视图两个模块,便于程序的扩充、维护、方便移植。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能,如图2-1所示。

2-1 MVC组件类型的关系和功能

MVC的优点表现在以下几个方面:

可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。

视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。

模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。

这些优点保证了在使用MVC模式进行系统设计时,代码和设计的复用性,易于维护性和可扩展性。

7


南通大学毕业设计(论文)

2.3 Struts2介绍 2.3.1 体系结构

上面介绍了MVC设计模式,Struts2的体系结构正是实现了MVC设计模式的概念,它将这些概念映射到Web应用程序的组件和概念中。如图2-2所示:



2-2 Struts2的体系结构

模型层(Model)

模型层指的是后端业务逻辑处理,Struts2中,通常会被action调用来处理用户请求,当控制器需要获许得业务逻辑组件实例时,通常并不会直接获取业务逻辑组件实例,而是通过工厂模式来获得业务逻辑组件的实例,或者利用其他IOC容器来管理业务逻辑组件的实例。

视图层(View)

Struts2框架改变了Struts1只能使用jsp作为视图技术的现状,它还允许使用其他的视图技术,如(FreeMarker\Velocity)等作为显示层。

Struts2的控制层调用业务逻辑组件处理完用户请求后,会返回一个字符串,该字符串代表逻辑视图,它并未与任何的视图技术关联。 控制层(Controller)

Struts1使用ActionServlet作为控制器不同,Struts2使用了Filter技术,FilterDispatcherStruts框架的核心控制器,该控制器负责拦截和过滤所有的用户请求,如果用户请求以

8


南通大学毕业设计(论文)

action结尾,该请求将被转入Struts框架来进行处理。Struts框架获取了*.action请求后,将根据*.action请求的前面名称部分决定调用哪个业务控制action类。

Struts应用中的action都定义在struts.xml文件中,在该文件中配置action时,主要定义了该actionname属性和class属性,其中name属性决定了该action处理哪个用户请求,而class属性决定了action的实现类。

用于处理用户请求的action实例,并没有与Servlet API耦合,所以无法直接处理用户的请求,为此,Struts2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到action中,并回调Actionexecute方法来处理用户请求。

2.3.2 工作流程及优点

Struts2接收到一个HttpRequestInterceptor做一些拦截或者初始的工作,当外部的HttpServletRequest到来时,初始到了Servlet容器传递给一个标准的过滤器链,这个在集成插件方面非常有用。Other filters调用FilterDispatecher会去查找相应的ActionMapper,如果找到了相应的ActionMapper它将会将控制权限交给ActionProxy ,ActionProxy将会通过ConfigurationManager来查找配置struts.xml下一步将会通过ActionInvocation来负责命令模式的实现(包括调用一些拦截Interceptor框架在调用action之前),一旦action返回,会查找相应的ResultResult类型可以是 jsp或者freeMark 等。这些组件和ActionMapper一起返回给请求的url,响应的返回是通过我们在web.xml中配置的过滤器,如果ActionContextCleanUp使FilterDispatecher sreadlocal ActionContext,如果ActionContextCleanUp不使用,则将会去清理sreadlocals

Struts2的优点主要体现在以下几点:

Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发过程。

使用OGNL进行参数传递。OGNL提供了在Struts2里访问各种作用域中的数据的简单方式,你可以方便的获取RequestAttributeApplicationSessionParameters中的数据。大大简化了开发人员在获取这些数据时的代码量。

强大的拦截器。Struts2的拦截器是一个Action级别的AOPStruts2中的许多特性都是通过拦截器来实现的,例如异常处理,文件上传,验证等。拦截器是可配置与重用的,可以将一些通用的功能如:登录验证,权限验证等置于拦截器中以完成一些Java Web项目中比较通用的功能。

9


南通大学毕业设计(论文)

易于测试。Struts2Action都是简单的POJO,这样可以方便的对Struts2Action编写测试用例,大大方便了Java Web项目的测试。

全局结果与声明式异常。为应用程序添加全局的Result和在配置文件中对异常进行处理,这样当处理过程中出现指定异常时,可以跳转到特定页面,这一功能十分实用。

10


南通大学毕业设计(论文)

第三章 系统需求和设计

3.1 需求分析

人事管理系统需要人事管理不受地域的限制,不受系统平台限制,只要人员能够上网,通过验证并登陆系统,便可以随时查看人事相关信息,进行信息数据的管理和更新。人事管理系统具有职员管理、部门管理、考勤管理、薪资管理等功能。人事部员工负责添加、修改、删除各类信息,并且可以输入关键字查询档案信息、出勤信息、考勤信息和薪水信息。职工可以查看个人出勤信息、考核信息和薪水信息。

该系统开发的总体目标是需要实现企业人事管理系统的系统化,规范化和自动化。根据系统概述,设计本系统的顶层用例图,如图3-1所示:

职员管理

个人信息查询

部门管理

个人考勤查询

考勤管理

个人薪资查询

加班管理

人事部职工

薪资管理

在线请假

职工

个人请假查询

请假管理

修改密码



3-1 人事管理系统顶层用例图

人事部管理端功能,主要针对的用户是人事部的员工,具有以下管理权限:

1、职工资料管理,主要是对在职的员工的管理,其中包括查看职工列表,添加职工,修改职工信息。查看职员列表就从数据库中将有关人员的信息查询出来并显示,当有新职工报到时可以使用添加职工信息添加新的职工进数据库,同时也可以修改有关职工的个人信息。

2、部门管理,是对企业内存在的部门的管理。其中包括查看部门列表,添加部门,

11


南通大学毕业设计(论文)

修改部门。查看部门列表就是从数据库中将有关部门查询并显示出来,当需要添加新的部门时使用添加部门信息的功能将部门添加到数据库,同时也可以修改有关部门的信息,比如部门名字和部门介绍之类。

3、职工考勤管理,是对在职员工考勤信息的管理。其中包括职工签到,职工考勤管理及查询。职员每天早上到之后签到,将职员签到信息存入数据库,认识不可以查询考勤信息并生成考勤信息表。

4、职工加班管理,主要是对在职员工加班信息的管理,其中包括部门加班查询及添加新的加班记录。加班管理可以为某个部门添加加班记录,也可以为某个员工添加加班记录,添加部门加班记录,该部门所有人员都需要加班,添加员工加班记录,本人需要加班。人事部员工可以查询相关的加班信息。

5、职工薪资管理,主要是对职员薪资信息的管理,其中包括生成薪资列表及操作工资发放。薪资列表只能在月末生成,是将数据库中该员工的工资情况查询并显示出来。操作工资发放是修改薪资构成和薪资的发放时间。

6、假期情况管理,主要用来处理职工的请假申请。当一个职员申请假期之后,人事部员工需要处理职员的申请,同意申请之后职员才能查询到自己的假期申请。 个人页面功能,针对所有的员工,具有以下权限:

1、查看个人基本信息,这个功能用来让职工查询自己的个人信息,核对如果需要修改可以联系人事部进行修改。

2、查询个人考勤记录,用来查询个人的考勤信息,其中考勤信息包括正常,迟到,缺席和请假,如果信息有误可以联系人事部进行修改。

3、个人薪资情况查询,用来查询个人的薪资情况,包括个人薪水和薪资的发放情况。 4、申请请假,当一个员工需要请假时,可以通过这个功能进行在线请假,申请完之后,人事部员工可以看到申请,当人事部同意请假才能看到请假状态,这样请假程序才算完成。

5、个人请假记录查询,主要让员工来查询自己的请假记录。

3.2 系统功能结构

根据系统用例图可以清楚地看到该系统的结构和系统的模块。系统的结构图如图3-2所示:

12


南通大学毕业设计(论文)



3-2 系统结构图

系统结构图很直观的体现了该系统的两大模块:人事部管理端,员工个人管理端。人事部管理端主要是对职员资料、部门资料,职工考勤、加班、薪资、请假等信息的管理,而员工个人端是职工本人的资料信息、考勤记录、薪资信息、请假信息的一些查询和管理。

3.3 系统设计

根据上述的需求分析,对该系统进行模块化分析和设计,由于文章篇幅所限,本节只是对系统核心模块进行分析和设计。

3.3.1 登录模块

登录模块需求:当用户进入登录界面,需要输入用户名、密码和验证码,均不能为空,如果为空需要非空提示。如果不为空,系统将首先判断验证码是否正确,验证码错误,需要提示错误信息,如果验证码正确,系统将验证用户名和密码,用户名或者密码错误,需要提示错误信息,如果用户名和密码均正确将进入主界面。

以下为登录模块的活动图,如图3-3所示:

13


南通大学毕业设计(论文)

输入用户名、密码、验证码

验证非空





提示错误信息



验证信息是否正确



进入主页



3-3 登录模块的活动图

登录模块设计:从登录模块可以看出来,首先设计出登陆页面(Login.jsp),可以输入用户名(uid)、密码(pwd)以及验证码(yanzhengma)。然后对输入的信息进行非空验证,可以JavaScript实现,之后验证验证码是否正确,如果正确便验证用户名和密码,需要与数据库中的用户名密码进行比对,如果错误返回错误信息在页面上显示出来,正确的话根据用户名权限进入不同的主界面。上述验证在LoginAction中实现。

3.3.2 添加职员模块

添加职员模块需求:当有新职员入职时,可以将新职员录入数据库,添加职员模块可以填入职员的信息:职员编号、职员姓名、职员性别、出生日期、个人邮箱、个人电话、所属部门、职位、头像以及个人简历。需要对填入的信息进行非空和合法性验证(编号只能为数字,出生日期、邮箱、电话合法,所属部门存在,薪资只能为数字)。验证都通过提示添加成功。

以下为添加职员模块的活动图,如图3-4所示:

14


南通大学毕业设计(论文)

输入职员信息

验证信息的完整性





提示错误信息



验证信息的合法性



添加成功



3-4 添加职员模块的活动图

添加职员模块设计:从活动图可以看出来,首先设计出添加职员页面(AddImp.jsp),求需要的完整性验证同样可以用JavaScript来实现,职员性别用radio实现选择,出生日期调用struts2自带的日历实现选择,所属部门可以先在数据库中取出来显示在页面上用选择框选择,上传头像用文件选择实现,而个人简历由于字数可能比较多,用textarea实现。其中合法性验证可以使用JavaScript以及正则表达式来实现。信息完整并且合法之后提交actionAddImpleeyAction进行出来,成功之后返回添加成功消息。

3.3.3 修改部门模块

修改部门模块需求:当一个部门信息发生更改时需要修改部门信息,在部门列表中选择编辑进入修改部门的页面,显示该部门现在的信息:部门编号、部门名称、在职人数以及部门描述,其中部门编号和在职人数无法更改,因此只能更改部门名称和部门描述,需要对输入的信息进行非空验证,验证通过修改成功。

以下为修改部门模块的活动图,如图3-5所示:

15


南通大学毕业设计(论文)

输入部门信息

验证信息的完整性





提示错误信息

修改成功



3-5 修改部门模块的活动图

修改部门模块设计:从活动图来看,需要首先设计出修改部门页面(EditDepart.jsp)面里的信息都是从数据库取出来的,其中部门编号、在职人数不能更改用readonly属性来实现,非空验证可以使用JavaScript来实现。信息完整之后提交到actionEditDepartAction进行出来,成功之后返回修改成功消息。

3.3.4 修改密码模块

修改密码模块需求:职员有时候需要修改自己的登录密码用来提高安全性,进入修改密码页面,其中需要输入原密码、新密码和确认密码,首先需要对输入信息进行非空验证,并且新密码和确认密码需要6位以上并且需要相同。之后验证原密码是否正确,正确之后提示修改成功。

以下为修改密码的活动图,如图3-6所示:

16


南通大学毕业设计(论文)

输入原密码、新密码、确认密码

验证非空





提示错误信息



验证原密码是否正确



验证两次密码输入是否一致

修改成功





3-6 修改密码的活动图

修改密码模块设计:通过活动图可以看出来需要设计修改密码页面ChangePwd.jsp页面可以输入原密码、新密码、确认密码,非空验证和新密码确认密码长度可以使用JavaScript实现,验证通过需要去数据库中与原密码进行比对,比对成功后返回修改成功信息。

17


南通大学毕业设计(论文)

第四章 数据库分析和设计

系统设计开始,首先考虑如何用数据模型来描述数据库的结构与语义,以对现实世界进行抽象。目前广泛使用的数据模型可分为两种类型,一种是独立于计算机系统的“概念数据模型”(如“实体联系模型”);另一种是直接面向数据库逻辑结构的“结构数据模型”在本系统中采用了“实体联系模型”(E-R模型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。

数据库设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。另外,合理的数据库结构将非常有利于程序的实现。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。在功能结构设计中将系统划分为各子系统,定义了各子系统之间的数据共享和交换关系,以及这些数据的分布要求。但是这些数据库是如何组织的,如何将功能设计中的数据库组织成为合理的逻辑结构,完成某些具体应用需求还需要再建立那些数据库,是系统分析所要完成的主要任务之一。

4.1 概念设计

本文所设计系统采用MySQL5.0作为数据库开发平台,该平台主要用于搭建关系数据库,用数据表来抽象、表示和处理现实世界中的数据和信息。本系统相关的数据库和表的创建是借助Navicat软件实现。本系统数据库主要表E-R图及参数设计下图所示: 总体E-R图:

18


南通大学毕业设计(论文)



4-1总体设计E-R

用户信息表实体图,如图4-2所示:

用户名

用户信息用户权限

密码



4-2 用户信息实体图

职员信息表实体图,如图4-3所示:

性别

姓名

状态

所属部门号

编号

邮箱

职工信息头像路径

电话

出生日期

职位

薪资

个人简历



4-3职员信息表实体图



部门信息表实体图,如图4-4所示:

19


南通大学毕业设计(论文)

部门名称

部门编号

部门信息

部门人数

部门描述



4-4部门信息实体图

考勤信息表实体图,如图4-5所示:

职员编号

考勤信息

状态

考勤时间



4-5考勤信息实体图

假期信息表实体图,如图4-6所示:

申请时间

职员编号

开始时间

请假原因

请假信息

状态

终止时间

请假天数



4-6 假期信息实体图

加班信息表实体图,如图4-7所示:

职员编号

加班信息

加班原因

加班时间



4-7 加班信息实体图



薪资信息表实体图,如图4-8所示:

20


南通大学毕业设计(论文)





资本薪资

职工编号

加班费

薪资信息

状态

请假费用

小计缺勤费用



4-8 薪资信息实体图

4.2 逻辑设计

数据的概念结构设计完之后,可以将上面的数据库概念结构转化为某种数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。比如系统数据库中各表的详细设计如表所示。

用户信息表(userinfo)

4-1用户信息表

字段名称 impId pwd ImpRight



职员信息表(imployeeinfo)

数据类型 char Char decimal

字段大小 10 10 1

是否主键

用户ID 用户密码 用户权限

4-2职员信息表

字段名称 impId impName impGender impBirth impEmail

数据类型 char varchar char data varchar

字段大小 10 50 2 N/A 50

21

是否主键

职工编号 职工姓名 职工性别 出生日期 职工邮箱


南通大学毕业设计(论文)

departId impRoll impSalary impTel impPic impBio impState



char varchar decimal varchar varchar text decimal

4 50 (6,2) 20 100 N/A (1)



所属部门编号 职工职位 基本薪资 职工电话 头像路径 职工简历 在职状态

部门信息表(departmentinfo)

4-3部门信息表

字段名称 departId departName departNum departDescrip

数据类型 char varchar decimal text

字段大小

4 50 5 N/A

是否主键

部门编号 部门名称 部门人数 部门描述

考勤信息表(attendanceinfo)

4-4考勤信息表

字段名称 impId attendTime attendState

假期信息表(holsinfo)

数据类型 char data decimal

字段大小 10 N/A 1

是否主键

职员编号 考勤日期 考勤状态

4-5假期信息表

字段名称 impId applyTime startTime

数据类型 char datetime datetime

字段大小 10 N/A N/A

22

是否主键

职工编号 申请时间 开始时间


南通大学毕业设计(论文)

endTime holdays executes holsState

加班信息表(extrawork)

datetime decimal varchar decimal

N/A 2 500 1



结束时间 请假天数 请假缘由 请假状态

4-6加班信息表

字段名称 impId workTime executes



薪资信息表(salaryinfo)

数据类型 char datatime varchar

字段大小 10 N/A 500

是否主键

职员编号 加班日期 加班缘由

4-7薪资信息表

字段名称 impId syear smonth sBase sExtra sHoliday sAbsence sTotal sState



数据类型 char char char decimal decimal decimal decimal decimal char

字段大小 10 4 2 (6,2) (6,2) (6,2) (6,2) (6,2) 1

是否主键

职工编号 年份 月份 基本薪资 加班费 请假费用 缺勤费用 小计 状态

23


南通大学毕业设计(论文)

第五章 系统的实现

5.1 登录模块的实现

系统发布后,用户可以通过服务器的地址链接访问系统。登录页如下图5-1



5-1 登录界面

当用户输入完成用户名、密码和验证码后,按登录按钮,此时系统将检查验证码是否正确,然后验证用户的合法性,若为系统的合法用户,系统将进入主界面并根据用户的权限显示相应的功能模块。具体代码实现在LoginAction类中。 LoginAction里的验证码检测代码: String yanzhengma=

(String)ActionContext.getContext().getSession().get("yanzhengma");//获取验证码 if(yanzhengma!=null){

if(!yanzhengma.equals(this.yanzhengma.toLowerCase())){//判断验证码是否正确

}

24

this.result=this.getText("login.yanzhengmaerror"); return SUCCESS;


南通大学毕业设计(论文)

}

检查用户合法性的主要代码如下:

String[] impinfo=LoginDB.login(uid,pwd);

if(Integer.parseInt(impinfo[0])==1){//判断用户权限

Map session=ActionContext.getContext().getSession(); session.put("right","manage");

session.put("user",impinfo[1]);//将用户信息存到Map return "manage";

}

else if(Integer.parseInt(impinfo[0])==2){//判断用户权限 Map session=ActionContext.getContext().getSession(); session.put("right","personal"); session.put("user",impinfo[1]); return "personal"; }else{

result=this.getText("login.wronguid");//返回错误信息 }

5.2 添加职员模块的实现

当有新职员入职时,可以将新职员录入数据库,添加职员模块可以填入职员的信息,主界面如下图5-2所示:

25


南通大学毕业设计(论文)



5-2 添加职员主界面页

AddImpleeyAction中。

AddImpleeyAction.java中主要代码: public String execute(){

String picname="";

if(!ManageDB.hasImp(this.impId)){//判断员工ID是否存在

if(this.getPicFileName()!=null&&(!this.getPicFileName().equals(""))){

picname=this.getImpId()+this.getPicFileName().subSequence(this.getPicFileName().la

stIndexOf("."),this.getPicFileName().length());//验证图片是否存在

try{

FileOutputStream fos=new FileOutputStream(this.getSavePath()+"\\"+picname); FileInputStream fis=new FileInputStream(getPic()); byte[] buffer=new byte[1024]; int length=0;

while((length=fis.read(buffer))>0){ fos.write(buffer,0,length);//复制图片

26


南通大学毕业设计(论文)

} }

}

}catch(Exception e){

this.setResult("提交失败"); return SUCCESS;

if(ManageDB.addImp(this.getImpId(),this.getImpName(),this.getImpGender(),this.getImpBirth(),this.getImpEmail(),this.getDepartId(),this.getImpRoll(),this.getImpSalary(),this.getImpTel(),picname,this.getImpBio(),this.savePath.substring(1,this.savePath.length())+"/")){//判断是否添加成功

}else{

this.setResult("提交失败"); } }else{

this.setResult("已经有该编号的职工"); }

return SUCCESS; }

this.setResult("提交成功");

5.3 修改部门模块的实现

当需要修改部门信息时,可以点击编辑部门进行修改部门,修改部门主界面如图5-3所示:

27


南通大学毕业设计(论文)



5-3修改部门主界面

修改部门主要代码在EditDepartAction中。EditDepartAction.java中主要代码: public String execute(){

String departId=this.getDepartId(); String departDescrip=

(String)(ActionContext.getContext().getSession().get("departDescrip"));//获取部门描述 String departName=

(String)(ActionContext.getContext().getSession().get("departName")); //获取部门名字

System.out.println(departId+"##"+departName+"##"+departDescrip);

int i=ManageDB.updateDepartment(departId,departName,departDescrip);//修改信息 if(i==1){

this.setResult("修改成功");//返回信息

}else{ }

28

this.setResult("修改失败");//返回信息


南通大学毕业设计(论文)

}

this.setRead(false); return "success";

5.4 修改密码模块的实现

修改密码主页面,如图5-4所示:



5-4 修改密码主页面

员工模块中修改密码的核心代码如下: public String execute(){

String impId=

(String)(ActionContext.getContext().getSession().get("user")); if(!newpwd.equals(renewpwd)){//判断两次密码输入情况

this.result="两次输入的新密码不相同"; return "success";

}else{

int i=ManageDB.changePwd(impId,oldpwd,newpwd);//调用密码修改 if(i==0){//检查旧密码是否正确

this.result="请检查您输入的旧密码是否正确";

}else{

this.result="修改成功"; }

return "success";

29

}


南通大学毕业设计(论文)

}

public static int changePwd(String impId,String oldpwd,String newpwd){ Connection conn=null; Statement stmt=null; try{



Context initial = new InitialContext();



DataSource ds = (DataSource)initial.lookup("java:comp/env/jdbc/rsglxt"); conn = ds.getConnection();//获取连接

String sql=

"update

userinfo

set

pwd='"+newpwd+"'

where

impId='"+impId+"'

pwd='"+oldpwd+"'";//sql语句

stmt=conn.createStatement(); int i=stmt.executeUpdate(sql); if(i==1){//修改成功

return 1;



}

}catch(Exception e){

e.printStackTrace();

}finally{

try{if(conn!=null){conn.close();}

if(stmt!=null){stmt.close();}//关闭连接

}catch(SQLException e){ e.printStackTrace(); }

} return 0; }

30

"+"and


南通大学毕业设计(论文)

第六章 总结与展望

6.1 总结

本系统以J2EE技术为开发平台,结合中小企业人事管理的现状,研究与实现了一套适合中小企业的人事管理方案。本系统融入分布式组件技术,网络系统构架采用Browser/Web/DataBase3层体系结构,利用JSP开发实现人事管理系统的服务器,利用MySQL5.0实现数据库服务器,利用Web浏览器实现客户端。同时本系统的各模块之间相互独立,耦合性较弱。

本人在该系统的开发过程中获益颇多,不仅对Struts2技术进行了尝试,而且对数据库技术和软件编码的调试有了更深的研究,进一步提高了项目的开发经验,对本人今后的更好发展提供了帮助。

6.2 展望

由于时间和技术等方面的原因,本系统还存在诸多不足之处,需要在如下部分进一步完善:系统功能还不完善,很多功能尚未实现。比如员工调动,留言板或者站内信系统的实现。同时本系统的表现形式还有待加强,例如可以结合Ajax技术以带给用户更好的客户体验等等。如果今后还有机会本人还会继续完善系统性能,使其功能更加全面,提高系统稳定性,最终有可能走向产品化应用的目的。

31


南通大学毕业设计(论文)

参考文献

[1] 李刚轻量级J2EE企业应用实战[M]电子工业出版社2009 [2] 朱顺泉管理信息系统原理及应用[M]机械工程出版社,2005.

[3] 禹智昌人事管理信息系统的设计与开发[D]工程硕士学位论文,2009. [4] 卫红春信息系统分析与设计[M]西安电子科技大学出版社,2004.

[5] 刘中兵,李伯华,邹晨JSP数据库项目案例导航[M]清华大学出版社,2006.

[6] Don BrownChadDavis and Seott StanliekStruts 2 in Action[M] Mannin Publieations20085.

[7] 张卫争Struts框架下Web应用系统的开发与研究[M]太原理工大学,2008.05 [8] 刘伟基于J2EEWeb应用及其安全框架研究与实现[J]西北大学,2008.06 [9] 张海藩软件工程导论[M]北京:清华大学出版社,2005.07

[10] Lvar JacobsonObject-Oriented software Engineering1[M]人民邮电出版社,2005.10 [11] 丁月华J2EE平台上MVC模式的实现[M]武汉化工学院学报,2006

[12] 苗春义等著Java项目开发全程实录[M]北京:清华大学出版社,2008 ........忽略此处.......

32


本文来源:https://www.dywdw.cn/06fa5bc85df7ba0d4a7302768e9951e79b8969c1.html

相关推荐
推荐阅读