人力资源绩效考核系统开发与设计

毕业设计

题 目 人力资源绩效考核系统开发与设计

英文题目

学生姓名:

学 号:

专 业: 信息管理与信息系统

院 系: 数学与信息管理系

指导教师: 职称: 教授

二零一一年六月

了解其知识和能力结构,优势和劣势,需要什么,缺少什么。同时,绩效考核也

是判断培训效果的主要手段。

4、绩效考核是确定劳动报酬的依据

按劳分配是我们社会公认的企业员工的分配原则,不言而喻,准确地衡量“劳”

的数量和质量是实行按劳分配的前提。没有考核,报酬就没有依据。

5、绩效考核是对员工进行激励的手段

奖励和惩罚是激励的主要内容,奖罚分明是人事管理的基本原则。要做到奖

罚分明,就必须要科学地、严格地进行考核,以考核结果为依据,决定奖或罚的

对象以及奖或罚的等级。

6、绩效考核是平等竞争的前提

建立社会主义市场经济,需要鼓励企业竞争,也需要在企业内部鼓励员工之

间进行平等竞争,创造“比、学、赶、帮、超”的良好气氛。

最后,只有通过高水平绩效考核才能真正的使人力资本有效地转变成为人力

资源,并激活人力资源,使人的资本投入能得到相应的收益。

器) 的体系结构。本人力资源网站即采用这种两层模型结构实现。用户在浏览器端

登陆界面,实现绩效考核和查看等操作。

JSP 是目前流行的一种开发动态网页和基于Web 应用的编程语言。同时,JSP

以JAVA 语言为基础,可以在不同的硬件平台和操作系统下运行,大大提高了程序

的可移植性。所以本系统采用JSP 建立动态页面,oracle 创建和管理后台数据库。

等机制来组织可视化组件,无论从UI 界面上CSS 样式的应用,到数据解析上的异常处理,都可算是一款不可多得的JavaScript 客户端技术的精品。

本人力资源程序的展示界面及动态数据交换过程采用extjs 来实现。该程序中应用的extjs 采用二次封装,封装成java 标签在页面直接调用。

(1) JavaBean技术

JavaBean 是指由Java 语言编写的组件,每一个JavaBean 实现一个特定的

功能,通过合理的组织具有不同功能的JavaBean ,可以快速地生成一个全新的

应用程序。任何可以用Java 代码创造的对象都可以利用JavaBean 进行封装,并且其他的开发者可以通过内部的JSP 页面、Servlet 、其他的JavaBean 、applet 程序或者应用来使用这些对象。

c. 各个开发人员之间的分工明确。

由于基于Struts 框架技术实现的Web 应用系统中的控制层、业务层与表示

层3者之间各自相互分离,所以这样的设计方案能够使应用系统中的表示层的开发者(网页设计人员)与后台业务功能具体实现的Java 程序员各司其职和分工明确,并且可以并行开发,提高开发效率。

d. 简化表示层页面的设计和实现。

在Struts 框架中,应用系统的开发者可以在表示层的页面中大量地使用Struts 框架中所提供的定制标签库技术,以实现在页面中把业务逻辑处理的功能实现代码分离开。从而简化系统中表示层的设计和开发实现,进而避免在页面中出现大量的Java 脚本代码。

1.1. 系统实现手段

1.1.1.

name="HUMRES"

Java 虚拟机是一个想象中的机器, 在实际的计算机上通过软件模拟来实现。Java 虚拟机有自己想象中的硬件, 如处理器、堆栈、寄存器等, 还具有相应的指令系统。

Java 语言的一个非常重要的特点就是与平台的无关性。而使用Java 虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行, 至少需要编译成不同的目标代码。而引入Java 语言虚拟机后,Java 语言在不同平台上运

行时不需要重新编译。Java 语言使用模式Java 虚拟机屏蔽了与具体平台相关的信息, 使得Java 语言编译程序只需生成在Java 虚拟机上运行的目标代码(字节码), 就可以在多种平台上不加修改地运行。Java 虚拟机在执行字节码时, 把字节码解释成具体平台上的机器指令执行。 1.1.2. 数据库:oracle 10g

Oracle Database ,又名Oracle RDBMS ,或简称Oracle 。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。ORACLE 是以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一。具有可用性强、可扩展性强、数据安全性强、稳定性强等特点。 1.1.3. Myeclipse6.5

MyEclipse 企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse )是对Eclipse IDE 的扩展,利用它我们可以在数据库和JavaEE 的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE 集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。

在结构上,MyEclipse 的特征可以被分为7类: 1. JavaEE 模型 2. WEB 开发工具 3. EJB 开发工具 4. 应用程序服务器的连接器 5. JavaEE 项目部署服务 6. 数据库服务

7. MyEclipse 整合帮助

对于以上每一种功能上的类别,在Eclipse 中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse 结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。

简单而言,MyEclipse 是Eclipse 的插件,也是一款功能强大的JavaEE 集成开发环境,支持代码编写、配置、测试以及除错,MyEclips e6.0以前版本需先安装Eclipse 。MyEclipse6.0以后版本安装时不需安装Eclipse 。

1.1.4. Photoshop cs4

Photoshop 是Adobe 公司旗下最为出名的图像处理软件之一,集图像扫描、编辑修改、图像制作、广告创意,图像输入与输出于一体的图形图像处理软件,深受广大平面设计人员和电脑美术爱好者的喜爱。 1.1.5. Dreamweaver cs4

Dreamweaver CS4的界面几乎是做了一次脱胎换骨的改进,从中看到了更多的设计元素,让DW 也稍稍带着点苹果的味道。

布局按钮:这个按钮似乎和下方的代码、分割、设计按钮功能重复,目前还不明白DW 的意图,唯一增加的新功能是垂直分割,让代码和设计界面以垂直对比的方式呈现。

精简设计:它提供了更多的可视区域,同时可以把右边的菜单收缩到只剩下图标。对于习惯了Adobe 其他设计软件的朋友来说,这的确是非常贴心的设计。 应用程序开发增强:左上方是和数据相关的面板,包括数据库面板、数据绑定面板和行为面板;左下方则是文件与资源相关的面板,包括文件面板、相关资源面板、代码收集器等;右边则是设计相关面板,包括插入面板、CSS 样式表面板、AP 元素面板(用来为浮动层定位)。应该说这是一个万金油布局,几乎适用所有的开发者,同时,它也把大部分菜单展示在用户面前,其他的七种布局可以说只是在这个基础上进行一些排列和隐藏。

在下方的文档面板上,DW 新增加了一个实时预览功能——Live View 。它的作用是在DW 窗口中实时查看代码的效果,包括Javascript 特效,系统总体分析与设计。

1.2. 需求分析

首先用户成功登录网站后,主要进行岗位员工基础信息管理、指标体系管理、考核管理、综合查询和统计分析的操作。其工作流程图的结构,如图1所示:

图1-2 系统层次结构图

1.3. 总体分析

这部分对人力资源绩效考核网站做进一步的功能分析和总体结构设计,主要分为对系统总流程图和系统总数据流图的分析, 以及相关的一些功能流程图。

基础信息管理模块:

用户进入网站后,网页会自动加载相关的信息,展现整个网页,点击 “LOGIN ”按钮进入登录界面,成功后,自动跳转到界面首页。登录流程图(图5所示)

图1-6 绩效考核奖金计算业务流程图

计算员工奖金的时候,首先系统会获取考核的方案然后得到考核打分,再与标准分值对比计算出员工奖金。绩效考核奖金的数据流图,如图7所示。

图1-7 绩效考核奖金的数据流图

数据字典构建:

数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息。它主要是对数据流图中的数据流、处理逻辑、外部实体、数据存储和数据项等方面进行具体的定义。数据流程图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。 数据存储的描述:

数据存储编号:F14

数据存储名称:考核方案表

简 述:存放公司考核方案的详细信息。 数据存储组成:标识+方案编号+方案名称+描述+A 点分%+B 点分%+考核周期

数据存储编号:F15

数据存储名称:考核项目表

简 述:存放公司考核项目的详细信息。

