在线考试系统的设计与实现

更新时间:2024-05-30 10:36:01 阅读量: 综合文库 文档下载

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

在线考试系统的设计与实现

摘 要

摘要

随着计算机技术和Internet技术的发展,越来越多的专家和学者开始着手于在线考试系统的研究与评估。一套完善的在线考试系统能够让教育部门在较短的时间内完成传统的考试流程,对考试这一传统教育方式实现根本的信息化和自动化。

本文以在线考试系统为实例,主要研究在MVC设计模式下,结合遗传算法和J2EE技术,对系统进行较为完善的分析与设计。围绕在线考试系统,根据系统的功能需求对系统进行了需求分析,确定了系统中的用例角色和职责,通过建立用例图和业务流程图对系统进行静态建模和动态建模。使得整个系统科学化、规范化、系统化和现代化。

本系统基于J2EE技术实现,融合敏捷开发方法,完成了系统单元测试、功能测试和性能测试。具有良好的可用性,安全性和可靠性。

关键词 遗传算法 MVC设计模式 J2EE技术 在线考试

Abstract

Title The Design and Implementation of Online Examination

System

Abstract

With the development of Computer technology and Internet technology, more and more experts and scholars began to study and evaluate the on-line examination system. A comprehensive online examination system not only can make the education sector in a shorter period but also complete the traditional examination process, so the traditional educational methods are able to achieve these goals of fundamental information and automation.

In this paper, online examination system showed as an example to express how to conduct a more comprehensive system in the MVC design pattern which also used the genetic algorithm and J2EE technology. Around the online examination system, according to the system's functional requirements the system needs analysis to determine the system's use case roles and responsibilities, through the establishment of business use case diagram and flow chart of the system, static modeling and dynamic modeling.

The system is based on J2EE technology and the agile methods. The system unit testing, functional testing and performance testing are completed. It has Splendid availability, security and reliability.

Keywords genetic algorithm MVC design pattern J2EE technology Online Examination System

目 录

目录

1 引言 ............................................................................................................................................................... 1

1.1系统研究的目的和意义 ............................................ 1 1.2系统研究现状 .................................................... 1 1.3论文主要工作 .................................................... 3

2 在线考试系统需求分析 ............................................................................................................................... 4

2.1 总体概述 ....................................................... 4 2.2功能需求分析 .................................................... 4

2.2.1 功能需求 ................................................. 4 2.2.2 系统功能模块 ............................................. 5 2.2.3 业务流程图 ............................................... 5 2.3非功能需求分析 .................................................. 7

3 系统总体设计 ............................................................................................................................................... 9

3.1 系统技术体系结构 ............................................... 9

3.1.1 技术体系结构 ............................................. 9 3.2 系统所采用的设计模式 .......................................... 10

3.2.1 J2EE技术 ................................................ 10 3.2.2 MVC设计模式 ............................................. 11 3.2.3 Spring框架 .............................................. 13 3.2.4 持久层模式 .............................................. 13

4 系统详细设计 ............................................................................................................................................. 16

4.1 设计方案 ...................................................... 16 4.2 算法详细介绍 .................................................. 17

4.2.1 遗传算法的概述 .......................................... 17 4.2.2 遗传多目标优化 .......................................... 18 4.2.3 遗传算法在本系统中的应用 ................................ 19 4.2.4 算法描述 ................................................ 22 4.3 系统持久层采用ibatis .......................................... 22

4.3.1iBATIS概述 ............................................... 22 4.3.2 部分数据库表 ............................................ 23

I

目 录

4.4 部分功能实现 .................................................. 26

4.4.1 查询考生信息 ............................................ 26 4.4.2 修改考生信息 ............................................ 26 4.4.3 删除试题 ................................................ 27 4.4.4 导出试题 ................................................ 28 4.4.5 新增考试 ................................................ 29

5 在线考试系统测试方案 ............................................................................................................................. 31

5.1 软件测试 ...................................................... 31

5.1.1 单元测试 ................................................ 32 5.1.2 功能测试 ................................................ 32 5.1.3 性能测试 ................................................ 32 5.2 测试用例 ...................................................... 33

5.2.1 测试用例 ................................................ 33 5.2.2测试结果 ................................................. 35

结束语 ............................................................................................................................................................. 36 致谢 ................................................................................................................................................................. 37 参考文献 ......................................................................................................................................................... 38

II

1 引言

1 引言

1.1系统研究的目的和意义

在教学过程中,考试是至关重要的一环,它的作用不仅仅是为了测试学生在一门课程中的学习程度和水平,同时为老师提供了教学分析的依据。但是,在传统方式下进行的考试,常常因为步骤的繁琐和手工操作的弊端,使之成为一项庞杂的工作。不仅如此,传统意义上的考试流程还会对考试的公平性和严肃性带来一定的影响。由此,建立完善的考试业务综合管理平台无疑成为必然趋势。

而“在线考试系统”的出现,使得其教育测试的规范化、科学化、信息化水平得到提升,管理各种数据资料和统计报表等业务也变得便捷高效。由原来的笔试答卷改为自动化答卷模式,更快捷、详细地掌握和分析各个流程的工作情况,针对其业务特点而开发的集考试的公开、公正、公平为一体的综合性管理系统。系统使各个流程中涉及到分数和考生信息的数据实时化,从而加大了对考生与成绩的监管力度,同时也为管理层对自动化情况的宏观调控提供了可靠的数据依据。

