系统架构及数据库设计
3.1
需求分析
3.1 该系统在平时可以作为学生测试自己专业知识的模拟考卷系统,在考试周期内则承担起在
线考试的任务。
3.2 作为模拟考卷系统时,学生可自行查看自己的测试结果和标准答案。
3.3 作为模拟考卷系统时,学生可以自己决定生成试卷的科目和所属的章节。
3.4 在考试周期内的非考试时间该系统对学生关闭,考试时间内才允许考生登录,系统则生成
该时间段内的考试科目试卷,考试结束前的30 分钟、15 分钟、5 分钟时对考生进行提示,考
试结束后若考生没有进行试卷提交则自动进行试卷保存处理。
3.5 系统要有防止考生无意关闭系统或者提交试卷而导致考试无法继续进行的机制。
3.6 正式考试时系统对具体试卷的客观题自行判分,主观题则由老师判分。
3.7 要保证在同一次考试中系统生成的各份试卷难易度保持在同一个水平。
3.8 保存每个学生的考试试卷副本,便于在规定时间内考生查卷。
3.2
系统架构
本子系统的模块结构如下:
1、在线考试模块。
2、在线练习模块。
a) 传统的试卷读取。
b) 自动组卷。
2
系统总体结构如图所示:(红色部分为在线考试子系统)
除了以上主要模块外,还有一些不是重点但是同样重要的模块,包括学生登陆,密码修改,
学生信息维护等等。
3
3.3
用例图(在线考试子系统中主要用到了学生用例图)
学生用例图:
教师用例图:
4
3.4
系统类图
3.5
数据库表结构(见附录
A
)
第四章、具体实现
4.1
5
窗口左边是最近考试安排,显示5 门最近要进行的考试,从这里考生可以了解大概的一些情况,
比如开考时间和考试的科目等等。窗口右边是学生的登陆窗口,在【练习模式】没有被勾选的
情况下,如果该考生在该时间段内有考试,则进入考试登陆界面:
点击【进入考试】按钮后打开试卷开始考试。如果学生输入密码错误或者在该时段内没有考试
则系统根据具体情况弹出错误窗口,具体有以下四种情况:
1、学号或者密码错误。
2、该时段内没有考试。
3、已经考过。
4、迟到。
显示的截图:
6
4.2
在线考试模块
学生在正确的时间段内用正确的学号密码登陆后进入在线考试,登陆后考试页面如下:
浏览器的标题栏会显示考试还剩下的时间:
为了减轻系统的负担,从服务器读取时间的间隔为30 秒,所以时间判断会有0~30 秒的误差。
考试结束后,系统会自动提交试卷,如果你想提前结束考试,可以点击【交卷】按钮来提交试
卷:
7
交卷成功后显示结果信息:
点击【关闭】按钮结束考试。
8
4.3
在线练习模块
学生在登陆窗口勾选【练习模式】并输入正确的学号和密码则进入在线练习,截图如下:
在线练习又包括传统试卷读取和自动组卷两部分:
4.3.1、传统试卷读取
在【在线练习――选择练习卷】窗口,选择科目,然后选择该科目的某份试卷,点击【确定】
按钮进入该练习卷页面,如果没有选择练习卷就按【确定】按钮,则会弹出提示框:
9
练习卷的页面如下:
右上角有个【显示答案】选项,勾选后会弹出标准答案块:
10
标准答案块可以用鼠标拖动,便于学生校对答案,客观题自动判卷实现起来有点棘手,所以并
没有做自动判卷。
4.3.2、自动组卷
在【在线练习――选择练习卷】窗口,单击【高级选项】则进入自动组卷模块:
11
左栏是科目,右栏是该科目的组卷参数配置,右栏下方显示该课程题量信息,如果组卷参数配
置不正确,会有弹出框提示,有如下四种情况的错误:
组卷参数配置正确后点击【自动组卷】生成一份满足要求的随机试卷,随机试卷的页面和传统
练习卷的页面基本一致,截图如下:
12
组卷算法的实现是在线考试子系统的一个难点,该算法的思想和流程由指导老师提供,自己实
现代码部分。
根据算法的参数配置,假设选择的课程代号为cid,题目类型代号为styles,难度系数为level,
所取题量为num。则所取的题目总的难度为level×num,步骤如下:
1、随机抽取满足该课程类型条件的题目一题,将该题号、题目难度系数添入临时表。
2、将总的难度减去之前抽取的题目难度。
3、剩下的难度总数如果在允许的范围内,则继续随机抽取临时表中没有的题目。允许的难度
范围的计算方法:最小值为(剩下的题量×单个题目难度系数最小值),最大值为(剩下
的题量×单个难度系数最大值)。
4、如果剩下的难度系数总数比难度允许范围最小值还小,则剩下的题目都抽取难度系数最小
的题目,如果剩下的难度系数总数比难度允许范围最大值还大,则剩下的题目都抽取难度
系数最大的题目。同样,这些题目在抽取时都要保证它们不在临时表中。
5、循环执行步骤2、3、4 直到题目抽取完成。
4.
4
密码修改
模块
在登陆窗口点击【密码修改】弹出密码修改窗口:
13
输入用户名和原密码及两次新密码,点击【确定】按钮修改,错误情况下弹出提示框:
密码修改成功后显示修改成功的信息,单击提示框的【确定】按钮关闭密码修改窗口。
14
存在的问题:
1、正式考试时,同一个时间段不允许有多门考试同时进行,这是当初概要分析时的一个逻辑
错误造成的。
2、为了降低自动组卷的难度,使用的组卷算法是其实一种伪算法,取出的试卷在难度上存在
少许偏差,偏差在可接受的范围内。
3、该系统现在还不能区分试题库中内容相似的题目,也就是说产生的试卷可能存在题目内容
雷同的情况,判断题目的雷同程度也是一个难点。
4、自动组卷供选择的参数不够多。
5、在线练习还无法自动改卷,一个可以替代的方法就是显示正确答案。
6、该系统在IE 浏览器下面才能正常的显示(在IE6 下表现最佳),在其他的浏览器(比如
FireFox)下的表现一塌糊涂。
7、程序方面:
a) 程序的数据层和应用层并没有严格的分开,可重用性和程序可读性都不强,虽然程序
注释块使用了标准的XML 格式。
b) 在线练习模块中显示某门课程的练习卷列表部分没有使用分页,一旦练习卷数量增大
(单门课程的练习卷数量达到300 份以上),页面的异步数据读取将会出现明显的延
迟,给用户造成“该课程没有练习卷”的假象,这无疑加大了后期系统的维护量。