您的当前位置:首页正文

网上招聘系统论文

2024-04-26 来源:星星旅游
 网上招聘系统分析、设计与实现

目 录

第一章 网上招聘系统需求分析 ..................................................................................... 1

1.导言 ........................................................................................................................ 1 2.系统定义 ................................................................................................................ 2 3.应用环境 ................................................................................................................ 3 4.功能规格 ............................................................................................................... 4 5.性能需求 ............................................................................................................. 13 6.产品提交 .............................................................................................................. 14 7.实现约束 .............................................................................................................. 14 第二章 网上招聘系统概要设计 ................................................................................... 15

1.系统分析 .............................................................................................................. 15 2. 界面设计 ............................................................................................................ 15 3. 体系结构 ............................................................................................................ 16 4. 数据模型 ............................................................................................................ 23 5. 模块设计 ............................................................................................................ 33 第三章 网上招聘系统详细设计 ................................................................................... 51

1.系统设计概述 ...................................................................................................... 51 2. 详细设计概述 .................................................................................................... 51 3. 职位管理模块的详细设计 ................................................................................ 52 4. 题库管理模块的详细设计 ................................................................................ 65 5. 问卷管理模块的详细设计 ................................................................................ 66 6 简历管理模块的详细设计 ................................................................................. 67 7. 面试管理模块的详细设计 ................................................................................ 68 8. 用户登录模块的详细设计 ................................................................................ 69 9. 用户管理模块的详细设计 ................................................................................ 69 10. 客户端模块的详细设计 .................................................................................. 70 11. 复用的模块 ...................................................................................................... 72 12. 配置文件 .......................................................................................................... 78 第四章 网上招聘系统编码实现 ................................................................................... 84

1.编码格式规范 ...................................................................................................... 84 2.命名规范 .............................................................................................................. 86 3.声明规范 .............................................................................................................. 87 4.语句规范 .............................................................................................................. 89 5.注释规范 .............................................................................................................. 89 6. 代码范例 ............................................................................................................ 91 第五章 网上招聘系统客户端系统测试计划 ............................................................. 115

1

网上招聘系统分析、设计与实现

1. 测试项目 .......................................................................................................... 115 2. 测试方法 .......................................................................................................... 116 3. 测试标准 .......................................................................................................... 117 4. 测试计划 .......................................................................................................... 118 第六章 网上招聘系统客户端系统测试设计 ............................................................. 120

1.测试设计 ............................................................................................................ 120 2.测试用例 ............................................................................................................ 121 第七章 网上招聘系统客户端系统测试报告 ............................................................. 141

1. 测试时间、地点和人员 .................................................................................. 141 2. 测试环境描述 .................................................................................................. 141 3. 测试执行情况 .................................................................................................. 141 4. 测试结果分析 .................................................................................................. 144 5. 测试评估 .......................................................................................................... 146 第八章 总结与展望 ..................................................................................................... 147

1.本程序的总结和展望 ........................................................................................ 147 2.感想 .................................................................................................................... 147 致 谢 .................................................................................................. 错误!未定义书签。 参考文献 ....................................................................................................................... 149

2

网上招聘系统分析、设计与实现

第一章 网上招聘系统需求分析

1.导言

1.1 目的

该文档是关于用户对于网上招聘系统的功能和性能的要求,重点描述了网上招聘系统的功能需求,是概要设计阶段的重要输入。

本文档的预期读者是: · 设计人员; · 开发人员; · 项目管理人员; · 测试人员; · 用户。

1.2 范围

该文档是借助于当前系统的逻辑模型导出目标系统的逻辑模型的,解决整个项目系统的“做什么”的问题。在这里,没有涉及开发技术,而主要是通过建立模型的方式来描述用户的需求,为客户、用户、开发方等不同参与方提供一个交流的平台。

1.3 编写说明

HR,Human Resource(人力资源管理)的缩写。

JSP,Java Server Page(Java服务器页面)的缩写,一个脚本化的语言。 UML,Unified Modeling Language(统一建模语言)的缩写,是一个标准的建模语言。

1.4 术语定义

1

网上招聘系统分析、设计与实现

2.系统定义

我们分别阐述一下项目的来源、背景,项目的用户特点和项目的目标。

2.1 项目来源及背景

本项目是为北京某公司开发的一个网上招聘系统,由于这个公司的规模比较大,需要招聘的员工也很多,每次招聘总能收到成千上万的简历,如何挑选合适的应聘者常常是公司比较棘手的事情,为人力资源部的工作人员带来很多的工作量。为此公司希望有一个自动化的招聘系统能够给他们带来工作的便利,提高工作效率,同时能及时招聘到满意的人才。

为实现企业与人才的有效联系,弥补招聘中存在的种种不足,我们开发了招聘系统。公司人力资源部的工作人员通过这个招聘系统维护知识题库,编制问卷,发布职位和与这个职位相应的问卷;应聘者可以通过网上提交自己的简历并同时回答相应的问卷。人力资源部的工作人员通过这个招聘系统可以统计整理这些简历,并根据应聘者的简历和问卷分数提取出需要面试的人员,然后按照一定的方式通知面试人员参加面试,在面试过程中,记录相应的面试结果。人力资源部的工作人员可能随时浏览人员简历和面试的相关信息。

2.2 用户的特点

本系统的用户都是网上用户,包括两类,一类是应聘者,他们的差异比较大,有的学历很高,有的可能很低。有的经验很丰富,有的可能没有经验等。另外一类用户是管理用户,他们是公司内部的人,主要是人力资源管理人员和系统管理人员。他们对招聘业务很熟悉,系统管理人员对系统很熟悉,总之,他们对使用管理软件比较熟悉。

2.3 项目目标

本项目设定的目标如下:

· 系统能够提供友好的用户界面,使操作人员的工作量最大限度的减少; · 系统具有良好的运行效率,能够达到提高生产率的目的; · 系统应有良好的可扩充性,可以容易地加入其他系统的应用;

· 平台的设计具有一定的超前性,灵活性,能够适应企业生产配置的变化; · 通过这个项目可以锻炼队伍,提高团队的开发能力和项目管理能力。

2

网上招聘系统分析、设计与实现

3.应用环境

根据用户的需求陈述,可以确定本项目分为客户端和管理端,客户端主要功能是提供应聘者的职位查询、简历录入、回答问卷,简历提交等。管理端的功能提供公司人力资源管理人员(HR)进行的知识库(题库)管理、问卷管理、职位发布、简历管理、用户管理等。它们的关系如图1-1所示。

HRHRHR题库管理问卷管理职位发布试题信息应聘者问卷信息职位信息应聘职位填写简历回答试题网职位信息络服务简历信息简历信息提交简历信息HRHR简历管理面试管理器面试信息 图1-1 网上招聘系统流程图

3.1 系统运行的网络环境

本系统的网络运行图如图1-2所示,无论是客户端的应聘者还是管理端的管理用户都可以通过网络登录到本系统中。应聘者通过网络提交简历等相关信息,人力资源部通过网络发布职位信息,获得应聘者提交的简历信息,进行面试管理。管理端的系统管理员需要设置管理端的用户以及相应的权限。

3.2 系统运行的硬件环境

本系统的硬件环境如下: 客户机:普通PC

· CPU:P41.8GHz以上 · 内存:256MB以上

3

网上招聘系统分析、设计与实现

· 能够运行IE5.0以上或者Netscape4.0以上版本的机器 · 分辨率:推荐使用1024×768像素 Web服务器

· CPU:P41.0GHz · 内存:1G以上 · 硬盘:80GB以上 · 网卡:KMb/s速度 数据库服务器

· CPU:P42.0GHz · 内存:1GB以上 ·硬盘:80GB以上

HRWeb服务器应聘者系统管理员数据库服务器 图1-2 网络拓扑结构图

系统运行软件环境

本系统的软件环境如下:

· 操作系统:UNIX/Linux/Windows2000或以上版本 · 数据库:SQL Server 2000

· 开发工具包:JDK Version 1.4.2 ·Web服务器:Tomcat ·浏览器:IE5.0以上

4.功能规格

我们采用面向对象分析作为主要的系统建模方法,使用UML(Unified Modeling Language)作为建模语言。UML为建模活动提供了从不同角度观察和展示系统的各种特征的方法。在UML中,从任何一个角度对系统所作的抽象都可能需要几种模型来描述,而这些来自不同角度的模型图最终组成了系统的映像。

4

网上招聘系统分析、设计与实现

用例描述角色(用户、外部系统以及系统处理)是如何与系统交互来完成工作的。用例模型提供了一个非常重要的方式来界定系统边界以及定义系统功能,同时,该模型将来可以派生出动态对象模型。

设计用例时,我们遵循下列步骤:

1)识别出系统的角色。角色可以是用户、外部系统,甚至是外部处理,通过某种途径与系统交互。重要的是着重从系统外部执行者的角度来描述系统需要提供哪些功能,并指明这些功能的执行者(角色)是谁。尽可能地确保所有角色都被完全识别出来。

2)描述主要的用例。可以采取不断地问自已“这个角色究竟想过系统做什么?”来准确地描述用例。

3)重新审视每个用例,为它们下个详尽的定义。

4.1 角色定义

角色或者执行者指与系统产生交互的外部用户或者外部系统。 4.1.1 应聘者

应聘者是指在这个网络招聘系统中通过客户端提交简历信息的人员,这个角色主要参与客户端的职位查询、填写简历、回答问题、提交简历等功能。

4.1.2 管理用户

管理用户是指管理端的用户,此角色派生两个子类,HR(人力资源管理)和系统管理员,HR是指在网络招聘系统中通过管理端参与公司人力资源管理工作的人中,它又可以派生三个子类即试题管理者、职位发布者和面试管理者。系统管理员是指对网上招聘系统进行相关设置、进行系统维护的人员,他也是通过管理端登录对管理端的用户进行设置,分配权限等,它们的关系如图1-3所示。

管理用户HR系统管理员试题管理者职位发布者面试管理者

图1-3 管理用户角色的关系

5

网上招聘系统分析、设计与实现

管理用户具体说明如下: HR

· 试题管理者。管理题库、组织相关问卷。

· 职位发布者。根据公司的需要发布相应的职位。

· 面试管理者。整理应聘者简历、对简历合格人员进行面试。 系统管理员

通过管理端对系统用户进行管理的人员,这个角色主要负责对管理端用户的增删,权限的设置等功能。

4.1.3 数据库

数据库是一个与系统产生交互的外部系统,这个角色负责系统的数据查询、增加、删除和修改等操作。

4.2 系统主用例图

网上招聘系统可以分为两个主要的组成部分,一个是客户端子系统。一个是管

管理端子系统理端子系统。客户端子系统功能主要是指应聘者通过登录招聘网站进行操作的功能,即应聘功能。管理端子系统功能是招聘公司的管理人员发布招聘职位,整理应聘者简历,面试等功能。系统的主用例如图1-4所示。

管理端子系统客户端子系统管理用户应聘者

图1-4 系统的主用例图

客户端子系统4.3 客户端子系统

应聘者应聘者通过公司的招聘网站登录到系统中进行应聘,应聘者通过它提交简历,进行应聘,这就是客户端子系统的功能。在客户端用户可以看到职位名称,职位发布日期,截止日期,职位类型,招聘人数等说明,按职位发布日期排序。当点击职位名称时进入职位详细信息页面,如果应聘的话,可以填写简历信息,并回答问卷,最后将问卷连同简历一同提交。图1-5是它的活动图。

客户端的功能主要包括选择职位、填写简历、回答问卷等功能,图1-6是它的用例图。

6

网上招聘系统分析、设计与实现

浏览、选择职位选择职位填写简历输入简历回答试卷应聘者提交回答问卷

图1-5 客户端的活动图 图1-6 客户端的功能用例图

客户端管理的这些用例描述如下:

F-C-1:职位选择。应聘者登录到招聘网站可以看到招聘的职位列表,在职位列表职位名称,职位发布日期,截止日期,职位类型,招聘人数等,按职位发布日期序。当点击某个招聘职位名称时进入该职位详细信息页面,职位详细页面显示职位名称,职位描述,职位要求,招聘人数等。

F-C-2:简历输入。简历输入包括应聘者的基本信息、工作经历、教育经历、基本技能、家属关系、个人简短评价等,它们组成应聘者的简历信息。

F-C-3:问卷回答。应聘者在输入简历后必须回答问卷、问卷分为价值取向、工作取向两种,问卷从题库中随机抽取,每次抽取价值取向和工作取向试题各一套,应聘者须同时回答这两套试题,企业人力资源人员通过问卷的回答情况和简历情况来选择应聘者。

4.3.1 职位选择

职位选择是显示目前正在招聘的所有职位以及每个招聘职位的描述和应聘要求等。具体描述如下。

用例描述:应聘职位选择; 执行者:应聘者;

前置条件:应聘者已登录系统;

后置条件:选择应聘职位后,则可以输入简历。 基本路径:

a)应聘者登录到公司的招聘网页,显示目前的招聘职位列表,发布的日期,招聘的人数等;

b)点击任何一个招聘职位可以浏览招聘职位的详细信息,包括职位工作描述、对应聘者的要求、招聘人数等信息;

7

网上招聘系统分析、设计与实现

c)如果对这个职位满意,可以点击“应聘该职位”进入填写简历信息页面,开始填写简历和回答问卷等环节。

4.3.2 简历输入

如果应聘者满意某个职位,就开始录入简历,简历从应聘者的基本信息开始,然后输入工作经历、教育经历、基本技能、家庭成员、自我介绍等内容,最后开始回答问卷。具体描述如下。

用例描述:简历输入; 执行者:应聘者;

前置条件:应聘者已选择应聘职位;

后置条件:简历输入后,则可以回答问卷。 基本路径:

a)基本信息输入,包括姓名、性别、年龄、身高、证件类型、证件号码、婚姻状况、工作年限、期望的月薪、居住地、电话、E-mail、地址、邮编等信息;

b)工作经历信息输入,包括起止时间、工作单位、单位所属行业、单位性质、部门、职位、工作描述等;

c)教育经历信息输入,包括起止时间、学校、专业、学位、简单描述等; d)基本技能信息输入,包括技能名称、熟悉程度、证书、其他说明等; e)家庭成员信息输入,包括亲属姓名、年龄与本人的关系、工作单位、职位等;

f)自我介绍输入是对自己的简短评价,字数在100字以内。 4.3.3 问卷回答

问卷回答要求应聘者回答问卷的所有题目,根据所选择的答案,系统给出分数(应聘者看不到这个分数),具体功能描述如下。

用例描述:问卷回答; 执行者:应聘者;

前置条件:应聘者已输入简历;

后置条件:问卷回答后,则可以提交简历并附问卷结果。 基本路径:

a)要求应聘者回答价值取向和工作取向的问卷;

b)每套问卷都是选择题,问卷全部回答后,才可以提交简历; c)最后简历信息和回答好的问卷一起提交到服务器端。

4.4 管理端子系统

管理端子系统主要是提供公司人力资源管理人员使用的功能,它的功能分为题库管理、问卷管理、职位发布、简历整理、面试管理等部分,每个登录者首先要通过安全认证然后确认权限,系统根据相应的权限实现相应的功能。图1-7是管理端

8

的用例图。

网上招聘系统分析、设计与实现

试试试试试试试试试试form Logical View试试试试试试试试试试试试试试试form Logical View试试试试试试试试试试试试试试试form Logical View试试试试试试试试试试试试试试试form Logical View试

图1-7 管理端用例图

F-L-1: 登录管理

登录管理负责所有的管理端的登录,管理端的人员要登录到管理端必须经过登录界面,输入自己的用户名和密码,然后系统判断这个用户的权限信息,不同的登录人可能具有不同的权限,系统根据不同的权限实现不同的功能。

F-M-1: 题库管理

题库管理 由管理员登录到系统,实现地知识库试题的增加、删除、修改的功能及提供知识库试题的详细信息。

F-M-2: 问卷管理

问卷管理是由管理员登录到系统,根据知识题库中提取出来的题目生成各种类别的问卷,并且对问卷的试题进行增加、删除、修改的功能。

F-M-3:职位发布

职位发布是由管理员登录到系统,录入职位及职位的详细描述信息,并且为职位附加问卷,同时也可对职位进行增加、删除、修改的功能。

F-M-4: 简历管理

简历管理是由人力资源部的管理人员对应聘者发来的简历进行整理,并根据试题的分数,挑选合适的简历,同时浏览简历的基本信息,最后确定可以进行面试的人员,这样将所有的应聘者人为等待面试、简历删除、保存简历三个状态。

F-M-5:面试管理

面试管理是由人力资源管理部门的面试管理者通知要试的人员具体面试的时间、然后以人员进行面试,记录面试结果。

F-A-1: 用户管理

用户管理是由系统管理员增加或删除用户,编辑用户名、用户密码,修改用户权限,使具有不同权限的用户进入系统主界面时,出现在界面左侧栏中的图标数有所不同,具体的图标与用户所具有的权限对应。

9

网上招聘系统分析、设计与实现

4.4.1 登录管理

登录到管理端的所有人都需要通过登录界面进入相应的管理界面。在登发界面输入用户名和密码,系统首先判断用户名和密码的正确性,然后根据用户名确定其权限,不同的登录者具有不同的权限,根据登录者具有的权限将相应的功能显示在管理界面上,没有权限操作的功能将不显示在这个界面上。图1-8是它的活动视图。

登陆者登录管理端输入用户名和密码提交数据库合法性验证登录到管理界面判断权限 图1-8 登录管理活动视图

4.4.2题库管理

在网上招聘系统中,有一套题库,是由大量的选择题组成,它是问卷的基本组成。题库管理模块主要是完成对每个试题的增加、删除、修改、查询等维护功能。具体描述如下。

用例描述:题库管理; 执行者: 试题管理者;

前置条件: 试题管理者已登录系统;

后置条件: 如果题库维护成功,则数据库中的试题库随之变化,此时可以组织问卷。

基本路径:

a)进入题库管理界面,首先展示目前题库已有的题目;

b)点击每个题目可以详细浏览这个题目的具体内容,同时也可以对这个试题的具体内容进行修改;

c)增加题目时,首先选择题目类别,然后是题目名称、题目内容、确定可选答案(多个)等;

10

网上招聘系统分析、设计与实现

d)可以删除选择的题目。 4.4.3问卷管理

在网上招聘系统中,要定期维护问卷,因为每个招聘职位都附有一个磁问卷,应聘者必须回答问卷,才可以提交简历。问卷管理主要是组织问卷,问卷中的所有题目都来自题库,每份问卷都有不同的针对性,针对不同的招聘需求。具体功能描述如下。

用例描述:问卷管理; 执行者: 试题管理者;

前置条件: 试题管理者已登录系统;

后置条件: 如果问卷维护成功后,则数据库中的问卷随之变化,发布职位时可以选择合适的问卷。

基本路径:

a)进入问卷管理界面,首先展示目前存在的问卷; b)点击每个问卷可以详细浏览每个问卷的题目;

c)可以对一些题目进行删除,或者可以重新整理各个题目的顺序,同时可以预览整个问卷;

d)提供增加问卷的按钮,增加问卷时,从题库中选择题目; e)可以删除选择的问卷。 4.4.4职位发布

职位发布是网上招聘系统的主要功能之一,管理人员根据企业发展的需要,定期发布招聘职位需求,详细描述这个职位情况,招聘要求等。每个职位都附有一套问卷,需要应聘者回答,问卷是针对具体职位选定的,职位信息发布后,应聘者通过网络可以看到职位,并可以应聘,具体功能描述如下。

用例描述:职位发布; 执行者: 职位管理者;

前置条件: 职位管理者已登录系统;

后置条件: 如果职位发布成功后,则数据库听职位信息随之变化,应聘者可以通过网络看到招聘职位。

基本路径:

a)进入职位发布界面,首先展示目前正在招聘的所有职位,可以增加新的招聘职位;

b)通过点击每个职位,可以详细浏览每个职位的详细描述; c)可以对每个职位信息进行修改; d)提供职位条件查询功能; e)提供职位删除功能。 4.4.5简历管理

应聘者将简历提交之后,人力资源部门的人员开始整理简历,将达到一定成绩

11

网上招聘系统分析、设计与实现

的人员作为面试的被选对象,然后通过浏览其简历情况,确定可以面试的人员,对需要面试的人员通过电话、邮件等方式通知面试时间。具体的功能描述如下。

用例描述:简历管理; 执行者: 面试管理者;

前置条件: 面试管理者已登录系统;

后置条件: 简历整理完成后,则可以将应聘者分为几个类别,以便为面试做好准备。

基本路径:

a)进入简历管理界面,首先展示目前简历对应的职位列表,提供查询功能; b)通过点击职位列表进入相应职位的所有简历列表界面,这个界面也显示了每个应聘者的姓名、年龄、性别、问卷的分数以及目前的处理状态等信息;

c)在简历列表中,通过点击一个应聘者可以显示这个应聘者的简历信息,问卷回答发问,还可以打印简历;

d)对简历有三种处理结果,即通知面试、保留简历、拒绝;

e)对简历的处理结果,可以采用电子邮件、电话和信件等方式通知应聘者,如果采用电子邮件通知应聘者,系统将提供一个模板。

4.4.6面试管理

对满足一定条件的应聘者,可以对其进行面试,记录面试的结果。具体描述如下:

用例描述:面试管理; 执行者: 面试管理者;

前置条件: 面试管理者已登录系统;

后置条件: 如果大幅度工完成后,则面试的结果记录到数据库中。 基本路径:

a)进入面试管理界面,首先展示目前的招聘职位列表,提供查询功能; b)点击某个职位进入与这个职位相应的接受面试人员的列表;

c)将接受面试的人分类浏览,分为等待通知者、等待面试者和面试完成者;对没有通知面试的人,通知其进行面试,他的状态就变为等待面试者;

d)点击每个列表上的人,可以浏览到这个应聘者的信息;

e)面试完成时,需要记录面试的时间、面试人以及面试结果等,记录信息提交后这个应聘者的状态就变为面试完成者。

4.4.7用户管理

系统管理员可以进行权限设置,在用户管理界面中对用户进行增加、删除、修改、查询。具体功能描述如下。

用例描述:用户管理; 执行者: 系统管理员;

前置条件: 系统管理员已登录系统;

12

网上招聘系统分析、设计与实现

后置条件: 如果用户信息维护完成,则用户的相应信息将记录到数据库中。 基本路径:

a)进入用户管理界面,显示目前的系统用户以及每个用户具有的权限; b)点击不同的用户,可以显示这个用户的信息以及相应权限,必要时可以修改其权限;

c)可以增加用户,也可以删除用户。

5.性能需求

根据用户对本系统的要求,确定系统在响应时间、可靠性、安全性等方面有较高的必能要求。

5.1 界面需求

系统的界面要求如下。

1)页面内容:主题突出,站点定义、术语和行文格式统一、规范、明确、栏目、菜单设置和布局合理,传递的信息准确、及时。内容丰富,文字准确,语句通顺,专用术语规范,行文格式统一规范。

2)导航结构:页面具有明确的导航指示,且便于理解,方便用户使用。 3)技术环境:页面大小适当,能用各种常用浏览器以不同分辨率浏览,无错误链接和空链接;采用CSS处理,控制字体大小和版面布局。

4)艺术风格:界面、版面形象清晰悦目、布局合理,字号大小适宜、字体选择合理,前后一致,美观大方,动与静搭配恰当,动静效果好;色彩和谐自然,与主题内容相协调。

5.2 响应时间需求

无论是客户端还是管理端,当用户登录,进行任何操作的时候,系统应该及时地进行反应,反应的时间在5秒以内。系统应能监测出各种非正常情况,如与设备的通信中断,无法连接数据库服务器等,以避免出现长时间等待甚至无响应。

5.3 可靠性需求

