APP下载

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

2016-06-30杨刚

电脑知识与技术 2016年14期

杨刚

摘要:考试是考查学生对知识掌握程度的主要方式之一,目前大多数院校采用的是传统的考试方式——卷面考试。为解决卷面考试周期长、工作量大、成本高、试卷管理难的缺点,该文设计了一个在线考试系统,该系统主要包括考试子系统和题库子系统。最后使用Django框架实现了该系统。

关键词:Django;在线考试系统;web

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)14-0040-03

考试是考查学生对知识掌握程度的主要方式之一,随着我国高等教育的不断发展,各个学校的规模再不断地扩大,在校生的人数也越来越多,考试的规模也就越来越大。目前大多数院校采用的是传统的考试方式——卷面考试。在大规模的考试中,这种方式暴露出了诸多的弊端:一、周期长,工作量大;二、成本高;三、试卷管理难。

1 在线考试系统的优势

计算机技术自问世以来,推动并深化了教育教学改革。在考试环节可以使用基于web的在线考试系统对学生的学习效果进行测试[1]。相对于卷面考试而言,在线考试系统的主要优势在于[6]:

1)保密性强

卷面考试的主要流程环节比较多,如命题、印刷试卷和领取试卷等,整个流程中参与人员众多,给保密带来一定的困难。而在线考试系统将所有试题都保存在数据库中,试卷在考试时由系统实时的根据组卷策略随机生成,有效地避免了相互抄袭的现象。还可以指定专人负责管理试题库,从而增强保密性。

2)客观性较强

由于同时生成多套随机试卷,可以客观地反映出考生对课程的掌握程度,保证了考试的客观准确性。采用卷面考试时,试卷整体覆盖面有限,容易形成小范围复习或猜题等倾向,影响了测试的客观性。

3)迅速准确

试卷中的客观题由系统自动评分,主观题由教师评阅,当所有主观题评阅完成后,试卷总分由系统统计,杜绝了人为的失误,迅速准确且提高了工作效率。

2在线考试系统的总体设计

本文设计的在线考试系统主要包括以下功能[6]:

1)支持多种题型,如单项选择题、多项选择题和判断题等客观题,以及填空、改错、简单、论述等主观题。

2)灵活的组卷策略,能够按照不同的要求生成相应的试卷。

3)考试时能够自动计时。

4)阅卷。

5)各类基础数据的维护。

为实现以上功能,本文设计的在线考试系统主要包括考试子系统和题库子系统。

2.1 题库子系统

题库子系统的用户是教师,其功能结构如图1所示。

1)试卷管理模块

每次考试时,每个考生的考题以及考生的答案,以及教师的评阅都会被存储为一个单独的文件,该文件被称为试卷。本模块的主要功能包括查阅试卷、备份试卷等。

2)试题管理模块

题库是在线考试系统的基石,本模块的主要功能是管理试题,主要的操作包括录入、查询、修改和删除试题,除此之外还提供批量操作的功能。

3)组卷管理模块

组卷是在线考试系统的核心功能之一[3],本模块的主要功能是根据教师设置的约束条件,通过算法来生成试卷。主要的约束条件包括试卷的难度、知识点覆盖率,题型以及题型比例等,教师可以根据学生的特点以及考试的目的等需求设置不同的值。

4)成绩管理模块

本模块的主要功能是对查询考生成绩。

5)统计分析模块

对试卷试题的分析可以为教师提供一个准确的反馈,为教师进行教学改革提供一个坚实的基础。本模块的主要功能有两个:试卷分析和试题分析。

试卷分析指的是对某次考试所有考生的成绩进行统计分析,如优秀率,不及格率等。

试题分析指的是对分析某道试题的难度以及区分度,通过统计所有考生对该题的得分情况,然后分析,从而得到对该试题的评价。

6)报表打印模块

本模块的主要功能是打印各种统计表格,如成绩分析、试题分析等。

2.2 在线考试子系统

其功能结构如图2所示:

1)用户登录模块

本模块的主要功能是验证用户,包括用户的身份是否合法和用户是否具有相应的权限。

2)在线考试模块

本模块的主要功能是,当考生登录后,从数据库中读取试卷供学生考试。在考试的过程中,会一直提示剩余的考试时间,当考试时间结束时,若果考试没有交卷,则系统会自动提交试卷。

3)分数查询模块

本模块的主要功能是向考生提供一个查询成绩的入口。

4)自动阅卷模块

试卷通常由客观题和主观题组成。本模块的主要功能是当考生提交试卷后,系统自动对客观题部分批阅。

5)在线阅卷模块

本模块的主要功能是教师批阅试卷的主观题部分,批阅完成后,主观题得分和客观题得分将被汇总计入学生成绩。

