企业员工管理系统张志斌

更新时间:2024-06-04 09:41:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

山西工程职业技术学院

毕 业 论 文

题 目:企业员工管理系统

姓 名:作 张 志 斌 者 学 号:作 105060802017 者 班 级:作 软 02 者 专 业:作 软 件 工 程 者 系 别:作 计 算 机 者 指导教师: 者

2011年 5 月 20 日

企业员工管理系统

目 录

摘 要 ...................................................................... 1 1 绪论 ...................................................................... 2 1.1 研究背景 ................................................................ 2 1.2 本课题研究现状 .......................................................... 2 2 企业信息管理系统分析 ...................................................... 4 2.1需求分析 ................................................................ 4 2.2 技术可行性 .............................................................. 5 2.3 环境可行性分析 .......................................................... 7 2.4 系统结构可行性分析 ...................................................... 7 3 企业信息管理系统设计 ...................................................... 9 3.1 数据库设计 .............................................................. 9 3.2 系统功能模块详细设计 ................................................... 14 4 系统实现 ................................................................. 19 4.1 用户操作文件总体架构 ................................................... 19 4.2 技术难点 ............................................................... 29 5 系统测试 ................................................................. 30 5.1 界面测试 ............................................................... 30 5.2 功能测试 ............................................................... 30 5.3 需求测试 ............................................................... 31 5.4 性能测试 ............................................................... 31 5.5 企业员工信息管理系统的测试 ............................................. 31 总结 ....................................................................... 32 参考文献 ................................................................... 33 致谢 ....................................................................... 34

摘 要

在当今社会,互联网空前的发展,给人们的工作和生活带来了极大的便利和高效,信息化,电子化已经成为节约运营成本,提高工作效率的首选。考虑到当前大量企业的企业员工管理尚处于手工作业阶段,不但效率低下,还常常因为管理的不慎而出现纰漏。因此根据部分企业提供的需求,设计此企业企业员工管理系统,以帮助企业达到企业员工管理办公自动化、节约管理成本、提高企业工作效率的目的。

根据实际需求,“企业员工信息管理系统”项目采用模块化的设计思想,在Windows XP操作系统环境下,搭建JSP运行环境JDK+TOMCAT,通过使用JAVA脚本语言完成动态的、交互的web服务器应用程序,实现员工个人信息查询、个人业绩查询及用户密码修改功能。

本系统具有多方面特点:系统功能完备,用户使用方便简捷,人性化的用户界面,安全保密设置齐全,大大减少了操作人员和用户的工作负担,提高了企业员工信息管理的工作效率和企业的信息化的水平。

关键词: java;jsp;信息管理

1

1 绪论

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识。作为计算机应用的一部分,使用计算机对企业员工信息进行管理,具有着手工管理所无法比拟的优点。这些优点能够极大地提高企业员工管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。根据以上情况,大量企业已经实施建立企业员工信息管理系统, 因为企业员工信息管理是一个企业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以企业员工信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。可以解决一直以来人们使用传统人工的方式管理文件档案存在着的许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算实现企业企业员工档案的管理势在必行。企业员工管理系统是现代企业管理工作不可缺少的一部分,是适应现代企业制度要求、推动企业劳动企业员工管理走向科学化、规范化的必要条件。

企业员工信息管理系统是针对企业信息管理部门的大量业务处理工作用计算机进行全面现代化管理,该系统必须具备以下基本功能:

(1)企业员工档案管理数据库及表的操作。实现对企业员工档案管理数据库及表的创建,表中数据的维护。

(2)企业员工档案信息的管理。实现企业员工信息的添加、保存、修改和删除等。 (3)企业员工档案信息的应用。实现企业员工信息的查询、统计和企业员工资源的利用等。 1.1 研究背景

现代信息技术的发展,在改变着我们的生活方式的同时,也改变着我们的工作方式,使传统意义上的企业员工管理的形式和内涵都在发生着根本性的变化。企业员工信息管理的内容也己经转变为对更为广泛的系统价值的追求。信息管理,如今已是一个热门话题,它已为许多企业所采用。在现代化的进程中,引入现代管理的思想,建立一套可面向企业单位的员工信息管理系统,也是十分必要的。

本课题基于我国企业管理信息化建设现状,结合在实际工作中所遇到的问题和收获,对企业员工管理系统在设计开发等方面进行研究,重点研究系统开发中所采用的软硬件平台规范、数据库结构设计、开发工具的选择与使用,目的是从技术手段的角度阐述如何实现企业从传统经营管理模式向信息化管理模式转变的过程,以及企业员工管理系统在企业管理信息化中所起到的重要作用。 1.2 本课题研究现状

目前,在国内外各大企业单位中,企业员工信息管理系统的使用是非常广泛的。同时,有很多的软件开发商也开发了许多基于各种行业的企业员工管理学系统。而不同的企业具

2

有不同的企业员工管理制度,这就决定了不同的企业需要不同的企业员工管理系统。而且,企业管理信息量大、操作繁琐、传统的方式不再适应新的工作需要,开发研制适合企业的企业员工管理系统,使其具有整体性强、流程简单、操作方便、功能丰富和通用性强等特点,是加快企业人才管理工作办公自动化、信息资源化和管理科学化建设进程必要途径。因此建立适合企业的管理信息系统,是促进企业信息高速公路的发展,为企业的发展提供条件的重要课题。

1954年美国通用电气公司安装的第一台商业用数据处理计算机,开创了信息系统应用于中小企业管理的先河。二十世纪50年代中期到60年代中期,EDPS在中小企业中得到广泛应用,主要是用计算机部分地代替手工劳动,进行一些简单的单项数据处理工作,如计算工资、统计产量等。

