在线考试系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在线考试系统的设计与实现
摘要:随着企业信息化不断推进,办公信息化在企业日常工作中发挥越来越大的作用。结合实际,提出建设在线考试系统平台,更加方便快捷地组织考试以及阅卷工作。在线考试系统采用、JavaScript等技术编写实现,使用该系统无需印制大量纸质试卷,并在试卷提交后可对考题进行自动评阅。
关键词:信息化,考试系统,在线考试
Design and Implementation of Online Exam System
【Abstract】With the development of enterprise information, office information plays an increasing important role in enterprise daily work. Taking into account of the actual situation, the company proposed the building of online exam system, which could organize examination and marking work faster and more convenient. Online exam system is developed with and JavaScript; there is no need to print lots of papers, papers will be reviewed automatically after submission.
【Key words】information, exam system, online exam
1 引言
目前,企业组织考试的传统方法需印制大量纸质试卷,考生完成答题后,需组织人员进行试卷评阅以及成绩统计分析等工作。随着企业的发展,各种培训及对应的考试越来越多,传统考试方式耗费大量的人力物力,不能满足企业发展的需要。通过信息化手段,编制在线考试系统可以解决传统考试组织过程中的问题。在线考试系统不仅可以避免印制大量纸质试卷,系统自动阅卷功能还可以节省大量的人力,在线考试系统对企业的信息化工作将有很大的推动作用。
2 系统设计
根据企业实际需求,确定在线考试系统应具备以下功能:
(1)题库可通过手工输入导入,也可通过Excel文件导入;
(2)支持随机抽题、手工选题以及手工输入三种出卷方式;
(3)考试过程中,用户可对答案进行保存,防止意外事件导致系统关闭;
(4)用户考试期间,页面禁止刷新、右键菜单等操作;
(5)试卷提交后,系统对考题进行自动评阅;
(6)系统具备成绩统计功能,如考试参加率、考试通过率等;
(7)提供成绩查询以及成绩导出Excel功能;
(8)试卷评分后,考生可查看试题正确答案,错题用标记标出。
系统使用三级权限管理:普通用户、部门管理员以及超级管理员。普通用户登录系统可参加考试、查看历史试卷及成绩;部门管理员可以管理本部门题库及试卷;超级管理员可以管理所有题库以及试题,还可以管理部门管理员。
在线考试系统结构图如图1所示。部门管理员/超级管理员登录界面分为5个子模块:系统管理、题库管理、试卷管理、考试安排以及我的账号。系统管理模块可以查询企业当前人员情况,实时更新当前人员情况,超级管理员可以为部门分配部门管理员。题库管理模块可以手工增加试题,也可以通过Excel文件批量导入试题。试卷管理模块分为手工选题、随机抽题及手工输入三个子模块。手工选题可以从题库中选择试题组成试卷。随机抽题可为每位考生生成不同试卷。手工输入试卷可以在试卷中插入图片、表格等,主要用于论述题为主的试卷。考试安排模块分为考试安排、评卷管理及成绩管理三个子模块。考试安排模块可以查看当前进行中的考试。评卷管理模块可以评阅已经提交的试卷。成绩管理模块可以对试卷成绩进行查询和统计。
图1在线考试系统结构图
3 系统实现与关键技术
在线考试系统主要采用 以及JavaScript 等技术实现,数据库采用SQL Server 2008。系统界面如图2所示。
图2在线考试系统界面
在线考试系统填空题每道含有空数不定,给出题者处理试卷考分分布带来麻烦;大量题库的手工输入导入需耗费大量时间。本系统设计了针对这些问题的设计了随机选择填空题的算法Random_FillBlank 与Excel 导入题库的方法,方便用户选择填空题与批量导入大量试题。 3.1 Random_FillBlank 算法
算法主要思想为:统计好题库中每道填空题的空数以及每种空数对应题目数;出题者指定填空题总道数、总空数;系统通过递归算法(CreateSubjectTree)构造出所有可行的方案树;系统自动从方案树中选择一套可行方案的填空题组合(GetRandomProject);根据组合从数据库中随机选择对应空数对应道数的填空题组成试卷。算法主要代码实现如下: private bool CreateSubjectTree (int sum, int spacenum, int count, ref SubjectTreeNode node, ref List
if (spacenum == 1 && sum == count * GroupSum[spacenum - 1].Key) { SubjectTreeNode nodechild = new SubjectTreeNode(); nodechild.count = count;
nodechild.num = GroupSum[spacenum - 1].Key; //将不满足的条件过滤
if (count > GroupSum[spacenum - 1].Value){
return false; }
node.child.Add(nodechild);
return true; }
else if (spacenum == 1 && sum != count * GroupSum[spacenum - 1].Key){
return false; } //获取该空格数的可能出现的最大题目数
int len = (int)((sum - count) / (GroupSum[spacenum - 1].Key - 1));
if (len > GroupSum[spacenum - 1].Value)
len = GroupSum[spacenum - 1].Value;
if (len > count) len = count;
for (int k = 0; k <= len; k++){
SubjectTreeNode nodefather = new SubjectTreeNode();
nodefather.count = k;
nodefather.num = GroupSum[spacenum - 1].Key;
breturn = CreateSubjectTree(sum - k * GroupSum[spacenum - 1].Key, spacenum - 1, count - k, ref nodefather, ref GroupSum);
if (breturn) //将不满足的条件过滤
node.child.Add(nodefather); }
return breturn;
}
/// 在方案树中走随机路线获取解决方案
private string GetRandomProject(ref SubjectTreeNode node){
string strproject = "";
SubjectTreeNode temp = node;
while (true){
if (temp.child.Count == 0) break;
Random ra = new Random();
int num = ra.Next(0, temp.child.Count);
temp = temp.child[num];
if (strproject == ""){
strproject = temp.count.ToString();}
else{
strproject = strproject + ";"+ temp.count;}
return strproject;
}
根据题库中已有试题,算法会随机从可行方案中选择一套组成填空题。如图3所示,出题者指定10道总计30空填空题,系统从方案树中选择4道2空题、2道3空题、4道4空题的方案。用户点击参加考试,系统从题库中随机挑选对应空数道数的填空题组成试卷。
图3填空题随机组题
3.2 Excel导入题库