其中,本次的研究课题涉及到的在线考试系统,有如下要点:

? 真正的通用性。考试系统功能广泛,适用于各级单位之间的日常工作和业务管理,对工作效率有明显提高。

? 所有的功能都基于服务器/浏览器模式,从而降低了后期维护和培训成本的开销。

? 为用户提供开放、安全和可靠的信息共享、业务处理和协同工作的平台,满足业务多样化的需要。

网络考试系统的出现,使考试不再是各种各样复杂工作的总和,而成为一种便捷高效的教学手段。由于整个考试过程实现了自动化,从而免去了临考工作与判卷工作的低效和缺陷,并且最大程度上提高了考试的公平与安全。不仅如此,本系统在很多领域都能得到广泛的应用,比如公司的内部面试、培训及考核、学校的考生以及各大、中、小学的课程考试、练习等。

1.2系统研究现状

在技术方面,目前绝大多数的考试系统的系统结构都是应用了C/S结构或者B/S结构,其中:

1.C/S结构,即Client/Server(客户机/服务器结构)。他通过将任务合理分配

1

1 引言

到客户端和服务器端的方式降低了系统的通讯开销。但是目前网络信息技术的发展和需求日益多样化使得C/S结构在时代的发展面前略显不足。在这种结构下的在线考试系统,要求在服务器端和客户端均安装考试应用软件,实现前台与后台的不同功能。由此可以看出C/S结构的限制与缺点:客户端很庞大、维护困难;客户端应用系统依赖于应用平台;服务器端所做的任何变动都会对每个客户端产生影响。

2.B/S结构,即Browser/Server(浏览器/服务器)结构。他是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分业务逻辑在前端实现,但是主要业务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,并且结合了浏览器的多种Script语言和ActiveX技术,使得仅需要通用浏览器就能够实现原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。基于B/S的以上优点,本系统采用了B/S结构。

而在线考试系统的客户端解决方案通常有CGI,ASP,JSP等方式:

1. CGI(Common Gateway Interface)公共网关接口方式,是一种传统的客户端解决方案。虽然功能强大,但是性能一般,对系统资源有较大的消耗。

2. ASP(Active Server Pages)方式,它包含三个要素:

? Active:ASP使用了Microsoft的ActiveX技术,ActiveX技术是现在Microsoft软件的重要基础。它采用封装对象,程序调用对象的技术,简化编程,加强程序间合作。ASP本身封装了一些基本组件和常用组件,有很多公司也开发了很多使用组件,只要在服务器上安装这些组件,通过访问组件,就可以快速简易的建立WEB应用。

? Server:ASP运行在服务器端。这样就不必担心浏览器是否支持ASP所使用的编程语言。ASP的编程语言可以是VBSCRIPT和JAVASCIPT。

? Pages:ASP返回标准的HTML页面,可以正常的在常用的浏览器中显示。浏览者查看页面源文件时,看到的是ASP生成的HTML代码,而不是ASP程序代码,从而提高了代码的安全性。

3.JSP(Java Server Pages)技术:JSP是在传统的HTML代码中,利用HTML标签的扩展,插入JSP的脚本代码,构成JSP页面。其中对于脚本代码,也仍然是采用在服务器端处理的方式。不同的是,他对脚本的处理采用了全新的,先对代码进行转换、编译、而后再执行的方式。

服务器在遇到客户端发来的一个JSP页面请求时,首先由JSP引擎把一种由HTML

2

1 引言

代码和JSP脚本代码的混合代码转换成Servlet代码,然后由JSP引擎调用服务器端的Java编译器对Servlet代码进行编译,把它变成字节码文件,再由JVM执行此字节码文件,并把结果返回给请求的客户端。此后,服务器将自动把这个字节码文件保存在服务器端的相关目录里面,假如后面还有对此JSP页面请求的话,服务器将直接执行之前生成的字节码文件而无需重新进行代码转换和编译,这个文件将一直由服务器端保留,除非服务器重启或者管理人员对代码进行了修改。基于JSP的方便易用性,本系统选择了JSP方式。

1.3论文主要工作

本论文的主要目标是采用B/S模式,基于J2EE架构,实现在线考试系统的基本功能。

论文的组织结构如下:

第一章:介绍系统研究的目的和意义,以及系统研究背景;

第二章:在在线考试系统进行从功能方面以及非功能方面进行需求分析; 第三章:阐述系统总体设计的过程,概述相应技术以及技术体系结构; 第四章:简要介绍了遗传算法的背景,重点介绍了遗传算法在组卷中的应用,以及组卷遗传算法的详细设计过程;

第五章:系统的测试过程以及相应的测试用例。

本论文的主要工作包括:实现考生管理、试题管理、考试管理、成绩管理、数据迁移、统计分析、参数设置等功能模块。

3

2 在线考试系统需求分析

2 在线考试系统需求分析

2.1 总体概述

本文设计的在线考试系统,意在实现对于在线考试框架的重构搭建;并实现如下功能模块:在线考试、考生管理、试题管理、考试管理、成绩管理、统计分析、参数设置、数据迁移、用户管理以及系统管理。

并且有如下功能特点:

? 使用便捷,本系统力求能达到各年龄段的人使用,简单、易懂。

? 应用广泛,本系统能应用到很多领域,例如,公司的内部面试、培训及考核;

学校的考生以及各大、中、小学的课程考试、练习等。

2.2功能需求分析 2.2.1 功能需求

