基于在线考试系统的实现
2020-09-10吴立峰丁陟凌
吴立峰 丁陟凌
摘要:本文基于高效学生和考试的需要。利用计算机技术实现在线考试系统的架构和设计,在现有成熟的模式基础上,以自适应考试的模式,形成了本系统。本系统在Windows XP下,以IIS5.1(lntemet InformationServer)网络信息服务为应用服务器,通过ASPNET(C#)、SQL Server 2000来进行专业开发,实现在线考试系统的应用,本系统采用WEB技术,采用的是三层体系(B/S)结构模型,即从用户端到服务器再到数据库的一个贯穿线,应该说安全性上还应用上都表现的不错;在功能上可以在相同水平的前提下实现随机生成试卷,可以有A\B卷,保证每套试卷的题目内容不同。同时还避免了“碰题”,即使碰上了顺序也打乱了。对于在线考试效率的提高和维护来说都性价比很高。
关键词:在线考试;ASP.NET;SQLServer;Browser/Server;C#
一、计算机配置与系统结构要求
(一)搭建ASP.NET开发适应环境
从“开始”进入到控制面板命令,双击网络图标,跳出来网络对话框;通过添加所需的组件来完成基础搭建军,并在供应商列表框中选微软提供的协议,而另外需要在网络协议列表框中点击TCP/IP协议选项,勾选后再单击确定“添加协议”完成涅黏出安装[1]。
(二)安装和配置IIS
安装HS进入通道与搭建ASPNET相同,在“添加或删除程序”里找到“添加或删除组件”选项,在弹出微软窗口后,在“Internet信息服务”这项中,点“详细信息”审查IIS所包含的各种组件[2]。
从“主目录”进入。主目录默认地址:“C:\inetpub\wwwroot”,权限为读取、记录访问和索引资源。
(三)题库管理
(1)试题分类进行类型管理,这里要实现的是五个方面:一是试卷类别的分类和细分;二是添加、删除、修改这三个基本的功能;三是如何做到排序不乱,这个很重要;四是应用功能的缓存时间的设计;五是基于题库自动更新的管理。
(2)考试试题进行分类管理,主要实现三个功能:一是试题的添加、删除以及修改;二是实现试题的选择;三是试题的A/B卷功能;
(3)试题答案要进行分类管理,主要实现三个功能:一是试题的答案的管理,需要满足添加、删除和修改和编辑的功能;二是试题答案的自我纠错功能;三是试题答案隐藏功能。
(四)在线答题
(1)在线答题过程中需要进行动态化随机处理,那么需要达成的效果是试卷的不同,也就是在使用随机函数动态过程中,要进行计复好不同试题从题库中生成整张试卷的能力。
(2)显示整套试题。
(五)系统功能模块划分
数据库、数据访问和业务逻辑层,是本系统统的几大构件。
从二大数据库、数据访问层及业务逻辑层的具体描述情况来看主要满足如下:
(1)数据库层是最为基本的系统数据的底层一级,它重要性就是要满足整个系统的稳定和系充在存储所有数据上的容量。
(2)数据访问层是动态化的结构,需要在数据库的运行基础上,应用程序通过该层访问数据库。从数据访问层的基本架构来看,对于数据库的基本的功能化选择、添加等操作能满足,同时也有权力对于数据更新和删除等操作可以进行重复。
UserDB类数据库的方法实现如下:
(六)在线答题
在线答疑模块是一个复杂的模块。系统首先根据试卷的总分、难度系数等来实答题模块的要求,并在生成一组随机试卷,并根据不同题型在答题页面上显示每个试题。随机组卷过程中有两个回归过程。右边的回归过程返回到随机生成试卷的状态。当不满足试卷类型条件时,会发生回归过程;左侧的回归过程返回随机获取试卷类型的状态。当不满足试卷类型条件时,会发生回归过程。对于系统中同一类型的试卷,其难度系数控制在最大难度系数和最小难度系数之间。
(七)表设计
1.角色表(Roles)
角色表存储用户的角色信息,字段说明如表I所示:
用户可以使用此表设置用户的角色。
2.考生表(Exammees)
通过存储的方式来实现考生表的静态功能,实现参加考试考生信息的表达,引用用户表Users的主键UserID作为该表的外键。考生表的字段说明如表2所示。
管理员(教师)登录后,可以通过此表查看考生参加的考试和考试成绩。创建考生表的SQL脚本文件如下:
USE test1
GO
Create Table Exammees
Kinds)
问题种类表存储问题种类的信息,如选择题和判断题。该表的字段说明如表3所示。
创建问题种类表的SQL脚本文件如下:
USE test1
存储在图片表里的相关信息,具体的字段说明请看表4所示。
创建图片表的SQL脚本文件如下:
USE test1
GO
Create Table Exarninees
(
系数值。表中的title字段指示问题的标题,系统使用该标题显示特定的问题、它仅用作问题标题的可选字段。由于问题的描述很长,标题字段不够。如果问题描述较短,也可以使用该字段。便于描述开发过程中boby字段的存储问题,它的型号为Text,可以存储很长的文本(见表5)
创建图片表的SQL脚本文件如下:
USE test1
Create Table Questions
存储于题库中的问题答案表对于答案信息的处理,该表的处理是通过引用问题表Question的QuestionID、图片表Pictures的PictureID作为表的外键。向題答案表的字段说明如表6所示。
二、具體设计及实现
(一)用户登录和注册
1.界面设计
用户登录通过loginl.aspx页面实现。它的代码脆藏文件是loginl.aspx.es文件。用户登录是应用程序的主要入口。用户只能通过此项进入系统。
由于用户有三种身份角色:考生、教师和管理员,在设计登录页面时·需要提供每一个角色相应的选择框。用户通过输入用户名和密码即可以登录界面使用。没有注册的当然也可以注册后再使用。
2.用户登录
用户“登录”后btnLogin_Cliek(),就开始了验证后实现用户登录的真实有效的过程。如果弹出密码错误对话框,那就说明登陆不对,需要进行调整,如果继续错误只能找回密码了。
3.用户注册
添加新用户有两种方法:一种是从后台用户管理添加用户,另一种是注册用户。用户注册只能添加候选用户,不能添加管理员用户。由于管理员用户可以直接进入系统后台管理界面,用户在前台注册该角色不安全,系统管理混乱系统数据安全受到威胁。下面介绍前台用户注册的实现。考虑到用户注册需要输入用户名、用户密码、用户邮箱等信息,我们可以设计。
添加新用户有两种方法:一种是从后台用户管理添加用户,另一种是注册用户。用户注册只能添加候选用户,不能添加管理员用户。由于管理员用户可以直接进入系统后台管理界面,用户在前台注册该角色不安全,系统管理混乱,系统数据安全受到威胁。下面介绍前台用户注册的实现。考虑到用户注朋需要输入用户名、用户密码、用户邮箱等信息,我们可以设计。
(二)题库设计
在这个界面中,用户作为管理员,实现了对判断题和多项选择题的管理,以及成绩管理和学生管理。
1.选择题管理
(1)数据绑定
通过页面selection.aspx来实现的,selection.aspx.cs是它的代码隐藏文件。
实现数据绑定的代码是:添加delete按钮,当用户点击该按钮时,触发event delete命令响应事件,
(2)修改试题
在DataGrid中添加编辑按钮,当用户单击该按钮时,事件EditCommand事件被触发从而响应该事件_
当用户不需要修改试题时,可以点击“取消”按钮,取消对试题的修改。此事件由cancelcommand事件响应,代码如下:
private void DataGridl_CanceiCommand(object source,System.Web.UI.WebControls.DataGrdCommandEventArgs e)
this.DataGndl.Editltemlndex=-1;
this.BindToDataGtid();
}
用户修改试题对应内容后,需要将修改后的内容发送到数据库,由事件UpdateCommand响应。代码如下:
private void DalaGridl_UpdateCommand(object source,System.Web.UI.WebControls.DataGndCommandEventArgs e)
}
(3)添加试题
当单击添加选择题时,页面转入选择题添加页面addSelect.aspx。如图7所示。
当用户单击提交按钮时,事件IbtnTijiao_Click()触发,该事件实现将管理员编写的题目添加到数据库中,其代码为:
private void lbtnTipao_Click(object sender,System.EvemAcgs e)
{
if(this.Is Valid)
{
cript'>alert('添加失败!');");
}
}
}
2.判断题管理
判断题管理由rightOrWrong.aspx页面实现,它的页面设计和功能实现的代码和选择题管理类似。
(三)在线答题实现
1.界面设计
系统的在线答题功能由页面kaoShi.aspx和页面examination.aspx实现,它们的代码隐藏文件分别为kaoShi.aspx.cs和examination.aspx.cs文件。
在随机生成试卷的过程中,应用程序首先调用函数CreateExammePaper()生成整套试卷。该函数递归调用自己,直到生成试卷。
private ArrayList CreateIntegerExaminePaper(int nTotalMark,int minDefficult,intmaxDefficult,ArrayList KindList)
{//定义函数的局部变量
if(KmdList.Count<=0)
{
return((ArrayList)null);st.Count;i++)
{//调用CreateSpecialKindQuestion函数生成特定题型
ArrayList tempList=CreateSpecialKindQuestion(((QuestionKinds)KindList[i]).KindNum,((QuestionKinds)KindList[i]).KindID);
for(intj=0;j { QuestionIDList.Add(tempList[j]); } } //添加到結果中 for(int k=0;k {//构造检查试卷的参数 allMark+=((QuestionDetails)QuestionIDList[k]).Mark; deffieultParm+=((QuestionDetails)QuestionIDList[k]).Mark* ((QuestionDetails)QuestionIDList[k]).Defficult; } //检查试卷是否成功,如果成功则中止该函数,否则递归调用 if(allMark==nTotalMark&&defficultParm>=100*minDefficult*QuestionIDList.Count&&defficultParm<=100*maxDefficult*QuestionIDList.Count) 2.在线答题 函数BindQuestionData()实现了上述页面初始化过程: private void BmdQuestionData() { ArrayList QuestionIDList=newArrayList(); if(Session[Session.SessionID+Session["UserName"].ToString()]!=null) { QuestionIDList=(ArrayList)Session[Session.SessionID+Session["UserName"].ToString()]; AnswcrDB answer=new AnswerDB(); Sq1DataReader reca=answer.GetAnswers(nQuestionID); radioList.DataSource=reca; radioList.DataTextField="Body"; radioList.Data ValueField="AnswerID"; radioList.DataBind(); reca.Close(); } 在数据绑定时,问题DataList控件触发事件QuestionList_ItemDataBound(),并在事件中调用函数BindAnswerList()绑定问题答案数据。绑定数据步骤如下: (1)通过参数。的函数FindControl()找到需要绑定数据的RadioButtonList控件,命名为answerList。 (2)判断answerList控件是否为空,若为空,则中止函数。 (3)若answerList控件不为空,则调用函数BindAnswerList()绑定answerList控件的答案数据。 事件QuestionList_ItemDataBound()代码如下: (1)提交试卷显示成绩 当用户点击交卷按钮后,应将用户的答题结果与试题答案进行对比,并给出相应的分值写入数据表,最后读取成绩表Grade中的记录集并显示考试得分。 三、测试运行与维护 (一)网站测试通过后再运行 (1)由不同的身份的操作者来进行全面的测试,同时还要测试检查在网站上所有链接是否合理和正确,功能是否能用,文字内容等是否有错误,还有UI等效果是否正确,有美学价值。 (2)在测试中要对于整个网站应该有一个完整的架构来进行对比,特别是网站上的栏目结构图和栏目的功能和表达的内容是否合适,它应该清楚地表达各个网站之间的协调关系。 (二)网站的维护很重要 (1)维护服务器及相关软硬件,评估可能出现的问题,制定响应时间。 (2)数据库维护,有效利用数据是网站维护的重要组成部分,数据库维护应引起重视。 参考文献: [1]邹建峰.ASPNE7开发技术详解[M].人民邮电出版社,2005. [2]周良忠.C#精髓[M].人民邮电出版社,2002. [3]刘爱民.基于.net技术的在线考试系统的设计与实现[J].电脑开发与应用,2011(07).