系统应保证7×24小时内不宕机,保证20人可以同时在客户端登录,此时系统能正常运行,正确提示相关内容。

13

网上招聘系统分析、设计与实现

5.4 开放性需求

系统应具有较强的灵活性,以适应将来功能扩展的需求。

5.5 可扩展性需求

系统设计要求能够体现扩展性要求,以适应将来功能扩展的需求。

5.6 系统安全性需求

系统有严格的权限管理功能,各功能模块需有相应的权限方能进入。系统需能够防止各类误操作可能造成的数据丢失,破坏。防止用户非法获得网页以及内容。

6.产品提交

提交产品为:

a)应用系统软件包; b)数据库初始数据; c)系统开发过程文档;

d)系统使用、维护说明文档,提交方式为CD介质。

7.实现约束

系统的实现约束如下:

a)操作系统为Windows200;

b)开发平台为: eclise-SDK-3.1.2-win32; c)数据库为SQL serer2000。

14

网上招聘系统分析、设计与实现

第二章 网上招聘系统概要设计

1.系统分析

本系统可以实现网上在线招聘,应聘者通过互联网投递简历进行网上测评。同时,招聘单位可以汇总简历,游览简历,并通过测评结果选择合格的简历,通知面试,进行面试。方便企业与求职者的交流。系统包括管理端子系统和客户端子系统。

管理端子系统包括题库管理、问卷管理、职位发布、简历管理、面试管理、用户管理等功能。客户端子系统包括查询职位,简历录入,回答问卷,提交简历等功能。图2-1和图2-2为客户端和管理端的组成构图。

网上招聘系统客户端子系统管理端子系统查询职位填写简历发布职位维护系统获取简历应聘职位回答问卷管理职位管理用户管理简历管理问卷面试管理管理题库

图2-1 客户端子系统图示 图2-2 管理端子系统

2. 界面设计

本系统的用户界面按功能分为客户端界面和管理端界面。

2.1 管理端界面设计

管理端主要实现题库管理、问卷管理、职位发布、简历管理、面试管理以及用户管理等功能。主要界面设计如下:

·登录界面:通过输入用户各和密码实现用户登录,并判断用户的权限; ·管理首页:根据用户的权限,进入首页,并在首页中展示此用户相应可以操作的权限功能;

15

网上招聘系统分析、设计与实现

·题库管理:包括“题目列表”、“题目详细信息”、“增加试题”、“删除试题”、“修改试题”、“增加答案”和“删除答案”等页面;

·问卷管理:包括“试题列表”、“试题详细信息”、“修改试题”、“增加试题”、“删除试题”和“预览试题”等页面;

·职位发布:包括“职位列表”、“职位详细信息”、“查询职位”、“增加职位”、“删除职位”和“修改职位”等页面;

·简历管理:包括“职位列表”、“应聘者列表”、“应聘者申请表”、“查看试卷答案”、“回复信息”和“打印简历”等页面;

·面试管理:包括“职位列表”、“应聘者列表”、“应聘者求职申请表”、“查看试卷答案”、“未发通知”、“等待面试”和“面试完成”等页面;

·用户管理:包括“用户列表”、“用户信息”、“修改用户信息”、“增加用户”和“删除用户”、“用户权限设置”等页面;

具体页面流如图2-3所示。

2.2 客户端界面设计

客户端主要为应聘者提供网上应聘的过程,应聘者通过选择合适的职位,填写个人简历,并通过问卷来进行测评,提交的简历和测评结果一同到服务器端,供管理者挑选合适的简历。

在客户界面,应聘者首先进入企业招聘界面,点击“招聘”按钮进入职位列表界面,包括“职位列表”、“职位详细信息”、“申请职位”、“填写个人基本信息”、“填写工作经历”、“填写教育经历”、“填写基本技能”、“填写家庭成员”、“填写个人评价”、“预览简历”和“答题”等页面。

具体页面流如图2-4所示

3. 体系结构

系统的总体结构设计遵循如下原则。

1)系统应具有良好的适应性:能适应用户对系统的软件环境、管理内容、模式和界面的要求;

2)系统应具有可靠性:采用成熟的技术方法和软件开发平台,以保证系统在以后的实际应用中安全、可靠;

3)系统应具有较好的安全性:应提高安全机制和用户权限限制机制的完善程度,确保数据的受限访问;

4)系统应具有良好的可维护性:系统应易于维护、安装;

5)系统应具有良好的可扩展性:系统应适应未来信息化建设的要求,能方便

16

网上招聘系统分析、设计与实现

地进行功能扩展,以建立完善的信息集成管理体系。

本系统采用体系结构,struct是一个基于模型(Model)一视图(View)一控制器(Controller),即MVC模式的应用架构的开源框架。

3.1 体系结构

目前软件项目中有很多体系结构,其中struct是比较流行的一种。

3.1.1 struct体系结构

对于开发Web应用,要从头设计并开发出一个可靠、稳定的框架不是一件容易的事情。随着Web开发技术的日趋成熟,在Web开发领域出现了一些现成的优秀的框架、开发者可以直接使用它们,struct就是一个很好的框架结构,它是在JSP Model2基础上实现的一个MVC框架,在struct框架在模型由实现业务逻辑的JavaBean或者EJB组件构成,控制器由ActionServlet和Action来实现,视图由一组JSP文件组成,图2-5显示了Struct实现的MVC框架。

17

问卷管理 登录界面 管理首页 职位发布 简历管理 面试管理 题库管理 用户管理 网上招聘系统分析、设计与实现

增加试题 试题列表 试题详细信息 修改试题 删除试题 预览试题 价值取向问卷 问卷管理 工作取向问卷 职位发布 职位列表 查询职位 职位详细信息 增加职位 修改职位 停止招聘 删除职位 查看试卷答案 简历管理 职位列表 应聘者列表 应聘者申请表 回答信息 打印简历 未发通知 面试管理 职位列表 应聘者列表 等待面试 面试完成 修改试题 题库管理 题目列表 增加试题 查询试题 删除试题 增加用户 用户管理 用户列表 删除用户 用户权限用户信息 修改用户信息 题目详细信息 删除答案 增加答案 应聘者申请表 查看试卷答案 图2-3 管理端的页面流程

18

网上招聘系统分析、设计与实现

应聘者网上登录 企业招聘信息 职位列表 职位详细信息 申请职位 填写个人基本信息 填写工作经历 答题 预览简历 填写个人评价 填写家庭成员 填写基本技能 填写教育经历 图2-4 客户端的页面流程

其中:

·视图,就是一组JSP文件,这些JSP文件没有业务逻辑,也没有模型信息,只有标签,这些标签可以是标准的JSP标签或者是客户化标签,如struct标签库的标签。此外,通常将struct框架中的ActionForm Bean也划为视图模块,ActionForm Bean是一种JavaBean,除了具有一些JavaBean的常规方法外,还包含了一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置为默认值。Struct框架利用ActionForm Bean来进行视图和控制器之间表单数据的传递。Strcut框架将用户输入的表单数据保存在ActionForm Bean中,将它传递给控制器,控制器可以对ActionForm Bean中的数据进行修改,JSP文件使用struct标签读取修改后的ActionForm Bean的信息,然后重新设置HTML表单。

Struct-config.xml 控制器Action 模型 JavaBean EJB 浏览器 Web 服务器 ActionServlet Action 视图 JSP Action 图2-5 struct实现的MVC框架

·控制器,控制器由ActionServlet类和Action类实现,ActionServlet类是struct框架中的核心组件,是这个MVC的中央控制器的角色。ActionServlet主要负责接收HTTP请求的信息,根据配置文件struct-config.xml的配置信息,将请求转发给适当的Action对象,如果该Action对象不存在,ActionServlet会先创建这个Action对象.Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程,对于小型简单的应用,Action类本身也可以完成一些实际的业务逻辑。

·模型,模型表示应用程序的状态和业务逻辑,业务逻辑常常由JavaBean或者EJB组件实现。

如果在Web应用开发中套用现成的struct框架,就可以简化每个开发阶段的工作,开发人员可以更加有针对性地分析应用需求,不必重新设计框架,只需在

19

网上招聘系统分析、设计与实现

struct框架的基础上,设计MVC各个模块包含的具体组件,在编码过程中,可以充分利用struct提供的各种实用类和标签库,简化编码工作。

Struct框架可以方便迅速地将一个复杂的应用划分成模型、视图和控制器组件,而struct的配置文件struct-config.xml可以灵活地组装这些组件,以简化开发过程。

3.1.2 系统体系结构

根据系统分析结果,该系统从结构上应满足: ·基于游览器进行显示以方便用户使用;

·采用MVC的三层体系结构,分化各个功能组件; ·采用JDBC技术与数据库通信以便于数据库的转换; ·采用标签技术完成动态页面的简单逻辑。 本系统的体系结构如图2-6所示,它基本遵循了struct体系的MVC框架规范。

视图(V)层:用户界面(浏览器) HTML,CSS,DHTML,JavaScript,XML 视图(V)层:服务器端脚本 Connects UI to Business Objects, Java Server Pages,Java Servlets 控制(C)层:分布式组件 JavaBean 模型(M):数据源和持久对象存储 ODBC, JDBC, OLEDB, ADO, XML, LDAP 图2-6 系统的体系结构

其中:

·表示层,用于与用户进行交互并显示结果。包括所有的JSP,提供用户界面,接受用户输入,还包括相应的ActionFrom Bean,用来存放表单数据,并进行表单数据验证;

·控制层,包括所有的Action类,它完成三项任务,一是进行业务逻辑验证,二是调用模型组件,三是决定将合适的视图组件返回给用户;

·模型,包括进行逻辑处理的JavaBean等,数据库采用ODBC技术以提供数据库的可移植性。

体系结构的具体拓扑图示如图2-7所示。

20

网上招聘系统分析、设计与实现

表示层逻辑客户端子系统业务层逻辑服务器处理模块职位管理简历管理面试管理…………Reques/ResponseSession/cookie用户管理数据库存取接口服务层……………………关系型数据库其他服务 图2-7体系结构拓扑图

1)客户层:用于与企业信息系统的用户进行交互以及显示根据特定业务规则进行计算后的结果。本系统将完全采用基于Web的(B/S架构)客户端,即用户可以直接通过浏览器来访问和使用本系统。

2)中间层:这相当于三层标准架构中的Web应用服务层,支持诸如响应客户请求以及查询等功能。并且由中间层进行逻辑处理,再将处理的结果反馈给客户或者发送到数据库中。

3)服务层:主要是数据库系统,这里的数据库系统主要是关系数据库系统(RDMS)。

3.2 系统进行环境

下面讲述系统运行的网络结构,硬件、软件环境。

3.2.1 网络结构图

本系统的网络拓扑图如图2-8所示。

21

网上招聘系统分析、设计与实现

Web服务器数据库服务器交换机internet互联网局域网用户系统管理员远程用户机………………远程用户机 图2-8 网络拓扑图

其中的局域网用户机主要是公司内部的人员可以使用的机器,运程用户机主要是指通过互联网登录系统的人员使用的机器,可以是公司内部的人,也可以是应聘者。

3.2.2 硬件环境

本系统的硬件环境如下。 1)客户机:普通PC ·CPU:P41.8GHz以上 ·内存:256MB以上

·能够运行IE5.0以上或者Netscape4.0以上版本的机器 ·分辨率:推荐使用1024×768像素 2)Web服务器 ·CPU:P42.0GHz ·内存:1GB以上 ·硬盘:80GB以上

·网卡:KMb/s速度网卡 3)数据库服务器 ·CPU:P42.0GHz ·内存:1GB以上 ·硬盘:80GB以上 32.3 软件环境

本系统的软件环境如下:

·操作系统:UNIX/Linux/Windows2000或以上版本 ·数据库:SQL Server 2000

·开发工具包:JDK Version1.4.2 ·开发环境:eclipse-SDK-3.1.2win32

22

网上招聘系统分析、设计与实现

·Web服务器:Tomcat ·浏览器:IE5.0以上 1) 数据库及操作系统:对于核心数据库来说,选择一个合适的数据库系统对我们的系统运行是很重要的,选择数据库的关键因素是要考虑预计会有多少人同时访问数据库;正常工作时间的级别;用来访问数据库的应用程序的类型;运行数据库的服务器的硬件和操作系统类型以及管理人员的专业技术水平。目前市场上适用于中小型企业的数据库产品有IBM DB2、Microsoft SQL Server系列,Oracle系列。所有这些产品都基于SQL语言。同时,它们还拥有精度复杂的安全控制以适应不同的商业需要。服务器操作系统使用Windows2000 Server

考虑到价格因素、易用性,我们使用SQL Server2000作为系统后台数据库系统,服务器操作系统采用Windows2000 Server。

2)Web服务软件:目前的Web服务器软件有很多种,成熟而且稳定的有Apache、Tomcat和Microsoft的IIS,它们占据着Web服务器市场最大的份额。Tomcat是Sun和Apache合作推出的JSP Server,支持Servlet2.2及JSP1.1等版本。而且Tomcat未来将会取代Jserv,成为Apache主要的Servlet&JSP Engine。Tomcat在设计上是以独立的Server执行,而不像Jserv是附在Apche中,这样就更可以在servlet中,发挥非HttpServlet的能力。Tomcat是Java程序,所以只要有JDK就可以使用,不需要考虑操作系统平台。因此这里选择Tomcat作为Web服务器。

4. 数据模型

本系统的数据模型设计内容主要是进行数据库的设计。

4.1 数据库的概念结构模型设计

概念设计用来反映现实世界中的实体、属性和它们之间的关系等的原始数据形式,建立数据库的每一幅用户视图。图2-9是系统E-R图。其中系统中的管理用户创建维护题库、管理问卷、发布招聘职位,问卷中的所有题目是由题库中的题目构成,发布的每个职位都对应一套(多个)问卷。应聘者看到招聘职位后,选择合适的职位应聘,提交自己的基本信息、工作经历、教育经历、家庭成员、掌握的基本技能、个人评价等简历情况,并回答问卷。

23

网上招聘系统分析、设计与实现

试题题目 n 组合 1 对应 n 选择答案 1 问卷 n 对应 n 职位 1 应聘 n 应聘者 1 提交简历 1 n n n n 1 n 基本信息工作经历教育经历基本技能家庭成员个人评价问卷回答

4.2 数据库的逻辑结构模型设计

数据库的逻辑设计是将各局部的E-R图进行分解、合并后重新组织起来形成数据库全局逻辑结构,包括所确定的关键字和属性、重新确定的记录结构、所建立的各个数据之间的相互关系。根据本系统需求分析,系统的数据库包括了题库管理、问卷管理、职位发布、简历管理、用户管理以及需要的基本数据字典等部分。

题库管理包括的库表:

·answer——题库中的题目答案; ·question——题库中的题目。 问卷管理包括的库表: ·exam——问卷信息;

·examdetail——问卷包含题目的详细信息; ·jobexam——职位对应的问卷。 职位发布包括的库表:

·joblist——职位的详细列表;

24

图2-9 系统的E-R图

网上招聘系统分析、设计与实现

·jobexam——职位对应的问卷。 简历管理包括的库表:

·applyjob——应聘某个职位的信息; ·career——工作经历; ·education——教育经历;

·examresult——问卷回答结果; ·family——家庭关系;

·personalinfo——个人的基本信息; ·skill——基本技能信息。 用户管理包括的库表:

·users——管理端用户的信息。 基本字典包括的库表:

·City——包括的城市名称,例如北京、上海、广州等;

·CurrentSalary——当前的薪水范围,例如1000元以下,1000~2000元等; ·ExpectedSalary——期望的薪水范围,例如1000~2000,2000~3000,……,10000以上等;

·MarriageType——婚姻状况,包括已婚、未婚;

·MoneyType——币种,包括人民币、美元、港元、欧元等; ·Nation——国籍,包括中国、美国、英国、德国等;

·IdentifyType——身份证件类型,包括身份证、军人证等; ·Province——省名,包括黑龙江、吉林、辽宁、河北、河南等;

·HealthType——健康状况类型,包括良好、一般、很好、不好、差等; ·Hukou——户口类型,包括城镇户口、农村户口等;

·CodeJobType——工作类型,包括教师、软件工程师、律师、法官、公务员等。

表2-2是对表Joblist的设计,其他库表的详细设计见数据表设计文件。

表2-2 Joblist(职位列表)表

字段名 职位代号 职位名称 工作性质 职位发布日期

职位结束日期

招聘人数

字段代码 JobID JobName JobTypeID PubDate EndDate JobNum

字段类型 VARVARCHAR(12) VARVARCHAR(30) VARVARCHAR(1) VARVARCHAR(10) VARVARCHAR(10) INT

25

关键字 Y

可否为空 N N N N N

代码字典表

CodeJobType

网上招聘系统分析、设计与实现

工作描述 Description VARVARCHAR(120) 职位要求 Requirements VARVARCHAR(120) 备注 Others VARVARCHAR(50) ***系统数据库设计物理模型*** ****工作经历(Career) 字段名 单位性质编号 申请职位编号 开始时间 结束时间 公司 公司性质 所在部门 职位 工作描述 字段名 字段代码 users ApplyID StartDate EndDate Company CompanyProperty Depaerment Jobtitle JobDescription 字段代码 字段类型 主(外)键 是否为空 N N N N N N N N N 备注(代码字典表) 备注(代码字典表) 备注(代码字典表) Integer Y Integer Y Date Date N N varchar N varchar N varchar N varchar N varchar N 字段类型 主(外)键 ****应聘职位信息(ApplyJob) 是否为空 N N N Y Y Y Y 对应编号 申请职位编号 职位编号 状态 面试时间 面试人 面试结果 字段名 编号 职位名称 中文名称 RelId ApplyID JobID State InterviewTime InterviewMan InterviewResult 字段代码 JobTypeID JobTypeName JobTypeCName Ingeter Y Ingeter Y Integer Y varchar N Date N varchar N varchar N 字段类型 ****职位类型(JobType) 主(外)键 是否为空 N N N Integer Y varchar N Varchar N ****答案表(Answer)

26

字段名 字段代码 网上招聘系统分析、设计与实现 字段类型 Integer Integer Varchar Double 字段代码 SkillID ApplyId SkillName SkillLevel CertName |SkillDetail 主(外)键 是否为空 Y Y N N 字段类型 Integer Integer varchar N N N N 主(外)键 Y N N 是否为空 N N N N N N 备注(代码字典表) 备注(代码字典表) 答案编号 AnsID 问题编号 QustID 内容 分数 字段名 技能编号 申请职位编号 技能名称 技能水平 证书名称 技能详情 Content Mark ****技能表(Skill) varchaer N varchaer N varchaer N

****职位详细列表(JobList) 字段名 职位名称 编号 职位类型编号 发布时间 结束时间 招聘人数 职位描述 职位需求 其它 字段名 问题编号 问题名称 问题内容 问题类型1 问题类型2 字段代码 JobNAME JobID JobTypeID PubDate EndDate JobNum Description Others 字段代码 questID QuestName QuestContent QuestType1 QuestType2 字段类型 varchaer Integer Integer Date Date Integer varchar varchar 字段类型 Integer varchar varchar varchar varchar 主(外)键 N N N N N N N N N 是否为空 N N N Y Y N Y Y Y 备注(代码字典表) 备注(代码字典表) Requirements varchar ****问题表(Question) 主(外)键 是否为空 N N N N N N N N N N 27

其它 评注 Others 网上招聘系统分析、设计与实现

varchar varchar N N N N Remark

****个人信息表(Personalinfo) 字段名 申请编号 申请职位编号 姓名 英文名 性别 生日 身高 国籍 户口 证件类型 编号 婚姻状况 工作年限 有效时间 目前月薪 期望月薪 居住地 固定电话 公司电话 移动电话 电子信箱 字段名 编号 考试编号 试题编号 试题顺序 28

字段代码 ApplyId ApplyJobID Name EngName Gender BirthDate Height Nation Hukou IdentityType IdentifyNO MarriageType WorkYear AvailableDate CurrentSalary ExpectedSalay Residency Homephone moblie Email 字段代码 ExamDetailId ExamID questID QuestOrder 字段类型 Integer Integer varchar varchar Integer Date double varchar varchar varchar varchar varchar Integer varchar varchar varchar varchar varchar varchar varchar 字段类型 Integer Integer Integer varchar 主(外)键 是否为空 Y Y N N N N N N N N N N N N N N N N N N N N N N N N N Y Y N N N Y Y N Y Y Y Y Y Y Y 备注(代码字典表) 1-男,2-女 CompanyPhone varchar ****考试详情表(Examdetail) 主(外)键 是否为空 Y Y Y N N N N N 备注(代码字典表) 网上招聘系统分析、设计与实现

****教育情况表(Education) 字段名 编号 字段代码 EducationID 字段类型 Integer Integer Date Date varchar 字段类型 varchaer integer integer varchar varchar integer Varchar 字段类型 Integer Integer varchar varchar Date Integer 主(外)键 Y Y N N N 是否为空 N N N N N 备注(代码字典表) 是否为空 N N N N N N N 备注(代码字典表) 备注(代码字典表) 申请编号 ApplyID 开始日期 Startdate 结束日期 EndDate 名称 字段名 家庭成员名称 编号 申请编号 学校名称 专业 学位 教育详细信息 字段名 问卷编号 问卷名称 类型 备注 及格备注 发布日期 职位类型 name 字段代码 FamilyName FamilyID ApplyID SchoolName Major Degree EduDetail 字段代码 ExamID ExamType Remark PassRemark IssueDate JobType ****家庭情况表(Family) 主(外)键 N Y Y N N N N ****考试表(Exam) 主(外)键 是否为空 Y N N N N N N N N N N N N N ExamName varchar

****用户表(Users) 字段名 编号 字段代码 UserID 字段类型 varchaer 主(外)键 是否为空 Y 29

备注(代码字典表) N 用户名 密码 权限 网上招聘系统分析、设计与实现

UserName varchar UserPwd Permisstion varchar Integer N N N N N N 至少是6个英文字母 0-系统管理者 1-面试管理者 2-职位发布者 3-试题管理者 4-普通用户 是否为空 N N N N N N N 备注(代码字典表) 备注(代码字典表) ****考试成绩表(Examresult) 字段名 编号 分数0 分数1 总分数 字段名 字段代码 ExamResutId Mark0 Mark1 Marks 字段代码 字段类型 Integer integer Double varchar double varchar double 字段类型 Integer Integer Integer varchaer varchaer 主(外)键 Y Y N N N N N 申请编号 ApplyId 答题记录 AnswerRecord0 答题记录 AnswerRecord1 ****职位问题表(JobExam) 主(外)键 是否为空 Y Y Y N N N N N N N 对应编号 RelID 职位编号 JobID 考试编号 ExamID 问卷类型 ExamType 问卷名称 ExamName

在确定了各个表主键字段的基础上,依据表与表相关字段之间的联系建立了各表之间的关系,如图2-10所示。

30

网上招聘系统分析、设计与实现

31

网上招聘系统分析、设计与实现

4.3 数据库物理结构模型设计

信息存储结构的设计在系统的设计中至关重要,要考虑到数据冗余、系统执行效率、信息控制以及维护等方面的要求。信息的管理离不开数据库的支持,我们采用SQL Server 2000数据库管理系统。

数据库的物理设计主要是对数据在内存中的安排,包括对索引区、缓冲区的设计,对使用的外存设备及外存空间的组织,包括索引区、数据块的组织与划分,设置访问数据的方式方法。需在非系统卷(操作系统所在卷以外的其他卷)上安装SQL Server程序及数据库文件。内存是影响Microsoft SQL Server系统性能的一个重要因素,应在Microsoft SQL Server数据库安装后进行内存选项(Memory)设置,最大配置值为2GB。