在线考试系统,可以实现对整个考试流程的管理和相应数据的处理与存储。从考生的档案信息,到试卷的管理以及最终成绩的生成,均实现自动化和信息化的处理方式。

应以上需要,系统最终实现的功能如下所示:

1. 考生管理:对考生信息、在线注册、注册审核进行管理,考生可以通过广域网进行在线注册,经过管理员审核分配考场方可进行考试,考生信息模块是针对管理员来进行维护的,具有增加、修改、查询和删除功能。

2. 试题管理:对试题进行管理,可以对试题进行增加、修改、查询、删除、导入和导出操作。

3. 考试管理:对考试答题的时间、合格分数、考试名称、简介、考场、有效时间(例如在2009-11-11 到2009-11-21这个时间段举行统一考试)、考场分配进行管理。

4. 成绩管理:对系统里的成绩、考卷、补考和成绩单进行管理。 5. 统计分析:对成绩的汇总、统计、分布率进行管理。 6. 参数设置:对部门、科目、联系方式、拓展信息进行管理。

7. 数据迁移:对考生信息、座位信息、试题信息、成绩信息进行管理,可以进

4

2 在线考试系统需求分析

行数据信息的还原和备份。

8. 用户管理:对每一个可以登录到系统的用户进行管理,可以对所有用户进行查询、增加、修改、删除、注销和启用操作。

9. 系统管理:系统管理员对系统进行管理。

2.2.2 系统功能模块

系统功能模块图如下图2.1所示:

图2.1 系统功能模块图

2.2.3 业务流程图

系统业务流程图如下图2.2所示:

5

2 在线考试系统需求分析

考生管理员前台后台服务器注册提交处理保存考生信息显示待审批考生审核考生未通过审核重新修改个人信息通过审核提交处理赋予考生权限

图2.2 系统业务流程图

6

2 在线考试系统需求分析

考生管理员前台后台服务器考试设置提交处理保存考试设置赋予考生权限提交处理登录系统判断考生权限生成试卷并缓存没有考试权限具有考试权限考生答卷展示试卷提交试卷提交试卷计算成绩并保存

图2.3 系统业务流程图

2.3非功能需求分析

用户总是强调确定他们的功能、行为或需求——软件让他们做的事情。除此之外,用户对产品如何良好地运转抱有许多期望。这些特性包括:产品的易用程度,执行速

7

2 在线考试系统需求分析

度,可靠性等。这些被称为软件质量属性(或质量因素)的特性是系统非功能(也叫非行为)部分的需求。

然而,质量属性是很难定义的,并且他们经常造成开发者设计的产品和客户满意的产品之间的差异。就像 Robert Charette(1990)指出的那样:“真正的现实系统中,在决定系统的成功或失败的因素中,满足非功能需求往往比满足功能需求更为重要”。优秀的软件产品反映了这些竞争性质量特性的优化平衡。

软件质量属性包括:

对用户最重要的属性:有效性(availability)、高效性(efficiency)、灵活性(flexibility)、完整性(integrity)、互操作性(interoperability)、可靠性(reliability)、健壮性(robustness)、可用性(usability)。

对开发者最重要的属性:可维护性(maintainability)、可移植性(portability)、可重用性(reusability)、可测试性(testability)。

在线考试系统根据用户对系统的期望来确定质量属性,旨在增强系统可重用性,使系统变得灵活、更易于与其它软件组件相连接、更易于维护、更易于移植并且更易于测试。

对于本系统而言,有如下要点: ? 系统平台的选择 ? www服务器平台的选择 ? 数据库服务器的选择 ? 开发工具的选择

本系统所采用的开发及运行环境为: ? Web服务器:Apache Tomcat。 ? 数据库服务器:MySQL。

? WEB应用开发工具:Intellij IDEA

[1]

8

3 系统总体设计

3 系统总体设计

3.1 系统技术体系结构 3.1.1 技术体系结构

大部分项目将技术体系结构分割成一定数目的逻辑层或等级。每一层都为其他层提供了一套完整的技术服务。将技术体系结构分解成逻辑层的方法在软件行业中得到了普遍接受和实践。单层、两层、三层、N层结构,乃至更多。体系结构之间的具体分层细节不大相同,有许多从逻辑层到物理机器的不同映射方法。

通常技术体系结构划分为四个层。即用户界面层(User and Interface, UI)、问题领域层(Problem Domain, PD)、数据管理层(Data Management, DM)和系统交互层(System Interaction, SI)。

用户界面层(UI):是最不稳定的一层。UI层可以划分为两个子层,即导航、外观和感觉这一层定义了用户的方法,包括:能看到从PD层得到的数据,能输入由PD层使用的数据,能调用问题领域的特征,从用户界面的一部分转移到另一部分;另一层表示逻辑,将用户界面中的每个元素连接到相应的问题领域对象,管理用户会话,以及产生用户界面中不同图形元素所用的数据,与用户界面经常联系在一起的体系结构模式是模型-视图-控制器(Model-View-Controller,MVC)模式,使得问题领域独立于用户界面。

问题领域层(PD):任何系统当中最重要的层都是PD层或业务逻辑层。PD层在四个层中是最稳固的,业务运作的方法是不会经常发生根本性改变的。如果这个层设计得很差,整个系统将会很不灵活,一些地方太复杂,而另一些地方又太简单,很难对系统进行改变和增强。

数据管理层(DM):DM层相对于用户界面层和系统交户层来说稳固得多,要将那些持久层存储细节从问题领域代码分离出来,这样做允许存储方法发生变化而不影响PD层。