数据存储组成:标识+标准编号+标准名称+答案A +答案B +答案C +答案D +答案E +考核项目+描述

数据存储编号:F16

数据存储名称:考核分数表

简 述:存放公司员工的某次考核的单项成绩。

数据存储组成:标识+被考核人标识+考核方案标识+考核标准标识+结果+

考核人标识+备注+记录日期

数据存储编号:F17

数据存储名称:方案-标准表

简 述:存放考核方案所对应的考核标准。

数据存储组成:标识+考核方案标识+考核标准标识+标准分数+分数来源

数据存储编号:F18

数据存储名称:员工考核表

简 述:存放员工在考核方案上的考核结果。

数据存储组成:标识+方案-标准标识+考核日期+等级+总分+员工标识

数据处理: 编号:P14

名称:获取考核方案

描述:读取考核方案表,获取考核方案。 输入/输出:D16

编号:P15

名称:获取员工分数

描述:根据考核方案,读取考核分数表,获取考核分数 输入/输出:D16,D17

编号:P16

名称:获取考核标准

描述:根据考核方案及分数,获取考核标准。 输入/输出:D16

编号:P17

名称:计算总分

描述:对所有当前考核方案及当前员工累计分进行汇总,得到总分 输入/输出:D17,D18,D30

编号:P18

名称:等级评定

描述:根据总分及考核方案的说明,评定员工等级 输入/输出:D16,D30

1.4. 数据库设计

数据库设计是在给定的DBMS 、操作系统和硬件环境下,如何表达用户的需求,并将其转换为有效的数据库结构,构成较好的数据库模式,这个过程称为数据库设计。数据库及其应用系统开发的全过程可分为两大阶段:数据库系统的分析与设计阶段;数据库系统的实施、运行与维护阶段。 1.4.1. 数据库设计概述

数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建设中的核心技术,具体的说,数据库设计是一个给定的应用环境,构造最优的用户的应用需求(信息要求和处理要求)。这个问题是我们在进行软件开发时期的主要研究方向。

数据库设计应该和应用系统设计相结合,也就是说,整个设计过程中要把结构(数据)设计和行为(处理)设计密切结合起来。

由于信息结构复杂,应用环境多样,在相当长的一段时间内数据库设计主要采用手工试凑法。使用这种方法与设计人员的经验和水平有直接的关系,数据库设计成为一种技艺而不是工程技术,缺乏科学理论和工程方法的支持,软件的质量难以保证,常常是数据库运行一段时间后又不同程度地发现了各种问题,增加了系统维护的代价。十余年来,人们努力探索,提出了各种设计准则和规程,都属于规范设计法。

1.4.2. 数据分析

数据分析过程同数据库的逻辑结构和物理结构密切相关,需要确定、编制、组织、筛选应用程序所使用的信息。它以一种能够分析和分类的方式来捕获用户的所有信息,这使得某一模型可以直接转化成数据库结构。

我们使用一种信息建模技术,这种技术是通过实体、关系、属性三种基本对象来定义信息。实体是需要维护和使用的相关特性的集合体;属性是实体的特性或特征;关系是实体之间的联系,关系为实体记录(实例)之间的联系和交互作用方式建立了模型。

要确定实体和关系的性质,用户必须确定单个实体和他们相关的属性。为每个对象定义一个完整的与商业相关的描述以及他单独使用的要求,这也包括确定此实体是否使用应用程序的永久需求,每种关系的基本定义使用了商业定义和与关系相连接的需求。

在为实体确定相关的属性过程中,也需要确定此实体的主键和索引,并且要确定在每个实体中怎样组织这些属性,确定属性的数据类型和它是否为空值。在高层次的描述过程中,还可以确定所有扩展属性信息,包括长度、格式、编辑风格、校验规则和初始值。单独实体的属性被组织起来,用户就能够开始以某一种组织方式来给实体分类。用户必须通过关系,来为实体分组的方式确定分类模式,这是抽象化的初始层,或者说是通过隐藏模糊的信

息来提高对分析的理解,通过将数据分类成组,就产生了相关分组的不同类型,这样,更加易于观察和分析。

1.4.3. 数据库的详细设计

在设计数据库时,应考虑以下事项:

1. 数据库用途及该用途将如何影响设计,应创建符合用途的数据库计划。 2. 数据库规范化规则,防止数据库设计中出现错误。 3. 对数据完整性的保护。

4. 数据库和用户权限的安全要求。

5. 应用程序的性能需求,对于性能而言,在数据库大小和硬件配置之间权衡也是很重要的。

数据库部分实体的E-R 图,如图1-8所示。

图1-8 数据库E-R 图

根据人力资源管理系统的实际情况,本系统的数据库命名为:HRMS 数据库,存储所有的数据信息及其储过程。

HRMS 数据库中部分信息表如表1至8 所示。下面分别介绍这些表:

c. 绩效考核信息表jx_accessvalue,记录了考核过程等基本信息。如考核的标准分和考核时间,考核得分和考核结果等。具体描述如表3所示:

表3 jx_accessvalue

d. 考核体系信息表jx_assesssystem,记录了考核体系的基本信息。考核体系的编号和类别名称等。具体描述如表4所示: 表4 jx_assesssystem

e. 考核指标信息表jx_assesstarget,主要描述了考核指标在考核体系中的体现,包括给出考核的公式和计算所得值。考核体系的编号和类别名称等。具体描述如表5所示: 表5 jx_assesstarget

f. 考核指标信息表jx_bonus,主要描述了考核指标在考核体系中的体现,包括给出考核的公式和计算所得值。考核体系的编号和类别名称等。具体描述如表6所示: 表6 jx_bonus

g. 指标类别信息表jx_target,主要包括指标名称和指标单元等信息。具体描述如表7所示: 表7 jx_target

h. 指标列表信息表jx_targettype,主要记录了指标名称和指标类别编号等信

息。具体描述如表8所示: 表 8 jx_targettype

2. 系统功能与实现

2.1. 建立数据连接

在MyEclipse 中, 在建立com.casit.czy.taglib 包,并新建一个类DB.java 在该包下,代码如下

java:comp/env/HUMRES这句链接的是oracle 数据库,其具体连接信息在tomcat/conf文件夹下面的Context.xml 文件中。

在oracle 中还要建立sp_getnewId获取唯一id ,sp_getPagination分页,sp_Uniqued检测唯一性的存储过程。

2.2. 系统功能与实现

首先用户进入人力资源系统,输入帐号和密码,登陆进入个人系统中心。如果用户输入空帐号/空密码则会提醒用户“用户帐号/密码不能为空”,若用户密码输入错误,则会提醒密码输入错误,若正确,则跳转进入个人系统。如图2-1所

示:

图2-1 登录界面

登录系统成功以后,则显示系统首页界面,左边设系统导航栏目,右边为系统功能展现区。用户可在左边导航进行系统的设置,点击右上角的退出则退出系统。如图2-2所示

图2-2 系统首页导航

2.2.1. 基础信息模块功能与实现

本模块主要实现功能有:岗位分组、人员岗位维护、考核人员维护、指标类别定义与指标定义。下面对每个子模块的实现进行逐一介绍。 1. 岗位分组维护

岗位分组主要是用来管理考核人员所属的部门组名的建设,用户可进行修改和删除岗位组名称信息等操作。具体如2-3所示:

图2-3岗位分组维护

2. 人员岗位维护

人员岗位主要是用来管理考核人员的职位,用户可进行添加和修改、删除职位的操作。如图2-4所示:

图2-4人员岗位维护

3. 考核人员维护

该功能主要实现对考核人员信息的添加和删除。先选定所要考核的人员的职位组,再点添加则可添加考核人员信息。如选定前端职位,添加考核人员。如图2-5所示:

图2-5考核人员维护

4. 指标类别维护

指标类别主要是用来管理考核的指标,包括添加指标类别和删除指标类别项目。如添加业绩指标、行为指标等考核的指标信息,具体可按照实际情况制定适宜的标准。如图2-6所示:

图2-8考核体系制定

1. 考核项目制定

考核项目主要实现对考核指标的导入,以备人员考核。具体选定指标类别和