为了确定SQL Server系统最适宜的内存需求,可以从总的物理内存中减去 Windows 2000 Server需要的内存(12MB)以及其他一些内存需求后综合确定,理想的情况是给SQL Server分配尽可能多的内存,而不产生页面调度。设置服务器的虚拟内存为1GB。对SQL Server属性配置如图2-11所示。

通过ADO对象提供的OLEDB接口与数据库连接。 1)首先创建Connection对象。 Sq1DatabaseName=“WSZP” Sq1password=“xxxxxxxx” Sq1username=“sa”

Sq1Loca1Name=“xx.xx.xx.xx”

ConnStr=“provider”=Sqloledb; User ID=“& Sqlusername &”; Password=“& SqlPassword &”;Initial Catalog=“& SqlDatabaseName &”; Data Source=“& SqlLocalName &”;

Set cnn=Server.Createobject (“ADODB.Connection”) cnn.open Connnstr

2)不直接打开记录集,充分利用连接池。

Set rs=“Server.Createobject”(“ADODB.Recordset”) rs.oper SQL,cnn

Set rsl=Server.Createobject(“ADODB.Recordset”) rsl.open SQL,cnn

这种打开连接池的方式可以节省数据库服务器的内存资源。 3)使用记录集后,最早的时间释放数据库资源。 RS.close

set rs=nothing cnn.close

32

网上招聘系统分析、设计与实现

set cnn=nothing

数据库各库表的脚本代码见数据库脚本文件。

5. 模块设计

按照功能分解,本系统分为客户端管理系统和管理端系统。根据页面流的设计,管理端系统又分为用户登录、用户管理、题库管理、问卷管理、职位发布、简历管理、面试管理等7个模块,如图2-12所示。

网上招聘系统 管理端 客户端 登录管理用户管理题库管理问卷管理职位发布简历管理面试管理

各个部分的关系如图2-13所示。 针对不同用户,提供了两类功能登录接口:即应聘者登录接口和企业管理人员登录接口,这些接口都以Web页面的形式提供。通过各自的页面,应聘者和企业管理人员可以从事各自的活动。

以下将分小节介绍各个部分的设计。

5.1 客户端模块设计

客户端运行在公用网上,可以显示职位列表,应聘者可以查看所应聘职位的详细信息。当应聘者希望应聘某职位时,可以填写自己的基本信息,包括:姓名、年龄、住址、学历、职业、家庭情况、基本技能、个人评价,这些构成了简历信息,当填写完后可以查看简历。最后应聘者需完成一套问卷试题,试题包括价值取向,工作取向两种类型,题型为选择题,当提交试卷后,简历信息和答题结果存入简历库中,应聘者可以继续应聘其他职位。

在客户端用户可以看到职位名称、职位发布日期、截止日期、职位类型、招聘人数等,当点击职位名称时进入职位详细信息页面。

5.1.1表示层设计

33

图2-12 模块设计

网上招聘系统分析、设计与实现

根据上述功能介绍,总结出客户端的页面设计如表2-3所列。

用户登录 管理端页面 用户管理 题库管理 问卷管理 职位发布 简历管理 面试管理 职位查询 填写简历 问卷回答 客户端页面 图2-13 模块之间的关系 表2-3 客户端的页面设计

界面 主页面 职位列表 职位详细信息

JSP

index.jsp joblist.jsp jobdetail.jsp

功能描述

客户端的主页面 显示招聘的所有职位 显示某个职位的详细信息

个人基本信息 CVbasicinfo.jsp 填写个人基本情况页面 个人工作经历 career.jsp 填写个人工作经历页面 个人教育经历 education.jsp 填写个人教育经历页面 个人基本技能 skills.jsp 填写个人基本技能页面 家庭成员 relation.jsp 填写家庭成员页面 个人评价 addtion.jsp 200字以内的个人评价页

预览简历 CVall.jsp 游览填写完成的简历信

答题 Exam,jsp 回答试题的页面 提交 inputdone.jsp 提交完成的页面

根据界面流的设计可以确定各个界面的访问入口以及界面之间切换关系,流程图如图2-14所示。

ActionForm Bean用于在视图组件和控制组件之间传递HTML表单数据,通常每个HTML表单对应一个ActionForm Bean。此外,ActionForm Bean的validate()

34

网上招聘系统分析、设计与实现

方法用于对用户输入的数据进行合法性验证,由于ActionForm Bean工作于视图组件和控制器组件之间,不会访问模型组件,因此,validate()方法通常不涉及对数据的业务逻辑验证,只是完成简单的数据格式和语法检查。表2-4列出了ActionForm以及进行相应的验证。HTML表单中的字段和ActionForm Bean中的属性是一一对应的。

index.jsp joblist.jsp jobdetail.jsp CVbasicinfo.jsp career.jsp deucation.jsp skills.jsp relation.jsp addtion.jsp exam.jsp inputdone.jsp 图2-14 客户端页面流程图 表2-4 客户端的ActionForm

CVall.jsp

界面

主页面 职位列表 职位详细信息 填写个人基本信息 填写个人工作经历 填写个人教育经历 填写个人基本技能 填写家庭成员

JSP

index.jsp joblist.jsp jobdetail.jsp CVbasicinfo.jsp career.jsp education.jsp skills.jsp relation.jsp

35

功能描述

JobForm

JobDetailForm CVbasicinfoFom careerForm EducationForm SkillsForm RelationForm

网上招聘系统分析、设计与实现

填写个人评价 Addtion.jsp AddtionForm 预览简历 CVall.jsp CVallForm 答题 Exam.jsp ExamForm 提交完成的页面 inputdone.jsp

5.1.2 控制层

控制层主要是设计Action组件,Action负责单位事件的流程控制,Action映射决定了Action与其他Web组件之间的关联关系。客户端的事件主要包括进入职位列表、浏览职位信息,进入应聘界面,添加应聘者基本信息,添加应聘者工作经历信息,回答试题,提交简历,所有页面的上级返回动作以及工作经历信息、教育经历信息、技能信息、家庭关系信息的增删等动作。表2-5列出了每个Action入口(即调用Action的组件)、传递Action的ActionForm以及出口(即Action将请求转发到目标组件)。

表2-5 客户端应用的Action映射

事件 进入职位列表 浏览职位详细信息 进入应聘界面 添加应聘者基本信息 工作经历每条信息的增删 添加应聘者工作经历信息 返回工作经历信息页面的上一步

BackcareerAction

career.jsp

CVbasicinfo.jsp

AddcareerAction

career.jsp

CareerForm

education.jsp

ProcesscareerAction

career.jsp

career.jsp

AddbasicinfoAction

CVbasicinfo.jsp CVbasicinfoForm career.jsp

ApplyJobAction

jobdetail.jsp

CVbasicinfo.jsp

JobDetailAction

joblist.jsp

JobDetailForm

jobdetail.jsp

Action EnAction

入口 index.jsp

ActionForm JobForm

出口 joblist.jsp

36

教育经 网上招聘系统分析、设计与实现

ProcesseducationAction education.jsp

education.jsp

历每条信息的增删 添加应AddeducationAction 聘者教育经历信息 返回教BackeducationAction 育经历信息页面的上一步 技能每ProcessskillsAction 条信息的增删 添加应AddskillsAction 聘者技能信息 返回技BackskillsAction 能信息页面的上一步 家庭关ProcessrelationAction 系信息每条信息的增删 添加应AddrelationAction 聘者家庭关系信息 返回家BackrelationAction 庭关系信息页面的上一步

education.jsp education.jsp skills.jsp skills.jsp Skills.jsp relation.jsp relation.jsp relation.jsp 37

EducationForm SkillsForm RelationForm skills.jsp

career.jsp

skills.jsp

relation.jsp

education.jsp

relation.jsp

addtion.jsp

skills.jsp

添加应聘者个人评价信息 返回自我介绍信息页面的上一步 简历浏览 返回简历浏览页面的上一步 提交简历 提交页面返回

SubmitAction CVallAction

网上招聘系统分析、设计与实现

AddaddtionAction

addtion.jsp

AddtionForm

exam.jsp

BackaddtionAction addtion.jsp relation.jsp

addtion.jsp CVall.jsp

CVallForm

CVall.jsp addtion.jsp

BackCVallAction

exam.jsp inputdone.jsp

ExamForm

inputdone.jsp joblist.jsp

BacksubmitAction

5.1.3 模型层

在struct框架中,模型组件负责完成业务逻辑,模型组件可以是JavaBean、EJB和实用类。客户端的业务逻辑主要是完成数据库的操作,提交用户的简历信息和问卷回答信息到数据库中。具体的模型组件如表2-6所示。

表2-6 客户端的模型组件

模型组件 DBUtil CVDataBean

描述

数据库的基本操作,为复用组件

提交用户的简历信息和试题回答到数据库中

5.2 登录管理模块设计

登录管理模块负责管理端用户的登录。管理端用户都是通过登录界面进入管理端的,用户输入用户名和密码进入管理界面首页,并根据用户的权限在首页中列出相应的操作功能。

5.2.1 表示层设计

根据上述的功能介绍,总结出用户登录的页面如表2-7所示。

表2-7 登录管理模块的页面设计

38

界面 登录界面 主页面 页面中部 页面上端 页面左端

网上招聘系统分析、设计与实现

JSP login.jsp main.jsp center.jsp top.jsp left.jsp

功能描述

登录的主页面 管理主页面

复用页面:页面中心部分 复用页面:页面上面部分 复用页面:页面的左面部分

页面下端 bottom.jsp 复用页面:页面的下面部

根据界面流的设计可以确定各个界面的访问入口以及界面之间切换关系,页面的流程图如图2-15所示。

login.jspmain.jsp

图2-15 登录管理的页面流程构件图

5.2.2 控制层设计

登录管理的控制层主要是设计用户的登录事件的流程控制(Action)。表2-8列出了每个Action的入口(即调用Action的组件)、传递Action的ActionForm以及出口(即Action将请求转发到目标组件)。

表2-8 登录管理的控制层设计

事件 Action 入口 ActionForm 出口

用户 LoginAction login.jsp LoginForm main.jsp

5.2.3 模型层设计

登录管理模型组件负责完成用户信息的数据库的操作的业务逻辑,建立封装了用户信息的bean,这个bean主要验证用户相关信息是否存在,并判断其权限。模型组件见表2-9

表2-9登录管理的模型组件

模型组件 DBUtil

39

描述

数据库的基本操作,为复用组件

Permission Userbean

网上招聘系统分析、设计与实现

判断用户权限的类

Bean主要验证用户信息是否存在

5.3 用户管理模块设计

在用户管理中系统管理员对用户进行增加、删除、修改、查询,进行权限设置。具有不同权限的用户进入不同的主界面,界面左侧栏中的图标有所不同,具体的图标与用户所具有的权限对应。在用户管理中可以增加或删除用户,编辑用户名,修改用户权限等。

5.3.1 表示层设计

根据上述功能介绍,总结出用户管理功能的页面如表2-10。 界面 用户界面 用户详细信息 修改用户信息 添加用户

JSP main.jsp userlist.jsp userdetail.jsp adduser.jsp

功能描述

用户管理主界面 用户详细信息的界面 完成特定用户信息的维护。即修改删除等 增加用户信息

用户管理模块各个表示页面之间的关系如图2-16所示。

main.jspuserlist.jspuserdetail.jspadduser.jsp

图2-16 用户管理页面之间的关系构件图

5.3.2 控制层设计

用户管理的控制层主要负责进入用户信息界面、时入浏览用户信息界面、增加用户信息、修改用户信息、删除用户信息等事件的流程控制,即设计用户管理的Action。表2-11列出了用户管理的每个Action的入口(即调用Action的组件)、传递Action的ActionForm以及出口(即Action将请求转发到目标组件)。

40

网上招聘系统分析、设计与实现

5.3.3 模型层设计

用户管理的模型层主要是完成用户信息的浏览、增加用户信息、用户信息维护等业务逻辑,并完成相应的数据库操作。模型组件如表2-12所列。

表2-11 用户管理的控制层设计

事件 进入用户信息界面 进入浏览用户信息界面 修改用户信息界面 提交修改用户信息界面

增加用户信息 AddUserAction 提交增加用户信息

删除用户信息 DelUserAction

userlist.jsp

DelUserForm

userlist.jsp

表2-12 用户管理的模型组件

SubmitAddAction

userlist.jsp

AddUserForm

userdetail.jsp userlist.jsp

userdetail.jsp AdduserForm

SubmitModifyAction userdetail.jsp ModifyUserForm userlist.jsp ModifyUserAction

userlist.jsp

ModifyUserForm userdetail.jsp

UserDetailAction

userlist.jsp

UserDetailForm userdetail.jsp

Action UserlistAction

入口 main.jsp

ActionForm UserListForm

出口 userlist.jsp

模型组件 DBUtil Userbean

描述

数据库的基本操作,为复用组件 主要完成管理用户信息

5.4 题库管理模块设计

题库管理主要包括:对知识库的维护和管理,即对题库的题目进行的增加、删除、修改的功能及提供知识库中题目的详细信息。

5.4.1 表示层设计

根据上述的功能介绍,总结出题库管理功能的页面设计如表2-13所示。

表2-13 题库管理的页面设计

界面

试题信息首页 试题信息列表 试题详细信息 增加试题

增加试题(购物车) 增加答案

JSP

kninlist.jsp knlist.jsp kndetail.jsp addkn.jsp

addkn_cart.jsp addanswer.jsp

功能

题库管理主页面 显示知识试题列表 知识试题的详细信息 增加试题的页面 增加试题的购物车 增加试题答案的页面

41

网上招聘系统分析、设计与实现

增加答案(购物车) addanswer_cart.jsp 增加试题答案的购物车 注:题库管理模块中也用到前面提到的公共页面,例如left.jsp,top.jsp.bottom.jsp。

各个界面流的基本流程关系如图2-17所示。

kninlist.jspknlist.jspkndetail.jspaddkn.jspAddkn-cart.jspaddanswer.jspAddanswer-cart.jsp 图2-17 题库管理的页面构件图

5.4.2 控制层设计

题库管理的控制层主要负责进入试题信息界面,进入试题详细信息界面,进入增加试题信息。删除试题信息界面,进入增加答案界面等事件的流程控制。表2-14列出了题库管理控制层每个Action的入口(即调用Action的组件)、传递Action的ActionForm以及出口(即Action将请求转发到目标组件)。

5.4.3 业务逻辑层设计

题库管理业务逻辑层设计主要包括建立封装了知识信息的bean,建立封装了答案信息的bean以及封装答案的购物车,它们完成将试题和相应的答案存放于数据库的操作,同时也提供了数据维护的操作等逻辑。模型组件见表2-15。

表2-14 题库管理的控制层设计

事件

进入试题信息列表

进入试题详细信息 增加试题 删除试题 增加答案

AddQuestionAction DelQuestionAction SubmitAnswerAction

knlist.jsp knlist.jsp addanswer.jsp

AddQuestionForm DelQuestionForm SubmitAnswerForm

addkn.jsp knlist.jsp kninlist.jsp

QuestionDetailAction

knlist.jsp

QuestionDetailForm

kndetail.jsp

Action

QuestionSearchAction

入口 kninlist.jsp

ActionForm QuestionSearchForm

出口 knlist.jsp

42

删除答案 增加答案(购物车)

删除答案(购物车)

网上招聘系统分析、设计与实现

DelAnswerAction

kndetail.jsp

DelAnswerForm

kninlist.jsp

SubmitAnswer_CartAction addanswer_cart.jsp SubmitAnswer_CartForm kn_cart.jsp

DelAnswer_CartAction addanswer_cart.jsp DelAnswer_CartForm kn_cart.jsp

表2-15 题库管理的模型组件

模型组件 DBUtil

Questionbean Answerbean KnCart

描述

数据库的基本操作,为复用组件 封装了知识信息的bean 封装了答案信息的bean 封装答案的购物车

5.5 问卷管理模块设计

问卷管理是管理员根据知识题库中的试题生成各种类别的问卷,并且可以对问卷的试题进行增加、删除、修改的功能。

5.5.1 表示层设计

根据上述的功能介绍,总结出问卷管理功能的页面如表2-16所示。 各个界面基本流程如图2-18所示。

examlist.jspexamdetail.jspAddexam-cart.jspquestionadd.jspexamview.jsp

图2-18 问卷管理的页面构件图

表2-16 问卷管理的页面设计

43

页面 问卷列表 问卷详细信息 增加问卷 增加试题 预览问卷

JSP

网上招聘系统分析、设计与实现

功能描述

显示所有问卷列表,可以删除问卷

显示每个问卷的具体信息,可以上下移动试题,可以删除试题

addexam_cart.jsp 增加问卷 questionadd.jsp examview.jsp

增加问卷中的试题 浏览问卷

examlist.jsp examdetail.jsp

注:问卷管理页面中也使用到了公共的页面,例如left.jsp,top.jsp,bottom.jsp等。

5.5.2 控制层设计

问卷管理控制层主要负责进入问卷信息界面、进入问卷详细信息界面、进入增加问卷信息、删除问卷信息界面、进入增加试题界面、浏览问卷等事件的流程控制。表2-17列出了问卷管理控制层每个Action的入口(即调用Action的组件)、传递Action的ActionForm以及出口(即Action将请求转发到目标组件)。

5.5.3 模型层设计

问卷管理的业务逻辑主要是完成问卷维护,并完成相应数据库的操作。所以问卷管理的模型层主要是建立封装了问卷信息bean的以及封装了数据库操作的组件。模型组件见表2-18。

表2 -17 问卷管理控制层设计

事件 进入问卷列表 进入问卷详细信息 增加问卷 删除问卷 增加试题 提交试题 删除试题 预览问卷 上下移动试题

AddExamAction DelExamAction QuestionSearchAction

examlist.jsp examlist.jsp examdetail.jsp

AddExamForm DelExamForm 无

examlist.jsp examlist.jsp questionadd.jsp

ExamDetailAction

examlist.jsp

ExamDetailForm

examdetail.jsp

Action

ExamSearchAction

入口 examlist.jsp

ActionForm ExamSearchForm

出口 examlist.jsp

SubmitQuestionToExamAction questionadd.jsp SubmitQuestionToExamForm examdetail.jsp DelQuestionExamAction ViewExamAction OrderQuestAction

examdetail.jsp examdetail.jsp examdetail.jsp

DelQuestionExamForm ViewExamForm OrderQuesForm

examdetail.jsp viewexam.jsp examdetail.jsp

表2-18 问卷管理的模型组件

44

模型组件 DBUtil Exambean ExamCart类

网上招聘系统分析、设计与实现

描述

数据库的基本要操作,为复用组件 封装了问卷信息的bean 封装问卷的购物车

5.6 职位发布模块设计

职位发布模块主要完成招聘职位的编制和发布,在职位列表中显示职位名称,职位发布日期,截止日期,职位类型,招聘人数等,按职位发布日期排序。当点击职位名称时进入职位详细信息页面,职位详细页面显示职位名称,职位描述,职位要求,招聘人数,点击应聘该职位进入填写基本信息页面。

5.6.1 表示层设计

根据上述的功能介绍,总结出职位发布功能的页面如表2-19所列。

表2-19 职位发布的页面设计

页面 职位列表 职位详细信息

修改职位信息(更新) 修改职位信息(提交) 增加职位(更新) 查询职位

增加价值、工作取向试卷 修改增加价值取向试卷 修改增加工作取向试卷 修改、删除增加工作取向试卷(提交)

JSP joblist.jsp jobdetail.jsp modifyjob.jsp modifyjobsubmit.jsp addjob.jsp

jobsearchdetail.jsp selectexam.jsp

功能描述 所有职位列表

每个职位详细信息,提供删除职位功能 修改职位信息 提交修改后的职位信息 提交增加职位、更新信息 查询职位

增加价值、工作取向试卷 修改增加价值取向试卷(提交) 修改增加工作取向试卷 修改、删除增加工作取向试卷(提交)

modifyselectvalueexam.jsp 修改增加价值取向试卷 modifyselectjobexam.jsp modifyjobsubmit.jsp

修改增加价值取向试卷(提交) modifyvaluesubmit.jsp

注:职位发布模块的页面也使用了公共页面,例如left.jsp,top.jsp,bottom.jsp

等。

各个页面流程如图2-19所示。

45

网上招聘系统分析、设计与实现

jobdetail.jspmodifyjob.jspmodifyjobsubmit.jspmodifyjobvalueexam.jspindex.jspjoblist.jspjobsearchdetail.jspselectjobexam.jspmodifyjobexam.jspaddjob.jspaddfulljob.jspselectexam.jsp

图2-19 职位发布模块的页面设计构件图

5.6.2 控制层设计

职位发布的控制层主要负责进入职位信息界面、进入职位详细信息界面、进入增加职位信息、删除试卷信息界面、进入增加试卷界面等事件的流程控制。表2-20列出了职位发布控制层每个Action的入口(即调用Action的组件)、传递Action的ActionForm以及出口(即Action将请求转发到目标组件)。

表2-20 职位发布控制层设计

事件

进入职位列表 进入职位详细信息 修改职位信息

修改职位信息(更新) 修改职位信息(提交) 增加职位 增加职位(更新) 增加职位(提交) 删除职位 查询职位 增加价值取向试卷 增加价值取向试卷(提交)

从购物车中删除价值取向试卷

UpdateJobCartAction

addjobl.jsp

UpdateJobCartForm

addjobl.jsp

Action JobListAction JobDetailAction ModifyJobAction UpdateModifyJobAction ModifyJobSubmitAction AddJobPreAction UpdateAction AddJobAction DelJobAction JobSearchAction

AddJobValueExamPreAction AddJobValueAction

入口

Index.jsp(main.jsp) joplist.jsp jobdetail.jsp modifyjob.jsp Modifyjobsubmit.jsp joplist.jsp addjob.jsp addjobl.jsp jobdetail.jsp joplist.jsp aAddjobl.jsp Selectexam.jsp

ActionForm

JobDetailForm ModifyJobForm UpdateModifyJobForm ModifyJobSubmitForm

UpdateForm AddJobForm DelJobForm JobSearchForm

AddJobValueExamPreForm AddJobValueExamForm

出口 joplist.jsp

jobsearchdetail.jsp modifyjob.jsp modifyjobsubmit.jsp joplist.jsp addjob.jsp addjobl.jsp joplist.jsp joplist.jsp

jobsearchdetail.jsp selectexam.jsp addjobl.jsp

46

增加工作取向试卷 增加工作取向试卷(提交)

从购物车中删除工作取向试卷

修改增加价值取向试卷

网上招聘系统分析、设计与实现

AddJobExamPreAction AddJobExamAction

addjobl.jsp selectjobexam.jsp

AddJobExamPreForm AddJobExamForm

selectjobexam.jsp addjobl.jsp

DelJobExamAction addjobl.jsp DelJobExamForm addjobl.jsp

ModifyJobValueExamPreAction

modifyjobsubmit.jsp ModifyJobValueExamPreForm modifyselectvalueexam.jsp

修改增加价值取向试卷(提交)

修改增加工作取向试卷 修改增加工作取向试卷(提交)

删除修改价值取向试卷

ModifyJobValueExamAction modifyselectvalueexam.jsp

ModifyJobValueExamForm modifyvaluesubmit.jsp

ModifyJobExamPreAction ModifyJobExamAction

modifyjobsubmit.jsp modifyselectexam.jsp

ModifyJobExamPreForm ModifyJobExamForm

modifyselectjobexam.jsp modifyvaluesubmit.jsp

ModifyDelValueExamAction modifyvaluesubmit.jsp

ModifyDelValueExamForm modifyselectvalueexam.jsp

删除修改工作取向试卷 ModifyDelJobExamAction modifyvaluesubmit.jsp

ModifyDelJobExamForm modifyvaluesubmit.jsp

5.6.3 模型层设计