系统交互层(SI):当外部系统需要得到系统的服务,或者通知系统数据值发生变化时,系统交互层负责对其他系统传送来的数据进行解码,并且调用适当的问题领域操作。如有必要,系统交互还需要对结果进行格式化并将它们传回给需要的系统。

[4]

9

3 系统总体设计

3.2 系统所采用的设计模式 3.2.1 J2EE技术

J2EE是一套面向企业应用的体系结构,可以将J2EE理解为J2SE的扩展和延伸,J2EE的基础就是J2SE。它不仅拥有J2SE中的许多优点,同时还提供了对EJB、Java Servelet API、JSP以及XML等技术的支持。

[18]

J2EE通过提供中间层集成框架来满

足多种需求,其中包括高可用性、高可靠性、高可扩展性以及低成本等需求同时通过提供统一的开发平台,降低了开发多层系统的复杂性,并且对现有应用程序提供了强有力的支持。其具体表现在:对Enterprise JavaBean的完全支持、对打包和部署应用的良好支持、对添加目录的支持以及对安全机制的支持等。

J2EE使用多层分布式应用的模型,它的应用逻辑按功能划分为组件,各个应用组件可以部署在同一台机器上。J2EE组件是具有独立功能的软件单元,J2EE应用程序就是由这些组件构成的。不同的组件通过相关的类和文件组成的J2EE应用程序,并与其他组件进行交互。这些相关组件有:客户层组件、WEB层组件、业务层组件和企业信息系统层组件。

[19]

[3]

J2EE应用以其稳定的性能、良好的开放性及其严格的安全性,深受企业开发者的青睐。实际上,对于信息化要求较高的行业,都会使用J2EE作为企业的信息平台。选择J2EE构建信息化平台,更体现了一种长远的规划:企业的信息化是不断整合的过程,在未来的日子里,经常会有不同平台,不同系列的异构系统需要整合。保证。

[21]

[20]

J2EE

应用提供的跨平台性、开放性及各种远程访问的技术,为异构系统的良好整合提供了

图3.1即J2EE架构图:

10

3 系统总体设计

图3.1 J2EE架构图

3.2.2 MVC设计模式

MVC,即Model、View、Controller。他是当今最为流行的设计模式之一,其基本思想是把应用程序分成三个层次或者模块:视图层、模型层、控制器层。三个部分以最少的耦合、协同工作。从而提高应用的可扩充性和可维护性。

[13]

起初。MVC是针

对数据的不同需要、不同显示的应用而设计的。在经典的MVC模式中,事件由控制器根据时间的类型改变模型或视图,反之亦然。具体地说,模型维护一个视图列表,这些视图为获得模型变化通知,通常采用观察者模式登记模型。当模型发生改变时,模型向所有登记过的视图发送通知,视图中从对应的模型中获得信息,然后更新自己。其中,MVC架构可用图3.2直观的表示出来:

11

3 系统总体设计

图3.2 MVC架构图

MVC的三层模型的处理过程十分清晰,具体过程如下: 1. 控制器接受用户请求,然后决定调用哪个模型来进行处理。 2. 模型进行相应的逻辑处理,然后返回处理后的数据。 3. 控制器调用视图将模型返回的数据呈现给用户。 另外,MVC还有如下优点:

1. 多个视图共享一个模型。即同一个模型可以被不同的视图重用,大大提高了

代码的可重用性。

2. 由于MVC的各个模块相对独立,改变其中一个不会影响其他模块,所以开发

人员可以构建松散耦合的构件。

3. 控制器提高了应用程序的灵活性和可配置性。控制器可以连接不同的模型和

视图,去完成用户的需求,这样可以为构造应用程序提供强有力的手段。

12

3 系统总体设计

3.2.3 Spring框架

Spring是java平台上的一个开源应用框架。它的第一个版本是由Rod Johnson写出来的。Rod在他的Expert One-On-One Java EE Design and Development一书中首次发布了这个框架。Spring是一个分层的架构,由七个模块组成。Spring模块构建在核心容器智商,核心容器定义了创建、配置和管理Bean的方式。

Spring框架本身并没有强制实行任何特别的编程模式。在Java社区里,Spring作为EJB模型之外的另外一个选择甚至是替代品而广为流行。从设计上看,Spring给予了Java程序员许多的自由度,但同时对业界常见的问题也提供了良好的文档和易于使用的方法。

Spring框架的功能可以用在任何J2EE服务器中,这体现了它的方便易用性。对于Spring来说,它的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。

并且由于Spring框架的核心功能在任何Java应用中都是适用的。在基于Java企业平台上的web应用中,大量的拓展和改进得以形成。为此,Spring获得了广泛的欢迎,并被许多公司认可为具有战略意义的重要框架。

Spring框架图如下图3.3所示:

[2]

图3.3 Spring框架图

3.2.4 持久层模式

随着软件的发展,要满足新应用程序不断增长的需要,同时保持可控制成本,比较

13

3 系统总体设计

可靠便捷的方法就是用框架集建立应用程序,并提供一组可以复用的软件服务集.而持久性框架就是实现软件复用的重要途径之一,它同时支持设计复用和代码复用,并且将应用程序与其使用和操纵的数据源分离,从而使程序开发变得方便快捷,节省了大量不必要损失的时间,大大提高了软件开发的工作效率.

