在线考试系统毕业设计Word下载.docx
《在线考试系统毕业设计Word下载.docx》由会员分享,可在线阅读,更多相关《在线考试系统毕业设计Word下载.docx(40页珍藏版)》请在冰豆网上搜索。
7.交通管理部门组织的驾驶员理论考试。
以上的考试系统大多比较完善,但是一些计算机基础考试系统还有一些不足,比如试题的实用性程度不高;
为了方便计算机批改,操作题比较死板;
批卷的智能化有待提高。
1.2.2考试系统分类
以题库构成为标准可以把计算机考试系统分为三种:
1.不以题库为基础的考试,试卷以单份为主,多用于心理测验和调查研究;
2.题库由试卷库构成,试卷库指多份试卷,随机抽取一份给学生考试;
3.题库由试题库构成,试题库指海量试题,海量试题按照一定组卷策略组卷[2]。
对计算机辅助测试系统的分类还有很多方法。
按试卷是否基于题库可分为基于题库的考试系统和非基于题库的考试系统;
按题量是否定长可分为定长和不定长的考试系统;
按采用的测试理论可分为基于经典测试理论和基于项目反应理论的考试系统;
按是否是自适应考试可分为传统的和自适应的考试系统,自适应组卷指依靠大型题库,自行适应被测试人员水平,灵活实施测试难度。
1.2.3组卷算法分类和进展[3][4]
组卷算法的好坏直接关系到试卷的成卷质量,是考试系统的一个研究重点。
试题库组卷的计算机考试系统根据组卷算法的不同可以分为以下几种:
1.随机组卷,这是最低级的组卷算法,随机地从试题库中抽取一定数量的试题组成试卷,对抽取的题目没有任何约束条件[5]。
2.多重目标约束组卷,试题设置题号、难度、分值、重要性、知识点等属性值,然后根据多种属性值的约束条件组卷。
可以使用深度优先或者广度优先算法搜索试题。
该组卷算法较之于随机组卷算法有很大进步,生成试卷的质量比较高。
3.基于遗传算法的组卷算法,遗传算法是一种模拟大自然生物进化过程的计算模型。
遗传算法的群体搜索策略为多目标优化提供了非常合适的解决方案[6]。
4.遗传算法的改进,例如判断优化目标个体优劣的基于偏好的多目标调和遗传算法[7]。
5.多种人工智能算法的组合,例如遗传算法与模拟退火算法的结合[8],遗传算法与蚂蚁算法的结合[9]。
6.各类算法的扩展,例如基于学生BOSM模型的智能组卷算法[10];
分段随机抽选法对随机组卷的改进[11];
增加信息反馈提高试题属性质量,将学生答题的情况反馈给试题,修正试题的难度等[12]。
组卷算法的发展方向是在海量试题库的基础上运用人工智能生成试卷。
1.2.4考试系统的实现模式分类
从逻辑上来说,一个典型网络应用由三部分组成:
表示逻辑层、业务逻辑层和数据逻辑层。
其中表示逻辑层直接面向用户,主要完成应用的前端界面处理,即人机界面处理;
业务逻辑层实现应用的业务规则处理,决定程序的流程;
数据逻辑层是应用中对数据进行管理的部分,主要完成应用对数据的存取、更新、管理等工作以及访问数据的安全性、完整性、一致性。
计算机考试系统有两种主要模式:
客户机/服务器模式(Client/Server)和浏览器/服务器(Browser/Server)模式。
C/S模式于1989年由麻省剑桥的ForesterResearch首先提出[13],是客户进程从服务进程中请求服务的一种计算方式,属于协同处理的范畴。
根据表示层、应用层、数据层分布在几层,C/S模式可以分成两层C/S模式和三层C/S模式。
两层模式将一个考试系统的三个逻辑层分布在Client端和Server端,Client和Server通过网络联结起来。
通常Client端和Server端分别运行在不同的计算机中,Client端一般安装于普通计算机,Server端一般安装在功能更强的服务器。
将业务逻辑独立出来,就产生了三层C/S模式。
在三层C/S模式中,表示逻辑位置不变,仍放在Client端,业务逻辑则放在一个独立的中间服务器上,数据逻辑在另一个服务器上[14]。
随着网络的发展,出现了B/S模式。
B/S模式在本质上也是一种C/S结构,它由传统的C/S结构发展而来,是一种在Web上的应用。
与传统C/S结构不同的是,B/S的表示层为Web浏览器,功能层为Web服务器,使用ASP、JSP或PHP等技术。
相对C/S结构而言,B/S结构的优点有:
简化客户端;
易于维护;
易于升级;
用户操作简便易学;
便于网上发布消息。
但是B/S结构也有一些缺点:
1.交互性弱。
C/S模式的客户端是完整的应用程序,在出错提示、帮助等方面都有强大的功能并且可以在子程序间自由切换。
B/S模式虽然由JavaScript、VBScript提供了一定的交互能力,但和C/S相比功能就少多了;
2.安全性低。
由于采用开放的TCP/IP协议和解释型的脚本语言编程,数据的流向不固定,容易被截取破译,其安全性有限;
3.数据处理能力弱。
B/S模式的数据处理多用解释脚本语言实现,无法开发出利用可视化工具开发的功能强大的编译型应用程序。
C/S和B/S模式各有优缺点,适合不同的场合。
一般而言,B/S模式的缺点就是C/S模式的优点,而B/S模式的优点就是C/S模式的缺点。
C/S模式相比而言有以下优点:
1.保密性好。
可以设置专门的加密函数,针对不同的数据设置不同的加密方式和加密等级。
而B/S模式采用开放的TCP/IP协议和解释型的脚本语言编程,安全性较低;
2.数据处理能力强。
可以连接多种关系数据库;
3.交互性强。
相对浏览器而言可以生成更加复杂的图形界面和允许更多的用户交互方式[15];
4.可控性好。
服务端可以控制连接的时间、连接的IP、连接用户等信息,适合安全性要求高的应用;
5.数据分析统计功能强。
可以批改多种题型的试题,并且进行复杂的数据分析和统计。
本课题的网上考试系统是使用Java语言实现的二层C/S模式系统。
根据使用对象和实现功能的不同,客户端分为三种类型:
学生使用的客户端,教师使用的客户端和管理员使用的客户端。
1.2.6考试系统的开发平台分类
考试系统由应用程序和数据库组成,开发程序主要有微软的VisualBasic、VisualC++、VisualFoxPro(VFP)和PowerBuilder、Delphi、JBuilder等,数据库主要有本地数据库Access和网络数据库SQLServer、MYSQL、ORACLE等。
从理论上说开发平台可以由任何一种开发程序和数据库组成,也就是任意两两组合,但是综合考虑系统需求、软件的兼容性等方面,往往有比较合适的组合。
对于数据库的选择,可以考虑数据存取速度、容量和网络存取等要求。
如果考试系统是单机版的,那么可以选择Access数据库;
如果数据库数据的容量在几十万行之内,并且要求网络存取,那么可以选择SQLServer;
如果数据库中的数据非常大,那么从安全性和速度等方面考虑采用ORACLE是最好的选择。
如果数据库采用SQLServer,有很多开发程序支持它,分别使用不同的技术连接和管理数据库。
1.VB+SQLServer,DAOs方法、ODBCAPI或VBSQL方法管理数据库;
2.VC+SQLServer,开放数据库连接OpenDatabaseConnectivity(ODBC)实现数据库访问;
3.Delphi+SQLServer,数据库引擎BorlandDatabaseEngine实现连接;
4.VFP+SQLServer,SQLPassThrough(SPT)技术直接访问ODBC函数,并把SQL语句发送给服务器执行;
5.Java+SQLServer,JDBC实现数据库访问。
1.2.7计算机考试系统的发展趋势[16]
计算机考试系统朝着智能化的方向发展,例如组卷的智能化,批卷的智能化等。
另外考试系统对学生答题情况的统计和成绩分析的要求也越来越高,据此掌握教学质量。
出于考试的严肃性,网上考试系统对安全性、容错性和保密性的要求也越来越高。
1.3J2SE实现网上考试系统
现在已经有了多种实用的考试系统,应用于各种类型的考试,那么为什么要开发本网上考试系统呢,主要出于以下几点考虑:
1.虽然各种类型考试系统研究很多,但是和操作系统无关或者支持多操作系统的考试系统的研究还比较少。
Java语言和平台无关,可以使用JBuilder开发多平台下的J2SE程序。
2.商品化软件一般只能获得考试系统的学生端,出于系统保密的原因,有时甚至不能批改试卷,例如省计算机一级考试下发到学校的是考试客户端,考试结束后学生答题数据包统一上交批改。
但是教师希望批改后统计和分析学生成绩,并且以直观的方式显示,从而发现问题改进教学。
3.自主控制考试题目,可以用于单元学习后的单元测试。
4.自主扩充修改题库,随时增加修改题目。
现有的考试系统不能完全符合我校定制的需求。
我校的老师对考试系统有特定的要求,例如可以在,多种方式分析成绩等。
结合教学和研究的需要,本人开发了基于J2SE的网上考试系统。
本考试系统采用C/S模式的软件体系结构,客户端使用Java集成开发环境JBuilder开发调试生成,数据库使用MicrosoftSQLServer2000技术,使用JDBC技术连接数据库。
1.3.1J2SE概念
本课题中的考试系统是基于J2SE的C/S模式考试系统,具体使用Java的开发平台JBuilder实现。
JBuilder的集成开发环境IDE广受业界赞誉,其可视化集成开发环境包括文本编辑器、工程创建工具、对象浏览器和调试器等。
JBuilder集成了软件开发、调试、部署、管理、版本控制等工具,提高了项目开发速度[17]。
Java的开发平台称之为JDK,运行平台称之为JRE。
为了对Java技术的使用方向和范围进行区分,避免开发中关注不必要的技术特性,Sun公司将Java平台划分成3个版本:
1.J2SE(Java2PlatformStandardEdition):
核心用于桌面系统的Java2平台标准版,主要用于桌面应用软件的编程。
2.J2EE(Java2PlatformEnterpriseEdition):
针对企业级软件开发和应用的Java2平台企业版。
用于创建服务器应用程序和服务,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
3.J2ME(Java2PlatformMicroEdition):
适用于嵌入式系统开发的Java2平台微型版,如手机和PDA的编程。
开发环境主要包括:
JavaVirtualMachine(JVM)、核心API、集成API、用户界面工具、部署技术、部署工具及API[18]。
1.3.2J2SE特点
J2SE主要用于实现桌面应用软件开发,其实现的系统有以下特点:
1.支持多平台:
Java是一种与系统平台无关的语言。
在J2SE的开发模式下,使用JBuilder的NativeExecutableBuilder工具可以生成在不同的系统和处理器平台下执行的程序,目前支持的平台有Dos、Windows、Linux、Solaris和MacOS。
2.分布性:
Java带有强大有关网络协议族的库,使Java网络编程高效易用。
3.面向对象:
设计重点放在对象及对象的接口上。
4.简单性:
Java的语法比C++简单,只能在一个类中定义公用和静态的变量来实现一个全局变量,不支持goto语句,自动管理内存并且进行垃圾收集。
5.可靠性和安全性:
Java可以用来构建一定程度防病毒和防攻击的系统。
6.其余特性:
多线程、动态性、解释、结构中立性、可移植性、鲁棒性。
第2章需求分析和软件估计
2.1软件开发概述
本课题“基于J2SE的网上考试系统的设计与实现”在软件工程思想指导下开发。
软件工程SoftwareEngineering指应用计算机科学理论和技术以及工程管理原则和方法,按照预算和进度,实现满足用户要求的软件产品的定义、开发、发布和维护。
在软件开发过程中遵循模块化、信息隐藏、局部化、一致性、构造性和集成组装性等原则。
开发过程中实施有效的工程管理,例如配置管理、质量保证等。
2.1.1软件开发方法
软件开发方法指使用定义好的技术和表示符号来组织软件生产过程的方法。
经过多年的软件工程实践,有多种软件开发方法获得了推广。
1.结构化方法:
,认为软件系统均以一定的结构形式存在,由若干子系统构成,子系统本身又是一个系统,软件实现过程有结构化分析SA、结构化设计SD和结构化编程SP。
实现结构化方法的技术有面向数据流图的方法、Jackson方法、LCP方法等[19]。
2.原型化方法:
迅速开发出一个可以让用户看得见、摸得着的精简系统,适用于需求反复修改的情况。
原型化开发的优点有[20][21]:
有助于确定系统的可行性;
原型法修改比最终软件修改快且代价小;
容易定义需求不确定的[22]。
由于用户在实际软件方面的介入,开发组和用户有更高层次的交流和沟通。
3.净室方法:
测试之前程序设计开发组就开发出几乎无错的系统。
4.形式化FormalMethods方法:
以严密的数学证明为基础,包括形式化分析FormalAnalysis、形式化设计FormalDesign和翻译Translation。
5.面向对象方法:
认为客观世界是由对象组成的,不同对象间的相互作用和联系构成不同的系统,以对象为中心来构造模型、组织系统。
6.基于组件的软件方法:
应用逻辑和实现分离,提供标准接口和框架,使软件开发变成组件的组合。
模型有Sun公司的EJB、微软公司的COM+/DCOM、OMG的CORBA/ORB[20]。
7.敏捷软件开发:
着眼于快速交付高质量软件,并使客户满意,包括极限编程ExtremeProgramming(XP)、动态系统开发方法DynamicSystemDevelopmentMethod、SCRUM、Crystal和Lean等。
敏捷软件开发有四个核心价值:
沟通Communication、反馈Feedback、勇气Courage和简单Simplicity[14]。
选择何种软件开发方法需综合考虑各种因素。
首先考虑软件项目的特点;
还有支持环境,如若没有相应的快速原型工具,就不可能采用快速原型方法;
以及技术支持,如软件工程规范、软件工程管理经验、软件人员的技术基础和经验等。
软件的开发可以选用开发方法中的一种,也可以选用几种方法的结合。
考虑到本考试系统由JBuilder开发,使用面向对象的开发语言Java语言实现,所以本系统主要采用了面向对象的软件开发方法。
在开发的部分阶段,还使用了原型化方法,这两种方法的结合既具有稳定性好、可复用性和可维护性的优点又方便了系统开发者和最终用户的沟通。
2.1.2软件工程活动的阶段
软件工程活动的定义是:
生产一个达到工程目标并且满足用户需求的软件产品所需要的步骤,主要包括需求分析、设计、实现、确认以及维护等活动。
随着软件工程思想的普及,大家认识到软件开发必须以软件工程活动中定义的步骤指导软件开发,采用工程的概念、原理、技术和方法开发和维护软件,提高软件开发的效率,减少软件开发和维护中的问题。
系统开发的过程一般包括:
1.需求阶段建立系统模型,是软件开发人员和客户之间合同约定的基础,是下一步设计阶段的基本输入;
2.设计阶段定义实现需求所需的软件结构;
3.实现阶段将软件设计转换为代码;
4.验证是一项评估活动,贯穿于整个开发过程;
5.维护指软件发布之后所进行的修改,包括对发现错误的修正,环境变化后进行的必要调整等[23]。
软件开发生存周期模型用来描述软件从项目需求定义开始到开发成功投入使用一直到维护,软件生命周期结束。
随着软件工程学的发展,相继提出了演化模型、螺旋模型、快速原型化模型、快速应用开发模型、增量模型、喷泉模型等。
本考试系统采用面向对象的软件开发方法,开发步骤遵循面向对象软件开发的四个阶段:
1.面向对象分析Object-OrientedAnalysis(OOA)。
系统分析员对将要开发的系统的定义和分析,主要描述工具是用例图,这个阶段的目的是建立系统提出问题领域的模型。
这一阶段的模型产品是用例图。
2.面向对象设计Object-OrientedDesign(OOD)。
将OOA的结果转化为适合于程序设计语言的具体描述,主要描述工具是各类静态和动态模型图,这个阶段的目的是设计实现的类和方法,以及类之间的联系,以满足系统的功能要求和质量要求。
OOA的重点是做什么,而OOD的重点是如何做。
这一阶段的模型产品是静态图和动态图。
3.面向对象程序设计Object-OrientedProgramming(OOP)。
程序设计人员根据OOD得到的模型,采用面向对象程序设计语言实现程序,该网上考试系统使用JBuilder开发。
这一阶段的产品是类文件。
4.面向对象测试Object-OrientedTesting(OOT)。
类的测试和类间测试等,和传统测试的区别是可以从静态和动态模型图获取信息辅助测试。
2.2需求分析的目标和内容
需求分析回答系统必须“做什么”的问题,是软件开发的第一个阶段,也是非常重要的阶段,直接关系到软件开发成败。
2.2.1需求分析的目标和实现阶段[19]
在进行需求分析之前我们必须弄清楚需求分析的目标和实现目标的阶段,如表2-1所示。
表2-1需求分析的阶段和目标
阶段
目标
可行性研究
决定是否建立一个系统
需求导出和分析
理解用户需要系统解决哪些问题;
引出这些问题和系统的一些相关问题;
提供解决这些问题和系统的基础;
决定系统应该做什么;
决定系统不应该做什么;
生成文档
生成需求规格说明
需求有效性验证
验证需求有效性
2.2.2可行性研究
需求分析的第一件事情就是决定是否建立一个系统,也就是进行系统的可行性分析,可以从操作可行性、技术可行性和经济可行性三个方面着手分析。
操作可行性分析系统是否符合总体目标。
本考试系统有许多相对于笔试的优点,对学校的大学生计算机文化基础考试有很大的帮助。
技术可行性考虑系统是否可能在现有的技术条件、预算和时间限制内完成,能否与已经存在的其它系统集成。
经济可行性考虑本考试系统受学校教改项目支持,投入使用后可以产生比较大的经济和社会效益。
2.2.3需求收集和分析
可行性研究阶段结束后,如果系统分析员认为系统可行就进入系统开发的需求收集和分析阶段。
需求收集的内容包括1.信息需求,开发系统处理的信息的属性、内容等;
2.功能需求,开发系统必须具备的功能;
3.性能需求,开发系统的技术性能指标,例如响应时间,存储容量等;
4.环境需求,运行的软硬件环境。
软件工程要求软件的开发非常重视需求过程,如果需求做得比较精确不但可以使开发人员清楚地了解用户的想法,减少开发时间,还可以更容易交付软件获得用户认可。
本系统充分运用软件工程学总结的需求收集方法来收集需求,具体需求收集的方法有:
1.会谈。
开发组成员和用户就开发的系统面对面地交谈,这是收集用户需求的一种重要的方式。
会谈结束后,开发小组尽快将会谈的结果整理出来,并且将整理出的会谈资料交给用户。
2.问卷调查。
事先准备好问卷调查资料,将资料发给用户方。
这种方法的好处有两个:
一是问题集中和精确,二是用户回答问题的时间可以自由掌握。
3.调查用户当前使用系统。
如果用户现在的操作方式是手工的,那么收集用户手工操作的工作流程,如果用户现在已经使用软件辅助工作,那么收集现在的软件操作的相关表格和资料。
4.用例分析。
用例驱动获取需求已经成为面向对象方法的重要组成部分,是OOA阶段的主要方法。
5.使用场景获取需求。
访问及观察用户的工作情况,得到一系列用户场景,并根据用户意见修改场景。
本系统经过分析可以得出考生考试、教师考前准备试题、设置组卷规则、考后批改试卷、分析统计成绩、用户管理等场景。
用例和场景是相辅相成的,可以从场景获取系统用例[24]。
6.快速原型。
快速建立一个能够展示系统关键功能的模型,使用快速原型作为收集用户需求的一种方法。
2.3面向对象分析
面向对象分析方法将客观世界中与应用有关的实体及其属性抽象为问题领域的对象及其属性。
分析人员通过对象、对象间消息传递等语言机制直接模拟问题领域的对象及其行为。
OOD方法为需求建模提供了直观、自然的语言支持和方法学指导,其核心思想是寻找系统中最稳定的因素——对象。
在本考试系统的需求获取阶段综合运用了多种方法,比如建立快速原型、会谈、场景分析等方法,主要使用用例分析UseCaseAnalysis获取用户需求。
用例驱动[25]指以用例为驱动力驱动软件开发。
用例驱动的方法基于面向对象技术,即从用例出发,首先将用户需求转换为用例,使用用例描述用户需求,并根据用例的描述和分析,使用静态图描述系统核心类,然后进一步描述系统动态行为等。
用例驱动需求分析之后设计、编码、测试等阶段的工作,将用例驱动的思想与UML这种面向对象分析设计语言有机结合。
2.3.1用例分析概述
用例是对一组动作序列的描述,用于描述系统的功能,也就是从外部用户的角度观察系统应支持哪些功能,帮助分析人员理解系统的行为,它是对系统功能的宏观描述。
在用例模型中系统是实现各种用例的“黑盒子”,我们只关心该系统实现了哪些功能,并不关心内部的具体实现细节。
用例建模从组成系统的实际操作入手,站在使用者的角度观察软件,密切贴近实际。
主要应用在工程开发的初期需求分析阶段[26]。
引入用例的主要目的是确定清晰地描述系统的功能要求;
为系统验证打下基础;
提供从功能需求到实际类和操作的跟踪能力。
要分析用例,首先要找到用例的执行者Actor,在一个实际的