80年代在中小企业中开始使用一种典型的管理信息系统-MRPⅡ(制造资源计划)。MRPⅡ于1977年提出的,它以MRP为核心,将生产制造、财务会计、市场营销、工程管理、采购供应以及信息管理等各个部门纳入整体管理之中,构成了完整运作体系。

90 年代以来 MRPⅡ也逐渐发展成为新一代的中小企业资源系统(ERP)。ERP在MRPⅡ基础上将供应商和中小企业内部的采购、生产、销售以及客户看作一个紧密联系的供应链,通过信息技术和管理理论对中小企业的物流、资金流和信息流进行全面的集成管理,以提高供应链的运行效率,追求中小企业资源的合理高效利用,提高中小企业在全球市场中的竞争能力。以 MRP Ⅱ /ERP 为代表的现代中小企业管理信息系统主要支持中小企业内部管理业务。

随着网络的迅猛发展,出现了各种管理思想和模式的管理信息系统,如客户关系管理(CRM)、供应链管理(SCM)、商业智能(BI)、电子商务(EC)和计算机集成制造系统(CMIS)等。中小企业管理信息系统逐步会发展成为一种融合各种管理思想和信息技术的面向产品生命周期的集成系统,以实现资源共享、数据共享、适应网络经济的充分柔性的中小企业管理信息系统。

企业级信息管理涉及到众多的项目、人员、数据和报告,如果没有一个有效的信息管理系统来支持和提高工作效率,企业信息管理将会难以实施。现在众多的软件公司都开发出了自己的企业信息管理信息系统,包括微软公司的MicrosoftProject2003;Primavera公司的Primavera Project Planner for Enterprise;Welcom公司的Open Plan等,这些都是比较优秀的企业项目信息管理软件,但软件只是一个辅助工具,如果没有首先建立一个科学的企业信息管理体系,则企业项目管理软件将难以发挥作用。

因此,研究如何建立一个精简、有效的企业信息管理体系,企业信息管理信息系统,如何有效支持企业项目管理体系,从而提高企业的项目管理能力,是具有非常重大的实际应用意义的。

3

2 企业信息管理系统分析 2.1需求分析

2.1.1 功能需求

随着经济的迅速发展,企业的规模越来越大,企业的管理也越来越复杂,组织机构越来越庞大,组织的划分也越来越细,对企业各组织部门的管理以及各部门内部各职务的管理变的十分复杂,需要借助于计算机来进行管理。企业人员数量的增多,对员工的管理也是一项繁重的工作,不仅要对员工的基本信息进行管理,还要对员工的动态信息进行管理,例如调动信息,离职信息等,企业应对员工的这些动态信息及时的进行登记,只有合理的对员工进行管理,企业才能有条不紊的运行。

进入企业的员工要与企业签订合同,合同管理关系到员工和企业双方的利益,因而需要进行认真的管理。为了企业扩展的需要,需要招聘新的人才,为企业注入新的血液,所以招聘信息以及应聘人员的信息的管理也相当重要。经济迅猛发展,竞争日趋激烈,企业为了能在竞争中立于不败之地,对员工的素质提出更高的要求,因而企业需要定期对员工进行培训,以便员工能更好的掌握新知识、新技术,提高工作效率,培训管理就是对企业开展的培训进行规划管理。

此外,为了进一步调动员工的积极性,适当的发放福利也是必要的,所以对福利的管理也是必不可少的。考虑到对系统的安全控制,需要对登录该系统的管理员进行验证,因此涉及到对系统管理员的管理,综上分析,该系统应具备管理员登录管理功能,组织管理功能,人事管理功能,合同管理功能,招聘管理功能以及福利管理功能等。

根据以上分析,可得系统的功能模块划分,系统功能模块图如图2-1所示。

企业员工信息管理人事管理 考勤管理 招聘管理 薪酬管理 系统管理 人力规划 主管部门审批 人事部门审批 员工考勤登记 考勤分析报表 考勤规划设置 招聘信息管理 薪酬登记 薪酬修改 薪酬查询 添加用户 用户管理 图2.1 企业员工信息管理系统功能模块图

系统功能模块图展示了该系统的模块划分,是系统总体功能的初步分析概括。管理员

4

登录后,可以在主控界面查看统计分析信息,使用帮助信息,通过查看使用帮助信息可以了解系统操作的注意事项以及一些具体操作的使用说明,熟悉系统的操作规范后,管理员可以对人事管理,考勤管理,招聘管理,薪酬管理,培训发展管理,系统管理等模块进行相应的操作,从而实现对各个模块的管理。 2.1.2 数据需求

(1)数据录入和处理的准确性和实时性

数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。数据的输入来源是手工输入。手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。

在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。

(2)数据的安全性

本系统为企业人事管理部门设计,因此只有特定的人事管理者才能对数据实现增,删,改,查等操作。未获授权人员不能进入系统。

(3)数据的备份

要定期对数据库中的数据进行全部或新增部分的备份工作,以保证在硬件出现故障或人为原因导致无法运行时是可以快速及时的还原到原来的正常状态。

2.2 技术可行性

2.2.1 程序语言的选择

JSP(JavaServer Pages)是一种新动态网页技术标准,类似其他技术标准.在传统的网页HTML文件(*.htm,*.html)中加入Java程序片断(Scriptlet)和JSP标签,构成了JSP网页(*.jsp)Servlet/JSP Container收到客户端发出的请求时,首先执行其中的程序片断,软后将执行结果以HTML格式响应给客户端,其中程序片断可以是:操作数据库,重新定向网页以及发送E-Mail等等,这些都是建立动态网站所需要的功能.所有程序操作都在服务器端运行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP称为Server-side Language.所以被许多人认为是未来最有发展前途的动态网站技术之一。