在图3.4中可见,数据持久性框架完全抽象了访问数据方法的细节,严格分开表示了业务层与数据层,同时使用两个设计模式:

? Data Access Object设计模式 ? Value Object设计模式

图3.4 数据持久性框架

Data Access Object设计模式完全包装数据读取与操纵,并封装与数据库交互的数据访问API,如JDBC、JDO、SQLJ等等。Data Access Object模式用数值对象包装从数据库读取和发送到数据库的数据,与业务层通信。

图3.5中显示的Value Object设计模式封装从数据库读取和发送到数据库的数据。Value Object设计模式向业务应用程序开发人员隐藏物理表格结构,抽象数据库中的数据关系,用Java Collection机制从数据库中取得父子关系、一对多关系和多对多关系。数值对象也可以向上传递到表示层,向最终用户显示信息。

持久性框架中提供下列服务,让开发人员在持久性框架之上建立应用程序: ? 分开数据持久逻辑与表示和业务逻辑的整洁机制。 ? 不让框架上建立的应用程序了解数据所在的数据库平台。

? 抽象数据库中存储数据的物理细节和数据库中数据实体之间存在的关系。 ? 简化开发过程,隐藏打开数据库连接、发出数据读取与操纵命令和事务管理

14

3 系统总体设计

的细节。

[6]

15

4 系统详细设计

4 系统详细设计

4.1 设计方案

代码结构如图4-1。

图4.1 代码结构图

其中src包中存放所有Java程序的源码,resources包中存放表示层相关的velocity页面、图片和组件的config.xml配置文件。src包、resources包结构如图4.2、图4.3。

16

4 系统详细设计

图4.2 resources包结构 图4.3 src包结构

4.2 算法详细介绍 4.2.1 遗传算法的概述

自1960年以来,人们对于模拟生物以及由此开发的针对复杂优化问题的有效算法产生了浓厚的兴趣。当前在该领域中常常引用的术语就是进化计算。它包含以下一些主要算法:遗传算法、进化策略、进化规划和遗传程序设计。当然还存在若干将上述算法的各种特点加以结合而形成的混合算法。

同时,遗传算法(Genetic Algorithm, GA)作为近几年发展起来的一种崭新的全局优化算法,借用了生物遗传学的观点,通过自然选择、遗传、变异等作用机制,实现各个个体的适应性的提高。这一点体现了自然界中\物竞天择、适者生存\进化过程。1962年Holland教授首次提出了GA算法的思想,从而吸引了大批的研究者,迅速推

17

4 系统详细设计

广到优化、搜索、机器学习等方面,并奠定了坚实的理论基础。 用遗传算法解决问题时,首先要对待解决问题的模型结构和参数进行编码,一般用字符串表示,这个过程就将问题符号化、离散化了。同时,也有在连续空间定义的遗传算法(Genetic Algorithm in Continuous Space, GACS)。

作为强有力而且应用广泛的随机搜索和优化方法,遗传算法可能是当今影响最为广泛的进化计算方法之一。一般认为,遗传算法有五个基本组成部分:

? 问题的解的遗传表示 ? 创建解的初始种群的方法

? 根据个体适应值对其进行优劣判定的评价函数

? 用来改变复制过程中产生的子个体遗传组成的遗传算子 ? 遗传算法的参数值

遗传算法维持有一群个体组成的种群P(t)(t代表遗传代数)。每一个解均代表问题的一个潜在的解答。每一个个体都被评价优劣并得到其适应值。某些个体要经历称作遗传操作的随机变换,由此产生新的个体。主要有两种变化方法:变异(mutation)的方法是将一个个体改变从而获得新的个体;杂交(crossover)的方法是将两个个体的有关部分组合起来形成新的个体。新产生的个体(称作后代(offspring)C(t))继续被评价优劣。从父代种群和子代种群中选择比较优秀的个体就形成了新的种群。在若干代以后,算法收敛到一个最优个体,该个体很有可能代表着问题的最优或次优解。

4.2.2 遗传多目标优化

近来,遗传算法作为多目标优化问题的新求解方法收到了相当程度的关注,这就诞生了进化或多目标遗传优化。这个主题已经由Fonseca和Fleming、Horn、Tamaki、Kita和Kobayashi进行了综述。

遗传算法的内在特征说明了为何遗传搜索适合用于多目标优化问题。遗传算法的基本特征是通过在代与代之间维持由潜在解组成的种群来实现多向性和全局搜索。这种从种群到种群的方法在搜索Pareto解时是有用的。

遗传算法不需要许多数学上的必备条件,可以处理所有类型的目标函数和约束。由于算法的进化本质,遗传算法可以在不考虑问题特定内部工作方式的前提下用于搜索解。因此能够用遗传算法求解的复杂问题的数量可能比能够用传统算法求解的复杂问题的数量大得多。

由于遗传算法作为一种超启发式的算法,可以灵活地将传统方法结合进其主框架,因此可以利用遗传算法和传统方法两方面的优势来建立对问题更有效地求解方

18

[6]

4 系统详细设计

法。

4.2.3 遗传算法在本系统中的应用

在本系统中,运用遗传算法作为组卷的策略。采用非优超排序法对染色体进行评价,在选择算子的设计上,既能够复制一部分较好的个体,又体现了选择的概率性。变异概率和交叉概率能随个体的不同适应度自适应改变,同时变异概率随种群多样性自适应变化。采用数据仓库的最优解保存策略,使得搜索结果呈现出丰富的Pareto解集。