3. 奖金计算

考核人员奖金与奖金系数和员工所在岗位系数有关。当计算完考核人员的考

图2-14 人员岗位查询

1. 考核情况查询

该部分主要实现对考核人员的考核结果查询。用户可以根据考核的时间选择考核人员以及考核的指标类别即可查询该人员的考核结果。如选定李四与业绩指标,如图2-15所示:

图2-15 考核情况查询

2.2.2. 统计分析模块功能与实现

在统计分析里,主要实现了奖金统计分析和考核成绩统计分析。情况如下: 1. 奖金统计分析

用户选定了考核年月和考核部门、考核人员,就可以看到考核人员的考核情况,包括考核的成绩和考核的奖金金额。并以柱状图显示数据结果,如图2-16所示:

图2-16奖金统计分析

2. 考核成绩统计分析

用户根据年月区段,选择指标类别和考核对象,即可统计到该考核人员的所有该时间内的考核成绩。如图2-17所示:

图2-17考核成绩统计分析

3. 测试

3.1. 测试与调试的基本概念

软件测试是整个系统开发过程中一个重要环节,是成功开发本系统的重要保证。软件测试阶段的主要任务是发现并排除在分析、设计、编码各阶段中产生的各种类型的错误,以得到可使用的软件系统。

常用的软件测试方法有两大类:静态测试方法和动态测试方法。

静态测试方法是程序远普遍采用的一种方法,其内容主要是通过人工模拟软件系统的执行方式,以代码会审、走查、办公室检查的形式分析或核查系统的功能实现、编码过程的正确性。动态测试方法是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。

按照通常的软件系统测试,可以分别进行单元测试、集成测试、确认测试、系统测试,最后进行验收测试,即由用户通过试用系统而进行测试,检验系统的可用性及与用户配合的程度。

调试是软件开发过程中最艰巨的脑力劳动,调试开始时,软件开发者仅仅面对着错误的征兆,然而在问题的外部现象和内在原因之间往往并没有明显的联系,在组成程序的密密麻麻的元素中,每一个都可能是错误的根源。如何能在浩如烟海的程序元素中找到有错误的那个(或几个) 元素,这是调试过程中最关键的技术问题。本设计中调试的方法主要是设置断点跟踪。使用断点跟踪可以找到程序的出错位置,缩小查找错误的范围,提高调试的效率。调试的任务是及时改正测试过程中发现的软件错误。具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。然后仔细研究推断代码以确定问题的原因,并设法改正. 现阶段己研究出一些帮助调试的技术,主要有输出存储器内容、打印语句和自动工具。

3.2. 测试时间

本系统的测试分为以下几个阶段进行:

第一阶段: 根据需求分析划定软件中要测试的功能和性能的范围,确定测试的内容。

第二阶段: 分模块对系统中的各模块进行测试,对需求分析中各模块的功能和性能及用户的特殊需求进行测试,记下各模块的所有的问题,及时解决。

第三阶段: 在模块测试的基础上将各模块拼接进行整体功能和性能的测试。

第四阶段: 综合测试。

3.3. 软件测试的内容

JSP 语言编译需要设定严格的环境变量,在运行程序前,一定要启动Tomcat 运行程序、数据库后才能运行程序,在浏览器地址栏中输入:http://localhost:8080/hr/,即可运行程序。

初次登录,里面的数据都是空的,用户首先可以点击考核体系指定,添加,即可增加考核体系,保存数据。如下图:

图3-1 指标体系创建

添加以后,在查询模块里查看指标体系,即可看到已经添加的指标系统。如下图:

图3-2 指标体系查看

在调试过程中,发现JSP 对字符的转换问题比较复杂,主要使用的语言是:

参考文献

[1] Tzvi Raz, Ph.D., M.F. Baretich,et al.ARMIS: A Microcomputer-Based Hospital Management Information System Risk. Journal of Medical Systems, . 9(5/6):315-325( 1985)

[2] S. Chakrabarti & S. Mitra & B. Bhattacharyya. Development of a management information system as knowledge base model for machining process characterization. Int J Adv Manuf Technol. 34:1088–1097(2007) [3] David Zalkind, Ph.D., Roger Howard,et al. Development of a System for Crisis Management Information Intervention Programs. Journal of Medical Systems, 1(1):51-62(1977)

[4] A. Caldelli,M.Luisa,. Parmigiani Management Information System –A Tool for Corporate Sustainability. Journal of Business Ethics.55: 159–171(2004)

[5] Sasan Rahmatian.Management Information Systems Education from A Systemic Viewpoint.

[6]王强, 高校综合人力资源管理系统的数据库优化策略研究,电脑知识与技术,6(10),2324-2325(2010)

[7] 黄艳,基于B/S模式的人力资源管理系统的设计与实现,网络财富,2010(4),35-36(2010)

[8]马冲、范赞,基于C/S架构的小型人力资源管理系统的设计与实现,信息技术,2010(2),104-107

[9] 杜超,基于EBS 的商业银行人力资源管理系统应用研究 ,管理咨询,2010(1),68 [10] 刘丽华、黄勇,基于 ERP 的人力资源管理系统,实验技术与管理,27(3),94-96(2010)

[11] 王鹏、蒋修齐、张奇, 基于J2EE 的人力资源管理系统分析与设计科技创新导报,2009(13),23

[12] 李琦、苏立玢、王剑霞等,基于 Oracle 数据挖掘技术的高职院校人力资源管理系统的研究与实现,科技信息,762-764

[13] 白勇,基于SOA 架构和.NET 技术的电网公司人力资源管理系统研究,,14(1),26-28(2009)

[14] 秦虎锋、唐永芬、王斌,基于VB.NET 的人力资源管理系统, 科技广场,2009(1),162-164

[15] 潘浩、陈中良,基于决策树技术的企业人力资源管理系统研究,天中学刊,25(2),39-41(2010)

附录(系统部分源代码)

1. 登录实现代码:

function correctPNG() {

for(var i=0; i

var img = document.images[i]

var imgName = img.src.toUpperCase()

if (imgName.substring(imgName.length-3, imgName.length) == "PNG" ) {

var imgID = (img.id) ? "id='" + img.id + "' " : ""

var imgClass = (img.className) ? "class='" + img.className + "' " : ""

var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "

var imgStyle = "display:inline-block;" + img.style.cssText if (img.align == "left" ) imgStyle = "float:left;" + imgStyle if (img.align == "right" ) imgStyle = "float:right;" + imgStyle

if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle var strNewHTML = "" img.outerHTML = strNewHTML i = i-1 } } }

window.attachEvent("onload" , correctPNG);

function aa(obj,urlSrc)

{ }

obj.src=urlSrc;

function submit1(){

}

function passkeypress(){ }

function namekeypress(){ }

function pageload(){ }

function focusout(){

var name_key = document.getElementById("username" ).value; if (name_key == '' ) {

document.getElementById("username" ).focus(); if (event.keyCode==13) { }

document.getElementById("pass" ).focus(); if (event.keyCode==13) document.forms[0].submit();

if (document.getElementById("username" ).value == null || { }

if (document.getElementById("pass" ).value == null || { }

document.forms[0].submit();

Ext.Msg.minWidth = 300;

Ext.Msg.alert(' 提示' , ' 用户密码不能为空' ); return ;

document.getElementById("pass" ).value == "" ) Ext.Msg.minWidth = 300;

Ext.Msg.alert(' 提示' , ' 用户帐号不能为空' ); return ;

document.getElementById("username" ).value == "" )

}

} else{ }

//document.getElementById("dept").options.length=0;

2. 指标类别添加实现代码: function add(){ Ext.Ajax.request({

url : 'targettype.do?method=findsortno', success :function(sortno){

newid="insert_"+sortno.responseText; sortno_new=sortno.responseText*1-999; //console.info("%s",sortno_new);

var store = grid.getStore(); var rec = new

store.recordType({targettypeid:newid,targettypecode:'',targettypename:'',isvalid:'1',memo:''});

rec.markDirty();//将行的已编辑属性设置为true ,以便保存时打包数据

var count = store.getCount(); //获取当前数据的行数,确

保添加到最后一行

grid.stopEditing();

store.insert(count, rec);

grid.getSelectionModel().selectRow(count);//选中末行 var

col=grid.getColumnModel().findColumnIndex("targettypecode"); grid.startEditing(count, col); }

},

failure : failfunc });