经过比较,PHP功能相对简单,不适合作大程序,而CGI效率相对较低,所以也不考虑,因为该系统并没有原有的基础平台需要扩展,也不需要与其他系统进行太多的交互,所以使用J2EE的模式并不能够体现出J2EE本身的优势,而JSP又是J2EE的核心技术之一,可以随时升级为J2EE程序,这里暂时不考虑采用J2EE,这样只需要在ASP和JSP中进行选择.在进行了诸多因素的比较之后,最终认为目前这个阶段比较合适的是JSP,而选择Struts架构作为开发的主体框架,选用Hibernate作为数据持续性处理层,则是考虑到了其高速的开发效率,及代码重用性高,易于维护等各种优势。其最终目的是希望提高系统底层业务逻辑的可重用性,增加系统的可扩展性,降低系统维护成本。 2.2.2 JSP技术特点

5

·将内容的生成和显示进行分离

使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面.使用JSP标识或者小脚本来生成页面上的动态内容.生成的内容的逻辑被封装在标识和JavaBeans组件中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面而不影响内容的生成。

·一次编写,到处运行

作为Java平台的一部分,JSP拥有Java编程语言”一次编写,到处运行”的特点,随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,但并不影响当前的应用。

·JSP的平台适应性更广

这是JSP比ASP的优越之处,几乎所有的平台都支持Java,它们可以在任何平台下通行无阻。虽然NT的OS占据了很大的市场的份额,但在服务器方面UNIX的优势仍然很大。从一个平台移植到另一个平台,JSP和JavaBeans甚至不用重新编译,因为Java字节码都是标注的字节码与平台无关。

·数据库连接技术

很多的OS中都带有JDBC驱动程序,Java就通过JDBC与数据库连接,执行查询,提取数据等操作。Sun公司还提供了JDBC-ODBC的桥连方式,因此Java也可以访问带有ODBC驱动的数据库,目前大多数数据库系统都带有ODBC驱动,所以Java能访问诸如Oracle、Sybase、MS SQL Server 和Access等类型的数据库。 2.2.3 操作可行性

对于用户来说,本系统只要求使用者掌握一定的上网经验,经过仔细设计和测试之后的系统具有操作简单,方便灵活等优点,足可以满足各种用户的不同需求,同时也方便了公司的内部管理。管理人员及用户一定会在短时间内掌握并熟练使用。只要动一动鼠标键盘就可以达到想要的效果。 2.2.4 经济可行性

系统的经济可行性指的是对组织的经济状况和投资能力进行分析,对系统建设、运行和维护费用进行估算,对系统建成后可能取得的社会及经济效益进行估计。

本模块简单易开发,且开发需要资金少,系统开发运行后,可以实现企业员工信息管理的计算机化,节省了人力、物力,将人从繁重的工作业务中解脱出来,减少了信息管理中无意的错误,节省了大量的时间,管理效率也大幅度提高,因此,在经济上是可行的。所带来的效益远远大于系统软件的开发成本。在经济上完全可行。 2.2.5 综合

综上所述,本系统使用JSP开发技术,工作平台为应用界面友好且功能强大的由MX MyECplise软件,服务器端脚本用JAVA脚本来编写,客户端脚本也用JAVA来编写,数据库使用Microsoft SQL Server 2000数据库,服务器是TOMCAT。在大学的学习中,已经自

6

学过JAVA这种语言,并且曾经参加实训开发项目,有一定的实地开发经验。且热爱计算机科学,又刻苦钻研的精神,经过大学四年的学习,相关课程已基本熟练掌握,本系统是在学校开发,遇到问题可以与同学一起研究,再加上指导老师的指导。因此在技术上能够适应本系统的开发。

2.3 环境可行性分析

2.3.1 软件环境

·操作系统:Win2k Server sp4

·数据库: Microsoft SQL Server 2000 Enterprise Edition sp4 ·Web服务器:TOMCAT

·IDE;Eclipse3.1.1+Myeclipse4.1.1GA+Lomboz+emf,Dreamweaver8 ·外部包:Struts.jar Hibernate.jar 2.3.2 硬件环境

AMD Athlon 64 3000+,KingMax PC3200 512MB × 2,Gainward NV35XT Seagate SATA 8M 120GB × 2

2.4 系统结构可行性分析

2.4.1 模式采用 本系统采用B/S模式。

B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。

目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。对一个稍微大一点单位来说,系统管理人员如果需要在几百甚至上千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,

7

而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的。因此,维护和升级革命的方式是“瘦”客户机,“胖”服务器。

现在的趋势是凡使用B/S架构的应用管理软件,只需安装在Linux服务器上即可,而且安全性高。所以服务器操作系统的选择是很多的,不管选用那种操作系统都可以让大部分人使用windows作为桌面操作系统电脑不受影响,这就使的最流行免费的Linux操作系统快速发展起来,Linux除了操作系统是免费的以外,连数据库也是免费的。 2.4.2 Struts架构

随着Web开发技术的日益成熟,在Web开发开发领域中出现了许多设计好的软件开发框架,Struts就是一种基于MVC经典设计模式的框架,也是当前Web开发中比较成熟的一种框架。

2.4.3 经典MVC模式

MVC(Model-View-Controller)模式,即模型-视图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个组成部分。

·模型(Model):业务逻辑层。实现具体的业务逻辑,状态管理的功能。

·视图(View):表示层。即与用户实现交互的界面,通常实现数据输入和输出功能。 ·控制器(Controller):控制层。起到控制整个业务流程(Flow Control)的作用,实现View和Model部分的协同工作。

MVC设计模式可以针对需要为同样的数据提供多个不同视图的应用程序,例如:公司产品数据库中同样的产品信息数据,但需要根据用户的不同需求在页面中显示其所需的不同产品信息。