根据本系统的组卷要求,可知试卷构成基于如下元素:总分、难度、区分度、章节百分比、题型百分比、能力层次百分比等参数。由此可推知组卷策略的遗传算法是多目标优化模型范畴中的典型问题。而遗传算法的群体优化策略恰好为多目标优化提供了最为合适的解决方案。

1.数学约束的确定

选择试题组成试卷主要由试题库中的试题类型、题型分数、教学要求层次、章节、试题难度、试题区分度、答题时间四个属性决定,即取决于一个四维向量(a1,…,a4)。通过选题而组成一份试卷。试题数为n,则由此形成了一个4n维的试卷属性矩阵PAM,其定义如下:

其中,aij表示试卷中第j题中第i个属性值,且个约束条件:

约束1:约束2:约束3:约束4:时间。

2.染色体编码方式的选择

在染色体的编码设计上,有多种方式可供选择:

若采用定长符号编码方式,则可认为每一条染色体即一份试卷,代表种群中的一个个体。染色体中的每个基因代表试卷的一道试题,以该实体存储于数据库

19

,。

如果生成的试卷合乎要求,则在该试卷的试卷属性矩阵中,应该满足以下几

,P为试卷要求的总分,a2i为第i题的分数。

, Nt为t题型要求的试题分数,当试题分数

,dml为第ml难度级要求的分数比例,当

,TIME为试卷要求的答题时间,a4i为第i题的估计

a1i为t时,typet为1,否则为0。

难度a5i属于难度级ml时,difml为1,否则为0。

4 系统详细设计

中的ID来表示。根据用户输入的总分值和各题型占总分值的百分比来确定各个题型所占的分值,再根据题库里该题型试题的分值种类来确定染色体中该题型试题的百分比来确定各个题型所占的分值,再根据题库里该题型试题的分值种类来确定染色体中该题型试题的数目。

另外还有SGA方法,它采用HOLLAND的标准二进制编码方式,定义如下:CH∈Bp,B∈{0,1},p表示二进制位串的长度,在这里表示试题库中试题的数目。染色体上的每一个基因代表对应的试题是否被挑选:1为该试题被挑选,0为该试题没有被挑选,每一个染色体代表一组选题结果。这种方法表达清晰,易于实现交叉与变异,但是在试题库很大时,占据存储空间大而且计算量也大,性能会随之下降;除此之外,分段的浮点数编码也是非常常用的编码方式之一。

在比较了多种编码方法,并结合本系统的规模详细分析之后,最终本系统选择了分段的浮点数编码,染色体形如(a1,a2,…,an),其中ai表示试题库中试题的题号,n为试卷要求的试题数。基因按照题型有序排序,并且将同类型的试题放在同一个区间内。染色体编码示意图如下图4.4所示:

图4.4染色体编码示意图

在串种群中,串长度都是相同的,即题库中的试题数,保证基因位为1的数目为n,即试卷要求的试题数。在本系统所使用的组卷算法中,依据组卷要求,从每一类题型中随机产生相应数目的题号,按题型有序地存入个体的染色体中。保证同种题型的各题号严格相异的要求以解决题目重复的问题。每个题号都在相应题型的题号定义域中产生。 3.适应度函数的确定

适应度函数也称为评价函数,可用于评价个体的好坏,适应度函数的设计合理性对遗传算法的性能有很大影响,因此适应度函数必须是计算量比较小,通用性比较强,而且必须是单值、连续的合理函数。有很多,假设

为目标函数,

20

[12]

常用的适应度函数映射方法

表示对于个体的适应度函数,例如:

4 系统详细设计

(1)

(2)对于求最小值问题:

对于求最大值问题:

经过对本系统的函数约束的分析,最终得到目标函数为:

其中wi是根据约束的类别的不同而选择不同权值,强约束的权值最大取1,此约束的权值取0.5,弱约束的权值最小取0.1。根据f的定义可知,因而定义适应度函数为:

,其值越大,表示该组卷的方案越满足命题的要求。

4.遗传操作

? 选择:采用适应值比例选择中的轮盘赌的方法进行选择。将种群中的个体按照适应度的值由大到小进行排序,根据个体的适应度来分配其选择概率(适应度越大,被选择的概率越大)。若选择的过程中产生的随机数落在适应值所在的概率区域中,则对应的个体被将被用来执行进化操作。

? 交叉:SGA从群体中随机选择2个染色体,按照固定的交叉率从某一位基因位开始逐位进行互换。若交叉后的染色体中,存在相同题目的情况,可通过在相应题号定义域中随机产生相异的题号替换原有题号。

? 变异:为了完成真正意义上的变异操作,采用两种变异机制。第一种,当染色体中基因值为1的数目不等于期望试卷试题数n时,要求其经过变异后使得被选择试题数与试卷试题数n相同,即通过产生从1到染色体长度L之间的随机数,并将染色体相应位置的基因值变为1或0,直到染色体中基因值为1的数目等于试卷试题数n;第二种,产生1到染色体长度之间的两个不同基因值的变异点,将其基因值进行互换,从而在满足被挑选的试题数等于n的基础上实现了真正意义上的变异。

5.最优保存策略

进行选择、交叉和变异操作后,比较新一代的最好个体与上一代的最好个体的适应度值,如果下降,则以上一代最好个体替换新一代的最差个体。此条件是

21

4 系统详细设计

遗传算法收敛的一个重要保证条件。 6.迭代终止条件

满足如下条件将会导致终止进化: ? FITNESS-fitness精度;

