在线考试系统设计开发.docx
- 文档编号:10095789
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:32
- 大小:1.09MB
在线考试系统设计开发.docx
《在线考试系统设计开发.docx》由会员分享,可在线阅读,更多相关《在线考试系统设计开发.docx(32页珍藏版)》请在冰豆网上搜索。
在线考试系统设计开发
基于Web的在线考试系统设计开发
摘要本文详细介绍了《基于Web的在线考试系统设计开发》项目的设计和开发过程。
设计思路和方法采用瀑布模型[1-2]开发,用统一建模语言UML[2]进行描述,经历了文献检索,需求分析,分析模型设计,数据模型设计,构建级设计,系统部署,系统测试六个个环节。
系统以数据库为核心,使用B/S架构[4]下流行的PHP脚本语言作为宿主语言对系统核心功能模块进行设计。
采用PowerDesigner软件作为UML语言的实现工具和数据库设计的开发工具。
实现了用户登录、注册功能,出题组卷功能,考试评卷功能以及用户信息查询功能。
关键词:
B/S架构PHP软件工程出题组卷在线考试系统
1项目概况
1.1开发环境
本系统采用PHP脚本在Windows操作系统下进行开发和设计。
Web服务器[5]采用开源免费的Apache软件。
数据库管理系统采用开源免费的MySQL关系数据库管理系统。
PHP脚本解释器采用开源免费的PHP。
数据库设计工具采用Sybase公司的PowerDesigner软件。
代码编辑器采用EditPlus软件。
详细内容请看下表:
表1-1开发环境表
1.2运行环境
由于系统采用B/S架构设计,因此对于本地计算机的性能要求非常的低。
只需要有网络环境和浏览器就可以。
2设计目的和意义
目的在于设计和开发出一个基于Web的、能够适应各种考试的并能够自动出题组卷的、人性化、智能化[6]的在线考试系统。
考生只需要一台可以上网的计算机登录在线考试系统就可以足不出户的参加各种类型的考试和练习。
在线考试系统中题库中的试题资源来自各种渠道,试题种类丰富,试题设计思路巧妙。
同时可以大大减少考生购买纸质试题、参加考试的车旅住宿费用[6]。
考试举办方或考试组织者,尤其是学校学生考试的组织者和出题者,无需经常对同一年级的同一个科目进行出题,免去了出题者重复出题的工作量,也减轻了考试组织方的工作量[7]。
出题者通过浏览器登录到在线考试系统,就可以随时随地将试题添加到题库。
3设计思路和设计方案
3.1整体设计思路
整个项目采用软件工程的通用设计模式设计。
整个设计思路大致经历了:
文献检索并写出文献综述、进行需求分析、分析模型建模、数据模型建模、构建级设计、系统测试等六大环节。
所涉及到的软件工程的内容都使用统一建模语言UML(UnifieldMoudelLanguage)[7-10]进行描述和完成。
利用塔里木大学购买的中文全文数据库中的文献资源,主要在中国知网全文数据和万方全文数据库中进行相关的题名关键字检索并查看全文。
需求分析等之后的步骤都是按照软件工程的要求进行。
其所作的图包括:
用例图、活动图、协同图、部署图、类图等。
3.2选择开发架构
1、C/S架构
Client/Server架构中,每个客户端(Client)都是可以独立处理数据的主机(Host),可以对本地计算机上的软硬件资源进行无障碍的使用,比如访问本地计算机上的数据库、本地计算机操作系统的系统功能调用、对本地计算机磁盘的读写等。
只有当应用软件需要一个本地计算机资源无法提供的数据时,才通过去访问服务器,下载所需的资源和数据。
通常,大型的应用软件采用这种架构。
2、B/S架构
Bowser/Server架构中,每台客户端主机(Host)不能够独立的处理数据,绝大多数的数据都是由服务器(Server)来处理。
因此用户所需要的服务取决于服务器(Server)端能够提供怎样的服务,可以做到服务和数据的实时更新[4]。
在线考试系统是一个数据更新速度很快的系统,需要实时的处理用户任意时间提交的数据,比如用户的登录、考试、查询以及试题的添加、删除、更新。
基于上述的分析,在线考试系统适合采用B/S架构。
3.3搭建开发环境—Windows+Apache+Mysql+PHP平台
本软件既然采用B/S架构进行设计,就必须要选择一个适合该架构的开发环境。
在B/S架构中,所有的数据处理都是在服务器(Server)端的计算机上进行的,因此需要一个服务器软件。
数据是整个考试系统的血液,因此需要一个数据库管理系统。
目前,B/S架构下的开发环境有两种选择。
第一,IIS6.0+MSSQL2000及以上+ASP.NET。
这是一个只能运行和搭建在Windows平台的开发环境,也是一个最容易使用,最易进行配置的开发平台,然而开发出的系统只能够在Windows下运行,使得代码的可移植性收到局限。
同时,搭建环境所付出的资金成本也非常的昂贵[11]。
购买费用大致如下表所示:
表3-1Windows平台下搭建运行环境费用(数据来自中关村在线)
第二,Linux+Apache+Mysql+PHP。
这是Linux下进行B/S架构下Web开发的最佳组合并且是开源免费的,其运行的稳定性是无与伦比的。
Apache+Mysql+PHP不仅是开源免费的,同时由于PHP脚本语言和Apache服务器以及MySQL数据库管理系统可以跨平台的运行在Windows环境和Linux环境下,所以开发的系统具有性能稳定,可移植性强的优势。
然而,多数开发者已经形成了Windows环境下工作方式和思维方式,更换Linux会非常的不适应,需要重新调整思维方式和工作方法。
经过上面的分析,Windows+Apache+Mysql+PHP的混合模式是一种非常不错的方案。
这种平台搭建规避了两种平台不足的地方,对两者进行了优势互补。
3.4算法选择和设计
在线考试系统的核心是出题组卷子系统。
目前,出题组卷系统的算法设计有以下几种[12-13]:
(1)随机选取法:
根据状态空间的控制指标,由计算机随机的抽取一道试题放入试题库,此过程不断重复,直到组卷完毕,或已无法从题库中抽取满足控制指标的试题为止[14]。
该方法结构简单,对于单道题的抽取运行速度较快,但是对于整个组卷过程来说组卷成功率低,即使组卷成功,花费时间十分长。
卷往往以失败而告终[14]。
(2)回溯试探法:
这是将随机选取法产生的每一状态类型纪录下来,当搜索失败时释放上次纪录的状态类型,然后再依据一定的规律变换一种新的状态类型进行试探,通过不断的回溯试探直到试卷生成完毕或退回出发点为止[15]。
这种有条件的深度优先算法,对于状态类型和出题量都较少的题库系统而言,组卷成功率较好,但是在这种算法对内存的占用量很大,程序结构比较复杂,而且选取试题缺乏随机性,因此它也不是一种很好的用来组卷的算法。
(3)遗传算法:
是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法[16]。
这种组卷算法组卷质量和组卷效率非常好。
遗传算法现在已经发展成了一门独立研究的课题,因此对于没有接触过遗传算法的开发人员,在使用遗传算法时存在较大的知识壁垒。
结合上面诸多算法的优缺点,在下考试系统采用了一种以数据库设计为核心的组卷方式。
这种组卷方法充分利用SQL语言高度非过程化[17]的优势,在数据库级别完成出题组卷功能,利用宿主语言的缓冲将组好的试卷显示出来。
4详细设计
4.1需求分析
第一,系统分析,在线考试系统开发的目的就是利用当今发达的网络技术满足用户考试练习的需求。
所要收集到的系统需求可以分为三类[18-19]:
功能性需求、非功能性需求、可用性需求。
功能性需求和非功能性需求是系统分析与设计的常用种类。
功能性需求描述了系统可以做什么或被期望做什么,可以用用例来描述。
非功能性需求描述了系统与更好地提供功能需求有关的方面,如性能、安全性等;可用性需求则描述了特定用户在特定环境下有效地、顺利地达到特定目标的程度。
在线考试系统的系统分析表述如下:
在考试系统中,要为每一个考生和试题上传人员建立一个用户,也即需要进行注册。
注册信息包括用户名、密码等信息。
只有已经注册的用户才能登陆系统并进行下一步的操作。
同时借鉴强制存取控制(MAC)思想对用户进行标记,使得不同级别的用户使用不同的功能和数据;借鉴自主存取控制(DAC)思想对用户的角色类型进行检查。
用户登陆,首先要进行的登陆信息验证,验证如果判定用户类型为考生,则前往考生页面;如果是出题者,则进入出题页面;如果是系统管理员,则进入系统管理员页面。
进入考生页面的用户可以选择参加考试和成绩查询。
进入出题者页面的用户,可以进行试题上传和查询上传记录。
不同类型的用户对同一个功能的使用权限不同。
同一类型的用户对不同的功能的使用权限也不同。
比如考生和出题者属于普通用户,然而两者所能使用的系统功能是截然不同的。
用户登录活动依赖于用户注册系统。
一个没有注册的用户是一个非法用户,将不能对系统进行任何操作。
用户在注册时必需按照系统规定的方式填写注册信息。
为了保证用户填写信息的正确性,在实际使用当中,比如在学校,可以在学校人员管理系统的数据库管理系统中申请一个拥有只读权限的用户。
用户在注册时学号,教工号是必须填写的内容。
当一个新用户注册时,用户填写完信息以后便可以立刻连接数据库进行真实性验证。
对上述在线考试系统的分析可以获得如下功能性需求:
(1)用户能够按照自己的实际情况和实际需求选择一种用户类型进行注册。
(2)以考生类型登录的用户可以进行考试和成绩查询的活动而不受限制。
(3)以试题上传者类型登录的用户可以进行试题上传。
(4)管理员可以对用户和题库进行最高权限的管理,包括用户和试题的插入,更新和删除。
(5)在线考试系统能够正确识别和判断登录用户。
(6)在线考试系统能够按照组卷策略随机从题库中抽出相应的试题组成试卷。
(7)在线考试系统能够正确的评卷并计算出考生的成绩。
(8)在线考试系统能够正确相应用户对试题进行插入、更新、删除操作。
(9)在线考试系统能够正确的记录用户考试结果和试题上传记录。
(10)在线考试系统能够记录用户(考生,试题上传者,管理员)的登录记录。
第二,识别参与者通过对系统需求的分析,可以确定系统中有三个参与者:
考生、试题上传者、系统管理员。
参与者描述如下:
(1)考生:
通过注册系统验证后的任何以考生类型注册的用户。
(2)试题上传者:
通过注册系统验证后的任何以试题上传者类型注册的用户。
(3)系统管理员:
在线考试的拥有者或管理者。
第三,识别用例通过上述分析,可以确定系统中有如下用例存在。
(1)用户登录
本用例为用户提供了进入在线系统的接口功能。
(2)用户注册
本用例为用户使用在线考试系统打下前提基础。
(3)成绩查询
本用例为考生类型的用户提供了注册信息查询和成绩查询管理的功能。
(4)修改注册信息
本用例为用户提供了修改密码和注册信息的功能。
(5)考试
本用例为考生类型的用户提供了出题组卷、评卷、计算成绩并记录的功能。
(6)查看登录记录
本用例为考生类型用户提供查看个人登录在线考试系统记录的功能;为系统管理员提供查看所有用户登录在线考试系统记录的功能。
(7)试题上传
本用例为试题上传者类型的用户提供试题上传功能。
(8)试题修改
本用例为试题上传者类型的用户提供个人对上传试题修改,插入,更新的功能。
(9)试题上传查询
本用例为试题上传者类型的用户提供对个人上传试题情况的查询功能。
(11)添加用户
本用例为系统管理员提供添加新用户的功能。
(12)更新用户
本用例为系统管理员提供更新用户注册表和用户信息的功能。
(13)删除用户
本用例为系统管理员提供删除用户注册表和用户信息的功能。
(14)试题插入
本用例为系统管理员提供向题库添加试题的功能
(15)试题删除
本用例为系统管理员提供删除题库和试题信息的功能。
(16)试题更新
本用例为系统管理员提供更新题库和试题信息的功能。
(17)设置试卷难度配比
本用例为系统管理员提供添加、更新、删除组卷策略的功能。
(18)登录并修改信息
本用例为系统管理员提供普通用户的功能。
4.1.1用例分析
根据上述分析,系统的角色可以分为两种类型。
一种是普通类型的角色,包括考生和上传试题者;另一种是系统的管理员。
由于所处的角色不同,所使用的功能就有所不同。
下面是普通用户的用例分析结果。
图4-1普通用户用例图
系统管理员是系统中权限最高的角色,除了可以使用普通用户可以使用的功能外还有普通用户不能够拥有的功能。
图4-2系统管理员用例图
4.1.2功能性分析
(1)用户登录、注册、修改信息的功能
该功能模块是整个系统的入口。
要求用户分角色进行登陆、注册。
不同角色的用户设置不同的权限去访问不同的网页;对于相同的网页,不同权限的用户有各自的访问方法或无法访问。
(2)出题组卷的功能
该模块是整个系统的基础和核心,所有的功能都是围绕着出题组卷这一核心功能展开。
能够实现出题组卷的功能需要有两个要素的支持。
一个是题库,里面长期存放着可以不断添加、更新、删除的各个学科的题目;另一个是组卷策略,它使得题库当中杂乱无章的题目能够以人们要求的形式和难度配比出现在一张卷子上面[20]。
4.2数据模型设计
基于上述的需求分析,可以得到下面的数据库设计图。
图4-3数据库设计图
设计图中中各个关系表的的含义如下表所示。
表4-1设计图清单
4.3模型分析
4.3.1架构设计
本系统选择采用PHP脚本语言作为整个系统的宿主语言和数据传输的媒介和载体,同时有选择了B/S架构开发模式,其构架设计图如下;
图4-4系统架构设计图
如图4-4中所示,客户端计算机上的操作系统可以使用任意平台的操作系统,但必须至少安装一种浏览器,如:
IE浏览器、FireFox浏览器等。
服务器端计算机所部署的操作系统和Web服务器、数据库管理系统以及脚本解释器,既是开发环境也可以是将来的运行环境。
服务器端计算机开发环境详细信息如下:
表4-2系统架构设计详细信息
如图4-4所示,用户使用浏览器登陆在线考试系统请求访问.php页面,通过网络将数据传送到服务器端计算机。
服务器端计算机操作系统开放相应端口。
数据通过端口访问Web服务器Apache。
Apache服务器通过自身调度算法,启动PHP解释器。
PHP解释器对用户所请求的.php页面中的PHP语句进行解释执行。
在解释执行的过程中,如果PHP程序需要访问数据库资源,则PHP按照程序中的语句连接数据库,执行完毕后将数据返回PHP程序。
当页面中的所有PHP语句全部执行完后,PHP解释器将执行后的结果传递给Apache服务器。
Apache服务器通过操作系统开放的相应端口利用网络将执行后的结果返回给用户浏览器[21]。
4.3.2体系结构设计
根据以上的分析,可以将整个系统的结构进行如下的设计和方案设计。
图4-5系统体系结构分析设计
4.3.3模块数据流模型
基于系统体系结构的设计工作,对系统体系结构进行细化,对整个系统的数据流进行分析设计。
采用自顶向下,层层递进和细化的设计方法对系统数据流进行了三个级别的设计。
三个级别的数据流图,自上而下抽象程度逐渐降低,数据流的环节逐渐精细[22]。
图4-6第一级数据流图
接着,对第一级数据流图的每一个环节进行拆解和分析,主要是对第一级数据流图中的“在线考试系统”对象进行拆解。
同时也对第一级数据流图中的数据流进行相应的拆解和细化,得到精细化的数据流图。
图4-7精细化后的数据流图
从精细化的数据流图中的数据流密度来看,整个系统是以数据库设计为依托,以组卷模块为核心,同时以用户和试题管理等模块进行整个系统的功能完善。
下图显示了除去大多数数据库后各模块之间的数据流情况。
图4-8各模块之间的数据流图(局部)
以下是有数据库参与的系统数据流图设计情况。
从图中可以看出,数据库中的各种关系表是整个系统数据流的核心节点,离开了这些节点的支持,数据流的链条将会出现大范围的断裂,如上图4-9所示。
图4-9有数据库节点的数据流图(局部)
4.3.4系统目录结构设计
根据以上系统结构设计和系统数据流设计,对整个系统在磁盘上的目录编排和页面组织进行设计。
对于大多数页面都要用到元素,比如图片,系统图标以及为了整个系统风格统一而设计的配色方案等,存放在同一级目录的不同文件夹中。
对于分工不同的、用以实现各个模块功能的页面,按照类别存放在相应的模块中。
图4-10系统目录图
整个系统目录机构采用了三级结构设置。
将用户管理和试题管理功能统一放在了user目录里进行实现。
landing目录是整个系统中用户登录模块功能页面的存放目录。
整个目录结构设计大体遵循了系统结构设计图的设计思路其主要目录简介如下。
Landing目录:
存放了整个系统中最重要的三大参与者,考生、用户、管理员进入系统的接口页面,是登陆模块和整个考试系统之间的枢纽。
图4-11landing目录图
Order目录:
存放了系统的规定,比如考试守则以及帮助文档。
Warning目录:
存放了用户出现操作错误或者违规操作时的提示页面,如:
用户名密码错误,权限不足等。
Logo目录:
单独用来存放系统的图标,本系统遵循简洁的设计原则,因此没有采用图片去增加色彩,只是用单纯的色彩块体现明快的风格。
Exam目录:
存放了访问题库页面,访问组卷策略页面,出题组卷页面,阅卷评卷页面等实现出题组卷系统功能的PHP页面。
Login目录:
存放实现用户注册功能的PHP页面。
Manage目录:
存放系统管理员功能的PHP页面。
Modify目录:
存放了实现用户修改注册信息、更改试题功能的PHP页面。
Paper目录:
存放了访问组卷策略的PHP页面和组卷数据传输的PHP页面。
Query目录:
存放了用户信息查询、考试记录查询、上传题目记录查询等功能的PHP页面。
4.3.5用例的事件流描述
(1)登录
首先系统提示用户输入用户名和密码,然后用户输入上述信息并选择用户类型后,系统验证用户名和密码以及用户类型是否正确,如果正确,则进入系统的相应页面,否则给出错误提示,并提示用户重新输入登录信息。
以上用例的事件流可以用以下的活动图来进行表示。
图4-12用户登录活动图
(2)注册
首先,用户进入注册页面。
系统会显示所要填写的信息,其中表明了哪些是必须填写的信息。
当用户填写完注册信息后,系统变对用户填写的注册信息进行各方面的审核和验证。
如果用户填写的信息通过系统的验证,那么提示注册成功;否则进行错误提示,并提示用户再次填写注册信息。
以上的用例活动可以用如下的活动进行描述。
图4-13用户注册活动图
(3)出题组卷
在用户顺利登陆并提出考试请求的情况下,首先系统发出组卷请求。
之后系统访问数据库管理系统调出组卷策略,读取组卷策略信息,同时将数据传回系统。
系统按照组卷策略进入题库,按照组卷策略组成一套试卷。
以上的用例活动可以用如下的活动图描述。
图4-14出题组卷活动图
(4)考试评卷
首先,用户以考生类型顺利登陆并进入考试页面。
系统会提示用户选择考试科目,以及相关信息。
用户选择完毕后,系统访问出题组卷模块生成一套试卷,用户进行答卷。
答卷完毕以后,用户将结果提给系统,系统随机计算出用户的考试成绩,并显示与考试相关的各项信息,将其汇聚成一个用户成绩的清单。
同时将本次考试活动的数据记录下来,以供查询。
以上的用例活动可以用如下的活动图进行描述。
图4-15考试评卷活动图
(5)用户/试题管理
首先,用户以系统管理员身份或者以试题上传者身份顺利登陆系统。
首先,系统会提示用户进行操作的选择。
用户按照提示选择操作并进入相应的页面。
系统执行完用户操作后,给出执行结果的反馈信息。
以上的用例活动可以用如下的活动图进行描述。
图4-16试题管理模块活动图
4.4动态行为模型
4.4.1用户登陆/注册模块设计
登录的过程是:
系统提示用户输入用户名和密码,并选择用户类型。
这些登录信息通过浏览器Post方法提交到PHP脚本语言提供的超级全局数组$_POST中并在Landing.php页面上进行处理。
首先,对数据进行控制检查。
之后,以$_POST中的数据为条件,到用户注册表中使用SQL语言进行条件查询。
如果结果不为空,则根据$_POST中用户类型值进入到相应的页面,如果结果为空,则通过浏览器跳转到注册页面[23]。
注册过程:
注册页面提示用户填写注册信息,并且已经事先规定好了哪些内容是必需填写的。
注册信息通过浏览器Post方法提交到PHP脚本语言提供的超级全局数组$_POST中并在Login.php页面上进行处理。
和用户登录模块一样,首先进行数据空值检查。
之后对部分数据使用正规式进行匹配。
如果数据验证完毕,则PHP脚本解释器访问用户注册表以$_POST中的数据为条件并使用SQL语言进行条件查询操作[23]。
如果查询结果为空则写入数据库并提示注册成功,否则要求用户使用另外一个用户名并再次提示用户填写注册信息。
、
以上分析可以用如下的顺序图进行描述。
图4-17用户登录注册顺序图
4.4.2出题组卷模块设计
出题组卷过程是:
出题组卷模块发出组卷请求并连接数据库,访问组卷策略表,读出组卷策略数据。
在组卷策略[22-24[上设计的触发器被激活,以组卷策略中数据为条件执行查询语句,并完成组卷返回结果。
可以用顺序图进行描述。
图4-18出题组卷顺序图
4.4.3考试评卷模块设计
考试评卷过程:
用户选择考试课程后,同样使用PHP脚本语言中的超级全局数组$_POST将信息传递给出题组卷模块,组卷模块发出组卷请求并访问数据库按照组卷算法生成一套试卷。
用户进行答卷并提交。
连接数据库,以试题编号为条件进行在题库中进行条件查询,查找正确答案并在PHP中打开会话,将正确答案存放到超级全局数组$_SESSION中,对用户提交的答案进行逐一匹配,计算出用户成绩。
同时访问PHP超级全局数组$_SERVER,读取$_SERVER[‘REMOTE_ADDR’]的值获取用户计算机的IP地址[24]。
将这些信息写入数据库用户考试表中。
图4-19考试评卷顺序图
4.4.4查询管理模块设计
查询管理的过程:
用户进入查询界面并选择查询操作。
系统进行权限判断。
如果允许当前用户进行操作,则用户选择要查询的内容。
系统会提示用户填写查询条件。
用户提交查询条件,系统通过PHP脚本语言访问数据库[25],进行条件查询。
以上分析可以使用顺序图进行描述
图4-20查询管理顺序图
4.5关键技术及其实现方法
4.5.1文件上传的实现
为了能够让用户不光能够进行文字注册,还能够在打印成绩单的时候出现自己的免冠照片,那么只有让照片数字化,比如使用扫描仪转换成各种类型的图片文件或者直接使用数码相机进行拍摄。
经过这一个过程后还需要从本地计算机通过网络上传的服务器指定的文件夹下面,供在服务器端的在线考试系统进行访问和读写。
这个过程就是文件上传的简要描述。
要实现远程文件上传需要几个条件,其一,Web服务器支持文件上传,其二,脚本语言为服务器端运行脚本,其三,脚本语言支持文件上传,并且有一定的方法去实现文件上传。
现在绝大多数Web服务器均支持文件上传,而脚本语言对文件上传的支持则参差不齐。
运行在客户端的脚本无法支持文件上传,运行在服务器端的脚本大多支持文件上传,只是实现方法有难有异。
本系统的开发和运行使用Apache软件作为服务器端Web服务器,以PHP脚本语言进行数据流的传导。
Apache服务器支持文件上传,PHP脚本语言也支持文件上传。
因此首先要对PHP脚本编译器配置文件进行如下的更改[26],使之开启文件上传功能。
图4-21php.ini配置文件中有关文件上传参数
如图4-22所示,打开php.ini配置文件后对“FileUploads”的三个参数进行设置。
其中第一个参数“file_uploads”的值为多少是决定能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 在线 考试 系统 设计 开发
![提示](https://static.bdocx.com/images/bang_tan.gif)