MVC设计模式中,事件一般是指客户端Web浏览器提交的各种不同请求,这些请求由控制器进行处理,控制器根据事件的类型来改变模型或各个视图,视图也可以接受模型发出的数据更新的通知,依据数据更新的结果调整视图效果,呈现在用户面前。而模型也可以通过视图所获得的用户提交的数据进行具体业务逻辑的处理。原理如图2.2所示。

模型 数据库视图1 数据库视图2 控制器 事件 图 2.2 MVC设计模式的结构

2.4.2.1 Struts 1.2 开发框架

8

scot punishment other granttime totalize

float float float datetime float 8 8 8 8 8 赋税 额外补助 罚款 发放时间 总计 表 3.2.6用户表 字段名 id username password sex birthday createtime isadmin content 数据类型 int varchar varchar bit datetime datetime bit varchar 长度 4 50 50 1 8 8 1 2000 是否主键 是 描述 数据库流水号 用户名称 用户密码 用户性别 用户出生年月日 用户创建的时间 是否超级管理员 管理员级别 3.2 系统功能模块详细设计

3.2.1 功能设计

本系统主要用于对企业中的“人”进行管理。具体地讲,企业员工信息管理系统就是通过企业员工信息规划、员工考核、薪酬管理、员工激励、人才培训和开发等一系列手段来提高劳动生产率,最终达到发展目标的一种管理行为。具体实现目标如下。

实现对员工信息进行全面管理的功能。 设置企业员工基础信息管理功能。 设置员工考勤管理功能模块。 员工薪酬信息管理。

实现企业员工培训信息全程跟踪的功能。 实现企业的招聘信息、应聘信息的管理功能。 企业人才库管理功能。 系统用户信息的管理。

系统最大限度地实现了易安装性、易维护性和易操作性。

14

系统运行稳定、安全可靠。 3.2.2 模块设计

企业员工信息管理系统是针对中小企业对现有员工和新聘员工的一个WEB管理平台。主页功能模块主要包括以下功能模块:

人员管理:主要包括浏览人员信息、添加人员信息、人员信息的添加、人员信息的修改。

招聘管理:主要包括应聘人员信息的详细查看、删除、添加以及信息入库。 培训管理:主要包括培训计划的详细信息、信息删除、添加培训计划和填写培训总结。 奖惩管理:主要包括奖惩详细信息、删除详细信息、添加详细信息、修改详细信息。 薪金管理:主要包括薪金的修改、添加、删除。 3.3.2.1 企业员工信息管理系统功能模块之间的关系

基本信息管理功能集合

包括部门信息管理和员工信息管理等功能模块。此集合中功能模块的关系如图3.4所示。

员工基本管理 部门信息管理 员工基本信息管员工业绩信息管员工工作经历管理 图3.4员工基本信息管理模块关系图

员工基本信息管理模块是整个系统的核心。除了部门管理模块外,其他各个模块都针对每一个员工的一个方面进行管理,都需要提供员工编号等基本信息作为索引。

考核与待遇管理功能集合

包括考勤管理,工作考评管理和工资管理模块。此集合中功能模块的关系如图3.5所示。

员工考勤管理 员工基本信息员工工资管理 员工考评管理 图3.5 考核与待遇管理功能集合模块关系图 用户管理及权限控制功能集合

包括用户信息管理、权限控制等模块。权限控制对于企业员工信息系统来说是非常必

15

要的。部门与员工基本信息数据,包括考勤,考核工作和工资等信息都不是一般的员工可以随意添加和改动的。这些操作只有人力资源主管才有此权限。在本系统中,我们将系统用户划分了3大类:

人力资源主管:此类型用户是本系统中权限最高的用户。在本系统中的任何模块中,都可以进行添加,删除,修改等记录,并对所有数据进行查询显示的权限。

系统管理员:是为了维护本系统而创建的用户,可以对除“人力资源主管”用户以外的其他类型用户进行管理。

普通用户:权限最低的一类用户,除了可以修改自身的用户名和密码外,几乎没有其他数据库操作权限。在其他的模块中,此类用户只能浏览到与自己或自己的下属相关的数据,但是不能对数据进行修改或删除操作。在员工工作考评模块中,普通用户可以输入对自己下属员工的工作评价和资金系数等数据。

此集合中功能模块的关系如图3.6所示

修改超级HR主管的密码 超级HR主管用户 创建和管理普通HR主管普通HR主管用户 修改自身的用户名和密码 系统用户信息系统 创建和管理普通系统超级系统管理员用户 创建和管理普通用户 修改自身的用户名和创建和管理普通用户 普通系统管理员用户 创建和管理普通用户 修改自身用户名和密码

图3.6 用户管理功能集合模块关系图

用户登录模块开始,对系统的身份进行认证。身份认证可以分为以下两个过程: ? 确认用户是否为有效的系统用户;

16

? 确定用户的类型;

第一个过程决定用户能否进入系统。第二个过程根据用户的类型决定用户的操作权限,从而决定用户的工作界面。

开始 N Y 登录 错误3次 退出系统 进入系统主界面

图3.7 系统登录验证流程图

在图3.7中可以看到,每个用户有3次机会进行身份认证。如果3次输入的用户名和密码都无法与数据库中的数据匹配,则强制退出系统。 3.2.2.3 考评模块查询流程图

进入系统后,不同类型的用户所能进行的操作也不一样。这些操作笼统可以分为用户管理模块和人事管理模块。由于篇幅所限,五法完整地描述人事管理模块的系统流程,只是把它分为两个部分:考评信息的高级管理和查询;普通用户考评信息管理查询。

普通用户对考评管理和查询。

普通用户人事考评信息管理和查询部分非常简单,,因此在很读模块中,普通用户只有查询功能。系统流程见图3.8所示:

进入系统 部门信息管理 查询部门信息 员工信息管理 查询员工新名列表 工作考评管理 下属工作考评信息管理