职位发布模型的业务逻辑主要是完成职位维护,对职位所附的试卷进行操作,并完成相应数据库的操作。所以职位发布的模型层有如下模型:

·建立封装了数据库操作的组件; ·建立封装了职位基本信息的组件; ·建立封装了职位试卷信息的组件;

·建立封装了职位试卷购物车信息的组件;

·建立封装了试卷基本信息的组件(同问卷管理模块的ExamBean)。 模型组件见表2-21。

表2-21 职位发布的模型组件

模型组件 DBUtil Jobbean JobExambean JobCartbean ExamBean

描述

数据库的基本操作。为复用组件 封装了职位住处的bean 封装职位问卷的信息 封装职位问卷的购物车 封装问卷信息

5.7 简历管理模块设计

简历管理主要是人力资源部门的人员对应聘者的简历进行检查、审查和整理的工作。

47

网上招聘系统分析、设计与实现

5.7.1 表示层设计

根据上述的功能介绍,简历管理功能的页面如表2-22所示。

表2-22 简历管理的页面设计

页面 职位列表

JSP

jobResumelistp.jsp

功能描述

职位列表,每个职位下有相应的简历

人员简历列表 personinfo.jsp 人员简历列表 简历详细信息界面 personinfoDetail.jsp 简历详细信息界面 简历回复界面 reply.jsp 简历回复界面

注:简历管理模块的页面也使用了公共页面,例如left.jsp,top.jsp,bottom.jsp等。

各个页面流程如图2-20所示。

main.jsp jobResumelist.jsp Reply.jsp Personinfo.jsp personinfoDetail.jsp personinfoDetail.jsp

图2-20 简历管理的页面流程图

5.7.2 控制层设计

简历管理模块的控制层主要负责进入简历主信息界面、进入简历详细信息界面、进入简历回复界面等事件的流程控制。表2-23列出了简历管理控制层每个Action的入口(即Action调用的组件)、传递Action的ActionForm以及出口(即Action将请求转发到目标组件)。

表2-23 简历管理的控制层设计

事件

进入简历主界面 进入简历界面列表 进入简历详细信息界面

浏览个人简历信息 进入简历回复界面 提交简历回复界面

PersoninfoDetailAction InReplyAction ReplyAction

Personinfo.jsp Personinfodetail.jsp Reply.jsp

replyForm

personinfoDetail.jsp Reply.jsp

PersoninfoDetail.jsp

Action ResumeAction ResumelistAction PersoninfoAction

入口 Main.jsp

Jobresumelist.jsp jobresumelist.jap

ActionForm

joblistForm

出口

Jobresumelist.jsp jobresumelist.jsp Personinfo.jsp

5.7.3 模型层设计

简历管理模型的业务逻辑主要是完成简历浏览,对简历的回复等操作,并完成相应数据库的操作。模型组件见表2-24。

表2-24 简历模块的模型组件

模型组件

48

描述

DBUtil Jobbean Replybean

网上招聘系统分析、设计与实现

数据库的基本操作。为复用的组件 建立封装了职位信息的bean 封装了回复信息的bean

5.8 面试管理模块设计

面试管理主要是人力资源部门的人员完成对简历的检查、审查和整理的工作,通知面试,进行面试,记录面试结果。

5.8.1 表示层设计

根据上述的功能介绍,总结出面试管理功能的页面如表2-25所列。

表2-25 面试管理的页面设计

页面 面试主界面 面试者的目前状态

面试者信息界面 面试者面试结果界面

CVdetail.jsp JSP

interview.jsp interviewState.jsp

功能描述

显示简历模块的主页面功能

显示应聘者的各种状态:面试过、等待面试、保留简历

显示面试者简历页面

interviewResult.jsp 填写面试者面试结果的界面

注:面试管理模块的页面也使用了公共页面,例如left.jsp,top.jsp,bottom.jsp等。

各个页面流程如图2-21所示。

main.jsp interview.jsp interviewResult.jsp interviewState.jsp CVdetail.jsp CVdetail.jsp

图2-21 面试管理的页面流程图

5.8.2 控制层设计

面试管理的控制层主要负责进入面试信息主界面,进入应聘者详细信息界面、进入显示接受面试的应聘者的不同状态信息界面、进入面试界面等事件的流程控制。表2-26列出了每个Action的入口(即调用Action的组件)、传递Action的ActionForm以及出口(即Action将请求转发到目标组件)。

表2-26 面试管理控制层设计

事件

进入面试信息主界面

进入面试管理界

InterviewAction

interview.jsp

interviewState.jsp

Action

InInterviewAction

入口 Main.jsp

ActionForm

出口

interview.jsp

49

进入等待面试人员界面

进入面试过的人员的页面 浏览面试人员的简历

进入面试过程界面 面试结束

WaitAction

网上招聘系统分析、设计与实现

interviewState.jsp InterviewStateForm interviewState.jsp

InterviewedAction interviewState.jsp interviewStateForm interviewState.jsp

ViewResumeAction interviewState.jsp CVdetailForm CVdetail.jsp

InterviewStateAction CVdetail.jsp interviewResult.jsp

InterviewResultAction interviewResult.jsp interviewResultForm CVdetail.jsp

5.8.3 模型层设计

面试管理模型的业务逻辑主要是完成简历浏览,对面试者状态整理、面试结果的处理等操作,并完成相应数据库的操作,模型组件见表2-27。

表2-27 面试管理的模块组件

模型组件 DBUtil Jobbean

Interviewbean

描述

数据库的基本操作。为复用组件 建立封装了职位信息的bean 封装了面试信息的bean

50

网上招聘系统分析、设计与实现

第三章 网上招聘系统详细设计

1.系统设计概述

根据《网上招聘系统》的概要设计,本系统按照功能分解,可以分为客户端子系统和管理端子系统。根据页面流的设计,管理端系统分为登录管理,题库管理、问卷管理,职位发布,简历管理、面试管理7个模块,它们的关系如图3-1所示,以下将对各个部分分别进行详细设计。

网上招聘系统 管理端系统 客户端系统 登录管理用户管理题库管理问卷管理职位发布简历管理面试管理

2. 详细设计概述

由于本系统采用了基于struct体系结构的设计,即MVC的三层设计模式,并采用面向对象的Java语言以及JSP的脚本语言实现。在整个开发过程中,尽可能采用复用的原则,例如采用标签库,统一数据库的基本操作,统一结果显示等。

本文档的详细设计主要地按照struct的MVC的三个层次分别编制视图层、控制层和模型层模块的伪代码,为下一步的编码提供基础。伪代码(Pseudocode)是一种算法描述语言。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言实现。因此,伪代码必须结构清晰,代码简单,可主动性好,并且类似自然语言。

51

图3-1 模块设计

网上招聘系统分析、设计与实现

3. 职位管理模块的详细设计

职位管理模块主要实现网上招聘职位的维护和发布,职位管理的struct视图层、控制层和模型层三个层次的模块如表3-2所示。

表3-2 职位管理的三层模块

视图 JSP组件 Joblist ActionFormBean JobDetaiForm 客户标签 Struct Html标签 jobdetail modifyJobForm Struct Bean标签 modifyjob UpdateModifyJspForm Struct Logic标签 Modifyjobsubmit ModifyJobSubmitForm 用户自定义CV Addjob UpdateForm 标签库的标签 jobsearchdetail selectexam Modifyselectva lueexam Modifyjobsubmit Modifyselectjob exam modifyvaluesubmit UpdateJobCartForm AddJobExamPreForm AddJobExamForm DelJobExamForm ModifyJobValueExamPreForm ModifyJobValueExamForm ModifyJobExamPreForm ModifyJobExamForm ModifyDelValueExamForm AddJobValueExamPreAction AddJobValueAction UpdateJobCartAction AddJobExamPreAction AddJobExamAction DelJobExamAction ModifyJobValueExamPreAction ModifyJobValueExamAction ModifyJobExamPreAction AddJobValueExamPreForm AddJobValueExamForm DelJobAction JobSearchAction AddJobForm DelJobForm JobSearchForm AddJobPreAction UpdateAction AddJobAction ModifyJobSubmitAction ExamBean UpdateModifyJspAction JobExanBean ModifyJobAction JobCartBean JobDetaiAction JobBean JobListAction DBUtiL 控制器 模型 52

网上招聘系统分析、设计与实现

ModifyDelJobExamForm ModifyJobExamAction ModifyDelValueExamAction ModifyDelJobExamAction

3.1 视图层

视图层主要实现表示层的功能,视图层包括JSP组件、Form组件以及标签库等。

3.1.1 JSP组件

职位发布视图层共有11个JSP文件,JSP文件详见demo和伪代码文件WSZP-PD-DD-position-ViewJSP.doc

3.1.2 Form组件

职位发布视图层共有20个Form文件,下面是AddJobForm的伪代码描述。 /**

*@System:Online CV System *@Version:1.0

*@Copyright @2009 by changjiang company, Inc. All Rights Reserved. *@Class:AddJobForm

*@Summary:增加职位信息的Form *@Create:2005.04.23章飞 *@Update:2005.04.28章飞 */

Package com.changjiangcompany.struts.form;

import javax.Servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping;

//集成了ActionForm的属性和方法

public class SubmitAnswerForm extends ActionForm{

//...............................................Instance Variables

/**职位名称*/

private String JobName;

53

网上招聘系统分析、设计与实现

/**职位发布日期*/

private String JobName; /**职位发布结束日期*/ private String EndDate; /**职位描述*/

private String Description; /**职位要求*/

private String Requirements; /**謗招聘人数*/ private int JobNum;

//..............................................Methods //**

*Method validate *@param mapping *@param request

*@return ActionErrors */

public ActionErrors validate( ActionMapping mapping,

HttpServletRequest request) {

...... } /**

*Method reset *@param mapping *@param request */

public void reset(ActionMapping mapping, HttpServletRequest request) {

....... }

54

网上招聘系统分析、设计与实现

/**

*返回JobName. * */

public String getJobName() {

...... } /**

*赋值JobName. * */

public void setJobName(String JobName) { .... } /**

*返回PubDate. * */

Public String getPubDate() {

.... } /**

*赋值PubDate. * */

Public void setPubDate(String PubDate) {

...... } /**

*返回EndDate. * */

Public String getEndDate()

55

网上招聘系统分析、设计与实现

{

.... } /**

*赋值EndDate. * */

Public void setEndDate(String EndDate) {

...... } /**

*返回Description. * */

Public String getDescription() {

.... } /**

*赋值Description. * */

Public void setDescription(String Description) {

...... } /**

*返回Requirements. * */

Public String getRequirements() {

.... } /**

*赋值Requirements.

56

}

网上招聘系统分析、设计与实现

* */

Public void setRequirements(String Requirements) {

...... } /**

*返回JobNum. * */

Public int getJobNum() {

.... } /**

*赋值JobNum. * */

Public void setJobNum(int JobNum) {

...... }

其他Form伪代码详见文件WSZP-PD-DD-Position-ViewForm.doc,它有关于每个Form的伪代码的详细描述。

3.1.3客户标签库

客户端的标签库包括Struct Html标签、Struct Bean标签、Struct Logic标签和自定义标签库。其中Struct Html标签、Struct Bean标签和Struct Logic标签是Struct的标签库,而CV标签库是本系统自定义的标签。详见复用模块的详细设计。

3.2 控制层

职位发布控制层共有22个Action文件,下面是AddJobAction的伪代码描述。 /**

*@System:Online CV System

57

网上招聘系统分析、设计与实现

*@Version:1.0

*@Copyright @2009 by changjiang company, Inc. All Rights Reserved. *@Class:AddJobAction

*@Summary:增加职位信息的Action *@Create:2005.04.23章飞 *@Update:2005.04.28章飞 */

Package com.changjiangcompany.struts.action;

import java.util.Vector;

import javax.Servlet.ServletContext;

import javax.Servlet.http.HttpServletRequest; import javax.Servlet.http.HttpServletResponse; import javax.Servlet.http.HttpSession; import javax.Sql.DataSource;

import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionForm;

import share.Constants;

import com.changjiangcompany.DB; import com.changjiangcompany.Job;

//AddJobAction 集成了Action的基本方法和属性? public class AddJobAction extends Action{ /**

*Method execute *@param mapping *@param form *@param request *@param response

*@return ActionForward

58

网上招聘系统分析、设计与实现

*/

public ActionForward execute( ActionMapping mapping, ActionForm form,

HttpSERVLETrEQUEST request, HttpServletResponse response) {

//获取新增加的职位信息

DynaActionForm AddJobForm=(DynaActionForm)form; ......

HttpSession session=request.getSession(); Vector JobList=new Vector(); //连接数据库 ......

//将职位基本信息封装到员工类型的对象 try{

Job job=new Job(); ......

//将增加的职位信息加入到对应的数据库中 ...... } }

其他Action伪代码详见文件WSZP-PD-DD-Position-control.doc,它有关于每个Action伪代码的详细描述。

3.3 模型层

职位管理模型层共有5个组件,下面是JobBean的伪代码描述.

/**

*@System:Online CV System *@Version:1.0

*@Copyright @ 2009 by changjiang company, Inc. All Rights Reserved. *@Class:Job

*@Summary:处理Job信息的bean *@Create:2005.04.23冯杰 *@Update:2005.04.28冯杰

59

网上招聘系统分析、设计与实现

*/

package com.changjiangcompany;

import java.sql.ResultSet; import java.util.Vector;

public class Job{

//与职位信息相关的基本属性和方法 public int JobID; public int jobNum;

public String JobName; public String PubDate; public String EndDate; public String Description; public String Requirements;

public Job() {}

//职位描述属性的get及set方法 public String getDescription() {

...... }

public Void setDescription(String Description) {

...... }

//职位描述截止日期get及set方法

public void setEndDate(String EndDate) {

...... }

60

网上招聘系统分析、设计与实现

//职位ID的get及set方法 public int getJobID() {

...... }

public void setJobID(Int JobID) {

...... }

//职位名称的get及set方法 public String getJobName() {

...... }

public void setJobName(String JobName) {

...... }

//职位招聘人数的get及set方法 public void getJobNum() {

...... }

public void setJobNum(int JobNum) {

...... }

//职位发布日期的get及set方法 public String getPubDate() {

......

61

网上招聘系统分析、设计与实现

}

public void setPubDate(String PubDate) {

...... }

//职位要求属性的get及set方法 public String getRequirements() {

...... }

public void setRequirements(String Requirements) {

...... } /**

*方法:jobSearch

*描述:查询满足条件的职位信息 *@param DB db 数据库对象

*@param String JobName职位名称 *@param String PubDate发布日期 *@param String EndDate截止日期 *@return Vector职位列表 *@throws Exception */

public static Vector jobSearch(DB db, String JobName,

String PubDate String EndDate)throws Exception {

...... } /**

*方法:getJobList

62

网上招聘系统分析、设计与实现

*描述:获取职位列表

*@param DB db 数据库对象 *@return Vector职位列表 *@throws Exception */

public static Vector getJobList(DB db)throws Exception {

...... } /**

*方法:getJobDetail

*描述:获取职位详细信息 *@param DB db 数据库对象 *@param int JobID职位代号 *@return Vector职位列表 *@throws Exception */

public Vector getJobDetail(DB db,int JobID)throws Exception {

...... } /**

*方法:addJob

*描述:新增职位Form信息 *@param DB db 数据库对象

*@param String JobName职位名称 *@param String PubDate发布日期 *@param String EndDate截止日期 *@param String Description职位描述 *@param String Requirements职位要求 *@param String JobNum招聘人数

*@return boolean数据库操作是否成功 *@throws Exception */

public boolean addJob(DB db,String JobName,String PubDate,String

63

网上招聘系统分析、设计与实现

EndDate,String Description,String Requirements, int JobNum)throws Exception {

...... } /**

*方法:modifhJob *描述:修改职位信息

*@param DB db 数据库对象 *@param int JobID职位代号

*@param String JobName职位名称 *@param String PubDate发布日期 *@param String EndDate截止日期 *@param String Description职位描述 *@param String Requirements职位要求 *@param String JobNum招聘人数

*@return boolean数据库操作是否成功 *@throws Exception */

public boolean modifyJob(DB db,int JobID,String JobName,String PubDate,String EndDate,

String Description,String Requirements,int JobNum)throws Exception {

...... } /**

*方法:DeleteJob *描述:删除职位信息

*@param DB db 数据库对象 *@param int JobID职位代号

*@return boolean数据库操作是否成功 *@throws Exception */

public boolean DeleteJob(DB db,int JobID)throws Exception {

......

64

网上招聘系统分析、设计与实现

} }

其他模型组件的伪代码详见文件WSZP-PD-Position-Model.doc,它有关于每个类、Bean的伪代码的详细描述。

4. 题库管理模块的详细设计

题库管理主要是提供职位问卷的相关题目,题库管理的struct视图层、控制层和模型层三个层次的模块如表3-3所示。

表3-3 题库管理的三层模块

视图 JSP组件 kninlist.jsp knlist.jsp kndetail.jsp addkn.jsp ActionFormBean QuestionSearchForm QuestionDetailForm AddQuestionForm DelQuestionForm 客户标签 Struct Html标签 Struct Bean标签 Struct Logic标签 用户自定义CV标签库的标签 addanswer.jsp addanswer_cart.jsp SubmitAnswerForm DelAnswerForm SubmitAnswer_CartForm DelAnswer_CartForm SubmitAnswerAction DelAnswerAction SubmitAnswer_CartAction DelAnswer_CartAction QuestionSearchAction QuestionDetailAction AddQuestionAction DelQuestionAction DBUtil Questionbean Answerbean KnCart 控制器

模型

4.1视图层

题库管理视图层包括JSP组件,Form组件以及标签库等。共有6个JSP文件,详见demo和伪代码文件WSZP-DD-knowledge-ViesJSP.doc。共有8个Form文件,每个Form模块的伪代码详见文件WSZP-DD-knowledge-ViesForm.doc。标签库详见12.1描述。

4.2 控制层

知识题库管理层共有8个Action文件,每个Action伪代码的描述详见文件WSZP-PD-DD-knowledge-control.doc。

65

网上招聘系统分析、设计与实现

4.3 模型层

知识题库管理模型层共有4个Bean文件,每个Bean伪代码的描述详见文件WSZP-PD-DD-knowledge-Model.doc。

5. 问卷管理模块的详细设计

问卷管理主要是实现职位对应的问卷维护功能,问卷管理的struct视图层、控制层和模型层三个层次的模块如表3-4所示。

表3-4 问卷管理的三层模块 视图 JSP组件 examlist.jsp examdetail.jsp addexam_cart.jsp questionadd.jsp ActionFormBean ExamSearchForm ExamDetailForm AddExamForm DelExamForm 客户标签 Struct Html标签 Struct Bean标签 Struct Logic标签 用户自定义CV标签库的标签 examview.jsp SubmitQuestionToExamForm DelQuestionExamForm ViewExamForm OrderQuestForm QuestionSearchAction SubmitQuestionToExamAction DelQuestionExamAction ViewExamAction OrderQuestAction ExamSearchAction ExamDetailAction AddExamAction DelExamAction DBUtil Exambeam ExamCart 控制器 模型 5.1视图层

问卷管理视图层包括JSP组件,Form组件以及标签库等。共有5个JSP文件,详见demo和伪代码文件WSZP-PD-DD-Exam-ViewJSP.doc。共有8个Form模块的伪代码详见文件WSZP-PD-DD-Exam-ViewForm.doc。标签库详见12.1描述。

5.2 控制层

问卷管理控制层共有9个Action文件,每个Action伪代码的描述详见文件WSZP-PD-DD-Exam-control.doc。

66

网上招聘系统分析、设计与实现

5.3 模型层

问卷管理控制层共有3个Bean文件,每个Bean伪代码的描述详见文件WSZP-PD-DD-Exam-Model.doc。

6 简历管理模块的详细设计

简历管理主要实现对应聘者提交的简历的整理功能,简历管理的struct视图层、控制层和模型层三个层次的模块如表3-5所示

6.1视图层

简历管理视图层包括JSP组件、Form组件以及标签库等。共有4个JSP文件,详见demo和伪代码文件WSZP-PD-DD-Exam-ViewJSP.doc。共有2个Form文件,每个Form模块的伪代码详见文件WSZP-PD-DD-Exam-ViewForm.doc。标签库详见12.1描述。

表3-5 简历管理的三层模块

视图 JSP组件 Joblist.jsp Personinfo.jsp PersoninfoDetail.jsp Reply.jsp ActionFormBean JoblistForm ReplyForm 客户标签 Struct Html标签 Struct Bean标签 Struct Logic标签 用户自定义CV标签库的标签 ResumeAction ResumelistAction PersoninfoAction PersoninfoDetailAction InReplyAction ReplyAction DBUtil Jobbean Replybean 控制器 模型 6.2 控制层

简历管理控制层共有6个Action文件,每个Bean伪代码的描述详见文件WSZP-PD-DD-Resume-control.doc。

6.3 模型层

简历管理控制层共有3个Bean文件,每个Bean伪代码的描述详见文件

67

网上招聘系统分析、设计与实现

WSZP-PD-DD-Resume-Model.doc。

7. 面试管理模块的详细设计

面试管理的struct视图层、控制层和模型层三个层次的模块如表3-6所示。

表3-6 面试管理三层模块

视图 JSP组件 interview.jsp interviewState.jsp CVdetail.jsp interviewResult.jsp ActionFormBean InterviewStateForm CVdetailForm InterviewResultForm 客户标签 Struct Html标签 Struct Bean标签 Struct Logic标签 用户自定义CV标签库的标签 inInterviewAction interviewAction waitAction interviewedAction ViewResumeAction interviewStateAction interviewResultAction DBUtil Jobbean Interviewbean 控制器 模型 7.1视图层

面试管理视图层包括JSP组件、Form组件以及标签库等。共有4个JSP文件,详见demo和伪代码文件WSZP-PD-DD-Interview-ViewJSP.doc。共有3个Form文件,每个Form模块的伪代码详见文件WSZP-PD-DD-Interview-ViewForm.doc。标签库详见12.1描述。

7.2 控制层

面试管理控制层共有7个Action文件,每个Action伪代码的描述详见文件WSZP-PD-DD-Interview-control.doc。

7.3 模型层

面试管理控制层共有3个Bean文件,每个Bean伪代码的描述详见文件WSZP-PD-DD-Resume-Model.doc。

68

网上招聘系统分析、设计与实现

8. 用户登录模块的详细设计

用户登录管理主要实现了对管理端用户登录和验证和权限管理功能,用户登录管理的视图层、控制层和模型层三个层次的模块如表3-7所示。

表3-7 用户登录管理的三层模块

视图 JSP组件 index.jsp main.jsp center.jsp top.jsp left.jsp bottom.jsp

ActionFormBean LoginForm

客户标签 Struct Html标签 Struct Bean标签 Struct Logic标签

用户自定义CV标签库的标签

LoginAction

DBUtil Permission Userbean

控制器

模型

8.1视图层

用户登录管理视图层包括JSP组件、Form组件以及标签库等。共有6个JSP文件,详见demo和伪代码文件WSZP-PD-DD-Login-ViewJSP.doc。共有1个Form文件,每个Form模块的伪代码详见文件WSZP-PD-DD-Login-ViewForm.doc。标签库详见12.1描述。

8.2 控制层

用户登录管理控制层共有1个Action文件,每个Action伪代码的描述详见文件WSZP-PD-DD- Login -control.doc。

8.3 模型层

用户登录管理控制层共有3个Bean文件,每个Bean伪代码的描述详见文件WSZP-PD-DD- Login -Model.doc。

9. 用户管理模块的详细设计

用户管理主要实现对管理端用户增删功能以及用户的权限管理功能,用户管理

69

网上招聘系统分析、设计与实现

的视图层、控制层和模型层三个层次的模块如表3-8所示。