3. 添加考核人员实现代码: function add(){

var hasChild = workshoptree.getRootNode().hasChildNodes();

{

Ext.Msg.minWidth = 300;

Ext.Msg.alert('提示', '当前用户没有可供修改的部门!'); return;

}

if(bmid==null || bmid=="" ){ }

Ext.Msg.minWidth = 300;

Ext.Msg.alert('提示', '请先选择部门!'); return;

Ext.Ajax.request({

url : 'employeeinfo.do?method=findsortno', success :function(sortno){

newid="insert_"+sortno.responseText; sortno_new=sortno.responseText*1-999; //console.info("%s",sortno_new);

var store = grid.getStore(); var rec = new

store.recordType({epid:newid,wsid:bmid,epname:'',epcode:'',sex:'1',birthday:'',posid:'',workdate:'',telphone:'',state:'1',sortno:'',spellno:''});

rec.markDirty();//将行的已编辑属性设置为true ,以便保存时打包数据

var count = store.getCount(); //获取当前数据的行数,确

保添加到最后一行

grid.stopEditing();

store.insert(count, rec);

grid.getSelectionModel().selectRow(count);//选中末行 var

col=grid.getColumnModel().findColumnIndex("epcode"); grid.startEditing(count, col);

},

failure : failfunc });

4. 考核打分实现代码: function insertData(){

var sysid=query_khtx.getValue();

//获取考核体系id

var selections=grid.getSelectionModel().getSelections(); var count=selections.length; var gc=gridc.getStore(); var rowindex=gc.getCount();

if(sysid==null || sysid==""){Ext.Msg.minWidth = 300;Ext.Msg.alert('

提示',' 请选择考核体系');return;}

if (selections.length==0){Ext.Msg.minWidth = 300;Ext.Msg.alert('提

示',' 请选择指标');return;}

Ext.MessageBox.minWidth = 300;

Ext.Ajax.request({

url :

' assesstarget.do?method=findsortno',

params :{count :count}, success :function(sortno){

var tid; var ttid; var tname; var tcode; var tunit;

var sysid=query_khtx.getValue(); for(var i=0;i

var records=0;

for(var j=0;j

if(selections[i].get('targetid')==gc.getAt(j).get('targetid')){

records++;

Ext.Msg.minWidth = 300;

Ext.Msg.alert('提示',' 该指标已存在

');

}

}

//获取用户编辑过的列并打包为obj 对象 tid=selections[i].get('targetid');

ttid=selections[i].get('targettypeid');

tname=selections[i].get('targetname');

tcode=selections[i].get('targetcode');

tunit=selections[i].get('targetunit');

sortno.responseText++;

newid="insert_"+sortno.responseText; sortno_new=sortno.responseText*1-999; //console.info("%s",sortno_new); var store = gridc.getStore(); var rec = new

store.recordType({accessid:newid,targetid:tid,targettypeid:ttid,targetname:tname,targetcode:tcode,targetunit:tunit,systemid:sysid,standard_value:'0',sortno:'',formula:'',isvalid:'1',memo:' '});

rec.markDirty();//将行的已编辑属性设置为

true ,以便保存时打包数据

var count = store.getCount(); //获取当

前数据的行数,确保添加到最后一行

gridc.stopEditing();

store.insert(count, rec);

gridc.getSelectionModel().selectRow(count);//选中末行

var

col=gridc.getColumnModel().findColumnIndex("targetid");

},

}

}

gridc.startEditing(count, col);

failure : failfunc });

}

5. 奖金计算实现代码: function grant(){

var access_nyS = access_ny.getValue();

var access_attributeS = access_attribute.getValue(); var bonus_baseS = bonus_base.getValue(); if(access_attributeS==1){

Ext.Msg.minWidth = 300;

Ext.Msg.alert('提示',' 暂时不支持部门的奖金计算!'); return;

}

Ext.Ajax.request({

url : 'bonus.do?method=checkValue', params : { },

success : function(xhr){

var str = xhr.responseText; //alert(str);

if('case1'==str){//b有值 ,提示用户“已经开始下次考核,本次考核access_ny:access_nyS,

access_attribute:access_attributeS

结果不可修改”,从奖金表中jx_bonus检索出数据

Ext.Msg.minWidth = 300;

Ext.Msg.alert('提示',' 已经开始下次考核,本次考核结果不可修

改!');

showP(access_nyS,access_attributeS);

}else if('case2'==str){//a 有值,判断发放标志字段flag

Ext.Ajax.request({

},

success : function(xhr){

url : 'bonus.do?method=checkflag', params : {

access_ny:access_nyS,

access_attribute:access_attributeS

if(xhr.responseText=='haveFlag'){//如果为

1,则提示用户“奖金已发放,不能重新计算”

Ext.Msg.minWidth = 300;

Ext.Msg.alert('提示',' 奖金已发放,不能重新

计算!');

showP(access_nyS,access_attributeS);

}else{//如果为0,提示用户“已经计算过奖金,是否重

新计算”

Ext.MessageBox.confirm('提示',' 已经计算

过奖金,是否重新计算?',function(btn1,text){

if (btn1=='yes'){//如果选择“是”,则删除

jx_bonus表中的符合条件的值,从表jx_accessvalue中取值,重新insert into

Ext.Ajax.request({

url :

' bonus.do?method=delcbonus',

params : {

access_ny:access_nyS,

access_attribute:access_attributeS

},

success : function(xhr){

if(xhr.responseText=='success'){

calcbonus(access_nyS,access_attributeS,bonus_baseS);

}

},

failure : failfunc });

}else{

showP(access_nyS,access_attributeS);

} });

}

},

failure : failfunc });

}else if('case3'==str){//a 无值,则按奖金计算公式计算奖金

calcbonus(access_nyS,access_attributeS,bonus_baseS);

}

},

failure : failfunc });

}

毕业设计

题 目 人力资源绩效考核系统开发与设计

英文题目

学生姓名:

学 号:

专 业: 信息管理与信息系统

院 系: 数学与信息管理系

指导教师: 职称: 教授

二零一一年六月

了解其知识和能力结构,优势和劣势,需要什么,缺少什么。同时,绩效考核也

是判断培训效果的主要手段。

4、绩效考核是确定劳动报酬的依据

按劳分配是我们社会公认的企业员工的分配原则,不言而喻,准确地衡量“劳”

的数量和质量是实行按劳分配的前提。没有考核,报酬就没有依据。

5、绩效考核是对员工进行激励的手段

奖励和惩罚是激励的主要内容,奖罚分明是人事管理的基本原则。要做到奖

罚分明,就必须要科学地、严格地进行考核,以考核结果为依据,决定奖或罚的

对象以及奖或罚的等级。

6、绩效考核是平等竞争的前提

建立社会主义市场经济,需要鼓励企业竞争,也需要在企业内部鼓励员工之

间进行平等竞争,创造“比、学、赶、帮、超”的良好气氛。

最后,只有通过高水平绩效考核才能真正的使人力资本有效地转变成为人力

资源,并激活人力资源,使人的资本投入能得到相应的收益。

器) 的体系结构。本人力资源网站即采用这种两层模型结构实现。用户在浏览器端

登陆界面,实现绩效考核和查看等操作。

JSP 是目前流行的一种开发动态网页和基于Web 应用的编程语言。同时,JSP

以JAVA 语言为基础,可以在不同的硬件平台和操作系统下运行,大大提高了程序

的可移植性。所以本系统采用JSP 建立动态页面,oracle 创建和管理后台数据库。

等机制来组织可视化组件,无论从UI 界面上CSS 样式的应用,到数据解析上的异常处理,都可算是一款不可多得的JavaScript 客户端技术的精品。

本人力资源程序的展示界面及动态数据交换过程采用extjs 来实现。该程序中应用的extjs 采用二次封装,封装成java 标签在页面直接调用。

(1) JavaBean技术

JavaBean 是指由Java 语言编写的组件,每一个JavaBean 实现一个特定的

功能,通过合理的组织具有不同功能的JavaBean ,可以快速地生成一个全新的

应用程序。任何可以用Java 代码创造的对象都可以利用JavaBean 进行封装,并且其他的开发者可以通过内部的JSP 页面、Servlet 、其他的JavaBean 、applet 程序或者应用来使用这些对象。

c. 各个开发人员之间的分工明确。

由于基于Struts 框架技术实现的Web 应用系统中的控制层、业务层与表示

层3者之间各自相互分离,所以这样的设计方案能够使应用系统中的表示层的开发者(网页设计人员)与后台业务功能具体实现的Java 程序员各司其职和分工明确,并且可以并行开发,提高开发效率。

d. 简化表示层页面的设计和实现。

在Struts 框架中,应用系统的开发者可以在表示层的页面中大量地使用Struts 框架中所提供的定制标签库技术,以实现在页面中把业务逻辑处理的功能实现代码分离开。从而简化系统中表示层的设计和开发实现,进而避免在页面中出现大量的Java 脚本代码。

1.1. 系统实现手段

1.1.1.

name="HUMRES"

Java 虚拟机是一个想象中的机器, 在实际的计算机上通过软件模拟来实现。Java 虚拟机有自己想象中的硬件, 如处理器、堆栈、寄存器等, 还具有相应的指令系统。

Java 语言的一个非常重要的特点就是与平台的无关性。而使用Java 虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行, 至少需要编译成不同的目标代码。而引入Java 语言虚拟机后,Java 语言在不同平台上运

行时不需要重新编译。Java 语言使用模式Java 虚拟机屏蔽了与具体平台相关的信息, 使得Java 语言编译程序只需生成在Java 虚拟机上运行的目标代码(字节码), 就可以在多种平台上不加修改地运行。Java 虚拟机在执行字节码时, 把字节码解释成具体平台上的机器指令执行。 1.1.2. 数据库:oracle 10g

Oracle Database ,又名Oracle RDBMS ,或简称Oracle 。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。ORACLE 是以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一。具有可用性强、可扩展性强、数据安全性强、稳定性强等特点。 1.1.3. Myeclipse6.5

MyEclipse 企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse )是对Eclipse IDE 的扩展,利用它我们可以在数据库和JavaEE 的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE 集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。

在结构上,MyEclipse 的特征可以被分为7类: 1. JavaEE 模型 2. WEB 开发工具 3. EJB 开发工具 4. 应用程序服务器的连接器 5. JavaEE 项目部署服务 6. 数据库服务

7. MyEclipse 整合帮助

对于以上每一种功能上的类别,在Eclipse 中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse 结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。

简单而言,MyEclipse 是Eclipse 的插件,也是一款功能强大的JavaEE 集成开发环境,支持代码编写、配置、测试以及除错,MyEclips e6.0以前版本需先安装Eclipse 。MyEclipse6.0以后版本安装时不需安装Eclipse 。

1.1.4. Photoshop cs4

Photoshop 是Adobe 公司旗下最为出名的图像处理软件之一,集图像扫描、编辑修改、图像制作、广告创意,图像输入与输出于一体的图形图像处理软件,深受广大平面设计人员和电脑美术爱好者的喜爱。 1.1.5. Dreamweaver cs4

Dreamweaver CS4的界面几乎是做了一次脱胎换骨的改进,从中看到了更多的设计元素,让DW 也稍稍带着点苹果的味道。

布局按钮:这个按钮似乎和下方的代码、分割、设计按钮功能重复,目前还不明白DW 的意图,唯一增加的新功能是垂直分割,让代码和设计界面以垂直对比的方式呈现。

精简设计:它提供了更多的可视区域,同时可以把右边的菜单收缩到只剩下图标。对于习惯了Adobe 其他设计软件的朋友来说,这的确是非常贴心的设计。 应用程序开发增强:左上方是和数据相关的面板,包括数据库面板、数据绑定面板和行为面板;左下方则是文件与资源相关的面板,包括文件面板、相关资源面板、代码收集器等;右边则是设计相关面板,包括插入面板、CSS 样式表面板、AP 元素面板(用来为浮动层定位)。应该说这是一个万金油布局,几乎适用所有的开发者,同时,它也把大部分菜单展示在用户面前,其他的七种布局可以说只是在这个基础上进行一些排列和隐藏。

在下方的文档面板上,DW 新增加了一个实时预览功能——Live View 。它的作用是在DW 窗口中实时查看代码的效果,包括Javascript 特效,系统总体分析与设计。

1.2. 需求分析

首先用户成功登录网站后,主要进行岗位员工基础信息管理、指标体系管理、考核管理、综合查询和统计分析的操作。其工作流程图的结构,如图1所示:

图1-2 系统层次结构图

1.3. 总体分析

这部分对人力资源绩效考核网站做进一步的功能分析和总体结构设计,主要分为对系统总流程图和系统总数据流图的分析, 以及相关的一些功能流程图。

基础信息管理模块:

用户进入网站后,网页会自动加载相关的信息,展现整个网页,点击 “LOGIN ”按钮进入登录界面,成功后,自动跳转到界面首页。登录流程图(图5所示)

图1-6 绩效考核奖金计算业务流程图

计算员工奖金的时候,首先系统会获取考核的方案然后得到考核打分,再与标准分值对比计算出员工奖金。绩效考核奖金的数据流图,如图7所示。

图1-7 绩效考核奖金的数据流图

数据字典构建:

数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息。它主要是对数据流图中的数据流、处理逻辑、外部实体、数据存储和数据项等方面进行具体的定义。数据流程图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。 数据存储的描述:

数据存储编号:F14

数据存储名称:考核方案表

简 述:存放公司考核方案的详细信息。 数据存储组成:标识+方案编号+方案名称+描述+A 点分%+B 点分%+考核周期

数据存储编号:F15

数据存储名称:考核项目表

简 述:存放公司考核项目的详细信息。

数据存储组成:标识+标准编号+标准名称+答案A +答案B +答案C +答案D +答案E +考核项目+描述

数据存储编号:F16

数据存储名称:考核分数表

简 述:存放公司员工的某次考核的单项成绩。

数据存储组成:标识+被考核人标识+考核方案标识+考核标准标识+结果+

考核人标识+备注+记录日期

数据存储编号:F17

数据存储名称:方案-标准表

简 述:存放考核方案所对应的考核标准。

数据存储组成:标识+考核方案标识+考核标准标识+标准分数+分数来源

数据存储编号:F18

数据存储名称:员工考核表

简 述:存放员工在考核方案上的考核结果。

数据存储组成:标识+方案-标准标识+考核日期+等级+总分+员工标识

数据处理: 编号:P14

名称:获取考核方案

描述:读取考核方案表,获取考核方案。 输入/输出:D16

编号:P15

名称:获取员工分数

描述:根据考核方案,读取考核分数表,获取考核分数 输入/输出:D16,D17

编号:P16

名称:获取考核标准

描述:根据考核方案及分数,获取考核标准。 输入/输出:D16

编号:P17

名称:计算总分

描述:对所有当前考核方案及当前员工累计分进行汇总,得到总分 输入/输出:D17,D18,D30

编号:P18

名称:等级评定

描述:根据总分及考核方案的说明,评定员工等级 输入/输出:D16,D30

1.4. 数据库设计

数据库设计是在给定的DBMS 、操作系统和硬件环境下,如何表达用户的需求,并将其转换为有效的数据库结构,构成较好的数据库模式,这个过程称为数据库设计。数据库及其应用系统开发的全过程可分为两大阶段:数据库系统的分析与设计阶段;数据库系统的实施、运行与维护阶段。 1.4.1. 数据库设计概述

数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建设中的核心技术,具体的说,数据库设计是一个给定的应用环境,构造最优的用户的应用需求(信息要求和处理要求)。这个问题是我们在进行软件开发时期的主要研究方向。

数据库设计应该和应用系统设计相结合,也就是说,整个设计过程中要把结构(数据)设计和行为(处理)设计密切结合起来。

由于信息结构复杂,应用环境多样,在相当长的一段时间内数据库设计主要采用手工试凑法。使用这种方法与设计人员的经验和水平有直接的关系,数据库设计成为一种技艺而不是工程技术,缺乏科学理论和工程方法的支持,软件的质量难以保证,常常是数据库运行一段时间后又不同程度地发现了各种问题,增加了系统维护的代价。十余年来,人们努力探索,提出了各种设计准则和规程,都属于规范设计法。

1.4.2. 数据分析

数据分析过程同数据库的逻辑结构和物理结构密切相关,需要确定、编制、组织、筛选应用程序所使用的信息。它以一种能够分析和分类的方式来捕获用户的所有信息,这使得某一模型可以直接转化成数据库结构。

我们使用一种信息建模技术,这种技术是通过实体、关系、属性三种基本对象来定义信息。实体是需要维护和使用的相关特性的集合体;属性是实体的特性或特征;关系是实体之间的联系,关系为实体记录(实例)之间的联系和交互作用方式建立了模型。

要确定实体和关系的性质,用户必须确定单个实体和他们相关的属性。为每个对象定义一个完整的与商业相关的描述以及他单独使用的要求,这也包括确定此实体是否使用应用程序的永久需求,每种关系的基本定义使用了商业定义和与关系相连接的需求。

在为实体确定相关的属性过程中,也需要确定此实体的主键和索引,并且要确定在每个实体中怎样组织这些属性,确定属性的数据类型和它是否为空值。在高层次的描述过程中,还可以确定所有扩展属性信息,包括长度、格式、编辑风格、校验规则和初始值。单独实体的属性被组织起来,用户就能够开始以某一种组织方式来给实体分类。用户必须通过关系,来为实体分组的方式确定分类模式,这是抽象化的初始层,或者说是通过隐藏模糊的信

息来提高对分析的理解,通过将数据分类成组,就产生了相关分组的不同类型,这样,更加易于观察和分析。

1.4.3. 数据库的详细设计

在设计数据库时,应考虑以下事项:

1. 数据库用途及该用途将如何影响设计,应创建符合用途的数据库计划。 2. 数据库规范化规则,防止数据库设计中出现错误。 3. 对数据完整性的保护。

4. 数据库和用户权限的安全要求。

5. 应用程序的性能需求,对于性能而言,在数据库大小和硬件配置之间权衡也是很重要的。

数据库部分实体的E-R 图,如图1-8所示。

图1-8 数据库E-R 图

根据人力资源管理系统的实际情况,本系统的数据库命名为:HRMS 数据库,存储所有的数据信息及其储过程。

HRMS 数据库中部分信息表如表1至8 所示。下面分别介绍这些表:

c. 绩效考核信息表jx_accessvalue,记录了考核过程等基本信息。如考核的标准分和考核时间,考核得分和考核结果等。具体描述如表3所示:

表3 jx_accessvalue

d. 考核体系信息表jx_assesssystem,记录了考核体系的基本信息。考核体系的编号和类别名称等。具体描述如表4所示: 表4 jx_assesssystem

e. 考核指标信息表jx_assesstarget,主要描述了考核指标在考核体系中的体现,包括给出考核的公式和计算所得值。考核体系的编号和类别名称等。具体描述如表5所示: 表5 jx_assesstarget

f. 考核指标信息表jx_bonus,主要描述了考核指标在考核体系中的体现,包括给出考核的公式和计算所得值。考核体系的编号和类别名称等。具体描述如表6所示: 表6 jx_bonus

g. 指标类别信息表jx_target,主要包括指标名称和指标单元等信息。具体描述如表7所示: 表7 jx_target

h. 指标列表信息表jx_targettype,主要记录了指标名称和指标类别编号等信

息。具体描述如表8所示: 表 8 jx_targettype

2. 系统功能与实现

2.1. 建立数据连接

在MyEclipse 中, 在建立com.casit.czy.taglib 包,并新建一个类DB.java 在该包下,代码如下

java:comp/env/HUMRES这句链接的是oracle 数据库,其具体连接信息在tomcat/conf文件夹下面的Context.xml 文件中。

在oracle 中还要建立sp_getnewId获取唯一id ,sp_getPagination分页,sp_Uniqued检测唯一性的存储过程。

2.2. 系统功能与实现

首先用户进入人力资源系统,输入帐号和密码,登陆进入个人系统中心。如果用户输入空帐号/空密码则会提醒用户“用户帐号/密码不能为空”,若用户密码输入错误,则会提醒密码输入错误,若正确,则跳转进入个人系统。如图2-1所

示:

图2-1 登录界面

登录系统成功以后,则显示系统首页界面,左边设系统导航栏目,右边为系统功能展现区。用户可在左边导航进行系统的设置,点击右上角的退出则退出系统。如图2-2所示

图2-2 系统首页导航

2.2.1. 基础信息模块功能与实现

本模块主要实现功能有:岗位分组、人员岗位维护、考核人员维护、指标类别定义与指标定义。下面对每个子模块的实现进行逐一介绍。 1. 岗位分组维护

岗位分组主要是用来管理考核人员所属的部门组名的建设,用户可进行修改和删除岗位组名称信息等操作。具体如2-3所示:

图2-3岗位分组维护

2. 人员岗位维护

人员岗位主要是用来管理考核人员的职位,用户可进行添加和修改、删除职位的操作。如图2-4所示:

图2-4人员岗位维护

3. 考核人员维护

该功能主要实现对考核人员信息的添加和删除。先选定所要考核的人员的职位组,再点添加则可添加考核人员信息。如选定前端职位,添加考核人员。如图2-5所示:

图2-5考核人员维护

4. 指标类别维护

指标类别主要是用来管理考核的指标,包括添加指标类别和删除指标类别项目。如添加业绩指标、行为指标等考核的指标信息,具体可按照实际情况制定适宜的标准。如图2-6所示:

图2-8考核体系制定

1. 考核项目制定

考核项目主要实现对考核指标的导入,以备人员考核。具体选定指标类别和

3. 奖金计算

考核人员奖金与奖金系数和员工所在岗位系数有关。当计算完考核人员的考

图2-14 人员岗位查询

1. 考核情况查询

该部分主要实现对考核人员的考核结果查询。用户可以根据考核的时间选择考核人员以及考核的指标类别即可查询该人员的考核结果。如选定李四与业绩指标,如图2-15所示:

图2-15 考核情况查询

2.2.2. 统计分析模块功能与实现

在统计分析里,主要实现了奖金统计分析和考核成绩统计分析。情况如下: 1. 奖金统计分析

用户选定了考核年月和考核部门、考核人员,就可以看到考核人员的考核情况,包括考核的成绩和考核的奖金金额。并以柱状图显示数据结果,如图2-16所示:

图2-16奖金统计分析

2. 考核成绩统计分析

用户根据年月区段,选择指标类别和考核对象,即可统计到该考核人员的所有该时间内的考核成绩。如图2-17所示:

图2-17考核成绩统计分析

3. 测试

3.1. 测试与调试的基本概念

软件测试是整个系统开发过程中一个重要环节,是成功开发本系统的重要保证。软件测试阶段的主要任务是发现并排除在分析、设计、编码各阶段中产生的各种类型的错误,以得到可使用的软件系统。

常用的软件测试方法有两大类:静态测试方法和动态测试方法。

静态测试方法是程序远普遍采用的一种方法,其内容主要是通过人工模拟软件系统的执行方式,以代码会审、走查、办公室检查的形式分析或核查系统的功能实现、编码过程的正确性。动态测试方法是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。

按照通常的软件系统测试,可以分别进行单元测试、集成测试、确认测试、系统测试,最后进行验收测试,即由用户通过试用系统而进行测试,检验系统的可用性及与用户配合的程度。

调试是软件开发过程中最艰巨的脑力劳动,调试开始时,软件开发者仅仅面对着错误的征兆,然而在问题的外部现象和内在原因之间往往并没有明显的联系,在组成程序的密密麻麻的元素中,每一个都可能是错误的根源。如何能在浩如烟海的程序元素中找到有错误的那个(或几个) 元素,这是调试过程中最关键的技术问题。本设计中调试的方法主要是设置断点跟踪。使用断点跟踪可以找到程序的出错位置,缩小查找错误的范围,提高调试的效率。调试的任务是及时改正测试过程中发现的软件错误。具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。然后仔细研究推断代码以确定问题的原因,并设法改正. 现阶段己研究出一些帮助调试的技术,主要有输出存储器内容、打印语句和自动工具。

3.2. 测试时间

本系统的测试分为以下几个阶段进行:

第一阶段: 根据需求分析划定软件中要测试的功能和性能的范围,确定测试的内容。

第二阶段: 分模块对系统中的各模块进行测试,对需求分析中各模块的功能和性能及用户的特殊需求进行测试,记下各模块的所有的问题,及时解决。

第三阶段: 在模块测试的基础上将各模块拼接进行整体功能和性能的测试。

第四阶段: 综合测试。

3.3. 软件测试的内容

JSP 语言编译需要设定严格的环境变量,在运行程序前,一定要启动Tomcat 运行程序、数据库后才能运行程序,在浏览器地址栏中输入:http://localhost:8080/hr/,即可运行程序。

初次登录,里面的数据都是空的,用户首先可以点击考核体系指定,添加,即可增加考核体系,保存数据。如下图:

图3-1 指标体系创建

添加以后,在查询模块里查看指标体系,即可看到已经添加的指标系统。如下图:

图3-2 指标体系查看

在调试过程中,发现JSP 对字符的转换问题比较复杂,主要使用的语言是:

参考文献

[1] Tzvi Raz, Ph.D., M.F. Baretich,et al.ARMIS: A Microcomputer-Based Hospital Management Information System Risk. Journal of Medical Systems, . 9(5/6):315-325( 1985)

[2] S. Chakrabarti & S. Mitra & B. Bhattacharyya. Development of a management information system as knowledge base model for machining process characterization. Int J Adv Manuf Technol. 34:1088–1097(2007) [3] David Zalkind, Ph.D., Roger Howard,et al. Development of a System for Crisis Management Information Intervention Programs. Journal of Medical Systems, 1(1):51-62(1977)

[4] A. Caldelli,M.Luisa,. Parmigiani Management Information System –A Tool for Corporate Sustainability. Journal of Business Ethics.55: 159–171(2004)

[5] Sasan Rahmatian.Management Information Systems Education from A Systemic Viewpoint.

[6]王强, 高校综合人力资源管理系统的数据库优化策略研究,电脑知识与技术,6(10),2324-2325(2010)

[7] 黄艳,基于B/S模式的人力资源管理系统的设计与实现,网络财富,2010(4),35-36(2010)

[8]马冲、范赞,基于C/S架构的小型人力资源管理系统的设计与实现,信息技术,2010(2),104-107

[9] 杜超,基于EBS 的商业银行人力资源管理系统应用研究 ,管理咨询,2010(1),68 [10] 刘丽华、黄勇,基于 ERP 的人力资源管理系统,实验技术与管理,27(3),94-96(2010)

[11] 王鹏、蒋修齐、张奇, 基于J2EE 的人力资源管理系统分析与设计科技创新导报,2009(13),23

[12] 李琦、苏立玢、王剑霞等,基于 Oracle 数据挖掘技术的高职院校人力资源管理系统的研究与实现,科技信息,762-764

[13] 白勇,基于SOA 架构和.NET 技术的电网公司人力资源管理系统研究,,14(1),26-28(2009)

[14] 秦虎锋、唐永芬、王斌,基于VB.NET 的人力资源管理系统, 科技广场,2009(1),162-164

[15] 潘浩、陈中良,基于决策树技术的企业人力资源管理系统研究,天中学刊,25(2),39-41(2010)

附录(系统部分源代码)

1. 登录实现代码:

function correctPNG() {

for(var i=0; i

var img = document.images[i]

var imgName = img.src.toUpperCase()

if (imgName.substring(imgName.length-3, imgName.length) == "PNG" ) {

var imgID = (img.id) ? "id='" + img.id + "' " : ""

var imgClass = (img.className) ? "class='" + img.className + "' " : ""

var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "

var imgStyle = "display:inline-block;" + img.style.cssText if (img.align == "left" ) imgStyle = "float:left;" + imgStyle if (img.align == "right" ) imgStyle = "float:right;" + imgStyle

if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle var strNewHTML = "" img.outerHTML = strNewHTML i = i-1 } } }

window.attachEvent("onload" , correctPNG);

function aa(obj,urlSrc)

{ }

obj.src=urlSrc;

function submit1(){

}

function passkeypress(){ }

function namekeypress(){ }

function pageload(){ }

function focusout(){

var name_key = document.getElementById("username" ).value; if (name_key == '' ) {

document.getElementById("username" ).focus(); if (event.keyCode==13) { }

document.getElementById("pass" ).focus(); if (event.keyCode==13) document.forms[0].submit();

if (document.getElementById("username" ).value == null || { }

if (document.getElementById("pass" ).value == null || { }

document.forms[0].submit();

Ext.Msg.minWidth = 300;

Ext.Msg.alert(' 提示' , ' 用户密码不能为空' ); return ;

document.getElementById("pass" ).value == "" ) Ext.Msg.minWidth = 300;

Ext.Msg.alert(' 提示' , ' 用户帐号不能为空' ); return ;

document.getElementById("username" ).value == "" )

}

} else{ }

//document.getElementById("dept").options.length=0;

2. 指标类别添加实现代码: function add(){ Ext.Ajax.request({

url : 'targettype.do?method=findsortno', success :function(sortno){

newid="insert_"+sortno.responseText; sortno_new=sortno.responseText*1-999; //console.info("%s",sortno_new);

var store = grid.getStore(); var rec = new

store.recordType({targettypeid:newid,targettypecode:'',targettypename:'',isvalid:'1',memo:''});

rec.markDirty();//将行的已编辑属性设置为true ,以便保存时打包数据

var count = store.getCount(); //获取当前数据的行数,确

保添加到最后一行

grid.stopEditing();

store.insert(count, rec);

grid.getSelectionModel().selectRow(count);//选中末行 var

col=grid.getColumnModel().findColumnIndex("targettypecode"); grid.startEditing(count, col); }

},

failure : failfunc });

3. 添加考核人员实现代码: function add(){

var hasChild = workshoptree.getRootNode().hasChildNodes();

{

Ext.Msg.minWidth = 300;

Ext.Msg.alert('提示', '当前用户没有可供修改的部门!'); return;

}

if(bmid==null || bmid=="" ){ }

Ext.Msg.minWidth = 300;

Ext.Msg.alert('提示', '请先选择部门!'); return;

Ext.Ajax.request({

url : 'employeeinfo.do?method=findsortno', success :function(sortno){

newid="insert_"+sortno.responseText; sortno_new=sortno.responseText*1-999; //console.info("%s",sortno_new);

var store = grid.getStore(); var rec = new

store.recordType({epid:newid,wsid:bmid,epname:'',epcode:'',sex:'1',birthday:'',posid:'',workdate:'',telphone:'',state:'1',sortno:'',spellno:''});

rec.markDirty();//将行的已编辑属性设置为true ,以便保存时打包数据

var count = store.getCount(); //获取当前数据的行数,确

保添加到最后一行

grid.stopEditing();

store.insert(count, rec);

grid.getSelectionModel().selectRow(count);//选中末行 var

col=grid.getColumnModel().findColumnIndex("epcode"); grid.startEditing(count, col);

},

failure : failfunc });

4. 考核打分实现代码: function insertData(){

var sysid=query_khtx.getValue();

//获取考核体系id

var selections=grid.getSelectionModel().getSelections(); var count=selections.length; var gc=gridc.getStore(); var rowindex=gc.getCount();

if(sysid==null || sysid==""){Ext.Msg.minWidth = 300;Ext.Msg.alert('

提示',' 请选择考核体系');return;}

if (selections.length==0){Ext.Msg.minWidth = 300;Ext.Msg.alert('提

示',' 请选择指标');return;}

Ext.MessageBox.minWidth = 300;

Ext.Ajax.request({

url :

' assesstarget.do?method=findsortno',

params :{count :count}, success :function(sortno){

var tid; var ttid; var tname; var tcode; var tunit;

var sysid=query_khtx.getValue(); for(var i=0;i

var records=0;

for(var j=0;j

if(selections[i].get('targetid')==gc.getAt(j).get('targetid')){

records++;

Ext.Msg.minWidth = 300;

Ext.Msg.alert('提示',' 该指标已存在

');

}

}

//获取用户编辑过的列并打包为obj 对象 tid=selections[i].get('targetid');

ttid=selections[i].get('targettypeid');

tname=selections[i].get('targetname');

tcode=selections[i].get('targetcode');

tunit=selections[i].get('targetunit');

sortno.responseText++;

newid="insert_"+sortno.responseText; sortno_new=sortno.responseText*1-999; //console.info("%s",sortno_new); var store = gridc.getStore(); var rec = new

store.recordType({accessid:newid,targetid:tid,targettypeid:ttid,targetname:tname,targetcode:tcode,targetunit:tunit,systemid:sysid,standard_value:'0',sortno:'',formula:'',isvalid:'1',memo:' '});

rec.markDirty();//将行的已编辑属性设置为

true ,以便保存时打包数据

var count = store.getCount(); //获取当

前数据的行数,确保添加到最后一行

gridc.stopEditing();

store.insert(count, rec);

gridc.getSelectionModel().selectRow(count);//选中末行

var

col=gridc.getColumnModel().findColumnIndex("targetid");

},

}

}

gridc.startEditing(count, col);

failure : failfunc });

}

5. 奖金计算实现代码: function grant(){

var access_nyS = access_ny.getValue();

var access_attributeS = access_attribute.getValue(); var bonus_baseS = bonus_base.getValue(); if(access_attributeS==1){

Ext.Msg.minWidth = 300;

Ext.Msg.alert('提示',' 暂时不支持部门的奖金计算!'); return;

}

Ext.Ajax.request({

url : 'bonus.do?method=checkValue', params : { },

success : function(xhr){

var str = xhr.responseText; //alert(str);

if('case1'==str){//b有值 ,提示用户“已经开始下次考核,本次考核access_ny:access_nyS,

access_attribute:access_attributeS

结果不可修改”,从奖金表中jx_bonus检索出数据

Ext.Msg.minWidth = 300;

Ext.Msg.alert('提示',' 已经开始下次考核,本次考核结果不可修

改!');

showP(access_nyS,access_attributeS);

}else if('case2'==str){//a 有值,判断发放标志字段flag

Ext.Ajax.request({

},

success : function(xhr){

url : 'bonus.do?method=checkflag', params : {

access_ny:access_nyS,

access_attribute:access_attributeS

if(xhr.responseText=='haveFlag'){//如果为

1,则提示用户“奖金已发放,不能重新计算”

Ext.Msg.minWidth = 300;

Ext.Msg.alert('提示',' 奖金已发放,不能重新

计算!');

showP(access_nyS,access_attributeS);

}else{//如果为0,提示用户“已经计算过奖金,是否重

新计算”

Ext.MessageBox.confirm('提示',' 已经计算

过奖金,是否重新计算?',function(btn1,text){

if (btn1=='yes'){//如果选择“是”,则删除

jx_bonus表中的符合条件的值,从表jx_accessvalue中取值,重新insert into

Ext.Ajax.request({

url :

' bonus.do?method=delcbonus',

params : {

access_ny:access_nyS,

access_attribute:access_attributeS

},

success : function(xhr){

if(xhr.responseText=='success'){

calcbonus(access_nyS,access_attributeS,bonus_baseS);

}

},

failure : failfunc });

}else{

showP(access_nyS,access_attributeS);

} });

}

},

failure : failfunc });

}else if('case3'==str){//a 无值,则按奖金计算公式计算奖金

calcbonus(access_nyS,access_attributeS,bonus_baseS);

}

},

failure : failfunc });

}


相关内容

  • 研发人员的绩效管理与薪酬激励
  • 研发人员的绩效管理与薪酬激励 [课程背景] 研发人员如何进行绩效管理?尤其是预研人员与平台开发人员以及测试人员如何进行绩 效设计? 矩阵管理下一人多任务如何进行绩效管理?如何进行项目绩效管理? 研发人员的基本工资与绩效工资以及奖金如何发放? 如何设计研发人员跨部门流动的职业通道? 如何对研发人员进行 ...

  • 员工绩效信息管理系统
  • 学号___ ____ 陕西国际商贸学院实验报告 基于ASP.NET的员工绩效信息管理系统 的设计和实现 二级学院:信息工程与管理 专业名称:信息管理与信息系统 学生姓名: 指导教师: 二○一五年六月 摘 要 随着知识经济的到来和市场竞争的加剧,世界各国企业都面临着越来越激烈的国内和国际市场竞争.为了 ...

  • 员工绩效管理系统
  • 河北工业职业技术学院 Asp.net 期末项目报告书 项目题目: 公司员工绩效信息管理系统 的研究与开发 系 别: 计算机技术系 专业年级: 2013级软件技术专业 成 员: 李文德 学号 04 刘梦华 学号 28 武静梅 学号 34 尹泽行 学号 15 娄仁政 学号 24 张 笑 学号 14 日 ...

  • [财富课堂]破局有道--商业模式转型之房地产计划运营管理及绩效管理
  • 破局有道--商业模式转型之房地产计划运营管理 及绩效管理 课程说明 ? 主  办:中房商学院 ? 时  间:2016年11月11-12日 ? 地  点:北  京 ? 网  址:www.zhongfang.org.cn 课程收益 1.学习房地产计划运营管理与绩效管理体系构建的思路和方法: 2.借鉴标杆 ...

  • 信息系统项目管理师论文-人力资源管理
  • 论软件项目人力资源管理 [摘要] 我公司于2008年3月授某期货经纪公司委托开发适合于期货行业的客户关系管理系统,我被公司任命为该项目的项目经理,主要负责项目的整体规划.组织实施和管理控制工作.该系统主要实现对客户进行有效的管理与服务,留住高价值客户.提升客户价值.吸引更多客户.该系统是基于java ...

  • 关于绩效管理的论文
  • 题目:*****绩效管理改进措施研究 学生姓名: 专 业: 年级(班) : 指导教师: *************学院毕业论文(设计) 中英文内容摘要 21 世纪管理学的核心无疑是人力资源管理,而绩效管理则是人 力资源管理的核心内容.但我国当前大部分企业,特别是国有企业, 还没有充分认识到绩效管理的 ...

  • 医院绩效管理系统的设计原理和目标
  • 医院绩效管理系统的设计原理 为了适应工作发展和医疗改革的需要,医院绩效管理系统的研究和开发己经成为国内医院信息管理的热点之一.设计实现一个完整可行.功能齐全.操作简易的绩效考核管理系统对调动全院工作人员的积极性.主动性和创造性, 形成以质量取胜.以绩效优先的局面, 提高医院服务水平, 增强核心竞争力 ...

  • 第2章战略人力资源管理
  • 第2章 战略人力资源管理 2.1.1人力资源发展趋势与挑战 ◆市场变化(经理人和技术进步) ◆人口变化 (老龄化等) ◆管理变革 (分权.信息技术和柔性管理) ◆国际化与多元化 ◆临时员工 2.1.2环境对人力资源战略的影响 ◆运用战略方法 :运用战略的方法管理人的观念迅速发展主要归因于过去二十年中 ...

  • 市长质量奖自评报告(4.4资源)
  • 4.4 资源 4.4.1 人力资源 人才是企业的核心资源,人力资源战略处于企业战略的核心地位,有效地利用与企业发展战略相适应的管理和专业技术人才,最大限度地挖掘才能,对实现企业战略目标,促进企业的飞跃发展具有关键意义.为实现公司的战略目标,基于公司"以人为本 共创事业 共享价值" ...