图3.8 考评管理和查询流程图

“人事主管”用户对考评信息的高级管理和查询。系统流程如图3.9所示:

17

进入系统 添加用户信息 修改用户信息 部门信息管理 删除用户信息 查询部门信息 员工基本信息 员工照片管理 员工信息 员工部门家庭成员信息 工作经历信息 添加考评信息 修改考评信息 部门信息管理 员工信息删除考评信息 查询考评信息

图3.9 考评模块查询流程图

18

4 系统实现

4.1 用户操作文件总体架构

用户操作模块主要包括用户登录和人员管理模块,具体功能如下: 用户登录模块:用于登录系统。

人员管理模块:用于浏览、添加和修改人员信息。 4.1.1 用户登录模块设计

系统登陆是企业员工信息管理中最先使用的功能,因为用户登陆在数据库中使用的是人员表,人员表中有一个isadmin字段,是来标识是否是管理员的。在登陆时要根据数据库的这个字段来判断此用户是否具有管理员的权限。在网页里添写用户名和密码后点击【登陆】按钮,网页会访问一个URL,这个URL是“logon.do?action=logon”,代码如下:

在这个表单的name的值是usersForm,它是Struts的ActoinForm的实现类在配置文件中的名字,如下所示:

type=\

action是Struts的Action的URL,他们在Struts的配置文件中都是已经配好的,

19

height=\>

class=\

type=\name=\value=\重置

name=\

如下所示:

type=\scope=\

在这个配置文件中,可以了解到如下信息:

根据name=\可以找到与之相对应的ActionForm的实现类“com.bOS.bPRO_PersonManage.actionform.UsersForm”。

根据type=\可以找到处理用户数据的Action类。

根据可以了解,这个Action返回success时,页面会被转到manage.jsp文件,这就是登陆成功的页面。如果当Action返回failed时,页面会被转到failed.jsp文件,这个文件是当用户登陆失败将要转到的页面。