表3-8 用户管理的三层模块

视图 JSP组件 main.jsp userlist.jsp adduser.jsp

ActionFormBean UserListForm UserDetailForm AddUserForm DelUserForm

客户标签 Struct Html标签 Struct Bean标签

用户自定义CV标签库的标签

AddUserAction SubmitAddAction DelUserAction

UserListAction UserDetailAction ModifyUserAction

DBUtil UserBean

控制器

模型

userdetail.jsp ModifyUserForm Struct Logic标签

SubmitModifyAction

9.1视图层

用户管理视图层包括JSP组件、Form组件以及标签库等。共有4个JSP文件,详见demo和伪代码文件WSZP-PD-DD-User-ViewJSP.doc。共有5个Form文件,每个Form模块的伪代码详见文件WSZP-PD-DD-User-ViewForm.doc。标签库详见11.1描述。

9.2 控制层

用户管理控制层共有7个Action文件,每个Action伪代码的描述详见文件WSZP-PD-DD- User -control.doc。

9.3 模型层

用户管理控制层共有2个Bean文件,每个Bean伪代码的描述详见文件WSZP-PD-DD- User -Model.doc。

10. 客户端模块的详细设计

客户端模块主要实现应聘者提交简历的功能,客户端模块的视图层、控制层和模型层三个层次的模块如表3-9所示。

表3-9 客户端的三层模块

70

网上招聘系统分析、设计与实现

视图 JSP组件

index.jsp joblist.jsp jobdetail.jsp CVbasicinfo.jsp career.jsp education.jsp skills.jsp relation.jsp addtion.jsp CVall.jsp exam.jsp ActionFormBean

JobForm JobDetailForm CVbasicinfoForm CareerForm EducationForm SkillsForm RelationForm AddtionForm CVallForm ExamForm 控制器

模型

客户标签 Struct EnAction DBUtil

Html标签

Struct JobDetailAction CVDataBean

Bean标签

Struct

ApplyJobAction

Logic标签

用户自AddbasicinfoAction

义CV标签库的标签

ProcesscareerAction AddcareerAction BackcareerAction

ProcesseducationAction AddeducationAction BackeducationAction ProcessskillsAction AddskillsAction BackskillsAction ProcessrelationAction AddrelationAction BackrelationAction AddaddtionAction BackaddtionAction CVallAction

BackCVallAction SubmitAction BacksubmitAction

71

网上招聘系统分析、设计与实现

10.1视图层

客户管理视图层包括JSP组件、Form组件以及标签库等。共有11个JSP文件,详见demo和伪代码文件WSZP-PD-DD-Client-ViewJSP.doc。共有10个Form文件,每个Form模块的伪代码详见文件WSZP-PD-DD-Client-ViewForm.doc。标签库详见12.1描述。

10.2 控制层

客户端管理控制层共有22个Action文件,每个Action伪代码的描述详见文件WSZP-PD-DD- Client -control.doc。

10.3 模型层

客户端管理控制层共有2个Bean文件,每个Bean伪代码的描述详见文件WSZP-PD-DD- Client-Model.doc。

11. 复用的模块

复用是本系统设计的一个重要原则,尤其是struct体系本身也遵循了复用的原理,本系统复用的部分主要包括标签库、数据库基本操作以及结果的显示等环节。

11.1 客户标签库

客户标签库主要包括:

1)Struct标准标签库。本系统中使用了Struct Html标签、Struct Bean标签和Struct Logic,它们是Struct标准标签库。

2)自定义标签库。CV标签是系统自定义的标签库,表V-10是CV标签库的标签模块。

表3-10 CV标签库的标签模块

序号 标签 功能描述 1 2

ValidateSessionTag 身份验证 PageBeanTag 分页

下面是身份验证的伪代码说明。用户登录后进入的每个页面,为了安全的考虑,管理端都需要进行用户验证,以防止非法登录,验证每个页面的JSP都可以标签的

72

网上招聘系统分析、设计与实现

方式进行复用。 /**

*@System:Online CV System *@Version:1.0

*@Copyright@ 2009 by changjiang company, Inc. All Rights Reserved. *@Class:ValidateSessionTag *@Summary:对用户的身份验证 *@Create:2005.03.28郭士榕 *Update: */

Package tag;

import javax.servlet.http.HttpSession; import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.TagSupport; import org.apache.commons.logging.log;

import org.apache.commons.logging.logFactory; /**

*ValidateSessionTag是客户端标签,以判断用户是否具有访问当前页面的权限 *通过保持、判断一个session来实现 */

public final class ValidateSessionTag extends TagSupport {

private String name=\"username\"; private String page=\"/login.jsp\";

private Log log=LogFactory.getLog(this.getClass().getName());

public int doEndTag()throws JspException {

boolean valid=false;

HttpSession session=pageContext.getSession();

//判断session中是否有用户信息存在

73

网上招聘系统分析、设计与实现

//如果用户存在则不做任何处理 //用户不存在则跳转到指定的页面 }

public int doStartTag()throws JspException {

return(SKIP_BODY); }

//获取用户信息

public String getName() {

...... }

//获取用户当前访问的页面 public String getpage() {

...... }

//如果用户没有当前页面的访问权限,则返回到指定的页面,设置这个指定页面

public void release() {

...... }

//设置用户信息

public void setName(String name) {

...... }

//设置当前页面

public void setPage(String page) {

...... } }

74

网上招聘系统分析、设计与实现

其他详见文件WSZP-PD-DD-Reuse-CVTag.doc,它对每个模块的伪代码都有比较详细的描述。

11.2 数据库的基本操作

所有的模块都需要进行数据库的操作,应该有一个通用的、高质量的数据库操作模块,其实所有的模型层的模块也都在调用这个模块。这个模块的名称是DBUtil。下在面是它的伪代码描述。 /**

*@System:Online CV System *@Version:1.0

*@Copyright @ 2009 by changjiang company,Inc, All Rights Reserved. *@Class:DB

*@sUMMAYT:取得数据库连接并对数据库进行查询!增加记录,删除记录操作 *@Create:2005.04.27李林 *@Update: */

package com.changjiangcompany.xtructs.javashare;

import java.sql.*; import java.util.*;

import com.microsoft.jdbcx.sqlserver.SQLServerDataSource;

public class DB{

Private Statement stmt=null; Private ResultSet rs=null;

public DBConnect() {

//初始化连接 ...... } /**

*方法:executeQuery

*描述:执行查询记录操作

75

网上招聘系统分析、设计与实现

*输入参数:String strsql要执行操作的sql语句 *返回:ArrayList ArrayRs查询的结果 *异常:SQLException */

public ArrayList executeQuery(SQLServerDataSource source,String strSql)throws SQLException { /*

*连接数据库 */ /*

*执行SQL的查询语句 */ ...... /*

*将每条记录写入ArrayList中 */ ...... } /**

*方法:executeInsert *描述:执行插入查录操作

*输入:String strsql要执行操作的sql语句 *返回:boolean类型,插入操作是否正确执行 *异常处理:SQLException */

public boolean executeInsert(SQLServerDataSource strSql)throws SQLException { /*

*连接数据库 */ /*

*执行SQL的查询语句 */

76

source,String 网上招聘系统分析、设计与实现

...... /*

*将每条记录写入ArrayList中 */ ...... } /**

*方法:executeUpdate *描述:执行更新操作

*输入:String strsql要执行操作的sql语句 *返回:int更新操作的记录数 *异常处理:SQLException */

public int executeUpdate(SQLServerDataSource strSql)throws SQLException { /*

*连接数据库 */ /*

*执行SQL的修改语句 */ ...... /*

*返回SQL修改语句执行的记录数 */ ...... } /**

*方法:executeDelete *描述:执行删除操作

*输入:String strsql要执行操作的sql语句 *返回:int删除操作的记录数 *异常处理:SQLException */

public int executeDelete(SQLServerDataSource

77

source,String

source,String

网上招聘系统分析、设计与实现

strSql)throws SQLException { /*

*连接数据库 */ /*

*执行SQL的删除语句 */ ...... /*

*返回SQL删除语句记录数 */ ......

}

11.3 结果显示

为了保证系统显示结果的一致性和统一性,系统中所有的结果显示要调用统一的结果显示页在,表3-11是结果显示一览表。

表3-11 结果显示页面一览表

序号 模块名 功能说明 1 SuccessResult 成功登录 2 WrongResult 结果错误 3 Common 操作提示 4 Top 主页面的头部 5 Bottom 主页面的脚部 6 Left 主页面的左部 保个模块详见文件WSZP-PD-DD-Reuse-ResultShow.doc,它对每个模块的伪代码都有比较详细的描述。

12. 配置文件

Struct应用采用两个基于XML的配置文件来配置应用,这两个配置文件为web.xml和strcut-config.xml。web.xml适用于所有的Java Web应用,它是Web应用的发布描述文件,在Java Servlet规范中对它做了定义,对于struct应用,在

78

网上招聘系统分析、设计与实现

web.xml文件中除了配置Java Web应用的常规信息,还应该配置和struct相关的特殊信息。strcut-config.xml是struct应用专有的配置文件,事实上,也可以根据需要将这个配置文件换为其他的文件名。

下面给出本项目中web.xml配置文件和strcut-config.xml配置文件的配置步骤和范围,在编码实施过程中,由开发经理指派专人负责所有文件的具体配置和协调。

12.1 web.xml配置文件

下面讲述web.xml配置文件的配置步骤和范围。

1)配置struct的ActionServlet:在web.xml中配置ActionServlet,主要包括声明ActionServlet(即配置元素)、运行时环境的初始化配置(即配置元素的子元素)和指定ActionServlet可以处理哪些URL(即配置元素)。例如:

action

org.apache.structs.action.ActionServlet

config

/WEB-INF/struct-config.xml

action *.do 2)配置欢迎文件清单:当客户访问Web应用时,如果没有指定具体的文件名,Web容器可以自动调用Web应用的欢迎文件。元素用来设置欢迎文件清单。例如:

index.jsp login.jsp

3)配置错误处理:在系统运行过程中如果错误发生而Struct框架不能处理这种错误时,就将错误抛给Web容器,为了避免让用户看到原始的错误信息,可以配置元素及其子元素等。例如:

404

79

网上招聘系统分析、设计与实现

< location >/common/404.jsp

java.io.IOException /common/system_ioerror.jsp

4)配置标签库:Struct框架提供了一些实用的客户化标签库,如果在应用中使用了标签库,那么必须在配置元素中配置,它有两个子元素,。例如:

/WEB-INF/structs-bean.tld

/WEB-INF/structs-bean.tld

13.2 struct-config.xml配置文件

Struct框架在启动的时候会读入其配置文件,根据它来创建和配置各种组件。Struct配置文件使得开发者可以灵活地组装和配置各个组件,提高了应用软件的可扩展性和灵活性。

有8个子元素: ·; ·;

·; ·; ·; ·;

·; ·.

在配置文件中,必须按照这个先后顺序来配置各个子元素。

1)元素:元素用来配置应用所需要的数据源,数据源负责建立与特定数据库的连接。元素包含零个或者多个子元素,它配置特定的数据源,可以包含多个。例如:

“sqlserver”type=“org.apache.commons.dbcp.jdbc.sqlserver.SQLServerDriver”/>

“driverClassName”value=“com.microsoft.jdbc.sqlserver.SQLServerDriver”/>

< set-property property=“url”value=

80

网上招聘系统分析、设计与实现

“jdbc:Microsoft:sqlserver://127.0.0.1:1433;DatabaseName=onlineCV”/>

< set-property property=“MaxACTIVE”VALUE=“5/”> < set-property property=“username”value=“sa”/>

< set-property property=“password”value=“xiaobo633601”/> < set-property property=“autoCommit”value=“true”/>

2)元素:元素用来配置多个ActionForm Bean。元素包含零个或者多个子元素,每个元素又包含多个属性。例如:

3)元素:元素用于配置异常处理,元素可以包含零个或者多个元素。例如:

Key=“error.invalidlogin” Path=“com/relogin.jsp”

81

网上招聘系统分析、设计与实现

Scope=“request”

4)元素:元素用来声明全局的转发关系,实现Web组件之间的相互转发。元素由零个或者多个< forwards>元素组成。< forwards>元素用于将一个逻辑名映射到特定的URL,这样Action类或者JSP文件无须指定实际的URL,减弱了控制组件和视图组件之间的耦合。例如:

82

网上招聘系统分析、设计与实现

5)元素:元素包含零个或者多个元素,元素描述了从特定的请求路径到相应的Action类的映射。元素可以包含多个子元素,它们分别配置局部的异常处理及请求转发,仅被当前的Action所访问。例如:

path=“position/jobsearch” scope=“request”type=“com.changjiangcompany.structs.action. JobSearchAction”>

6)元素:元素用于配置ActionServlet。例如:

7)元素:元素用于配置Resource Bundle,Resource Bundle用于存放本地化消息文本。例如:

8)元素:元素用于配置structs插件,如果没有插件可以不写。

83

网上招聘系统分析、设计与实现

第四章 网上招聘系统编码实现

1.编码格式规范

1.1缩进排版

4个空格作为缩进排版的一个单位。

1.2行工度

尽量避免一行的长度超过80个字符,用于文档中的例子应该使用更短的行长,长度一般不超过70个字符。

1.3断行规则

当一个表达式无法容纳在一行内时,可以依据如下一般规则断开: ·在一个逗号后面断开; ·在一个操作符前面断开;

·宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开(见下面的例子);

·新的一行应该与上一行同一级别表达式的开关处对齐;

·如果以上规则导致代码混乱或者使代码都堆挤在右边,那就代之以缩进8个空格。

以下是两个断开算术表棕式的例子.前者属于更高级别的断开.因为断开处位于括号表达式的外边。

longName1=longName2*(longName3+ longName4- longName5)+4* longName6;//推荐

longName1= longName2*( longName3+ longName4- longName5)+4* longName6;//避免

以下是两个缩进方法说明的例子。前者是常规情形,后者若使用常规的缩进方

84

网上招聘系统分析、设计与实现

式将会使第二行和第三行移得很靠右,所以代之以缩进8个空格。

//规范的缩进 someMethod(int anArg,object anotherArg,String yetAnotherArg,object andStillAnother){

… }

//以8个空格来缩进,以避免非常纵深的缩进

Private static synchronized horkingLongMethodName(int anArg,objice anotherArg,String yetAnotyerArg,object andStillAnother){

… }

If语句的换行通常使用8个空格的规则,因为常规缩进(4个空格)会使语句体看起来比较费劲。比如:

//不可取的缩进方法

if((condition1&&condition2) ||(condition3&& condition4) ||(condition5&& condition6)){ }

//可取的缩进方法一

If((condition1&&condition2)

||(condition3&& condition4) ||!(condition5&& condition6)){ doSomethingAboutIt(); }

//可取的缩进方法二

if((condition1&&condition2)||(condition3&& condition4)

||!(condition5&& condition6)){ doSomethingAboutIt(); }

1.4空行

空行将逻辑相关的代码段分隔开,以提高可读性。下列情况应该总是使用两个空行:

·一个源文件的两个片段(section)之间; ·类声明和接口声明之间。

下列情况应该总是使用一个空行:

85

网上招聘系统分析、设计与实现

·两个方法之间;

·方法内的局部变量和方法的第一条语句之间; ·块注释或单行注释之前;

·一个方法内的两个逻辑段之间,用以提高可读性。

2.命名规范

命名规范使程序更易读,从而更易于理解。它们也可以提供一些有关标识符功能的信息,以助于理解代码。

2.1包(Packages)

一个包名的前缀总是全部小写的ASCII字母并且是一个顶级域名,通常是com, edu, gov, mil, net, org, 或1981年ISO3166标准所指定的标识国家的英文双字符代码。包名的后续部分根据不同机构各自内部的命名规范而不尽相同。这类命名规范可能以特定目录名的组成部门(department),项目(project),机器(machine),或注册名(login names)。

如:

Com.sun.eng

Com.apple.quicktime.v2 Edu.cmu.cs.bovik.cheese

2.2类(Classes)

类名是一个名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML)。

2.3接口(Interfaces)

大小写规则与类名相似。

2.4方法(Methods)

方法名是一个动词,采用大小写混合的方式,第一个单词的首字母大写,其后

86

单词的首字母大写。

网上招聘系统分析、设计与实现

2.5变量(Variabies)

采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i, j, k, m和n,它们一般用于整形;c, d, e,它们一般用于字符型。

2.6实例变量(Instance Variables)

除了前面需要一个下划线,大小写规则和变量名相似,如:int_employeeId。

2.7常量(Constants)

类常量和ANSI常量的声明,应该全部大写,单词间用下划线隔开。

3.声明规范

3.1每行声明变量的数量

推荐一行一个声明,因为这样以利于写注释。亦即: Int leve1;//indentation leve1 Int size;//size of table 要优于:

不要将不同类型变量的声明放在同一行,例如: Int foo,fooarray[];//WRONG!

注意:上面的例子中,在类型和标识符之间放了一个空格。空格可使用制表符替代。

3.2初始化

尽量在声明局部变量的同时初始化。唯一不这么做的理由是变量的初始值依赖

87

网上招聘系统分析、设计与实现

于某先前发生的计算。

3.3布局

只在代码块的开始处声明变量(一个块是指任何被包含在大括号“{”和“}”中间的代码)。不要在首次用到该变量时才声明之。这会把注意为不集中的程序员搞糊涂,同时会妨碍代码在该作用域内的可移植性。 void myMethod(){

int int1=0;//方法(代码块)开始处声明变量

if(condition){

int int2=0;//if代码块开始处声明变量 ...... } }

该规则的一个例外是for循环的索引变量; for (int i=0;i3.4包的声明

在多数Java源文件中,第一个非注释行是包语句。我们的网上招聘系统包的声明采用如下规范:

Package com.changjiangcompany.structs.form;//form包 Package com.changjiangcompany.structs.action;//action包 4.5类和接口的声明

当编写类的接口时,应该遵守以下格式规则: ·在方法名与其参列表之前的左括号“(”间不要有空格; ·左大括号“{”们于声明语句同行的末尾; ·右大括号“}”另起一行,与相应的声明语句对齐,除非是一个空语句,“}”应紧跟在“}”之后;

·方法与方法之间以空行分隔。

88

网上招聘系统分析、设计与实现

4.语句规范

4.1简单语句

每行至多包含一条语句,例如: argv++;//推荐 argc--;//推荐

argv++argc--;//避免

4.2复合语句

复合语句是包含在大括号的语句序列,形如“{语句}”。遵循原则如下: ·被括其中的语句应该较之复合语句缩进一个层次; ·左大括号“{”应位于复合语句起始行的行尾;右大括号“}”应另起一行并与复合语句首行对齐;

·大括号可以被用于所有语句,包括单个语句,只要这些语句是诸如if-else或for控制结构的一部分。这样便于添加语句而无须担心由于忘了加括号而引入bug。

5.注释规范

Java程序有两类注释:实现注释(implementation comments)和文档注释(document comments)。实现注释使用/*…*/界定的注释。文档注释(被称为“doc comments”)是Java独有的,并由/**…*/界定。文档注释可以通过javadoc工具转换成HTML文件,描述Java的类、接口、构造器、方法以及字段(field)。一个注释对应一个类、接口或成员。若你想给出有关类、接口、变量或方法的信息,而这些信息又不适合写在文档中,则可使用实现块注释或紧跟在声明后面的单行注释。例如,有关一个类实现的细节,应放入紧跟在类声明后面的实现块注释中,而不是放在文档注释中。

注释应被用来给出代码的总括,并提供代码自身没有提供的附加信息。

在注释里,对设计决策中重要的或者不是显而易见的地方进行说明是可以的,但应避免提供代码中已清晰表达出来的重复信息。

89

网上招聘系统分析、设计与实现

5.1 注释的方法

程序可以有4种实现注释的风格:块注释、单行注释、尾端注释和行末注释。 1)块注释

块注释通常用于提供对文件,方法,数据结构和算法的描述。块注释被置于每个文件的开始处以及每个方法之前。它们也可以被用于其他地方,比如方法内部。在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式。块注释之首应该有一个空行。用于把块注释和代码分割开来,比如: /*

*这是块注释(Here is a block comment.) */

public class Example{... }

注意顶层(top-level)的类和接口是不缩进的,而其成员是缩进的。描述类和接口的文档注释的第一行(/**)不需缩进,随后的文档注释每行都缩进1格(使星号纵向对齐)。成员,包括构造函数在内,其文档注释的第一行缩进4格,随后每行都缩进5格。

2)单行注释

短注释可以显示在一行内,并与其后的代码具有一样的缩进层级。如果一个注释不能在一行内写完,就该采用块注释(参见“块注释”)。单行注释之前应该有一个空行。以下是一个Java代码中单行注释的例子: if condition{

/*条件处理(Handle the condition.)*/ ... }

3)尾端注释

极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。若有多个短注释出现于大段代码中,它们应该具有相同的缩进。以下是一个Java代码中尾端注释的例子: if(input==2){

return TRUE; /*特殊处理*/ }else{

return inMine(input); /*调用函数isMine*/ }

4)行末注释

90

网上招聘系统分析、设计与实现

注释界定符“//”可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本然而,它可以用来注释掉连续多行的代码段。

注意:

·频繁的注释有时反映出代码的低质量。当你觉得被迫要加注释的时候,考虑一下重写代码使其更清晰;

·注释不应写在用星号或其他字符画出来的大框里。注释不应包括诸如制表符和回退符之类的特殊字符。

5.2 开头注释

所有的源文件都应该在开头有一个类似C语言风格的注释,其中列出类名、版本信息、日期、作者以及版权声明。我们的网上招聘系统采用的头注释统一为: /**

*@System:Online CV System *@Version:1.0

*@Copyright @ 2009 by changjiang company,Inc.All Rights Reserved. *@Class:ValidateSessionTag *@Summary:对用户的身份验证 *@Create:2005.05.02 江明 *@Update:2005.05.02 江明 */

5.3 类和接口的注释

类/接口文档注释(/**……*/):该注释中所需包含的信息,参见“LogonAction.java”。

类/接口实现的注释(/**……*/):如果有必要的话,该注释应包含任何有关整个类或接口的信息,而这些信息又不适合作为类/接口文档注释。

6. 代码范例 /**

*@System:Online CV System *@Version:1.0

*@Copyright @ 2009 by changjiang company,Inc.All Rights Reserved. *@Summary:循环打印用户信息 *@Create:2005.05.28 冯飞 *@Update:

91

网上招聘系统分析、设计与实现

*/

<&@page language=\"java\"&>

<&@taglib uri=\"http://jakarta.apache.org/structs/tags-bean\"prefix=\"bean\"&> <&@taglib uri=\"http://jakarta.apache.org/structs/tags-html\"prefix=\"html\"&>

JSP for sampleForm form

<&--判断用户信息--&>

<&--循环显示用户信息--&>

6.目录规范

开发环境是eclipse,开发之后的代码需要部署到Tomcat服务器环境上。所以开发环境的目录结构与运行环境的目录结构是一致的,只是在部署的运行环境中,可以不设置源代码的目录。为此制定目录规范,开发目录结构如图D-1所示。

编码过程应该按照详细设计的规划进行,在伪代码的基础上,按照编码标准和规范进行模块编码。开发环境是eclipse,首先开发人员在开发过程中按照开发的目录将相应的文件存放在指定的目标下,进行调试,如果调试完成,代码评审通过后,放入基线库,再从基线库将代码放入运行(Tomcat)环境中。

各个目录的说明如下:

1)OnlineCV/src/share目录中存放所有的Java公用的模块,详见基线库OnlineCV/src/share目录下的文件,下面是公用模块中关于数据库的基本操作类的代码。

92

网上招聘系统分析、设计与实现