3系统实现

在众多web开发框架中,本文选择了Django框架。Django是一个用Python语言编写的MVC框架,它大而全,为web开发中的常见问题提供了很好的解决方案[4-5]。MVC模式中的C,即控制器,由Django自行处理,所以使用Django开发web应用时,主要的关注对象是MTV:Model(模型)、Template(模板)和Views(视图)。

3.1模型的设计

与其他Web技术不同的是,使用Django框架不需要先建立数据库表。Django自带了一套映射工具,使用Django的第一步是建立模型,当模型建立后,该映射工具可以根据模型自动生成数据库表。本系统的主要模型如下:

1)学生,它包括以下主要字段:

2)单选题模型,它包括以下主要字段:

[字段名\&说明\&id\&编号,主键\&course\&所属课程\&content\&题干\&img\&图片\&opA\&选项A\&opB\&选项B\&opC\&选项C\&opD\&选项D\&answer\&答案\&]

3)考试结果模型,它包括以下主要字段:

2.2 模版设计

在Django中,MVC模式中的视图功能被分解为视图和模版[4,5]。视图决定显示哪些数据,而模版决定如何显示这些数据。这样的分解,降低了模块之间的耦合度,更利于后期的维护,因为可以随时更换模版,而不影响程序的逻辑。本文设计的在线考试系统使用Html5和Jquery技术来开发模版。考试子系统的登录界面以及主界面如图3和图4所示。

2.3 视图设计

Django框架中的视图函数和URLconf机制实现了MVC模式中的控制器部分[4-5]。URLconf机制是使用正则表达式匹配URL,然后调用匹配的视图函数。视图函数的本质上是一个Python函数,它要求至少有一个request参数,例如在线考试子系统中生成试卷的视图:

def exam(request, course_id):

student = Student.objects.get(stuId=request.user.username)

course = Course.objects.get(pk=course_id)

result = Result.objects.filter(student=student).filter(

course=course).order_by('-id')

singles = sample(set(SingleChoice.objects.filter(course=course)), course.sCount)

yesnos = sample(set(YesNoQuestion.objects.filter(course=course)), course.yCount)

sAnswer = [];yAnswer = [];sList = [];yList = []

for index in range(0, course.sCount):

sAnswer.append(singles[index].answer)

sList.append('s' + str(singles[index].id))

for index in range(0, course.yCount):

yAnswer.append(yesnos[index].answer)

yList.append('y' + str(yesnos[index].id))

context = {'student':student,'course': course.name, 'singles': singles, 'yesnos': yesnos}

return render(request, 'exam/exam.html', context)

3 系统运行分析和结论

本系统完成后,于2012年开始应用于安徽职业技术学院信息工程系的部分基础课和专业课期末考试,以及学院往届毕业生的补考。目前共有3000余人次使用本系统考试,经测试,运行情况良好,证明本系统设计是成功的。

与传统的卷面考试相比,本文设计的在线考试系统最大限度排除了人为因素的作用,保证了考试的客观性、实时性、阅卷标准的一致性。使用在线考试系统,能够高效率、高质量地完成对考生的能力测评。

一人一卷是在线考试系统最大的特点,相邻考生之间试卷的不相同,因为试卷是系统实时的根据组卷策略生产的,因此考生之间就很难相互传递信息,从而避免了联合作弊现象的发生。

在传统的卷面考试中,考试的主要环节如试卷命题、试卷印刷、试卷评阅、试卷保管与保密和成绩汇总等,在每个环节中,学校要付出巨大的时间成本和经济成本。而使用在线考试系统组织考试,试卷评阅、成绩汇总等环节的也由系统自动完成,大大地节约了时间成本;而且也不存在试卷印制和运输、试卷保管等环节,节约了经济成本。虽然题库的建设,以及考场设备需要较大的投入,但是,这是中一次性的投入,当系统建成之后可多次重复使用,后续只需花费很小的维护成本。因此,总体看,在线考试具有较好的经济性,值得推广。

参考文献:

[1] 孙延靖.基于B/S模式的在线考试系统的实现[J].煤炭技术,2011(9):234-236.

[2] 贺荣,陈爽.在线组卷策略的研究与设计[J].计算机工程与设计,2011(6):2183-2186.

[3] 张桂英.标准化在线考试系统的设计与数据库建设[J].内蒙古农业大学学报,2012(Z1):5-6:222-225.

[4] 向光军.基于Django的数据持久化研究[J].楚雄师范学院学报,2013(6):28-33.

[5] 吴廷焰.基于Django的科研管理信息平台的研究与实现[J].科技信息,2011(35):146-147.

[6] 王昆.基于.NET的网上考试系统的设计与实现[D].济南:山东大学硕士学位论文,2013.