? 进化到指定的最大迭代次数。

,其中FITNESS为期望的适应度值,为期望的误差

4.2.4 算法描述

Step1:判断题库中各题型中小于限定抽取次数的试题数都大于试卷相应题型的要求试题数的条件是否满足,若不满足,转Step11;

Step2:定义适应度函数

Step3:随机产生种群数为N的初始化种群,保证每个个体基因值所代表的相应试题的抽取次数都小于限定抽取次数,i=0;

Step4:根据适应度函数计算群体中每个个体的适应度值; Step5:判断算法迭代终止条件是否满足,若满足则转Step10; Step6:根据各个体的适应度值进行选择操作;

Step7:进行交叉操作,保证交叉后同一题型的试题编号互异;

Step8:按照自适应变异概率Pm进行变异操作,保证编译后同一题型的试题编号互异,且保证变异后个体的基因之所代表的相应试题的抽取次数小于限定抽取次数;

Step9:若已得到由N个新个体构成的新一代种群,则执行最佳保护策略,否则转Step6;

Step10:按照同一题型难度系数由大到小的顺序一次输出所选择的试题,并将所选择试题的抽取次数Q——TIMES加1,i++;

Step11:终止程序。

4.3 系统持久层采用iBATIS 4.3.1 iBATIS概述

本系统的持久层选用了流行的iBATIS。

iBATIS,是优秀的O/R Mapping解决方案之一。他的前身是一个由Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java

22

4 系统详细设计

的持久层框架。

[15]

iBATIS提供的持久层框架包括SQL Maps和Data Access Objects

(DAO),同时还提供一个利用这个框架开发的JPetStore实例。

iBATIS一词来源于“internet”和“abates”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。

iBATIS目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。图4.5是iBATIS的架构图:

图4.5 iBATIS架构图

使用iBATIS提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate实现ORM而言基本一致,而对于具体的数据操作,Hibernate会自动生成SQL语句,而iBATIS则要求开发者编写具体的SQL语句。相对Hibernate等“全自动”ORM机制而言,iBATIS以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,iBATIS的出现显得别具意义。

4.3.2 部分数据库表

系统采用MySQL数据库,基于此数据库的表结构如下: 1.考生基础信息表

表4.1 考生基础信息表 字段名称 描述 类型 23

长度 4 系统详细设计

字段名称 Id Name Sex Birth identity_id unit_first unit_second Unit Photo Checked deleteFlag 描述 类型 长度 20 20 20 20 20 60 60 60 -- 1 1 主键:序号(自增1) Bigint 考生姓名 考生性别 考生出生时间 考生身份ID 第一级单位 第二级单位 自定义单位 考生照片 审核标记 删除标记 Varchar Varchar Varchar Varchar Varchar Varchar Varchar Mediumblob Bigint Bigint

2.试题信息表

表4.2 试题信息表 字段名称 Id question_type question_description question_subject question_level 描述 主键:序号(自增1) 试题类型 试题内容 试题科目 试题难度 类型 Bigint Bigint Varchar Bigint Bigint 长度 20 20 200 20 20

3.考场分配表

表4.3 考场分配表

字段名称 Id exam_id examinee_id stage_id room_id test_date 描述 考生分配号 考试ID 考生身份ID 场次 考场 考试时间 类型 Bigint Bigint varchar Bigint Bigint varchar 长度 20 20 20 20 20 20 24

4 系统详细设计

Flag 删除标记(def: 0) Bigint 1

4.考试信息表

表4.4 考试信息表

字段名称 Id exam_name exam_remark exam_unit exam_subject exam_type begin_time end_time exam_score exam_time print_type exam_again forbid_use 描述 主键:序号(自增1) 考试名称 考试简介 组织单位 考试科目 类型 bigint varchar varchar varchar bigint 长度 20 20 100 20 20 1 20 20 4 4 1 1 1 考试方式(def: 0)(暂不用) bigint 开始时间 结束时间 合格分数 考试时长 打印方式 是否为补考(def: 0) 禁用标记位(def: 0) varchar varchar bigint bigint bigint bigint bigint

5.考生答案验证表

表4.5 考生答案验证表 字段名称 Id exam_id examinee_id question_id answer_isright answer_num test_time 描述 主键:序号(自增1) 考试ID 考生身份ID 试题ID 答题对错标记 答题序号 考试时间 类型 bigint bigint varchar bigint bigint varchar varchar 长度 20 20 20 20 20 20 20

25

4 系统详细设计

4.4 部分功能实现 4.4.1 查询考生信息

登录进入主页后,点击左方菜单“考生管理”?“考生信息”可以看到考生信息主页面。

图4.6 考生信息页面

输入条件,点击“查询”按钮得到的就是某个单位的考生信息。

图4.7 考生信息查询结果

4.4.2 修改考生信息

在考生信息主页面点击列表上方的“新增考生”链接。

图4.8 新增考生

可以进入考生信息增加页面:

26

4 系统详细设计

图4.9 考生信息增加页面

输入考生信息的必要信息。 其中:

? 姓名:可以是中文、英文、数字,但长度不超过20个字符,不许为空值。 ? 性别:默认为男。

? 出生年月:可以使用日期控件。

? 证件类型:身份证:可以是正整数、英文(x),不许为空值; ? 驾驶证:(与身份证相同);

? 学生证:8、9位数字,不许为空值; ? 军官证:6、7位数字,不许为空值。 ? 单位:不许为空值。

