在线阅卷:主要是对前台在线考试模块的补充,因为像选择题这种客观题,只需要和数据库正确答案比对一下,结果就知晓了。但针对一些主观题目,需要在线阅卷模块的支持,另外,为了判分的准确性和灵活性,也需要在线阅卷模块对用户的答题情况进行详细地了解,对用户的试卷进行判定。
3.3 系统功能实现
前台部分,包括两个模块:在线考试、自动阅卷。
(1) 在线考试
首先,要进入自动出卷考试登录系统,在登录系统中,前台是用DIV+CSS[1]布局的,学生登录之后,进入选择考试科目页面,在此页面,考试科目是用代码绑定数据源,运用SqlDataAdapter、DataSet进行绑定[2],而且属于哪个专业的学生,只能选择所属专业下的考试科目,这个是由SQL语句控制的。正确选择考试科目,进入在线考试系统,标题栏会显示考生的信息(学号、姓名、专业、系别),考试会有时间限制,超过考试时间自动交卷,这个是由JavaScript实现的[3]。然后系统自动组卷,这个模块是由数据库自带的随机函数newid()来获取一些符合需要的题目编号id,通过SQL语句,SqlDataAdapter和DataSet来完成考试题目的读取。
(2) 自动阅卷
学生登录之后,用Session保存用户名,在考试页面要根据这个Session保存的用户名来获取考生信息。试卷分为选择题、填空题和问答题,选择题是属于客观题,有固定答案,为了节省教师的时间和精力,所以只要和数据库中的正确答案比较一下,得分就能出来。这段是运用ADO.NET连接数据库,用SQL语句和DataReader,通过循环的方式获取出来,然后与学生做的答案做比较,计算考试分数,保存到数据库[4]。
后台部分,包括四个模块:用户管理、科目管理、试题管理、在线阅卷。后台主页面是由DIV+CSS设计而成的,分为头部、左侧、右侧。其中用到了Iframe框架,左侧用的是TreeView控件,右侧框架命名为rightFrame,在TreeView中添加多个子节点,设置这些子节点所链接页面的Target属性为rightFrame,即这些页面在右侧显示,而头部和左侧不会变[5]。其页面如图4所示。
图4 后台主页面
(1) 用户管理
管理员可以对用户的资料进行查看、添加、删除。因为该系统比较注重在线考试模块,所以对于这个模块就简单了一点。模块使用的是GridView绑定数据源[6],由于要联三个表查询,不能直接选择某个表进行绑定,所以用的是SQL语句绑定,用string key = GridView1.DataKeys[e.RowIndex].Value.ToString(); 来获取当前学生的id自增列的编号,通过获取的这个id编号,运用SQL语句和Command对象,进行删除[7]。
(2) 科目管理
管理员可以对考试科目进行三种操作:查询科目、添加科目、删除科目。这些操作,是经过两个DropDownList联动来控制科目的属性,把DropDownList的AutoPostBack属性设为true,表示刷新一次。用SQL语句和Command对象对数据库进行操作[8]。
(3) 试题管理
管理员可以对题库中的试题进行四种基本操作:查询试题、添加试题、删除试题、修改试题。这些操作,都是通过两重选项,首先要选择哪门科目,然后要选择题型。两重选择都是用控件DropDownList来控制试题的属性,然后再SelectIndexChanged事件中写代码[9],用SqlDataAdapter,DataSet绑定数据库[10],然后对数据进行操作。
(4) 在线阅卷
在线考试模块中,随机获取的试题保存到数据库,这就方便了在线阅卷模块,只需用SQL语句和SqlDataReader读出来[11],让教师根据正确答案给分值即可。在每个填空题的后面,有个RadioButtonList,点击正确,分数框里面加2分,问答题后面有个TextBox,因为问答题主观性比较强,所以每题分数是教师输入进去的。然后,通过SQL语句和Command对象,把分数框中的分数保存到数据库中[12]。 基于.NET的自动出卷考试系统的设计与实现(3):http://www.751com.cn/jisuanji/lunwen_3545.html