Struts的Action实现类的execute()方法是最先被执行的,这个方法本身也没有具体的事务,而是根据action的参数不同执行相应的方法。在登陆页里面可以找到有一个“action=logon”的字样,它的目的就是在这里做逻辑判断。当action=logon时调用logon()方法。logon()方法从UsersForm中得到用户提交的数据,然后在调用UsersDao()的logonUsers()方法。并且把UsersForm转成Users类做为logonUsers()方法的参数。调用后会返回一个boolean型的值。如果为真,则返回“mapping.findForward(\”否则返回“mapping.findForward(\”也就是当用户登陆成功后,返回给用户登陆成功的页面,登陆失败后返回用户一个登陆失败的页面。那么UsersDao的logonUsers()方法是根据什么得到的返回值呢,现在就让我们看看这个方法。这个方法先通过HibSessionFactory得到一个Hibernate的Session并且开始一个事务,Session再像使用一个欲编译似的命令似的东西,设定参数、提交事务和最后在关闭Session.。得到一个List里面就存储着所有查询出的结果。根据这个结果就可以判断出该用户是否有登陆的权根了,在返回true 或者false。就这样合法的用户就可以顺利的登陆了。那刚才那些有些类似于欲编译的东西是什么呢,这些就是Hibernate特有的查询语言,被称为Hibernate 查询语言(HQL),而它本身也就是使用的JDBC的欲编译技术。 4.1.2 人员管理模块设计

人员管理模块主要包括浏览人员信息、添加人员信息、人员信息的添加、人员信息的修改。此模块文件架构如图4所示。

各项管理工作都是在用户成功登陆后的管理页面进行的,在管理控制页面的左侧是各

20

path=\name=\

项的相关链接,右侧是操作平台。管理控制页面右侧实际上是一个iframe,如下所示:

在左侧的链接中使用target=\就可以在这个iframe中打开新的链接了。

在Struts配置文件中,添加人员信息的链接没有使用ActionForm类,也没有使用Action的实现类,如下所示:

adduser.jsp文件,只是一个普通的JSP文件,但是它的表单元素都是与UsersForm相对应的,UsersForm如下所示:

package com.bOS.bPRO_PersonManage.actionform; import com.bOS.bUtil.DateUtil;

import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import com.bOS.bPRO_PersonManage.en.Users; public class UsersForm extends ActionForm { public String getContent() { return content; }

public void setContent(String content) { this.content = content; }

private Long id; private String username; private String password; private Byte sex; private String birthday; private String createtime; private Byte isadmin; private String content;

public String getCreatetime() {

21

return createtime; }

public void setCreatetime(String createtime) { this.createtime = createtime; }

public Long getId() { return id; }

public void setId(Long id) { this.id = id; }

public Byte getIsadmin() { return isadmin; }

public void setIsadmin(Byte isadmin) { this.isadmin = isadmin; }

public String getPassword() { return password; }

public void setPassword(String password) { this.password = password; }

public String getUsername() { return username; }

public void setUsername(String username) { this.username = username; }

public void reset(ActionMapping arg0, HttpServletRequest arg1) { this.id=null; this.username=null; this.password=null; this.isadmin=null; this.createtime=null;

22

this.content=null; this.sex=null; this.birthday=null; }

public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) {

return null; }

public String toString() {

StringBuffer toStr = new StringBuffer(); toStr.append(\

toStr.append(\

toStr.append(\ toStr.append(\ toStr.append(\

toStr.append(\ toStr.append(\ toStr.append(\ toStr.append(\ toStr.append(\ return toStr.toString(); }

public String getBirthday() { return birthday; }

public void setBirthday(String birthday) { this.birthday = birthday; }

public Byte getSex() { return sex; }

public void setSex(Byte sex) { this.sex = sex; }

23

public Users populate(){ Users u=new Users(); u.setId(getId());

u.setIsadmin(getIsadmin()); u.setContent(getContent()); u.setUsername(getUsername()); u.setPassword(getPassword()); u.setSex(getSex());

u.setBirthday(DateUtil.parseToDate(getBirthday(),DateUtil.yyyyMMdd));

u.setCreatetime(DateUtil.parseToDate(getCreatetime(),DateUtil.yyyyMMddHHmmss));

return u; } }

UsersForm类中的reset()方法作用是当用户点击“重置”按钮时,清空input输入框的内容,toString()方法覆盖了Object和toString()方法,populate()方法很有,它把UsersForm转化成Users实体类,大大方便了程序在对数据库操作时使用的方便。而且这个方法中还把用户的生日等表单元素的值由字符型转成日期类型。

在adduser.jsp页面中的action上可以看到它要提交的URL,如下所示:

modifyuser

Action

“com.bOS.bPRO_PersonManage.action.UsersAction”,如下所示:

type=\scope=\

在UsersAction找到参数action等于adduser时所调用的方法addUsers(),它只是把从UserForm表单转化成的User类做为参数传给了UsersDao的addUsers()方法。在由这个方法向数据库添加人员信息,如下所示:

public void addUsers(Users users) throws HibernateException { users.setCreatetime(new java.util.Date());

24

path=\name=\

Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); session.save(users); tx.commit();

HibSessionFactory.closeSession(); }

如果添加成功页面会被发转到user.do?action=listuser的URL。user.do的配置文件如下所示:

type=\scope=\

这样就在页面做一次提交时它访问了二次UsersAction,第一次的作用是向数据库中添加信息,随后又把所有人员信息取出来显示给用户,同样UsersAction还只是调用UsersDao,取数据库的具体操作在UsersDao文件中,他这次调用的是listUser()方法,如下所示:

public List listUser() throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); Query query = session

.createQuery(%u from Users as u order by createtime\ List list = query.list(); tx.commit();

HibSessionFactory.closeSession(); return list; }

UsersAction取出从UsersDao中数据,在把它存到request里,然后返回return mapping.findForward(\在Strutsr的配置文件里返回页是listuser.jsp。所有用户的信息都在这个页中显示出来。如下所示:

25

path=\name=\

<% List list=(List)request.getAttribute(\ if(list!=null&&list.size()>0){ Iterator it = list.iterator(); while (it.hasNext()) {

Users u = (Users) it.next(); %>

height=\height=\

align=\align=\

DateUtil.yyyyMMdd))%> 

height=\

align=\

height=\

align=\

><%=new height=\

>

Byte(\是\否\

align=\href=\除

<%

}

}else{%>

26

height=\

align=\><%=StringUtil.notNull(DateUtil.parseToString(u.getBirthday(),

  

对不起,没有添加人员信息!!!

<%}%>

在显示页中,从request里面的取出数据,如果有则显示在页面上,使用“list!=null&&list.size()>0”判断如果在没有数据的情况下,将对用户提示说“对不起,没有添加人员信息!!!”。

这是添加人员信息的整个过程,在这个过程中,有一部分是用于显示人员信息的,就是“user.do?action=listuser”,它是显示人员信息的地址。如果在网页中直接点击这个链接地址,同样也会调用出所有用户的信息。这就是“浏览人员信息”的链接。

人员信息的列表的最后一列可以对该条记录做删除和修改。删除的链接地址是“modifyuser.do?action=deleteuser&id=<%=u.getId()%>”它向Action的实现类提交了两个参数,一个是action=deleteuser是固定不变的,另一个是该用户的id这是根据不同记录取出来的。在UsersAction类中根据action的值可以找到与其相对的方法,如下所示:

private ActionForward deleteUser(ActionMapping mapping, ActionForm form, HttpServletRequest HibernateException {

Long id=new Long(request.getParameter(\ Users users=new Users(); users.setId(id); dao.deleteUsers(users);

return mapping.findForward(\ }

在这个方法里得到页面提交过来的用户ID,把这个id存在Users表中的实例中,传给dao的deleteUsers()方法,我们可以看到关于数据库方面的操作都被封装在Dao中。具体的删除操作的代码如下所示:

public void deleteUsers(Users users) throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); session.delete(users); tx.commit();

HibSessionFactory.closeSession();

27

request, HttpServletResponse response) throws

}

删除用户时和添加用户一样都是先得到一个Hibernate的Session,后调用它的delete()方法就可以了,操作完成后千万记得要提交事务,即调用commit()方法,和关闭Session。

修改人员的信息时必须先把要修改的人员信息先查找出来,让用户可以直观的根据以前的信息修改。这样在点击修改时也要传给Action一个用户ID,用来查询出用户信息,如下所示:

根据页面的链接可以在Struts的配置文件里找到相应的配置信息,如下所示:

path=\

type=\

它调用了UsersAction类,返回到updateuser.jsp文件,在UsserAction中同前面一样也是根据action的参数来识别出调用selectUser()方法的,方法实现如下所示:

private ActionForward selectUser(ActionMapping mapping, ActionForm form, HttpServletRequest HibernateException {

Long id=new Long(request.getParameter(\ Users u=dao.loadUsers(id.longValue()); request.setAttribute(\ return mapping.findForward(\ }

这个方法使在调用Dao的loadUsres()的方法后,得到一个Users的返回值,里面存着与此id相对应的人员信息,然后在把它存在request里。loadUsres()方法实现如下所示:

public Users loadUsers(long id) throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction();

Users u = (Users) session.load(Users.class, new Long(id)); tx.commit();

HibSessionFactory.closeSession(); return u; }

Hibernate在使用这个load()方法时比较特别,需要传入实体类的class,和要查询

28

request, HttpServletResponse response) throws

的用户ID。得到的返回值需要做一下强制类型转换。

首先要从request中取出人员信息,在转化成Users类型,然后显示在页面中。在显示是否是管理员的项时比较人特别。如下所示:

<%=new

Byte(\

onClick=\

name=\

type=\

<%=new

Byte(\

onClick=\

只是在显示给用户的看的。在表单不接收isadminhelp的value,只接收isadmin的value。

4.2 技术难点

4.3.1 参数传递中的中文乱码问题

由于浏览器中的参数传递是按字节传送,因此英文和数字不会有任何的问题,而中文汉字则由两个字节组成。为了解决这个问题,使用了下面的两种方法:

①<%request.setCharacterEncoding(“gb2312”);%>

②request.getParameter(\4.3.2 图片处理

在SQL Server2000的数据库中可以存放任何格式的图片,但是要将其转换为二进制的数据存入数据库,在调用时再将二进制数据转换为图片,这样虽然便于管理,但是在当前国内的网速来看,这样的方法是在是不可取。因此本系统的图片均是存放的相对路径,将图片放在系统根目录下的image文件夹中,按类分好,然后将其相对路径存入数据库的对应列中,这样可以大大提高网页浏览的速度。 4.3.3 HQL语言

本系统中,所有对数据库的操作都由Hibernate来完成,因此用到了大量的HQL语言。HQL是Hibernate设计的一套完整而实用高效的查询语言,它通过面向对象的语句结构实现了和SQL语言类似的功能。如果向表里插入一条数据的话,直接调用save()方法即可,但如果要使用查询功能的话,我按照一般的SQL语句的方法:from 表名 where 条件,却

29

总是找不到预期的数据,后来看书中发现,from后跟的是表对应映射的类文件名,而非表名,比如招聘表为invite,它对应的类为Invite.java,所以在from后要根Invite而不是invite。 4.3.4 安全性

将项目发布到互联网上后,有些用户不是点击超链接打开网站的某个页面,而是在地址栏中直接写,而后进入,试图避开身份验证,处于对安全性的考虑,本项目在用户登陆后才能进入的页面中,加入了一行判断,如果用户非法进入,则看到的将是一片空白页。

5 系统测试

在完成了程序的编写工作后,接下来将进行软件的测试,这里说的软件,并不单单是指程序本身,还包括其他方面。测试和开发一样,也是一项技术性很强的工作,有着很多的技巧。软件测试是软件质量保证的主要活动之一,因此,测试的质量直接影响软件的质量。

依据前面所说的测试对象,我们把测试划分为几个方面来进行测试。

5.1 界面测试

界面测试是测试过程中比较简单直观的一种测试方法,只要细心地按界面要求核对就行了。可这快往往是程序开发人员容易忽视和遗漏的地方。也是常常出Bug的地方。下面是界面测试中经常出现的几种Bug:

错别字,即界面中的标题或者文本内容中出现了错别字。这种Bug如果测试人员不细心,和难找出来,可能会出现在提示信息或界面中。

出现了一些根本读不懂的内容,一般多出现在程序的提示信息和一些较长的文本中。这种情况基本上出现在拼起来显示的提示中,页面的简单陈述是通过变量拼组起来的,通过程序将字一个一个地输出出来。通常是因为程序中的控制错误或是程序开发人员对程序没有进行认真的自测,导致出现这种Bug。

程序员自创的词语,虽然意思对,但不符合界面的标准及需求。这种情况基本上是由于开发人员使用一些专业术语,并且混杂着自己的理解出现Bug,主要是由于开发过程中团队合作没又明确的分工,没有统一的规范用语。

页面类似的内容中,明显有字体,字号不同的情况,使界面整体风格看上去不一致,这种情况只出现在没有CSS定义的情况下,或是已经定义的CSS,开发人员在开发过程中没有调用。

标题相近的程序及模块,把标题弄混。这种情况多是因为业务方面的定义名称很相似或很类似,并且业务实体方面也很类似,开发人员在开发过程中忽略了开发名称和模块,只单独地实现其功能。

5.2 功能测试

顾名思义,功能测试主要是测试程序模块是否实现了设计中所有要求的功能。功能测

30

试中需要注意的有:

查询功能中,有按单一查询条件进行查询的,也有按多个查询条件组合查询的,这里要注意多个查询条件之间的关系,还有一些常识性的问题,比如按月查询,闰年中二月的天数。

录入功能中,需要注意的是前台设置的数值长度是否大于后台数值长度,以及前台与后台的数据结构是否相符,很多时候录入功能无法实现是由于这些原因。还有就是必须录入的字段的设置是否有误。

测试删除功能中需要注意的是单击”删除”按钮后,一般会出现提示信息,询问是否确定删除。通常情况下,我们单击”确认”按钮查看信息是否被删除掉了,而忽略了单击“取消”按钮后程序的反应,这时有可能的是没有删除,还有一种可能是即便单击了“取消”按钮,也一样删除了数据。另外,在删除多条记录的时候,要注意连续选中的几条记录是否真正都被删除了,即如果再按照这种查询方式查询,是否还能查询出来。有的时候需要在数据库中设一个标志位,而不是真正的物理删除。所以在下一次查询中,可能还会被查询出来,这主要是因为在查询条件中没有将标志位考虑在内。

关于修改功能的测试,主要是看修改确认后是否数据真正已被修改了。这是最基本的功能,需要注意的是看是否能把不应该修改的数据也修改成功了。

5.3 需求测试

针对需求测试,是测试中很重要的一个环节。因为需求是在软件设计,开发乃至软件测试中重要的依据。要针对需求测试,首先就要对项目的需求和业务有一定的了解。这些需求很多时候是在实现增、删、查、改这些基本功能之上,针对项目和相关业务所作的一些逻辑上的控制。这就要求程序员在设计和编码的时候要去充分理解考虑需求。

5.4 性能测试

性能测试在软件的质量保证中起着重要的作用。通常我们把性能指标全部归结到硬件,操作系统和开发环境上,而忽略了代码本身性能上的考虑。性能需求指标中,稳定性、并访支撑能力以及安全性都很重要。作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。

5.5 企业员工信息管理系统的测试

在完成编码的工作以后,根据以上的方法和步骤进行了如下的测试:

· 界面测试:在不开启Web服务器的情况下,反复点击网页上的超链接,测试其连接情况,直到所有的链接都达到预期的效果。

· 功能测试:对网站的几大功能模块逐一测试,尽最大可能发现起潜在的错误。 · 性能测试:将程序以局域网的形式发布,查看其是否满足多用户的要求。 · 需求测试:根据需求分析的内容,测试网站是否和当初的设计一样。

通过这几方面的测试,我及时修正了系统中存在的问题,很好的提高了系统的性能,达到了目标。

31

总结

本系统开发的技术难点主要有两个方面:一是否业务逻辑的理解;二是数据库逻辑结构的设计。业务逻辑是依据空警管理系统的行业特点及其特殊的应用领域需要来进行设计的。只有在准确不理解一个系统的业务逻辑之后才可能开发出适应其应用的应用系统来,并且在系统之间模块的科学划分与结构组织都是在正确不理解实际应用的业务逻辑需求的前提下完成的。

数据库设计是应用系统开发的另一个难点,只有科学的数据库设计才能使系统具有良好的结构及良好的可编程性、可扩展性。数据库设计是直接影响系统运行情况及程序设计的一个重要因素。因此,在开发相关数据库方面的管理系统时,都需要充分考虑到科学性,结构性,规范性,安全性,可扩展等相关问题。

本次毕业设计是我工作前一次很好的演练和实践的机会。是培养独立思考问题和自学能力的锻炼,使我意识到必须努力学习才能才工作中体现自己的价值,适应社会的需要。

32

参考文献

[1] 刘洋.精通Hibernate.北京:电子工业出版社.2005

[2] 张秋余,杨玥. 基于用例的需求建模方法[J]. 计算机工程与设计,2006.19:3539-3541 [3] 张桂元.贾燕枫.Eclipse开发入门与项目实践.北京:人民邮电出版.2006 [4] 张桂元.Struts开发入门与项目实践.北京:人民邮电出版社.2005 [5] 史济民.软件工程――原理、方法与应用.北京:高等教育出版社.2002

[6] Solid Quality Learning. Microsoft SQL Server 2005:Database Essentials Step by Step. Microsoft Press. 2007

[7] 陆荣幸,郁洲. J2EE平台上MVC设计模式的研究与实现[J]. 计算机应用研究,2003,03:144-146. [8] MattheMacDonal.管理信息系统[J].电子工业出版社.2003. 3-8:102-108. [9] 孙卫琴.精通Hibernate:Java对象持久化技术详解.北京:电子工业出版社.2005

[10] Java Open Source Programming.Joe Walnes,Ara Abrahamian,Mike Cannon-Brookes,Pat Lightbody.Indianapolis,Indiana:Wiley Publishing,Inc.2004.

[11] 何成万,余秋惠. MVC模型2及软件框架Struts的研究[J].计算机工程,2002,06:274-276. [12] Gerald Post. Albert Kagan. Database management system:design consideration and attribute.2003

[13] John B.Miner.Donald P.Crane. Human Resource Management.Harper Collins College Publishers. 1995

[14] 李小喆,张晓辉,李祥胜.SQLServer 2000管理及应用系统开发[M].北京:人民邮电出版社.2002

33

致谢

在此论文完成之际,我衷心的感谢我的导师詹恩奇老师,感谢他对我的悉心指导。詹老师严谨的治学精神,忘我的工作热情,丰富的实践经验,高尚的品德和渊博的知识使我受益颇深。我不仅在学习能力,科研能力上取得很大的进步,而且学到了许多为人处世的道理。在论文写作过程中,从资料收集,开题报告,撰写初稿到修改定稿,詹老师从多个方面悉心指导,我才能顺利完成这篇论文。在学习和生活中,恩师所给予的至真至诚的关怀和谆谆教导,我将终生铭记,并将恩师作为今后工作和学习中的楷模,努力工作,以更加出色的成绩回报恩师。

感谢参加论文评审的各位专家,他们为本文提出了很有价值的意见和建议。同时还要感谢信息系的领导和老师们多年来对我的培养和支持,是他们为我提供了良好的学习环境和机会。

感谢我的父亲、母亲,正是他们这么多年以来的关心,鼓励和支持,才使得我可以走到今天,而且有勇气和信心继续努力下去。

34

致谢

在此论文完成之际,我衷心的感谢我的导师詹恩奇老师,感谢他对我的悉心指导。詹老师严谨的治学精神,忘我的工作热情,丰富的实践经验,高尚的品德和渊博的知识使我受益颇深。我不仅在学习能力,科研能力上取得很大的进步,而且学到了许多为人处世的道理。在论文写作过程中,从资料收集,开题报告,撰写初稿到修改定稿,詹老师从多个方面悉心指导,我才能顺利完成这篇论文。在学习和生活中,恩师所给予的至真至诚的关怀和谆谆教导,我将终生铭记,并将恩师作为今后工作和学习中的楷模,努力工作,以更加出色的成绩回报恩师。

感谢参加论文评审的各位专家,他们为本文提出了很有价值的意见和建议。同时还要感谢信息系的领导和老师们多年来对我的培养和支持,是他们为我提供了良好的学习环境和机会。

感谢我的父亲、母亲,正是他们这么多年以来的关心,鼓励和支持,才使得我可以走到今天,而且有勇气和信心继续努力下去。

34

本文来源:https://www.bwwdw.com/article/1qm6.html

Top