/**

*@System:Online CV System *@Version:1.0

*@Copyright @2009 by changjiang company, Inc. All Rights Reserved. *@Class:DB

*@Summary:取得数据库连接并对数据库进行查询、增加记录、删除记录操作 *@Create:2005.04.27 李林 *@Update:2005.05.09 巩俐 */

package com.changjiangcompany.struts.javashare;

import java.sq1.* jmport java.util.*;

import com.microsoft.jdbcx.sqlserver.SQLServerDataSource;

public class DBConnect{

private Statement stmt=null; private ResultSet rs=null;

public DBConnect(){ try

{//初始化连接

Class.forName((\"com.microsoft.jdbc.sqlserver.SQLServerDriver\")); }catch(java.lang.ClassNotFoundException e){

System.err.prntln(\"opendb():\"+e.getMessage(); } } /**

*方法:executeQuery

*描述:执行查询记录操作

*输入:String strsql要执行操作的sql语句 *@返回:ArrayList ArrayRs查询的结果 *@异常处理:throws SQLException */

public ArrayList executeQuery(SQLServerDataSource source,String strsql)throws SQLException{

93

网上招聘系统分析、设计与实现

Connection con=null; rs=null;

ArrayList ArrayRs=new ArrayList(); try{

con=source.getConnection(); stmt=con.createStatement(); rs=stmt.executeQuery(strSql);

ResulSetMetaData rsmd=rs.getMetaData(); int mumberofColumns=rsmd.getColumnCount(); //判断是否为空

if(!ArrayRs.isEmpty()) {

ArrayRs.clear(); } /*

*将每条记录写入ArrayList中 */

while(rs.next()){

ArrayList arrlistl=new ArrayList(); for(int j=1;jarrlistl.add(s); }

ArratRs.add(arrlistl); }

}catch(Exception e){

System.out.println(\"query error:\"+e.getMessage()); }finally{

if(stmt !=null){ stmt.close(); }

if(con !=null&&!con.isClosed()){ con.close();

94

网上招聘系统分析、设计与实现

} }

return ArrayRs; } /**

*方法:executeInsert *描述:执行插入记录操作

*输入:String strsql要执行操作的sql语句 *@返回:boolean插入操作是否正确执行 *@异常处理:SQLException */

public boolean executeInsert(SQLServerDataSource source,String strsql)throws SQLException{ Connection con=null; rs=null; try{

con=source.getConnection(); stmt=con.createStatement();

con.setAutoCommit(true);

int i=stmt.executeUpdate(strSql);

if(i==1){

return(true); }

}catch(Exception e){

System.out.PrintIn(\"Insert error:\"e.getMessage()); }finally{

if(stmt !=null){ stmt.close(); }

if(con!=null&&!con.isClosed()){ con.close(); } }

return(false); }

95

网上招聘系统分析、设计与实现

/**

*方法:executeUpdate *描述:执行更新操作

*输入:String strsql要执行操作的sql语句 *@返回:int更新操作的记录数 *@异常处理:SQLException */

public int executeUpdate(SQLServerDataSource source,String strsql)throws SQLException{ Connection con=null; rs=null; int j=0 try{

con=source.getConnection();

stmt=con.createStatement(); con.setAutoCommit(false);

j=stmt.executeUpdate(strSql);

if(j>0){

con.commit(); }else{

con.rollback(); }

}catch(Exception e){

System.out.printIn(\"update error:\"+e.getMessage()); }finally{

if(stmt!=null){ stmt.close(); }

if(con!=null&&!con.isClosed()){ con.close(); } }

return j; } /**

96

网上招聘系统分析、设计与实现

*方法:executeDelete *描述:执行删除操作

*输入:String strsql要执行操作的sql语句 *@返回:int删除操作的记录数 *@异常处理:throws SQLException */

public int executeDelete(SQLServerDataSource source,String strsql)throws SQLException{ Connection con=null; rs=null; int j=0; rty{

con=source.getConnection(); stmt=con.createStatement();

con.setAutoConnit(false); j=stmt.executeUpdate(strSql);

if(j>0){

con.commit(); con.rollback(); }

}catch(Exception e){

System.out.printIn(\"Delete error:\"+e.getMessage()); }finally{

if(stmt!=null){ stmt.close(); }

if(con!=null&&!con.isCloser()){ con.close(); } }

return j; }

2)onlineCV/src/Form目录中存放所有的form模块,详见基线库的onlineCV/src/Form目录下的文件,下面是职位管理中的AddJobForm模块的代码。 /**

97

网上招聘系统分析、设计与实现

*@System:Online CV System *@Version:1.0

*@Copyright@ 2009 by changjiang company,Inc.All Rights Reserved. *@Class:AddJobForm

*@Summary:增加职位信息的Form *@Create:2005.05.23 章飞 *@Update:2005.05.28 章飞 */

package com.cgangjiangcompany.struts.form; import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; /**

*MyEclipse Struts

*Creation date:04-16-2009 *

*XCoclet definition;

*@struts.form name=\"submitAnswerRorm: */

public class SubmitAnswerForm extende ActionForm{

//...........................................Instance Variables

/**职位名称*/

private String JobName; /**职位发布日期*/

private String PubDate; /**职位发布结束日期*/ private String EndDate; /**职位描述*/

private String Description; /**职位要求*/

98

网上招聘系统分析、设计与实现

private String Requirements; /**招聘人数*/

private ing JobNum;

//............................................Methods /**

*Method Validate *@param mapping *@param request

*@return ActionErrors */

public ActionErrors Validate( ActionMapping mapping,

HttpServletRequest request) {

...... }

/**Method reset *@param mapping *@param request */

public void reset(ActionMapping request) }

...... } /**

*返回JobName * */

public String getJobName(){ return JobName; } /**

*赋值JobName

99

mapping,HttpServletRequest 网上招聘系统分析、设计与实现

* */

public void setJobName(String JobName){ this.JobName=JobName; } /**

*返回PubDate * */

public String getPubDate(){ return PubDate; } /**

*赋值PubDate * */

public voie setPubDate(String PubDate){ this.PubDate=PubDatd; } /**

*返回EndDate * */

public String getEndDate(){ return EndDate; } /**

*赋值EndDate * */

public void setEndDate(String EndDate){ this.EndDate=EndDate; } /**

*返回Description * */

100

网上招聘系统分析、设计与实现

public String getDescription(){ return Description; } /**

*赋值Description * */

public void setDescription(String Description){ this.Description=Description; } /**

*返回Requirements * */

public String getRequirements(){ return Requirements; } /**

*赋值Requirements * */

public void setRequirements(String Requirements){ this.Requirements=Requirements; } /**

*返回JobNum * */

public int getJobNum(){ return JobNum; } /**

*赋值JobNum * */

pulic void setJobNum(int JobNum){ this.JobNum=JobNum;

101

网上招聘系统分析、设计与实现

} }

3)onlineCV/src/Action目录中存放所有的Action模块,详见基线库的onlineCV/src/Action目录下的文件,下面是职位管理中的AddJobAction模块的代码。 /**

*@System:online CV System *@Version:1.0

*@Copyright @ 2009by changjiang company,Inc.All Rights Reserved. *@Class:AddJobAction

*@Summary:增加职位信息的Action *@Create:2005.05.23 章飞 *@Update:2005.05.28 章飞 *@Update:2005.05.28 章飞 *@Update:2005.05.01 李杰玉 */

package com.changjiangcompany.struts.action;

import java.util.Vector;

import javax.servlet.ServletContext;

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.sql.DataSource;

import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionForm;

import share.Constants;

import com.changjiangcompany.DB; import com.changjiangcompany.Job;

*MyEclipse Struts Creation date:04-19-2009 *

*XDoclet definition:

102

网上招聘系统分析、设计与实现

*

*@struts.action

path=\"/addJob\"name=\"AddFobForm\"input=\"/position/joblist.jsp\" * scope=\"request\"validate=\"true\"

*@struts.action-forward name=\"addjob\"path=\"/position/jobdetail.jsp\" */

public class AddJobAction extends Action{ /**

*Method execute *@param mapping *@param form *@param request *@paramresponse

*@return ActionForward */

public ActionForward execute( ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttppServletResponse response){ //获取新增加的职位信息

DynaActionForm AddJobForm=(DynaActionForm)form; String JobName=(String)AddJobForm,get(\"JobName\"); String PubDate=(String)AddJobForm,get(\"PubDate\"); String EndDate=(String)AddJobForm,get(\"EndDate\");

String Description=(String)AddJobForm,get(\"Description\"); String Requitements=(String)AddJobForm,get(\"Requirements\"); Integer JobNum=(Integer)AddJobForm.get(\"JobNum\");

HttpSession session=request.getSession(); Vector JobList=new Vector(); //连接数据库

ServletContext context=servlet.getServletContext(); DataSource

dataSource=(DataSource)context.getAttribute(Constants.DATASOURCE_KEY); DB db=new DB(dataSource);

103

网上招聘系统分析、设计与实现

//将职位基本信息封装到员工类型的对象 try{

Job job=new Job();

job.setJobName(JobName); job.setPubDate(PubDate); job.setEndDate(EndDate);

job.setDescription(Description); job.setRequirements(Requirements); job.setJobNum(JobNum,intValue()); //将增加的职位信息加入到对应的数据库

if(job.addJob(db,JobName,PubDate,EndDate,Description,Requirements,JobNum,intValue())){

db,close();} }catch(Exception e){ e.printStackTrace(); }

return(mappong.findForward(\"toaddjob\")); } }

4)onlineCV/src/Model目录中存放MVC体系中的模型模块,详见基线库的onlineCV/src/Model目录下的文件,下面是职位管理中的Job模块的代码。 /**

*@System:online CV System *@Version:1.0

*@Copyright @ 2009 by changjiang company,Inc.All Rights Reserved. *@Class:Job

*@Summary:处理Job信息的bean *@Create:2005.05.23 张祥 *@Update:2005.05.28 张祥 */

package com.changjiangcompany;

import java.Sql.ResultSet;

104

网上招聘系统分析、设计与实现

import java.util.Vector;

public class Job{

//与职位信息相关的基本属性和方法 public int JobID; public int JobNum;

public String JobName; public String PubDate; public StringEndDate; public StringDescription; public String Requirements;

public Job(){}

//职位描述属性的get及set方法 Public String getDescription(){ return Description; }

Public void setDescription(String Description){ this.getDescription=Description; }

//职位描述截止日期get及set方法 Public Strign getEndDate(){ return EndDate; }

Public Void setEndDate(String EndDate){ this.EndDate=EndDate; }

//职位ID的get及set方法 Public String getJobName(){ return JobName; }

public void setJobName(String JobName){ this.JobName=JobName;

105

网上招聘系统分析、设计与实现

}

//职位招聘人数的get及set方法 public int getJobNum(){ return JobNum; }

public void setJobNum(int JobNum){ this.JobNum=JobNum; }

//职位发布日期的get及set方法 public String getPubDate(){ return pubaDate; }

public void setPubDate(String PubDate){ this.PubDate=PubDate; }

//职位要求属性的get及set方法 Public String getRequirements(){ return Requirements; }

public void setRequirements(String Requirements){ this.Requirements=Requirements; } /**

*方法:jobSearch

*描述:查询满足条件的职位信息 *@param DB db 数据库对象

*@param String JobName职位名称 *@param String PubDate发布日期 *@param String EndDate截止日期 *@return Vector职位列表 *@throws Exception */

Public static Vector jobSearch(DB db,String PubDate,String EndDate)throws Exception{

106

JobName,String 网上招聘系统分析、设计与实现

Vector JobList=new Vector(); ResultSet rs;

String strSql=null;

strSql=\"select*from JobList where JobName like \"&\"+JobName+\"&\"+\"and PubDate like\"&\"+PubDate+\"&\"

+\"and EndDate like\"&\"+EndDate+\"&\"; rs=db.OpenSql(StrSql);

while(rs.next()){

Job job=new Job();

job.setJobID(rs.getInt(\"JobID\"));

job.setJobName(rs.getString(\"JobName\")); job.setPubDate(rs.getString(\"PubDate\")); job.setEndDate(rs.getString(\"EndDate\"));

job.setDescription(rs.getString(\"Description\")); job.setRequirements(rs.getString(\"Requirements\")); job.setJobNum(rs.getInt(\"JobNum\")); JobList.add(job);

System.out.printIn(\"nnnnnnnnnn,,,,,,,\"+rs.getString(\"JobName)); }

return JobList; } /**

*方法:getJobList *描述:获取职位列表

*@param DB db 数据库对象 *@return Vector职位列表 *@throws Exception */

Public static Vector getJobList(DB db)throws Exception{ Vector JobList=new Vector(); ResultSet rs;

String strSql=null;

strSql=\"select*from JobList order by JobID;

107

网上招聘系统分析、设计与实现

rs=DB.OpenSql(strSql);

while(rs.next()){

Job job=new Job();

job.setJobID(rs.getInt(\"JobID\"))

job.setJobName(rs.getString(\"JobName\"); job.setPubDate(rs.getString(\"PubDate\")); job.setEndDate(rs.getString(\"EndDate\")); job.setJobNum(rs.getInt(\"JobNum\")); JobList.add(job); }

return JobList; } /**

*方法:getJobDetail *描述:获取职位详细信息 *@param DB db 数据库对象 *@Param int JobID职位代号 *@return Vector职位列表 *@throws Exception */

Public Vector getJobDetail(DB db,int JobID)throws Exception{ ResultSet rs;

String strSql=null;

strSql=\"select*from JobList where JobID=\"+JobID; rs=db.OpinSql(strSql);

Vector JobList=new Vector();

if(rs.next()){

Job job=new Job();

job.setJobID(rs.getInt(\"JobID\"))

job.setJobName(rs.getString(\"JobName\");

System.out.PrintIn(\"JobID\"+rs.getString(\"JobID\")); job.setPubDate(rs.getString(\"PubDate\")); job.setEndDate(rs.getString(\"EndDate\"));

108

网上招聘系统分析、设计与实现

job.setDescription(rs.getString(\"Description\")); job.setRequirements(RS.GETsTRING(\"Requirements\")); job.setJobNum(rs.getInt(\"JobNum\")); JobList.add(job); }

return JobList; } /**

*方法:jaddJob

*描述:新加职位Form信息 *@param DB db 数据库对象

*@param String JobName职位名称 *@param String PubDate发布日期 *@param String EndDate截止日期 *@param String Description职位描述 *@param String Requirements职位要求 *@param int JobNum招聘人数

*@return boolean数据库操作是否成功 *@throws Exception */

Public boolean addJob(DB db,String JobName,String PubDate,String EndDate,String Description,

String Requirements,int JobNum)throws Exception { String strSql=null; ResultSet rs; int JobIDMax;

strSql=\"selectmax(JobID)from JobList\"; rs=db.OpenSql(strSql);

if(rs.next()){

JobIDMax=rs.getInt(1)+1; }else{

JobIDMax=1; }

strSql=\"insert into JobList Values(\"+JobName+\"','\"+PubDate+\"','\"+EndDate+\"','\"+Description

109

网上招聘系统分析、设计与实现

+\"','\"+Requirements+\"','\"+JobNum+\"')'\"; if(db.ExecSql(strSql)==0){ return false; }else{

return true; } } /**

*方法:modifyJob *描述:修改职位信息

*@param DB db 数据库对象 *@Param int JobID职位代号

*@param String JobName职位名称 *@param String PubDate发布日期 *@param String EndDate截止日期 *@param String Description职位描述 *@param String Requirements职位要求 *@param int JobNum招聘人数

*@return boolean数据库操作是否成功 *@throws Exception */

Public boolean modifyJob(DB db,int JobID,String JobName,String PubDate,String EndDate, String Description,String Requirements,int JobNum)throws Exception{

System.out.print(\"lokkeewwwww\"); String strSql=null;

strSql=\"Update JobList set JobName'\"+JobName+\"',\" +\"PubDate='\"+PubDate+\"',\" +\"EndDate='\"+EndDate+\"',\"

+\"Description='\"+Description+\"',\" +\"Requitements='\"+Requitements+\"',\" +\"JobNum=\"+JobNum; +\"where JobID=\"+JobID;

System.out.print(\"JobID\"+JobID); if(db.ExecSql(strSql)==0){

110

网上招聘系统分析、设计与实现

retrun false; }esle{

return true; } } /**

*方法:DeleteJob *描述:删除职位信息

*@param DB db 数据库对象 *@Param int JobID职位代号

*@return boolean数据库操作是否成功 *@throws Exception */

Public boolean DeleteJob(DB db,int JobID)throws Exception{ String strSql=null;

strSql=\"delete from JobList where JobID=\"+JobID;

if(db.ExecSql(strSql)==0){ return false; }else{

return true; }

} }

5)onlineCV/WEB-INF/struts-bean.tld,onlineCV/WEB-INF/struts-html.tld,onlineCV/WEB-INF/struts-logic.tld,onlineCV/WEB-INF/CVTld.tld,是标签库,其中onlineCV/CVTld.tld是自定义标签库,其他是struct系统标准的标签库,详见基线库的onlineCV/Tld目录下的文件,下面是身份验证模块的代码。 /**

*@System:online CV System *@Version:1.0

*@Copyright @ 2009 by changjiang company,Inc.All Rights Reserved. *@Class:ValidateSessionTag *@Summary:对用户的身份验证 *@Create:2005.05.23 Yule *@Update:2005.05.1 Yule */

111

网上招聘系统分析、设计与实现

package tag;

import javax.servlet.http.HttpSession; import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.TagSupport; import org.apache.commons.logging.log;

import org.apache.commons.logging.logFactory; /**

*ValidateSessionTagis a custom tag used *with this application to determine is a user has a current *validate session. */

public final class ValidateSessionTag extends TagSupport{ private String name=\"username\"; private String page=\"/login.jsp\";

private Log log=LogFactory.getLog(this.getClass().getName());

public int doEndTag() throws JspException{ boolean valid=false;

HttpSession session=pageContext.getSession();

//判断session中是否有用户信息存在

if((session!=null)&&(session.getAttribute(name)!=null)) valid=true;

if(valid)

return(EVAL_PAGE); //如果用户存在则不做任何处理 else{ try{

pageContext.forward(page); //用户不存在则跳转到指定的界面

}catch(Exception e){

throw new JspException(e.toString()); }

112

}

网上招聘系统分析、设计与实现

return(SKIP_PAGE); //执行跳转 } }

public int doStartTag()throws JspException{ return(SKIP_BODY); }

Public String getName(){ return(this.name); }

public String getPage(){ return(this.page); }

public void release(){ super.release();

this.name=\"username\"; this.page=\"/login.jsp\"; }

public void setName(String name){ this.name=name; }

public void setPage(String page){ this.page=page; }

6)onlineCV/Exam存放问卷管理的图片文件和JSP文件,其中onlineCV/Exam/images存放图片文件,onlineCV/exam/jsp目录存放JSP文件。详见基线库onlineCV/exam下的文件。

7)onlineCV/knowledge存放知识题库管理的图片文件和JSP文件,其中onlineCV//knowledge /images存放图片文件,onlineCV knowledge /jsp目录存放JSP文件。详见基线库onlineCV/ knowledge下的文件。

8)onlineCVposition存放职位管理的图片文件和JSP文件,其中onlineCV/position/images存放图片文件,onlineCV/position/jsp存放JSP文件。详见基线库onlineCVposition下的文件。

9)onlineCV/CVManagement存放简历管理的图片文件和JSP文件,其中onlineCV/CVManagement/images存放图片文件,onlineCV/CVManagement/jsp存放JSP文件。详见基线库onlineCV/CVManagement下的文件。

10)onlineCV/interview存放面试管理的图片文件和JSP文件,其中

113

网上招聘系统分析、设计与实现

onlineCV/Interview/images存放图片文件,onlineCV/interview/jsp存放JSP文件。详见基线库onlineCV/interview下的文件。

11)onlineCV/user存放用户管理的图片文件和JSP文件,其中onlineCV/user/images存放图片文件,onlineCV/user/jsp存放JSP文件。详见基线库onlineCV/user下的文件。

12)onlineCV/Client存放客户端的图片文件和JSP文件,其中onlineCV/Client/images存放图片文件,onlineCV/Client/jsp存放JSP文件。详见基线库onlineCV/Client下的文件。

13)onlineCV/WEB-INF/classes存放所有的Java编译后的类文件,详见基线库onlineCV/WEB-INF/classes下的文件。

14)onlineCV/WEB-INF/lib存放所有的库文件,详见基线库onlineCV/lib下的文件。

114

网上招聘系统分析、设计与实现

第五章 网上招聘系统客户端系统测试计划

1. 测试项目

本次测试的项目是网上招聘系统中的客户端功能,即应聘者的登录端。

1.1 测试项目的背景

本次测试的目的是测试网上招聘系统客户端的职位查询、简历提交、在线答题等基本功能以及能否支持大数据量并发访问。所有的应聘者都可以通过网站提交简历并回答问卷。

1.2 测试要点

被测特性:

·对软件进行功能性测试; ·对软件进行非功能性测试。 不被测特性:

·源代码,逻辑等;

·模块的接口,模块的错误处理,模块的局部数据结构,模块在执行时执行流的独立路径,模块在处理边界值时的情形;

·单元(模块)之间的可用性等。

1.3 测试内容

对被测软件进行系统级别的测试,针对软件的功能需求进行功能测试,验证此软件是否实现了需求分析中客户端所定义的功能,是否正确实现了此功能。针对软件的非功能性需求对其进行性能测试,在人为设置的20人负载(大数据量,大访问量)的情况下,检查系统是否发生功能 上或者性能上的问题。

测试内容即测试需求,包括功能测试和性能测试。 1.3.1 功能测试内容 1)职位查询

115

网上招聘系统分析、设计与实现

在职位列表中显示职位名称,职位发布日期,截止日期,职位类型,招聘人数等。点击职位名称,进入职位详细信息页面,职位详细页面显示职位名称,职位描述,职位要求,招聘人数,如果应聘者应聘该职位,就需要填写简历信息。

2)简历信息

简历信息包括个人基本信息,工作经历,教育经历,基本技能,家庭成员信息,个人评价。可以查看填简历信息,完成问卷后提交,并返回职位查询页面。当选入“基本信息”页面,应聘者需填写自己的基本信息,加星号的为必填项目,应聘者须认真填写,要保证格式正确,如填写错误在提交时,页面会给出错误提示。

1.3.2 性能测试内容

系统的性能测试主要测试系统在20个应聘者同时登录客户端进行应聘操作时,检验系统的性能如何,检测系统性能瓶颈,响应时间;为此采用压力测试工具模拟20个应聘者,以便测试系统的性能如何。

2. 测试方法

本节主要讲述测试环境、测试工具和测试方法。

2.1 测试环境

系统的测试环境如图E-1所示,包括运行在同一台机器上的20个虚拟用户和控制器、Web服务器和数据库以及网络。

系统配置如下。 1)软件配置

操作系统:Microsoft Windows 2000 Professional、Microsoft Windows 2000 server、Microsoft Windows XP Professional,操作系统上必须安装IIS4.0以上版本。

数据库系统:Microsoft SQL Server 2000。 浏览器:Microsoft IE4.0或以上版本。 2)硬件需求 CPU:P3以上。

内存:256MB以上。 硬盘:20GB以上。 3)测试软件工具

测试工具:LoadTunner7.51。

116

网上招聘系统分析、设计与实现

2.2 测试工具

客户端的性能测试是20人同时登录系统时系统的性能反应,为此需要采用自动化测试手段,本项目采用Mercury的LoadRunner测试工具,主要采用LoadRunner的三个主要组件:VuGen、Controller、Analysis,其中,利用LoadRunner的VuGen录制基本功能,利用LoadRunner的Controller创建20个虚拟用户的运行场景,执行测试,利用LoadRunner的Analysis分析结果,提供测试图表。

2.3测试方法

测试方法:由于本次测试的依据是需求,所以采用黑盒测试方法。

测试策略:1)功能测试,主要采用等价类划分的策略。2)压力测试,主要采用边界值测试、错误猜测等策略。

测试手段:1)功能测试,手动模拟正常、异常输入。2)压力测试,使用自动化压力测试工具LoadRunner。

测试内容:1)功能测试,按照功能需求测试系统功能。2)性能测试,测试20人同时访问的性能情况。

3. 测试标准

3.1 测试通过/失败标准

测试中发现的缺陷按照严重程度分为5个级别,如表5-2,级别不同,严重程度也不同。

表5-2 缺陷严重级别

严重级别 1)提示(Low) 2)一般(Medium) 3)严重(High) 4)致命(Very High)

严重程度

·微小的错误,不会影响系统的功能 ·不准确或容易误解的行为和语句 ·该问题增加了测试或用户操作的复杂度

·该问题轻微降低了系统的性能,但系统仍然能工作 ·该问题会严重降低系统的性能 ·不符合客户端需求说明

·系统不能正常启动或启动后无法正常工作

本次测试主要是进行系统测试,需要设定测试完成的标准。测试完成的标准是执行完所有系统测试的功能、性能测试用例,无2级以上遗留问题。如果进行系统

117

网上招聘系统分析、设计与实现

测试时,存在严重的质量问题,导致无法继续,并且在可接受的时间范围内无法修复,系统测试终止。

3.2 测试挂起/恢复的条件

测试挂起和恢复的条件是:

·测试挂起和条件是当某个测试用例的失败导致后续的测试无法进行时,测试需要挂起;

·测试恢复的条件是当将引起挂起的测试用例重新测试通过之后,可以恢复测试。

3.3 系统测试交付结果

系统测试交付物包括 ·测试计划

·测试设计(设计的测试用例,包含测试脚本); ·测试跟踪结果; ·测试报告。

4. 测试计划

系统测试计划包括角色和职责的安排,时间进度的安排等。

4.1 角色和职责

测试的角色和职责分配如表5-3所示。

表5-3 角色和职责表 角色 测试经理

小组成员 张晓红

职责

制定测试计划,组织测试工作

系统测试用例评审、测试总结报告评审 提交测试输出文档 系统测试用例编写 系统测试用例执行 填写测试跟踪结果报告 系统测试总结报告编写

118

测试工程师 吴亮

测试系统管理员

网上招聘系统分析、设计与实现 姜中

测试环境的搭建 测试软件的维护 测试数据的建立

4.2 测试设计工作任务分解和工作安排

本交测试的任务安排如表5-4所例

表5-4 测试时间计划

1 2 3 4 5 6 7 8 工作任务 复习已有资料,了解测试需求,学习使用LoadRunner 讨论、并制定测试计划 讨论并制定测试用例 测试用例评审 准备系统测试环境,安装软件 系统功能测试并记录跟踪报告 回归测试 测试报告 时间 0.5工作日 0.5工作日 2工作日 0.5工作日 0.5工作日 10工作日 2工作日 1工作日 开始日期 2009.5.16 2009.5.18 2009.5.20 2009.5.25 2009.5.30 2009.6.11 2009.6.25 2009.6.23 结束日期 2005.5.16 2005.5.18 2005.5.21 2009.5.25 2009.5.30 2009.6.21 2009.6.24 2009.6.26 备注

119

网上招聘系统分析、设计与实现

第六章 网上招聘系统客户端系统测试设计

1.测试设计

由于本次测试主要是针对需求进行的系统测试,包括功能测试和性能测试的技术,功能测试是执行指定的工作流程,性能测试是将功能测试过程中的单独用户改为20个同时执行以验证系统的性能。

1.1测试范围

系统测试依据的系统应用工作流如下:

1)职位查询页面:在职位列表中显示职位名称,职位发布日期,职位类型,招聘人数等,按职位发布日期排序。当点击职位名称时进入职位详细信息页面,职位详细页面显示职位名称,职位描述,职位要求,招聘人数,点击“应聘该职位”按钮进入填写基本信息页面。

2)基本信息页面:当进入基本信息页面,应聘者需填写自己的基本信息,加星号的为必填项目应聘者须认真写,要保证格式正确,如填写格式错误,系统给出错误提示。当点击下一步按钮时进入工作经历页面。

3)工作经历页面:在工作经历页面下方为内容填写区,当应聘者填写好时间,行业,公司等信息后点击“提交”按钮,工作经历会显示在页面上方的表格中。选择表格右侧的选择框然后点击“删除”按钮可删除选定的信息。点击“上一步”按钮返回修改。当点击“下一步”按钮时进入基本技能页面。

4)教育经历页面:应聘者必须填写加星号的项目,包括受教育的起止时间段、学校、学位、专业等,当用户提交填写格式不正确的项目会报错,用户须返回修改。当点击“下一步”按钮时进入基本技能页面

5)基本技能页面:应聘者必须填写加星号的项目,包括技能、熟悉程度、证书等,点击“下一步”按钮进入家庭成员页面。

6)家庭成员页面:应聘者必须填写加星号的项目,包括亲属姓名、年龄、关系、工作单位、职位等信息,填写好信息点击“下一步”按钮进入简短评价页面。

7)个人评价页面:应聘者可以在个人评价页面输入自己的简短评价,字数控制在100字以内,应聘者可以提交简历。当应聘者点击“预览简历”按钮进入简历详细信息页面查看简历信息。

