论文部分内容阅读
摘要:考试模块是高中信息技术学业水平考试系统的核心模块,考生通过帐号、密码登录后,选择考试场次,确认个人信息后等待管理员发出开考指令,开考指令发出后,考生可以进入考试,考试题目类型与广西高中信息技术学业水平考试一模一样,考生完成考试后点击交卷,系统自动统计成绩,再上传服务器。系统的运用将有助于高中学生提高信息素养,提高学考优秀率。
关键词:考试;关键代码;函数;SQL;SERVER
高中信息技术学业水平考试系统使用VB6.0作为编程语言,后台数据库使用SQL SERVER2005及ACCESS数据库,考试模块是整个系统的核心模块。该模块从考生登录验证、选择考试场次、等待考试指令,管理员发出指令后进入考试,考试完成后交卷、评分,整个过程涉及很多关键技术。通过努力,最终设计出界面友好、操作方便,运行稳定的高中信息技术学业水平考试系统。考试模块的设计简述如下:
一、考试流程
整个考试流程有八个步骤,分别是:考生登录→选择考试→选择考试场次→确认考生信息→等待考试指令→进入考试→答题→交卷。
需要说明的是:第一,考试场次是管理员负责设置的,为了避免考生选错考试场次,要求管理员每一时刻只有一場考试,通过删除旧的,添加新的达到此需求。第二,考生进入到“等待考试指令”窗口,等待管理员发出“开考”指令,考生才能进入到考试界面。管理员发出“开考”指令之前,监考员可以核对考生信息,预防代考,管理员在服务器上查看考生状态,全部处于“等待考试”状态,而且监考员核对考生信息后可以作出“开考”指令,考生即可自动进入考试状态,开始答题,完成答题后,通过“交卷”按钮完成考试。
二、考试界面设计
考试类型有四种,分别是单选题、多选题、简答题、程序题,使用SSTab控件,选项卡有4个,对应四种考试类型,如下图
考试界面分为四个区域,顶上是信息显示区,利用标签控件显示考生的证件号、姓名、考试科目、考试场次以及显示考生相片,利用一个标签控件显示剩余的考试时间,同时利用进度条控件显示已用的考试用时。界面左下侧为答题区,利用SSTab控件分4个选项卡分别显示单选题、多选题、简答题、程序题,每一个选项卡显示一个题目与答案选项。界面右下侧为答题记录区,也是利用SSTab控件分4个选项卡分别显示单选题、多选题、简答题、程序题的答题情况,主要显示题目号、状态、考生的答案。状态有三种,空白表示没做,“√”表示已做,“?”表示已经做,但对答案有疑问,以便考生回头检查进一步确认作答。答题区与答题记录区之间是功能区,主要功能是通过“上一题”、“下一题”按钮浏览题目,通过“标识本题”对作答不确定的题目进行标识;还有一个就是“交卷”按钮让考生完成考试后进行交卷操作,当然如果考试时间已到,系统是自动交卷的。还利用ComboBox控件实现输入法的选择。
为了方便考生操作答题,程序实现答题区、功能按钮、答题记录区的三者有机联动。在答题区单击任意一个选项卡,答题记录区自动切换到对应的选项卡,比如,单击答题区的“程序题”选项卡,答题记录区自动切换到“程序题”,反之,点击答题记录区的某一选项卡,答题区就会自动切换到对应的选项卡。在某一选项卡中浏览题目可以通过“上一题”、“下一题”按钮,还可以通过答题记录区的表格实现题目的切换,即单击答题记录区的表格的任意一行,答题区就会自动显示对应的题目。方便考生切换题目,快速完成答题。
三、设计重点、难点
1.随机生成试题及答案 考试设计有两种方式,一种方式是全库随机生成考试题目,另一种方式是按场次随机生成考试题目。两种考试的方式都是先从SQL SERVER数据库中复制对应的题目到客户机的ACEESS数据库对应的数据表,然后再随机生成考试题目。
全库随机生成考试题目的考试方式是在考试题库里根据考试的四种题目类别及各类别的题量随机生成题目。由于题库量大,所以同一场考试不同的考生题目不一定相同,即使考试题目有相同的,题目的顺序也是随机的,答案顺序也随机,这样可以预防相邻考生间的作弊。不足之处,成绩可比性是一个问题。广西学业水平考试有一个特点,单项选择为了保证必修与选修的分值比例,1~43为必修内容,44~60题为选修内容。我们设计题目的时候也遵循这一规律,生成试题的时候先从提取每一套题的必修题出来,再进行随机生成43个题目,然后再提取每一套题的选修题出来,随机生成17个题目,题目也是44~60。
按场次随机生成题目的方式是由管理员指定每一场次的考试对应的考试题目。程序再根据考试场次随机生成题号和答案选项。这样的考试,保证同一场考试的考试内容完全相同,但为了预防作弊,不同考生的考试题目出现的先后不同,即使相同,答案选项也打乱,即尽可能不相同了。
随机生成题目的关键代码如下:
Public Sub newrandthprg(rsrand, tmlbvar, chtl)
’*****随机产生题号,存放于数组中***********
Dim a() As Integer:ReDim a(chtl) As Integer:i = 0
Do While i < chtl
randway1:
Randomize
a(i) = Int(Rnd() * rsrand.RecordCount) 1
If i >= 1 Then
For p = 0 To i - 1
If a(p) = a(i) Then ’随机数相同,重新生成。
GoTo randway1
End If
Next p
End If
i = i 1 Loop
……(省略移动记录指针,把新题号存入ks_th字段中,并调用调换ABCD答案选项的函数)
End Sub
不同的考试方式,通过选择不同记录集,然后再调用这一个函数就可以了实现题目随机、答案选项随机。
2.预防作弊
利用计算机来考计算机,如果没有对应的措施,那么考生就可以利用计算机及网络进行作弊,如何预防考生作弊,摆在了突出的位置上。如何预防考生作弊呢?除了第1点随机生成题目和答案选项外,还采用以下几种方法来实现。
(1)窗体置前及窗体无标题
(2)禁用任务栏快捷方式
(3)屏蔽CTRL ALT DEL、CTRL ESC、CTRL E
(4)禁用“窗口键”
鉴于篇幅所限,同时本人已经在杂志《读写算素质教育论坛》2016年第6期发表的论文《新课程下高中信息技术上机测试管理系统——考试模块的设计》已经述说,请参考。
3.读图题的处理
(1)图片文件的命名规则。图片的命名规则是题目套数 题号,如201701套第05题的图片,其图片文件名为20170105.jpg,原图以流文件的方式保存在SQL SERVER 2005数据库的数据表中,考试时以这样的命名规则下载保存到程序所在的文件夹下的temp1文件夹里,显示的时候再利用 LoadPicture(“文件全名”),装载到image控件中的picture属性中。文件全名是指包括路径、文件名、扩展名。
(2)显示图片。在考试界面设计的截图可以看出,题目显示空间不大,再显示图片,空间更小,而且截图有大有小,为了不影响题目、答案选项的显示,需要把大的图片缩小再显示,利用image控件的move方法就可以按比例缩小,当然这里的image控件的stretch属性设置为true。有些图片太小或图片缩小后,考生看出来吃力或看不清楚,这时候需要放大。设计的时候,通过设计image控件的单击事件,单击图片后,显示放大图片的窗体,这个窗体就一个image控件,设计其stretch为假。这个窗体可以移动,可以最大化,这样可以解决遮挡题目的不足之处。
4.统计成绩
统计成绩是在考生确认交卷后才统计,因此是在另一个窗体中实现。单项选择题的分数统计很简单,将考生作答的答案与标准答案比对,对就得1分,错就得0分,再累加就可以了。多选题的评分标准是:选错不得分,全对得2分,漏选不错得1分。这样就增加了统分的难度,基本算法是:把标准答案分离出来并存放于数组中,然后按ABCD的顺序排序;其次是分离考生答案,分别存放于另一个数组中;最后是评分,通过循环语句和判断语句实现。判断是关鍵,首先判断标准答案与考生的答案是否完全相同,完全相同加2分,否则再判断两者长度是否一样,如果不样长,再利用InStr函数来在标准答案中逐个比对考生各个子答案(已经分离出来放在数组中),并设计一个标记并初始化为True,如果有错,标记为False,记0分。如果比对完某一题学生的子答案,标记然后为True,记1分。因为每一道多选题都要做同样的处理,所以把程序设计成一个函数,方便调用。
简答题与程序题需要考生输入答案,如果答案是标准的唯一的,评分就容易,但如果答案不唯一,就增加了评分的难度,设计程序时,也要考虑到这种情况,实际上,简答题和程序经常会有两到三种答案的题目,例如,在统计B2到E2的总分时,就可以有两种答案,一个是答案=sum(B2:E2),另一个答案是=B2 C2 D2 E2。如何实现这两类题目的评分呢?这两类题目,每小题有三空,每空两分。标准答案只有一个字段存放,所以首先对标准答案进行约定,每一空如果有多个答案,用“或”字分开,空与空之间,用英文的分号分开。编写了一个函数,实现这两类型的评分。这个函数编程思路是这样的:首先利用Split函数把标准答案和考生答案逐个分离出来,并存放在两个数组中,再进行比对,对得2分,不对得0分。
四、总结
考试模块是整个系统的关键所在,程序设计也比较复杂,考虑的问题是多方面的,以上所述的也只是比较关键比较难的问题,在设计过程花的时间很多,有些问题还真是花费大量的时间来学习与处理。经过努力,终于完成了软件的设计。经过运行测试以及应用,系统运行稳定健壮,界面美观大方,人性化设计,操作方便。系统的应用一定能提高考生的信息素养的大幅度提升。
参考文献:
[1] 管丽娜白海波《实用Visual Basic6教程》[M].北京:清华大学出版社,2001.
[2]曹军生等《SQL Server2000实用教程》北京理工大学出版社2001年9月
(作者单位:广西横县横州中学 530300)
关键词:考试;关键代码;函数;SQL;SERVER
高中信息技术学业水平考试系统使用VB6.0作为编程语言,后台数据库使用SQL SERVER2005及ACCESS数据库,考试模块是整个系统的核心模块。该模块从考生登录验证、选择考试场次、等待考试指令,管理员发出指令后进入考试,考试完成后交卷、评分,整个过程涉及很多关键技术。通过努力,最终设计出界面友好、操作方便,运行稳定的高中信息技术学业水平考试系统。考试模块的设计简述如下:
一、考试流程
整个考试流程有八个步骤,分别是:考生登录→选择考试→选择考试场次→确认考生信息→等待考试指令→进入考试→答题→交卷。
需要说明的是:第一,考试场次是管理员负责设置的,为了避免考生选错考试场次,要求管理员每一时刻只有一場考试,通过删除旧的,添加新的达到此需求。第二,考生进入到“等待考试指令”窗口,等待管理员发出“开考”指令,考生才能进入到考试界面。管理员发出“开考”指令之前,监考员可以核对考生信息,预防代考,管理员在服务器上查看考生状态,全部处于“等待考试”状态,而且监考员核对考生信息后可以作出“开考”指令,考生即可自动进入考试状态,开始答题,完成答题后,通过“交卷”按钮完成考试。
二、考试界面设计
考试类型有四种,分别是单选题、多选题、简答题、程序题,使用SSTab控件,选项卡有4个,对应四种考试类型,如下图
考试界面分为四个区域,顶上是信息显示区,利用标签控件显示考生的证件号、姓名、考试科目、考试场次以及显示考生相片,利用一个标签控件显示剩余的考试时间,同时利用进度条控件显示已用的考试用时。界面左下侧为答题区,利用SSTab控件分4个选项卡分别显示单选题、多选题、简答题、程序题,每一个选项卡显示一个题目与答案选项。界面右下侧为答题记录区,也是利用SSTab控件分4个选项卡分别显示单选题、多选题、简答题、程序题的答题情况,主要显示题目号、状态、考生的答案。状态有三种,空白表示没做,“√”表示已做,“?”表示已经做,但对答案有疑问,以便考生回头检查进一步确认作答。答题区与答题记录区之间是功能区,主要功能是通过“上一题”、“下一题”按钮浏览题目,通过“标识本题”对作答不确定的题目进行标识;还有一个就是“交卷”按钮让考生完成考试后进行交卷操作,当然如果考试时间已到,系统是自动交卷的。还利用ComboBox控件实现输入法的选择。
为了方便考生操作答题,程序实现答题区、功能按钮、答题记录区的三者有机联动。在答题区单击任意一个选项卡,答题记录区自动切换到对应的选项卡,比如,单击答题区的“程序题”选项卡,答题记录区自动切换到“程序题”,反之,点击答题记录区的某一选项卡,答题区就会自动切换到对应的选项卡。在某一选项卡中浏览题目可以通过“上一题”、“下一题”按钮,还可以通过答题记录区的表格实现题目的切换,即单击答题记录区的表格的任意一行,答题区就会自动显示对应的题目。方便考生切换题目,快速完成答题。
三、设计重点、难点
1.随机生成试题及答案 考试设计有两种方式,一种方式是全库随机生成考试题目,另一种方式是按场次随机生成考试题目。两种考试的方式都是先从SQL SERVER数据库中复制对应的题目到客户机的ACEESS数据库对应的数据表,然后再随机生成考试题目。
全库随机生成考试题目的考试方式是在考试题库里根据考试的四种题目类别及各类别的题量随机生成题目。由于题库量大,所以同一场考试不同的考生题目不一定相同,即使考试题目有相同的,题目的顺序也是随机的,答案顺序也随机,这样可以预防相邻考生间的作弊。不足之处,成绩可比性是一个问题。广西学业水平考试有一个特点,单项选择为了保证必修与选修的分值比例,1~43为必修内容,44~60题为选修内容。我们设计题目的时候也遵循这一规律,生成试题的时候先从提取每一套题的必修题出来,再进行随机生成43个题目,然后再提取每一套题的选修题出来,随机生成17个题目,题目也是44~60。
按场次随机生成题目的方式是由管理员指定每一场次的考试对应的考试题目。程序再根据考试场次随机生成题号和答案选项。这样的考试,保证同一场考试的考试内容完全相同,但为了预防作弊,不同考生的考试题目出现的先后不同,即使相同,答案选项也打乱,即尽可能不相同了。
随机生成题目的关键代码如下:
Public Sub newrandthprg(rsrand, tmlbvar, chtl)
’*****随机产生题号,存放于数组中***********
Dim a() As Integer:ReDim a(chtl) As Integer:i = 0
Do While i < chtl
randway1:
Randomize
a(i) = Int(Rnd() * rsrand.RecordCount) 1
If i >= 1 Then
For p = 0 To i - 1
If a(p) = a(i) Then ’随机数相同,重新生成。
GoTo randway1
End If
Next p
End If
i = i 1 Loop
……(省略移动记录指针,把新题号存入ks_th字段中,并调用调换ABCD答案选项的函数)
End Sub
不同的考试方式,通过选择不同记录集,然后再调用这一个函数就可以了实现题目随机、答案选项随机。
2.预防作弊
利用计算机来考计算机,如果没有对应的措施,那么考生就可以利用计算机及网络进行作弊,如何预防考生作弊,摆在了突出的位置上。如何预防考生作弊呢?除了第1点随机生成题目和答案选项外,还采用以下几种方法来实现。
(1)窗体置前及窗体无标题
(2)禁用任务栏快捷方式
(3)屏蔽CTRL ALT DEL、CTRL ESC、CTRL E
(4)禁用“窗口键”
鉴于篇幅所限,同时本人已经在杂志《读写算素质教育论坛》2016年第6期发表的论文《新课程下高中信息技术上机测试管理系统——考试模块的设计》已经述说,请参考。
3.读图题的处理
(1)图片文件的命名规则。图片的命名规则是题目套数 题号,如201701套第05题的图片,其图片文件名为20170105.jpg,原图以流文件的方式保存在SQL SERVER 2005数据库的数据表中,考试时以这样的命名规则下载保存到程序所在的文件夹下的temp1文件夹里,显示的时候再利用 LoadPicture(“文件全名”),装载到image控件中的picture属性中。文件全名是指包括路径、文件名、扩展名。
(2)显示图片。在考试界面设计的截图可以看出,题目显示空间不大,再显示图片,空间更小,而且截图有大有小,为了不影响题目、答案选项的显示,需要把大的图片缩小再显示,利用image控件的move方法就可以按比例缩小,当然这里的image控件的stretch属性设置为true。有些图片太小或图片缩小后,考生看出来吃力或看不清楚,这时候需要放大。设计的时候,通过设计image控件的单击事件,单击图片后,显示放大图片的窗体,这个窗体就一个image控件,设计其stretch为假。这个窗体可以移动,可以最大化,这样可以解决遮挡题目的不足之处。
4.统计成绩
统计成绩是在考生确认交卷后才统计,因此是在另一个窗体中实现。单项选择题的分数统计很简单,将考生作答的答案与标准答案比对,对就得1分,错就得0分,再累加就可以了。多选题的评分标准是:选错不得分,全对得2分,漏选不错得1分。这样就增加了统分的难度,基本算法是:把标准答案分离出来并存放于数组中,然后按ABCD的顺序排序;其次是分离考生答案,分别存放于另一个数组中;最后是评分,通过循环语句和判断语句实现。判断是关鍵,首先判断标准答案与考生的答案是否完全相同,完全相同加2分,否则再判断两者长度是否一样,如果不样长,再利用InStr函数来在标准答案中逐个比对考生各个子答案(已经分离出来放在数组中),并设计一个标记并初始化为True,如果有错,标记为False,记0分。如果比对完某一题学生的子答案,标记然后为True,记1分。因为每一道多选题都要做同样的处理,所以把程序设计成一个函数,方便调用。
简答题与程序题需要考生输入答案,如果答案是标准的唯一的,评分就容易,但如果答案不唯一,就增加了评分的难度,设计程序时,也要考虑到这种情况,实际上,简答题和程序经常会有两到三种答案的题目,例如,在统计B2到E2的总分时,就可以有两种答案,一个是答案=sum(B2:E2),另一个答案是=B2 C2 D2 E2。如何实现这两类题目的评分呢?这两类题目,每小题有三空,每空两分。标准答案只有一个字段存放,所以首先对标准答案进行约定,每一空如果有多个答案,用“或”字分开,空与空之间,用英文的分号分开。编写了一个函数,实现这两类型的评分。这个函数编程思路是这样的:首先利用Split函数把标准答案和考生答案逐个分离出来,并存放在两个数组中,再进行比对,对得2分,不对得0分。
四、总结
考试模块是整个系统的关键所在,程序设计也比较复杂,考虑的问题是多方面的,以上所述的也只是比较关键比较难的问题,在设计过程花的时间很多,有些问题还真是花费大量的时间来学习与处理。经过努力,终于完成了软件的设计。经过运行测试以及应用,系统运行稳定健壮,界面美观大方,人性化设计,操作方便。系统的应用一定能提高考生的信息素养的大幅度提升。
参考文献:
[1] 管丽娜白海波《实用Visual Basic6教程》[M].北京:清华大学出版社,2001.
[2]曹军生等《SQL Server2000实用教程》北京理工大学出版社2001年9月
(作者单位:广西横县横州中学 530300)