? 照片:建议上传尺寸大小为170*200的图片,以jpg为后缀名。 ? 联系方式:允许为空值。 ? 拓展信息:允许为空值。

然后点击“保存”按钮就可以新增一个考生信息了。

4.4.3 删除试题

登录进入主页后,点击左方菜单“试题管理”?“试题维护”可以看到试题主页面。选中要删除的试题,点击列表上方的“删除题目”链接。

27

4 系统详细设计

图4.10 题目管理页面

系统提示是否删除该信息。确定删除点击“确定”按钮,不确定点击“取消”按钮。

图4.11 确认页面

4.4.4 导出试题

登录进入主页后,点击左方菜单“试题管理”?“试题维护”可以看到试题主页面。选中要导出的试题,点击列表上方的“导出试题”按钮。

图4.12 导出试题页面

系统根据条件弹出相应的试题

图4.13 导出试题页面

28

4 系统详细设计

4.4.5 新增考试

在考试设置主页面点击列表上方的“新增考试”链接。

图4.14 新增考试

可以进入考试信息增加页面 输入考试的必要信息。 其中:

? 考试姓名:可以是中文、英文、数字,但长度不超过20个字符,不许为空值。 ? 考试简介:不许为空值。 ? 组织部门:不许为空值。 ? 考试科目:不许为空值。

? 开始日期:时间控件,不许为空值。 ? 结束日期:时间控件,不许为空值。 ? 合格分数:正整数,不许为空值。 ? 考试时长:正整数,不许为空值。

29

4 系统详细设计

? 打印方式:不许为空值。

? 是否补考:针对用户您上次的考试进行补考,允许为空值。 ? 试题难度:不许为空值。 ? 试题个数:默认值为:1。 ? 每题分值:默认值为:1。

? 考试满分:根据客户每题的分值自动计算满分分数。

30

5 在线考试系统测试方案

5 在线考试系统测试方案

5.1 软件测试

所谓软件测试,就是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。软件应当是可预测且稳定的,不会给用户带来意外惊奇。

多年来,许多专家已提出各种不同的关于软件测试(Software Testing)的定义,其中一些关于测试的共同定义包括:

“……以寻找错误为目的的执行程序的过程。”

[11]

——迈尔斯 G.J.软件测试的艺术,Wiley出版社,1979年 “软件测试是一个以寻找错误为目的的分析和操作软件的过程。”

[12]

——软件测试快速入门,2001

该领域的很多专家似乎都在倡导测试的主要目的是找到缺陷,而且尽可能在软件开发生命周期的早期发现这些缺陷。但是,归根结底,软件测试的目的并不仅仅如此,他更重要的目的在于保证软件产品的最终质量。所以,软件测试要做到:

? 要证明软件是“工作的”; ? 要证明软件是“不工作”的; ? 要证明存在软件缺陷; ? 不能以“寻找错误为目标”; ? 不要试图穷尽测试; ? 要测试“软件规格说明书”; ? 要深入分析缺陷和错误;

? 要帮助度量软件质量并为团队中的其他成员提供信息。

根据产品的特点,要在不同阶段进行不同的测试操作。有一些测试是随时随地进行的,不少测试是有计划进行的,例如在每个功能完成之后,在每一个版本编译完成之后,就一定要进行回归测试、冒烟测试和版本验证测试。在产品的测试版本阶段,一般都会执行探索性测试。对于软件的用户界面、安全性、性能和可靠性、稳定性、用户安装等跟用户的软件使用体验直接有关的方面,我们也都必须要进行测试。

[10]

[9]

31

5 在线考试系统测试方案

5.1.1 单元测试

单元测试是针对软件的最小模块进行正确性检验的测试工作。他是验证软件单元的实现是否和该单元的说明完全一致的相关联的测试活动组成的。根据软件单元的说明文档编写测试用例,对重要的接口、局部数据结构、边界条件、独立路径和错误处理路径,通过代码检查或执行测试用例有效地进行测试。

[11]

5.1.2 功能测试

功能测试又称为黑盒测试(Black-box Testing)。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。黑盒测试注重于测试软件的功能性需求,即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。

5.1.3 性能测试

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

[12]

负载测试和压力测试都属于性能测试,两者可以结

合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。

本系统采用LoadRunner进行性能测试:

[13]

32

5 在线考试系统测试方案

图5.1 性能测试截图

图5.2 性能测试截图

5.2 测试用例 5.2.1 测试用例

33

5 在线考试系统测试方案

表5.1 测试用例

用例编号 测试测试重要级预置条输入参测试步骤 预期输出 1、进入系统主页 2、点击左侧树状菜单“考生管理” 3、点击“考生管理”菜单中的“考生信息”模块 4、“姓名”一项输入:王丽 5、“性别”一项选择:女 6、“出生年月”一项选择:1988-03-27 7、“身份证号”一项输入:220104198803274127 8、“单位”一项选择:中共吉林省委,省委办公厅,教育部 9、“职务”一项输入:部长 10、“任现职时间”一项选择:2005-06-01 11、“照片”一项通过“浏览”按钮选择本地图片 12、点击“保存”按钮 系统提示操作成功 谢珍真 测试人 项 标题 别 件 数 EXAM_ST_FUN__001 考生管理->考生信息 验证增加考生功能 中 进入系统主页 34

5 在线考试系统测试方案

5.2.2测试结果

图5.3 测试结果截图

图5.4测试结果截图

35

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

Top