8)如确认填写的信息无误时,可点击“提交简历”按钮提交简历,然后进入答题页面,试题分为价值取向、工作取向两种,应聘者须同时回答这两种试题,题型

120

网上招聘系统分析、设计与实现

为选择题,答好后点击“提交”可上交试题。

9)应聘者确认所做试题无误时,可以上交试题,上交试题后显示确认页面,应聘者可以点击“返回”按钮返回到职位列表继续选其他职位应聘。

1.2测试覆盖设计

由于本次测试是系统测试,测试的依据是系统需求,测试的设计应该满足对需求的覆盖,所以采用的测试方法主要是黑盒测试,包括等价类划分(有效测试和无效测试)、边界值和错误猜测法等。

表6-2就是测试用例覆盖矩阵

表6-2 测试用例覆盖矩阵 序号 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15

功能项 所有基本页面的链接正确 所有页面的转移正确 应聘职位信息列表正确 应聘职位详细信息正确 正常投递简历的流程 填写应聘者基本信息页面 填写应聘者工作经历信息页面 填写应聘者教育经历信息页面 填写应聘者技能信息页面 填写应聘者家庭成员信息页面 填写应聘者个人评价信息页面 预览应聘者简历 应聘者回答问卷 访问安全性 并发访问的性能测试 测试用例 TestCase-FUNC-01 TestCase-FUNC-02 TestCase-FUNC-03 TestCase-FUNC-04 TestCase-FUNC-05 TestCase-FUNC-06 TestCase-FUNC-07 TestCase-FUNC-08 TestCase-FUNC-09 TestCase-FUNC-10 TestCase-FUNC-11 TestCase-FUNC-12 TestCase-FUNC-13 TestCase-Perf-1 TestCase-Perf-2 优先级 中 中 高 高 高 高 高 高 高 高 中 中 中 高 高 2.测试用例

按照上面的测试矩阵表,设计相应的测试用例如下。

121

网上招聘系统分析、设计与实现

2.1用例1:基本页面的链接

这个测试用例的测试编号是TestCase-FUNC-01,测试内容是验证所有基本页面链接的正确性,同时所有的页面都按照需求有正确的显示。表6-3是这个测试用例的具体设计。

表6-3 TestCase-FUNC-01测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase-FUNC-01 测试人员:秦泊 测试时间:2009/6/27 测试项目标题:所有基本页面的正确链接 测试内容:

验证网站首页所有链接有效 验证网站首页图片能正确装入

验证网站首页中的超链接的链接页面与页面中指示(或图示)相符 验证网站中各个页面的显示的信息都符合需求 测试环境与系统配置: 详见《测试计划》 测试输入数据 脚本见TC-F-01.c(见测试开发文档) 测试次数:每个测试过程做2次 预期结果:

可以正确显示图片,每个链接有效,超链接的链接页面与页面中指示(或图示)相符

测试过程:

登录http://59.64.164.26/client/joblist.jsp

·对于首页每个招聘职位链接,点击进入,查看链接的页面是否相符合 ·对于首页每个链接,点击之后看能否进入相应页 ·点击“English”切换语言 ·点击“Chinese”切换语言 测试结果:

测试结论: 实现限制: 备注:

122

网上招聘系统分析、设计与实现

2.2用例2:页面转移的正确性

这个测试用例的测试编号是TestCase-FUNC-02,测试内容是测试所有转移页面链接的正确性,同时所有的页面都按照需求有正确的显示。表6-4是这个测试用例的具体设计。

表6-4 TestCase-FUNC-02测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase-FUNC-02 测试人员: 秦泊 测试时间:2009/6/27 测试项目标题: 转移页面的正确性

测试内容:

验证网站每页输入“转到 ”的输入框能正确处理输入 测试环境与系统配置: 详见《测试计划》 测试输入数据 异常数据:0,1.4,5.

正常数据:1

测试次数:每个测试过程做2次 预期结果:

对于正常数据能够转到相应页面,异常数据能够报错 测试过程:

登录http://59.64.164.26/client/joblist.jsp

对首页“转到 ”的输入框,依次输入如上数据 测试结果:

测试结论: 实现限制: 备注:

2.3用例3:显示职位列表

这个测试用例的测试编号是TestCase-FUNC-03,测试内容是测试所有职位列表页面的正确性,同时所有的页面都按照需求有正确的显示。表6-5是这个测试用例的具体设计。

表6-5 TestCase-FUNC-03测试用例

测试项目名称:网上招聘系统—客户端

123

网上招聘系统分析、设计与实现

测试用例编号:TestCase-FUNC-03 测试人员:赵巍巍 测试时间:2009/6/28 测试项目标题:职位列表的显示 测试内容:

·验证网页上的表格是否正确显示 ·验证在职位列表中是否正确显示职位名称,职位发布日期,截止日期,职位类型,招聘人数几项

·验证职位列表是否按职位发布日期排序 测试环境与系统配置:

软件环境:Microsoft Windows XP Professional 硬件环境:P4 1.7GHz CPU和1.7GHz512MB内存 网络环境:6个共享1MB/S带宽 测试输入数据 无 测试次数:

应在至少2种浏览器中进行测试,并刷新2次 预期结果:

网页正确显示,在职位列表中显示职位名称,职位发布日期,截止日期,职位类型,招聘人数几项,按职位发布日期排序 测试过程:

在IE浏览器地址栏中输入http://59.64.164.26/client/joblist.jsp,并刷新 测试结果: 测试结论: 实现限制:无 备注:

2.4用例4:职位详细信息

这个测试用例的测试编号是TestCase-FUNC-04,测试内容是测试所有职位详细信息页面的正确性,同时所有的页面都按照需求有正确的显示。表6-6是这个测试用例的具体设计。

表6-6 TestCase-FUNC-04测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase-FUNC-04 测试人员:赵乙静 测试时间:2009/6/18 测试项目标题:职位详细查询 测试内容:

验证页面是否正确显示了职位名称、职位描述、职位要求和招聘人数几项 验证职位详细信息页面上的信息是否与职位列表中有关的信息相符

124

网上招聘系统分析、设计与实现

测试环境与系统配置:

软件环境:Microsoft Windows XP Professional+Microsoft IE 5.0 硬件环境:P4 1.7GHz CPU+512MB内存 网络环境:6个共享1MB/S带宽 测试输入数据 无 测试次数:

应至少测试3个不同的职位,并随机进行 预期结果:

职位详细页面显示职位名称,职位描述,职位要求,招聘人数 测试过程:

在显示的职位列中随机地单击某一职位名称 测试结果: 测试结论: 实现限制:无 备注:

2.5用例5:完整的简历提交测试

这个测试用例的测试编号是TestCase-FUNC-05,测试内容是测试应聘者在正常(非正常)输入的条件下是否可以将简历成功提交,同时所有的页面都按照需求有正确的显示。表6-7是这个测试用例的具体设计。

表6-7 TestCase-FUNC-05测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase-FUNC-05 测试人员:秦测试时间:2009/6/27 测试项目标题:正常应聘流程的功能测泊 试

测试内容:

·验证加星号的必填项不填写或格式错误时是否在提交时正确显示错误提示。 ·验证非填项不填写时是否在提交时正确显示提示。 ·验证在“工作经历”、“教育经历”、“基本技能”、“家庭成员”页面,在页面下方填写好信息后点击“增加”按钮,其内容会显示在上方的表格中。 ·验证在“工作经历”、“教育经历”、“基本技能”、“家庭成员”页面中,选中上方表格右侧的选择框后点击“删除”按钮可删除选定的信息。

·验证在“简短评价”页面,用户输入的字数超过100,系统是否会弹出提示框。 测试环境与系统配置:

软件环境:Microsoft Windows XP Professional+Microsoft IE 5.0 硬件环境:P42.8GHz CPU+2.7GHz512MB内存

125

网上招聘系统分析、设计与实现

网络环境:10个共享1MB/S带宽 测试输入数据 脚本TC-F-0.2.c(见测试开发文档) 测试次数:每个测试过程做2次 预期结果:

·应聘者不填写必填项或者必填项格式错误时提交时应有错误提示。

·应聘者不填写非必填项时提交时不应有错误提示,但是格式错误时也应该有错误提示。

·在“工作经历”、“教育经历”、“基本技能”、“家庭成员”页面,在页面下方填写好信息后点击“增加”按钮,其内容会显示在上方的表格中。 ·在“工作经历”、“教育经历”、“基本技能”、“家庭成员”页面,选中上方表格右侧的选择框后点击“删除”按钮可删除选定的信息。

·在“个人评价”页面,用户输入的字数超过100,系统会弹出提示框。 测试过程:

登录http://59.64.164.26/client/joblist.jsp 点击“ASP程序员” 点击“应聘该职位”

填写所有必填项(输入数据见TC-F03.C文件) 点击“下一步” 做问卷试题 提交并返回 测试结果: 测试结论: 实现限制: 备注:

2.6用例6:基本信息页面的无效性测试

这个测试用例的测试编号是TestCase-FUNC-06,测试内容是测试应聘者基本信息页面在非正常输入时系统的异常处理,同时所有的页面都按照需求有正确的显示。表6-8是这个测试用例的具体设计。

表6-8 TestCase-FUNC-06测试用例

测试项目名称:网上招聘系统—客户端 测

测试人员:秦泊

测试时间:2009/6/28

TestCase-FUNC-06

测试项目标题:基本信息页面的功能测试 测试内容:

126

网上招聘系统分析、设计与实现

对于基本测试页面,测试其对异常数据的处理

测试环境与系统配置: 详见《测试计划》 测试输入数据

测试次数:每个测试过程做2次预期结果: 系统报错

必填项留空 姓名输入过长

出生年份为1800(必填项) 出生年份为2009(必填项) 出生月份为24月(必填项) 出生月份为0月(必填项) 出生日期为39日(必填项) 出生日期为0日(必填项) 出生日期为11月31日(必填项) 出生日期为2月30日(必填项) 出生日期为1983年2月29日(必填项) 身高为0厘米(非必填项) 身高为65535厘米(非必填项)

证件号填写320320196405031234(出生日期填写1980/02/05,证件类型为身份证)

证件号填写0(证件类型为护照) 可到任日期填写1820年(必填项) 可到任日期填写16月(必填项) 可到任日期填写0日(必填项) E-mail地址填写myaddr(必填项) E-mail地址填写myaddr@(必填项) E-mail地址填写myaddr@123(必填项) 邮编填写12(非必填项)

填写地址,不填写邮编(要求:地址和邮政编码同时填写)(非必填项)

填写邮编,不填写地址(要求:地址和邮政编码同时填写)(非必填项)

数字输入框中填写字母(必填项) 数字输入框中填写字母(非必填项) 整数输入框中填写小数(必填项) 整数输入框中填写小数(非必填项)

127

测试过程:

网上招聘系统分析、设计与实现

登录http://59.64.164.26/client/joblist.jsp 点击“ASP程序员” 点击“应聘该职位”

输入异常数据(数据如上所示) 提交 测试结果: 测试结论: 实现限制: 备注:

2.7用例7:应聘者工作经历页面的无效性测试

这个测试用例的测试编号是TestCase-FUNC-07,测试内容是测试应聘者工作经历信息页面在非正常输入时系统的异常处理,同时所有的页面都按照需求有正确的显示。表6-9是这个测试用例的具体设计。

表6-9 TestCase-FUNC-07测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase-FUNC-07 测试人员:秦测试时间:2009/6/28 测试项目标题:工作经历页面的功能测泊 试

测试内容:

对于工作经历页面,测试其对异常数据的处理 测试环境与系统配置: 详见《测试计划》 测试输入数据 未填写任何数据,而点击“删除”按钮

必填项留空

时间填写2010年 时间填写15月 时间填写0月 时间填写15月

数字输入框填写非数字 公司名称输入过长 部门名称输入过长 职位输入过长

工作描述输入过长(超过2000) 工作描述输入过长(超过60000)

128

网上招聘系统分析、设计与实现

测试次数:每个测试过程做2次 预期结果:

有错误提示框出现 测试过程:

登录http://59.64.164.26/client/joblist.jsp 点击“ASP程序员” 点击“应聘该职位”

输入数据后点击“下一步”按钮进入待测界机 输入数据(如上) 点击“增加”按钮

选择一项工作经历,点击:“删除”按钮 点击“下一步”按钮 测试结果: 测试结论: 实现限制: 备注:

2.8用例8:应聘者教育经历页面的无效性测试

这个测试用例的测试编号是TestCase-FUNC-08,测试内容是测试应聘者教育经历信息页面在非正常输入时系统的异常处理,同时所有的页面都按照需求有正确的显示。表6-10是这个测试用例的具体设计。

表6-10 TestCase-FUNC-08测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase-FUNC-08 测试人员:秦测试时间:2009/6/28 测试项目标题:教育经历页面的功能测泊 试

测试内容:

对于工作经历页面,测试其对异常数据的处理 测试环境与系统配置: 详见《测试计划》 测试输入数据 未填写任何数据,而点击“删除”按钮

必填项留空

时间填写2010年 时间填写15月 时间填写0月 时间填写15月

129

网上招聘系统分析、设计与实现

数字输入框填写非数字 学校名称输入过长 专业名称输入过长

详细描述输入过长(超过60000)

测试次数:每个测试过程做2次 预期结果:

有错误提示框出现 测试过程:

登录http://59.64.164.26/client/joblist.jsp 点击“ASP程序员” 点击“应聘该职位”

正确填写接下来两个界面,输入数据后点击“下一步”按钮进入待测界机 输入数据(如上) 点击“增加”按钮

选择一项工作经历,点击:“删除”按钮 点击“下一步”按钮 测试结果: 测试结论: 实现限制: 备注:

2.9用例9:应聘者基本技能页面的无效性测试

这个测试用例的测试编号是TestCase-FUNC-09,测试内容是测试技能水平信息页面在非正常输入时系统的异常处理,同时所有的页面都按照需求有正确的显示。表6-11是这个测试用例的具体设计。

表6-11 TestCase-FUNC-09测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase-FUNC-09 测试人员:秦测试时间:2009/6/28 测试项目标题:技能页面的功能测试 泊 测试内容:

对于应聘者技能页面,测试其对异常数据的处理 测试环境与系统配置: 详见《测试计划》 测试输入数据 选填项留空

技能名称填写过长 证书名称填写过长

130

网上招聘系统分析、设计与实现

说明填写过长

测试次数:每个测试过程做2次 预期结果:

有错误提示出现 测试过程:

登录http://59.64.164.26/client/joblist.jsp 点击“ASP程序员” 点击“应聘该职位”

正确填写接下来三个界面输入数据后点击“下一步”按钮进入待测界机 输入数据(如上) 点击“增加”按钮

选择一项工作经历,点击:“删除”按钮 点击“下一步”按钮 测试结果: 测试结论: 实现限制: 备注:

2.10用例10:应聘者家庭成员页面的无效性测试

这个测试用例的测试编号是TestCase-FUNC-010,测试内容是测试应聘者家庭成员页面在非正常输入时系统的异常处理,同时所有的页面都按照需求有正确的显示。表6-12是这个测试用例的具体设计。

表6-12 TestCase-FUNC-10测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase-FUNC-010 测试人员:秦测试时间:2009/6/29 测试项目标题:家庭成员页面的功能测泊 试

测试内容:

对于家庭成员页面,测试其对异常数据的处理 测试环境与系统配置: 详见《测试计划》 测试输入数据 选填项留空

亲属姓名填写过长 年龄填写过长 关系填写过长 工作单位填写过长

131

网上招聘系统分析、设计与实现

职位填写过长

测试次数:每个测试过程做2次 预期结果:

有错误提示出现 测试过程:

登录http://59.64.164.26/client/joblist.jsp 点击“ASP程序员” 点击“应聘该职位”

正确填写接下来的4个界面,输入数据后点击“下一步”按钮进入待测界机 输入数据(如上) 点击“增加”按钮

选择一项工作经历,点击:“删除”按钮 点击“下一步”按钮 测试结果: 测试结论: 实现限制: 备注:

2.11用例11:应聘者自我介绍页面的无效性测试

这个测试用例的测试编号是TestCase-FUNC-11,测试内容是测试应聘者家庭成员页面在非正常输入时系统的异常处理,同时所有的页面都按照需求有正确的显示。表6-13是这个测试用例的具体设计。

表6-13 TestCase-FUNC-11测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase-FUNC-11 测试人员:秦测试时间:2009/6/29 测试项目标题:个人评价界面的功能测泊 试

测试内容:

对于个人评价页面,测试其对异常数据的处理 测试环境与系统配置: 详见《测试计划》 测试输入数据 个人评价输入过长的文字描述(超过200字) 测试次数:每个测试过程做2次 预期结果:

有错误提示框出现 测试过程:

132

网上招聘系统分析、设计与实现

登录http://59.64.164.26/client/joblist.jsp 点击“ASP程序员” 点击“应聘该职位”

正确填写接下来两个界面,输入数据后点击“下一步”按钮进入待测界机 输入数据(如上) 点击“下一步”按钮 测试结果: 测试结论: 实现限制: 备注:

2.12用例12:预览简历的无效性测试

这个测试用例的测试编号是TestCase-FUNC-12,测试内容是测试应聘者预览简历页面在非正常输入时系统的异常处理,同时所有的页面都按照需求有正确的显示。表6-14是这个测试用例的具体设计。

表6-14 TestCase-FUNC-12测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase-FUNC-12 测试人员:张知测试时间:2009/6/13 测试项目标题:预览简历页面 心 测试内容:

验证简历中显示的信息与应聘者填写的基本信息一致 测试环境与系统配置:

软件环境:Microsoft Windows XP Professional + Microsoft IE5.0 硬件环境:Celeron1.7GHzCPU+512MB内存 网络环境:8个共享100MB/s带宽 测试输入数据 见附件一 测试次数:执行测试过程2次 预期结果:

简历中显示的信息与应聘者填写的基本信息一致 测试过程:

·打开IE浏览器,在地址栏中输入http://59.64.164.26/client/joblist.jsp ·在显示的职位列表中单击某一职位名称进入职位详细信息页面

·点击“应聘该职位”按钮,进入基本信息页面,将附件①中的对应数据填入各个项目中

·点击“下一步”按钮,进入工作经历页面,将附件①中的对应数据填入各个项目中,点击下方的“增加”按钮,然后点击上方表格下面的“下一步”按钮

133

网上招聘系统分析、设计与实现

·按照上一步依次走过教育率经历、基本技能、家庭成员页面 ·(经过上述步骤后用户处在个人评价页面)将附件①中对应的数据填入文本框中

·点击“预览简历” 测试结果: 测试结论: 实现限制: 备注:

2.13用例13:应聘者问卷回答页面的无效性测试

这个测试用例的测试编号是TestCase-FUNC-13,测试内容是测试应聘者回答问卷页面在非正常输入时系统的异常处理,同时所有的页面都按照需求有正确的显示。表6-15是这个测试用例的具体设计。

表6-15 TestCase-FUNC-13测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase-FUNC-13 测试人员:秦泊 测试时间:2009/6/17 测试项目标题:预览简历页面 测试内容:

对于问卷回答页面,测试其对异常数据的处理 测试环境与系统配置: 详见《测试计划》 测试输入数据 无输入,点击“提交”按钮 测试次数:每个测试过程做2次 预期结果:

有错误提示,或者无 测试过程:

登录http://59.64.164.26/client/joblist.jsp 点击“ASP程序员” 点击“应聘该职位”

正确填写接下来两个界面,输入数据后点击“下一步”按钮进入待测界机 输入数据(如上) 点击“提交”按钮 测试结果: 测试结论: 实现限制: 备注:

134

网上招聘系统分析、设计与实现

2.14用例14:系统安全性测试

这个测试用例的测试编号是TestCase-Perf-1,测试内容是测试应聘者进行非正常访问时系统的异常处理。表6-16是这个测试用例的具体设计。

表6-16 TestCase - Perf-1测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase- Perf-1 测试人员:秦泊 测试时间:2009/6/30 测试项目标题:非正常页面访问的测试

测试内容:

直接访问后续页面而不通过首页 测试环境与系统配置: 详见《测试计划》

测试直接在地址样输入http://59.64.164.26/client/CVbasicinfo.jsp 输入直接在地址样输入http://59.64.164.26/client/Career.jsp 数据 直接在地址样输入http://59.64.164.26/client/Education.jsp

直接在地址样输入http://59.64.164.26/client/skills.jsp 直接在地址样输入http://59.64.164.26/client/Family.jsp 直接在地址样输入http://59.64.164.26/client/addition.jsp 直接在地址样输入http://59.64.164.26/client/exam.jsp

直接在地址样输入http://59.64.164.26/client/ExamSubmit.jsp

测试次数:每个测试过程做2次 预期结果:

有错误提示框出现,或者重定向到首页 测试过程:

直接在地址样输入http://59.64.164.26/client/CVbasicinfo.jsp 直接在地址样输入http://59.64.164.26/client/Career.jsp 直接在地址样输入http://59.64.164.26/client/Education.jsp 直接在地址样输入http://59.64.164.26/client/skills.jsp 直接在地址样输入http://59.64.164.26/client/Family.jsp 直接在地址样输入http://59.64.164.26/client/addition.jsp 直接在地址样输入http://59.64.164.26/client/exam.jsp

直接在地址样输入http://59.64.164.26/client/ExamSubmit.jsp 测试结果: 测试结论: 实现限制: 备注:

135

网上招聘系统分析、设计与实现

2.15用例15:系统的并发性测试

这个测试用例的测试编号是TestCase-Perf-2,测试内容是测试20个应聘者同时访问时系统时,系统的性能情况。表6-17是这个测试用例的具体设计。

表6-16 TestCase - Perf-2测试用例

测试项目名称:网上招聘系统—客户端 测试用例编号:TestCase- Perf-2 测试人员:秦泊 测试时间:2009/6/30 测试项目标题:并发访问的性能测试 测试内容:

20个应聘者同时访问系统时,系统的性能情况 测试环境与系统配置: 详见《测试计划》 测试输入数据 1)生成单用户正常访问脚本

2)对脚本参数化

3)在脚本中增加事务、集合点,以每次点击“下一步”按钮或“提交”按钮为界限脚本见“TC-P-01.c”(详见测试开发文档)

测试次数:每个测试过程做2次 预期结果:有错误提示,或者无 测试过程:

·使用LoadRunner的visual user generator录制基本的用户脚本

·将用户在录制脚本时填写并提交的一些数据参数化,另外在提交数据的函数前面设置集合点

·设置运行环境,独立运行修改后的脚本,根据产生的错误修改直至脚本正确 ·打开LoadRunner的Controller新建一个运行场景。在运行场景中新建一个虚拟用户组,设置其中的虚拟用户数目为20。所有虚拟用户的运行脚本为刚刚录制并修改的脚本,虚拟用户的Load Generator为本机

·启动IP欺骗,之后将Load Generator的状态由down改变为ready ·设置场景的schedual为同时启动所有用户,其他使用默认设置 ·设置结果保存路径

·设置集合点,选择当20个用户全部到达集合点时释放虚拟用户,时间间隔为1分钟

·设置runtime settings,均采用默认设置 ·运行场景—脚本见“TC-P01.c“

·打开LoadRunner的Analysis分析场景的运行结果 测试结果: 测试结论: 实现限制:

136

备注:

网上招聘系统分析、设计与实现

137

网上招聘系统分析、设计与实现

下面是《网上招聘系统客户端系统测试跟踪日志》。

网上招聘系统客户端系统测试跟踪日志 被测对象 首页 缺陷描述 切换的英文界面不正确,职位名称仍然是中文。并且职位说明也是中文 首页 在职位说明里,第一页和第二页都有“项目经理”2009-6-27 职位,然而职位说明并不一致 首页 第二页的“返回”按钮不能够返回首页 2009-6-27 为职位“项目经理”重新命名 为第二页的“返回”按钮重新定义链接的界面 应聘者基本信息页面(CVbasicinfo.jsp) 应聘者基本信息页面(CVbasicinfo.jsp) 应聘者基本信息页面(CVbasicinfo.jsp) 应聘者基本信息页面(CVbasicinfo.jsp) 应聘者基本信息页面(CVbasicinfo.jsp) 应聘者基本信息页面(CVbasicinfo.jsp) 身高为0厘米(非必填项)系统继续运行,无错误提示 身高为65535厘米(非必填项)系统继续运行,无错误提示 身高为-23厘米(非必填项)系统继续运行,无错误提示 证件号填写0(证件类型为护照)系统继续运行,2005-11-2无错误提示 邮编填写12(非必填项)系统继续运行,无错误提示 填写地址,不填写邮编(要求:地址和邮政编码请同时填写)(非必填项)系统继续运行,无错误提示 应聘者基本信息页面(CVbasicinfo.jsp) 填写邮编,不填写地址(要求:地址和邮政编码请同时填写)(非必填项)系统继续运行,无错误提示 应聘者基本信息页面(CVbasicinfo.jsp) 应聘者基本信息页面(CVbasicinfo.jsp) 应聘者工作经历页面(CXareer.jsp) 应聘者工作经历页面(CXareer.jsp) 数字输入框中填写字母(非必填项)系统继续运行,无错误提示 整数输入框中填写小数(非必填项)系统继续运行,无错误提示 工作描述输入过长(超过60000)系统继续运行,2009-6-28 无错误提示 点击“后退”按钮返回Career.jsp之后点击“上一步”按钮无法返回CVbasicinfo.jsp.点击“删除”按钮出现多个相同数据,并且最右边的“选择”框数目与实际条目不对应 2009-6-28 2009-6-28 2009-6-28 不允许数据字输入框输入字母 不允许整数输入框中填入小数 检测输入的数量,不允许这么多的输入 调试解决 全组人员 全组人员 全组人员 全组人员 2005-11-28 加入要地址和邮政编码同时填写的检测 全组人员 2009-6-28 加入要求地址和邮政编码同时填写的检测 全组人员 8 2009-6-28 检测邮编的无效输入 全组人员 检测证件的无效输入 全组人员 2009-6-28 检测身高的无效输入 全组人员 2009-6-28 检测身高的无效输入 全组人员 2009-6-28 检测身高的无效输入 全组人员 全组人员 全组人员 发现时间 2009-6-27 解决方法 重新设计英文界面 测试人员 胡充 138

应聘者教育经历页面(Education.jsp) 应聘者基本技能页面(skill.jsp) 应聘者基本技能页面(skill.jsp) 应聘者家庭成员页面(Family.jsp) 应聘者家庭成员页面(Family.jsp) 应聘者家庭成员页面(Family.jsp) 应聘者家庭成员页面(Family.jsp) 应聘者家庭成员页面(Family.jsp) 网上招聘系统分析、设计与实现

详细描述输入过长(超过60000)出现错误界面 2009-6-28 不允许这么多的输入 全组人员 选填留空,可以添加数据 2009-6-29 检测这种情况,不允许 全组人员 说明填写过长 2009-6-29 不允许这么多的输入 全组人员 选填项留空,可以添加数据 2009-6-29 检测这种情况,不允许 全组人员 亲属姓名填写过长会出现页面异常 2009-6-29 不允许这么多的输入 全组人员 年龄填写过长会出现页面异常,后退并点击“删除”按钮会出现刚填写的姓名数据 关系填写过长会出现页面异常,后退并点击“删除”按钮会出现刚填写的姓名和年龄数据 工作单位填写过长会出现页面异常,后退并点击“删除”按钮会出现刚填写的姓名和年龄关系数据 2009-6-29 不允许这么多的输入 全组人员 2009-6-29 不允许这么多的输入 全组人员 2009-6-29 不允许这么多的输入 全组人员 应聘者家庭成员页面(Family.jsp) 应聘者自我介绍页面(addition.jsp) 直接访问后续页面页不通过首页 职位填写过长会出现页面异常,后退并点击“删除”按钮会出现刚填写的数据 附加说明输入过长会出现页面异常 2009-6-29 不允许这么多的输入 全组人员 2009-6-29 不允许这么多的输入 全组人员 直接在地址栏输入2009-6-30 检测用户的输入网页,不应该允许这种操作 全组人员 http://59.64.164.26/client/CVbasicinfo.jsp可以进入 直接访问后续页面页不通过首页 直接在地址栏输入2009-6-30 检测用户的输入网页,不应该允许这种操作 全组人员 http://59.64.164.26/client/Career.jsp可以进入,但是保留了上一次填写结果,点击“刷数”按钮后重新为空 直接访问后续页面页不通过首页 直接在地址栏输入2009-6-30 检测用户的输入网页,不应该允许这种操作 全组人员 http://59.64.164.26/client/Education.jsp可以进入,但是保留了上一次填写结果,点击“刷数”按钮后重新为空 直接访问后续页面页不通过首页 直接在地址栏输入2009-6-30 检测用户的输入网页,不应该允许这种操作 全组人员 http://59.64.164.26/client/skill.jsp可以进入,但是保留了上一次填写结果,点击“刷数”按钮后重新为空 139

直接访问后续页面页不通过首页 直 网上招聘系统分析、设计与实现

接在地址栏输入2009-6-30 检测用户的输入网页,不应该允许这种操作 全组人员 http://59.64.164.26/client/Family.jsp可以进入,但是保留了上一次填写结果,点击“刷数”按钮后重新为空 直接访问后续页面页不通过首页 直接在地址栏输入2009-6-30 检测用户的输入网页,不应该允许这种操作 全组人员 http://59.64.164.26/client/addition.jsp可以进入,并且可以预览简历,但是预览中保留了上一次填写结果(基本资料为空,未保留上次填写结果)。点击“刷新”按钮后重新预览,仍然保留 直接访问后续页面页不通过首页 直接在地址栏输入2009-6-30 检测用户的输入网页,不应该允许这种操作 全组人员 http://59.64.164.26/client/exam.jsp出现页面异常 直接访问后续页面页不通过首页 直接在地址栏输入2009-6-30 检测用户的输入网页,不应该允许这种操作 全组人员 http://59.64.164.26/client/ExamSubmit.jsp出现页面异常 140

网上招聘系统分析、设计与实现

第七章 网上招聘系统客户端系统测试报告

1. 测试时间、地点和人员

本次测试的时间、地点和人员总结如下。

·测试时间:2009-6-19~2009-7-1,基本按照计划进行; ·地点:公司开发部;

·人员:测试组的全体成员共计3人。

2. 测试环境描述

本测试的目的是验证网上招聘系统的客户端能否实现应聘者的职位查询、简历提交、问卷答复等基本功能以及并发访问的性能。为此,采用Mercury的LoadRunner7.51测试工具进行压力测试,验证其是否满足系统的需求。

测试机器是安装了LoadRunner7.51测试工具的客户机,可以执行功能也可以采用工具录制功能,并模拟多人并发访问系统,监控系统的性能,得出分析结果,如图7-1所示。

这个测试机器的配置环境如下:

·操作系统:Microsoft Windows XP Professional SPI ·游览器:Mictosoft IE 5.0.2800.1106 ·CPU:P4 2.8G ·内存:512MB ·硬盘:80gb

3. 测试执行情况

测试数据总结如下。

141

网上招聘系统分析、设计与实现

3.1功能测试执行情况

表7-2是测试用例执行情况的综述。

表7-2 测试用例的度量数据 被测对象 首页

用例

TestCase-FUNc-01 TestCase-FUNc-02 TestCase-FUNc-03 TestCase-FUNc-04 TestCase-FUNc-05 TestCase-FUNc-06 TestCase-FUNc-05 TestCase-FUNc-07 TestCase-FUNc-05 TestCase-FUNc-08 TestCase-FUNc-05 TestCase-FUNc-09 TestCase-FUNc-05 TestCase-FUNc-10 TestCase-FUNc-05 TestCase-FUNc-11 TestCase-FUNc-05 TestCase-FUNc-12 TestCase-FUNc-05 TestCase-FUNc-13 TestCase-Perf-1 TestCase-Perf-2

执行总数 8+1

发现缺陷数 3

填写基本信息页面

填写工作经历页面

填写教育经历页面

填写基本技能页面

填写家庭成员页面

填写个人评价页面

预览应聘者简历 回答问卷界面 直接访问后续页面

并发访问系统

29+1 12+1 10+1 4+1 6+1 1+1 0+1 1+2 8+1 0+1

9 1 1 2 6 1 0 0 8 0

3.2 性能测试执行情况

性能测试是通过测试工具模拟20人同时访问系统的客户端。首先录制客户端的基本操作,然后设置参数以保证20个脚本的输入是不完全一致的。通过设置执行情景来实施性能测试,并打开监控窗口监控系统运行状况,最后得到执行结果报

142

告。

网上招聘系统分析、设计与实现

3.2.1 活动用户视图

图7-2是20个模拟用户的运行结果。从图中可以看到有20个虚拟用户在同时访问系统的客户端。

图7-2 20个模拟用户

3.2.2 每分钟点击数

图7-3是20个用户并发访问客户端时,每分钟的点击数。从图中可以看出,由于设定了集合点,点击数大的集中在每次填写完表单提交数据时。

图7-3 每分钟的点击数

3.2.3 吞吐率

图7-4是20个用户访问时吞吐率,从图中可以看出,同样由于在每次提交数据时设定了集合点,吞吐率大都集中在每次填写完表单、提交数据的时候。而前4个页面由于需要下载图片,因此吞吐率也相对较大。

图7-4 访问吞吐率

3.2.4 事务概要

图7-5是20个模拟用户的事务图。

图7-5 事务图

说明:事务分别对应于每次点击进入下一个界面。顺序依次是:init,login,configl,config2,config3,config4,config5,end

3.2.5 事务响应时间

图7-6是模拟20个并发用户设置的事务的响应时间图,从图表中可以看出,在最后一次提交页面时,反应时间最长。

图7-6 性能测试的事务响应时间

综述上图得到如下结论: ·并发用户数:20

143

网上招聘系统分析、设计与实现

·通过交易总数:220 ·总吞吐量:(bytes)5436861 ·平均吞吐量(bytes/second):22844 ·总hits数:920

·每秒平均hits数:3.866 事务时间响应:见表7-3。

表7-3 事务的响应时间表 响应时间差 交易事务 开始 显示职位列表查看职位详细信息 填写提交基本信息 填写提交工作经历 填写教育经历 填写基本技能 填写提交家庭成员 填写提交个人评价 答题并提交结果 关闭网页 结束 最大值 最小值 平均值 变化率 0 43.974 55.687 42.157 30.577 17.736 12.406 50.078 5.837 0 0 0 35.399 49.689 32.094 19.286 11.563 8.436 48.235 4.315 0 0 0 37.544 54.868 35.211 25.640 14.975 11.079 49.327 5.65 0 0 0 1.802 1.677 1.966 2.262 1.267 0.92 0.468 0.568 0 0

4. 测试结果分析

4.1 测试进度和工作量度量

下面总结功能测试的进度和工作量计划与实际比较结果。 4.1.1 进度度量

表7-4是测试进度的计划与实际结果比较。从度量数据看实际进度与计划基本相符。

表7-4 测试进度的度量数据 任务 测试计划与设计 测试执行

计划开始 2009-5-19 2009-6-12 2009-7-3

计划结束 2009-5-26 2009-7-2 2009-7-5

144

实际开始 2009-5-15 2009-6-17 2009-6-30

实际结束 2009-6-1 2009-7-1 2009-7-1

测试总结

网上招聘系统分析、设计与实现

4.1.2 工作量度量

表7-5是实际测试工作量的数据,与计划基本相符。

表7-5 测试工作量度量 执行任务 测试计划与设计 测试执行 测试总结

开始时间 2009-5-15 2009-6-17 2009-6-30

结束时间 2009-6-1 2009-7-1 2009-7-1

工作量(人时) 20×3人时 15×3人时 6×3人时

4.2 缺陷数据度量

表7-6是测试过程缺陷数据的总结情况,从缺陷的严重程度看,严重和致命的缺陷占的比例圈套,说明系统还是存在严重问题,需要重新修改,产品不能提交。从缺陷的类型看,功能缺陷、赋值缺陷和设计缺陷占比较大的比例,说明设计和编码过程中存在很大的问题。

表7-6 测试过程的缺陷数据

严重程度 总 被测对象 数 命 首页 填写基本信息页面 填写工作经历页面 填写教育经历页面 填写基本技能页面 填写家庭成员页面 填写个人评价页面 回答问卷界面 直接访问后续页面 0 8 0 0 0 8 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 6 6 0 0 0 0 6 0 0 0 0 2 2 0 0 0 0 2 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 3 9 0 0 重 1 0 般 0 4 示 2 5 误 2 0 误 1 0 误 0 0 误 0 0 误 0 9 他 0 0 致严一提设计错赋值错算法错接口错功能错其缺陷类型 145

网上招聘系统分析、设计与实现

4.3 综合数据分析

根据测试的结果可以得出如下的分析数据。 用例执行效率

=执行用例总数/执行总时间(小时) =128/45 用例质量

=缺陷总数/用例总数×100 =31/128×100 =24.2%

根据缺陷跟踪结果得出缺陷的严重程度分析和缺陷的类型分布,如图7-8和图7-9所示。

缺陷严重程度分布饼图如图7-7所示。

图7-7 缺陷严重程序的分析

缺陷类型分布饼图如图7-8所示。

图7-8 缺陷类型分布图

5. 测试评估

5.1 测试任务评估

本次测试执行准备充足,完成了既定目标。但由于经验以及对工具使用不熟练,因此对系统性能测试还有待提高和加强。

5.2 测试对象评估

测试对象不符合测试阶段质量要求,存在较多的缺陷,尤其是有缓冲区溢出缺陷,所以,不能进入下一个阶段,这个客户端的系统需要进行修正,而后重新组织系统测试。

146

网上招聘系统分析、设计与实现

第八章 总结与展望

1.本程序的总结和展望

网上招聘系统在后台管理、业务流程规划、个人信息管理及用人单位信息管理方面具有极大的便利性,尤其是在人才信息的流转方面颇具特色。在具体的功能方面,本系统与当前互联网的主流招聘系统不相上下,例如:51job、ChinaHR、智联招聘等网站具有的功能,本系统也一应俱全,除此之外,本系统在易性方面还更胜一筹,几乎每一个操作页面都有明确的操作提示,让使用者无需培训就能完全掌握本系统的使用方法。

多模块管理: 整个系统分三个模块(个人用户、单位用户、管理员)进行管理,职能明确,条理清晰,各施其职;

权限控制: 管理员对个人用户及企业用户的信息有绝对控制权。并控制单位用户的发布权限,这对人才招聘系统的收费管理具有极大的好处。单位用户可以控制自己所发布的职位的状态,如果人员招满,可以限制某职位的发布,从而避免接收大量的简历。

部分增强功能: 本套系统有多个其它系统不具备的功能,如多套简历管理、视频管理、简历导出、强大的搜索功能、个人简历被单位收藏后的信息查询等。

信息流转顺畅: 整个系统以简历作为流转物,使之方便送达用人单位的账户或邮箱。管理员可以对个人和单位进行信息审核,这为招聘系统的收费提供了可能。

2.感想

本科期间做过很多课程设计,大多规模很小。在数据库、各种应用软件和游戏中,我仍觉得对游戏的设计有极大的热情。因为其各个模块间的联系十分紧密,代码重复执行率高,当经过无数次的调试、修改后,能最终看到成品,有无比自豪的心情。大学期间做过图书馆管理程序等简单的数据库管理系统的课程设计,思想大致相似,变化范围有限,没有太多自己可发挥的余地。大家作品的最终结果都离不

147

网上招聘系统分析、设计与实现

开同一个模式。相比一些数据库软件,游戏的设计有很多人情色彩和艺术思想的发挥,正式商业的软件的人性化界面和各个游戏间迥异的结构每每会让人有去开发的冲动。

学习J2ME的困难远远超出了想象,在设计初期,为了解决地图的滚动、玩家飞机如何不飞出上下边界两个问题竟然花费了数天的时间。很多相关的技术,如需要使用到的线程、Game包的新功能、高级、低级图形界面的使用、贴图等,每一项都需要花一定的时间去掌握和熟悉。更为困难的是,J2ME为一种刚出现仅几年的新技术,国内的参考资料非常少,仅有的几本也停留在简单的介绍阶段。台湾的王森写了本较好的书,给了我很大的帮助,但对设计该游戏来说,仍只够入门。幸运的是,互联网上有那么多无私的人,由Jason Lam著,Deaboway Chou译的电子书《J2ME&Gaming》给了我很大的帮助,作者、译者的辛勤劳动的成果免费放在网上由大家下载,是开源精神的完美体现。

148

网上招聘系统分析、设计与实现

参考文献

[1]Joshua Bloce著. 潘爱民译. Effective Java中文版.2004年7月第4版. 机械工业出版社.

[2]Bruce Eckel.侯捷译.Java编程思想. 2005年3月第1版. 机械工业出版社 [3]王森著.Java手机/PDA程序设计入门.2005年2月第3版.电子工业出版社. [4]James Keogh著.潘颖 王磊译.J2ME开发大全.2004年2月第1版清华大学出版社.

[5]Ian Sommerville著.程成等译.软件工程.2003年1月第1版.机械工业出版社. [6]Jason Lam著.Deabo way Chou译 J2ME&Gaming 2004年

[7]陈立伟 张克非 黎秀红著.精通JAVA手机游戏与应用程序设计.中国青年出版社.2005年5月

[8]飞思科技产品研发中心.精通Jbuilder9.电子工业出版社.2004年 [9]微型爪哇人.Java手机程序开发.中国铁道出版社,2003年

[10]Frand M.Carrano,Janet J.Prichard .著 韩志宏 译.数据抽象和问题求解——JAVA语言描述.清华大学出版社2005年4月

[11]袁海燕 王文涛著.JAVA实用程序设计100例.人民邮电出版社.2005年5月 [12]Jonathan Knudsen.What's New in the J2ME Wireless Toolkit 2. 2004年4

149

网上招聘系统分析、设计与实现

光盘粘贴标签格式

《软件工程》

《******系统分析、设计与实现》

专业: 班级: 姓名: 学号:

150

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 版权所有