摘 要
本文探讨了无纸化考试系统的设计与具体实现,介绍了利用VB开发ACCESS无纸化考试系统的关键问题,给出了一种在微机中对ACCESS数据库的理论知识与操作技能进行无纸化考试与智能阅卷的解决方法,并就目前无纸化考试系统存在的问题进行了探讨。
关键词:无纸化考试 数据库 智能阅卷 RTF 数据流
VB in examination system's application
Abstract
This article describe the design and Imp lementation method of the test system without paper, which includes the introduction of key point to develop test system without paper based on VisualBasic, a method to resolve the test system without paper and intelligent estimating - grade for theory and operation skill aboutAccess database in microcomputer.What ismore, discuss the problems existing in current test system without paper.
Keywords: Test system without paper;Database; Intelligent Estimating - grade System; RTF; Data Stream
目 录
1 引言
1.1 设计背景
2 考试系统设计要点
3 系统分析
3.1 系统组成
3.2 数据库设计
4 系统设计
4.1 系统功能模块的实现
4.1.1 登陆功能的实现
4.1.2 自动创建数据库和库表的实现
4.1.3 自动组卷的实现
4.1.4 学生答题和试卷参考的实现
4.2 数据流程
4.3 软件开发中的关键问题及解决的方法
4.3.1 试题库的建立和管理
4.3.2 随机成卷系统
4.3.3 考试环境的生成
4.3.4 系统评分
5 结语
参考文献
致谢
1 引言
1.1设计背景
目前许多的专业考试已经由笔试转变为计算机网络考试的形式进行。计算机在线考试系统与传统的笔试相比,有多方面的优势。首先,可以省去试卷印刷的费用,减轻教师阅卷的负担,加快考试进程。其二,可以充分发挥计算机在信息处理方面的优势。例如:建立海量的题库供将来使用;对考试结果作统计保存,提供有价值的信息。本文主要讨论计算机考试系统的考试控制子系统和题库管理子系统的设计与实现。下面我们就分章节从系统设计、系统实现、系统的运行、测试系统的安全性和系统的特点等几个方面进行分析。
网络技术的飞速发展,使现在很多国外的大学和社会其他部门都已经开设了远程教育,通过计算机网络实现异地教育和培训。现在,计算机硬件技术的发展已经达到了相当高的水平。但是,远程教育软件的开发目前还处于起步阶段,随着这项技术的不断深入发展,就要求有更好、更完善的软件系统应用到远程教育当中去,这就给软件设计人员提出了更高的设计要求。
远程教育包括很多环节,例如教学系统、答疑系统和考试系统等等。其中很重要的一个环节就是在线考试系统,同时它也是最难实现的环节。在我国,虽然远程教育已经蓬勃地发展起来,但是目前学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即人工出题、考生考试、人工阅卷、成绩评估和试卷分析。显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且其工作将是一件十分烦琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的需要。随着计算机应用的迅猛发展,网络应用不断扩大,如远程教育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。人们迫切要求利用这些技术来进行在线考试,以减轻教师的工作负担及提高工作效率,与此同时也提高了考试的高效率。
考试是教学过程中必不可缺的重要环节,是对学生所学课程知识掌握程度和灵活运用的综合考核,也是检验教师的教学效果和教学水平的重要指标。如何科学、客观地对学生进行测试,一直是教育界的焦点问题之一。随着教学改革的深化,许多学校都在实施学生自主选课;教考分离、弹性学制等方面的教学改革。
开发考试系统,从试题库中随机抽取试题文件,并自动生成试卷,可以帮助教师从繁重的手工出题、组卷考试的劳动中解脱出来;同时对树立良好的学风,建立规范的教学质量监控系统都是行之有效的。
随着全国计算机等级考试ACCESS语种的开考及有关部门对高等学校数据库课Visual FoxPro语种向ACCESS语种的倾斜,新一轮ACCESS数据库学习的热潮将会掀起。由于传统教学方法中主要考查的是学生的理论知识,对操作技能反映不够,致使学生学习兴趣调动不够、开发能力受到了质疑,特别是随着互联网的发展,无纸化办公、高考网上阅卷的开展、面向对象程序设计语言的普遍开设,为计算机语言无纸化考试创造了良好的外部环境,很多教师近年来在这方面作了许多有益的尝试,取得了很好的经济与社会效益,可以说,无纸化考试是顺应社会发展的一个产物,也是计算机课程未来考试的必然趋势。传统考试涉及环节多(出题、制卷、考试、阅卷、成绩统计等) 、过程繁琐、阅卷工作量大、试卷分析缺乏准确性,往往只对总分进行简单的分数段统计、平均分计算等大致分析,对涉及试卷质量的深层指标如均方差、信度、效度分析等有效指标不再提及。
如果实行无纸化考试则这些工作就容易通过开发的软件系统予以解决,当然我们在开展这项工作中深切感受到实行无纸化考试要有强大的试题库系统作保障。
2 考试系统设计要点
1.界面友好兼操作方便。整个软件操作应该一目了然、清楚明晰,使用户在操作时无须更多的提示。如应考虑客户的使用习惯,既可以用鼠标操作也可用键盘操作,还应有考试时间的提示和错误操作警示等,以方便考生把握考试的时间进度。
2.随机出题且尽量做到不重复出题"这就要求系统的题库的题量要大,算法准确。这是本软件开发过程中的关键。
3.自动批阅,自动存盘,考试系统应做到自动批阅,这样既可以减少老师的批改时间,还可以减少人为因素的干扰。
具体的实现过程是通过数据绑定控件属性设置,把每个学生的答案与试题数据库中的标准答案进行比较和分析,通过程序自动判断正误,并自动计算学生考试的总分。同时还应把每个学生的答题过程自动存盘,这有利于教师以后的分析和研究,以便进行重点分析和个别指导。
3 系统分析
3.1系统组成
当前开发的无纸化考试系统主要基于C/S与B/S两种模式,但不管那种模式,为了实现无纸化考试的要求,基本有四个模块组成:
(1)题库管理系统:主要负责题库中各种类型题目的增加、删除、修改与考试时间、题型、题量、难度等要求的设定及题库的Word格式导出等。
(2)考试系统:考生验证、考试环境生成、考生数据存储、系统计时、阅卷评分等。
(3)成绩回收与分析系统:成绩入库、成绩的总体分析、各题得分情况的分析等。
(4)考生信息导入与服务器设置系统:考生信息的导入及服务器的自动设置。
本文主要基于上述思想与模块,采用的是类似于全国计算机等级考试的C/S模式。
3.2数据库设计
考试复习系统要长期存放大量的数据,故将这些数据存放在数据库中.在上文所述的模块中除了帮助模块,都要进行数据库操作.该系统使用Microsoft Access数据库.系统数据库的设计是以系统功能为基础的.该系统的数据库中设计了1个试题总库,主要用来在开始时查询需要的数据,用户真正操作的是后来生成的一个新的小型数据库,这样就可以加快访问的速度,提高效率,同时增加了总库的安全性.
总库中包含密码信息表(mima),其包括的字段有用户姓名、用户登陆号、用户密码、用户等级、登陆次数等,主要用来存放用户的主要信息. 总库中包含的其他表都与各门课程试题的题型相关.以Visual Foxpro 课程为例,它涉及的表有:
(1)单项选择题表(vfp sel) ,主要用来存放选择题的题目编号、题目内容、题目选项内容、参考答案、所属章节、难度、答题提示;
(2)填空题表(vfp fill) ,主要用来存放填空题的题目编号、题目内容、参考答案、所属章节、难度、答题提示;
(3)程序改错题表(vfpedit) ,主要用来存放改错题的题目编号、题目内容、参考答案、难度,改错题答案最好包括错误行和改正行;
(4)程序编程题表,主要用来存放编程题的题目编号、题目内容、参考答案、难度、运行结果.
这个总的试题数据库中包含了很多张表,用户以普通用户身份在选定科目后登陆,实际会自动生成相应课程的一个新的小型数据库,里面包含了这门课程所有相关连的表,并在每个表中增加了1个新的字段,以记录普通用户在答题后的答案.
用户以管理员身份登陆可连接到总的试题数据库中,以实现题库内容的录入、删除和修改等.在数据库中,每一条记录的长度不能超过255 个字符. 为了保证题目与答案的一致性,将题目存放在相应题的命名的文本文件中,为了把文本文件的内容写入题目文本框中,须先将文本文件的内容以二进制的形式存放到1 个变量中,再将这个变量的内容写入文本框.
4 系统设计
4.1系统功能模块的实现
4.1.1登陆功能的实现
用户要使用该系统须先登陆才能进入到主界面.在登陆界面上先选择复习的科目(单选框实现) ,然后输入用户登陆号和密码.登陆模块主要是验证身份
是否合法,按“确定”后,系统通过Active X 数据对象(ActiveX Data Object ,ADO) 与数据库连接,使用登陆号查询获取系统数据库的用户信息,密码不正确则提醒重新输入.
正确输入后系统获取用户选择的科目编号,建立相应的新数据库,此时里面还没有数据表,须等用户选择操作后随机选题才建立数据表.用户登陆时还要从数据表mima 表中获取用户权限,根据权限来判定菜单中哪些命令是有效,哪些命令是无效的.普通用户没有权利使用管理员菜单下的命令,这样保证了主界面对于任何用户的统一性.
(1)考试管理系统
管理员登录———管理员必须有超级用户密码才能进入考试管理系统。超级用户密码必须固化在程序代码中;题库管理———试题库管理主要由系统管理员和教师实现,包括试题录入、试题分类、试题库维护等功能。试题录入可采取批量录入或单个录入,试题库中的试题以单个试题存放并不形成成套试卷,按类别、难度等不同分别分类管理;试题库维护主要包括对试题库中的试题进行添加、删除、修改、浏览、分类统计等功能;试卷管理———包括考试内容选择、考试标准制定、试卷回收等功能;评卷系统———评卷系统按照题型及考试管理人员所给定的每种题型的评分标准进行自动评分。系统具有自动汇总、分类统计、试卷分析等功能;成绩管理———包括统计分数、浏览成绩、成绩分析、输出成绩和打印成绩等功能。
(2)考生考试系统
0考生登录———为了确认是否是合法考生,考生必须以有效身份登录,如输入准考证号、姓名、系班;成卷考试———该功能是考试系统中的关键部分。考生登录后,由系统根据考生的登录情况,判断考生是否初次登录,如是则根据组卷规则产生随机数,从题库中随机抽取试题组成试卷,直接在屏幕上显示,同时转入考生考试状态;如不是初次登录,则说明考生可能在考试中途因机器故障或其他原因须重新进入考试,此时,考生试卷已组成并可能已答了部分试题,因此系统不须重新抽取试题,而是直接恢复考生原有试卷即可;试卷批阅———考生提交试卷后,该系统根据题库中标准答案和组卷规则对考生答案进行评分。
4.1.2自动创建数据库和库表的实现
其特点为数据访问对象(Data Access Object ,DAO),它是数据库编程的重要方法之一.DAO是一种面向对象的界面接口,其特点为不是可视化的对象,使用它须靠编码来完成,DAO是设计关系型数据库系统结构的对象类的集合.它提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具.由于ADO 的出现,DAO 的使用已大大减少,但因为它无须使用开放数据库连接便可连接各个数据源,因此仍经常使用经典的DAO.[2]
该系统中使用了大量的DAO ,也使用了ADO 控件和DATA 控件,以达到更好地使用数据库的目的. 以Visual Foxpro 为例,总的试题数据库的名称为sum. mdb,新建的数据库名为vfp-new. mdb ,newPathAndName 是字符型变量,里面保存了新建的数据库的完整路径名,通过creatdatabase 命令创建了1 个指定路径下的数据库. 创建与vfp sel 属性相同的表,是通过数据库执行sql 命令来实现的. 主要代码如下:
Dim newPathAndName As String
Dim dbdatabase As Database
Dim dbname As String
Dim sql As String
Dim db As Database
newpathAndName = App. Path &“ \ vfp new. mdb”
Set dbdatabase = CreateDatabase (newpathAndName ,dblangGeneral ,dbEncrypt)
dbname = App. Path &“ \ sum. mdb”’题库的名称为sum
Set db = OpenDatabase (dbname)
sql =“select 3 into vfp sel new in ’”& App. Path &“ \ db2. mdb’from vfp sel where 1 = 0” ’创建一个与vfp sel 属性相同的表
db. execute sql ’执行sql 语句
4.1.3自动组卷的实现
假设选定科目是Visual Foxpro ,普通用户在选择章节复习或题型复习或自我测试后,模块会根据题型、题量、试题的难易度和试题所在的章节形成1 个新数据库. 系统中自测试题的题型、题量和分数一般已形成. 试题的题型、题量和分数分布为:单项选择50 个小题,每小题1 分;填空10 个小题,每小题2 分;程序改错2 个小题,每小题3 个错误修改,每个错误修改正确得2 分;程序编程2 个,每小题9 分. 试题库中存放的试题题号,在生成试题时采用随机生成的办法来产生. 为防止生成相同的题目,添加了1 个产生随机题号的函数. 产生算法如下:
randomize
Flag = 0
For I = 1 to〈该类型试题数〉
Stbh( I) = Int (该类型试题总数量3 Rnd + 1)’建立1 个试题编号的数组,存放选择的编号
For j = 1 to I - 1
If (Stbh(j) = Stbh(i) ) then’确定选中的编号没有重复
Flag = 1
endif
Next
If Flag = 1 then
I = I - 1
Flag = 0
endif
next
对Stbh 数组进行从小到大排序‘选用选择排序法此外,还有每一种试题类型形成数据表的函数,此类函数要求输入的参数包括该类型试题产生的新表名称及试题题数. 此函数具有如下功能:
创建1 个符合要求的新的数据表;调用产生随机试题编号的函数,取得符合要求的有一定顺序的题目编号;调用相应insert 语句将符合条件的题目插入到新建的数据表中;增加1 个“答案”字段,用来保存用户给出的答案.形成的试题表中还要保证选择不同难度和不同章节的题目,给每道题赋予2 个权值,以增强选题的多样性和公平性. 在管理员的试卷参考和普通用户的复习测试中都使用到这样的函数.该模块包括密码修改、管理员录入、编辑、删除试题4 个部分. 密码修改分为2 个部分:
一部分是主界面上的密码修改,这只有在用户输入正确的用户登陆号和密码后才能修改,修改的密码需要输入2 次且相互匹配;另一部分,是只有以管理员身份登陆的情况下,再次输入超级用户密码才能进行修改,这主要是为了某些用户可以从管理员那里重新获取和修改遗失的密码.管理员登陆后对试卷题库进行编辑,有1 个专门的管理员修改题库的界面.
在这个界面里选择试题类型后,管理员可以直接在数据库相应的库表表尾插入记录,按物理顺序或索引顺序浏览时修改和删除选定的记录;也可以输入查询的条件,找到与条件相关的记录后再作改动.所有的编辑都须在用户按“确定”后UPDATE 回数据库,以提高数据库中数据的安全性。程序大部分是用DAO 编程,还用到了DATA 控件. 数据表编辑模块中,在用户界面上使用了如Text 控件等来修改数据库的信息.
4.1.4 学生答题和试卷参考的实现
学生在选择按章节复习或按题型复习时,是没有时间限制的. 但在自我测试时,在规定的时间内没有完成题目,考试将自动结束. 当然,用户可以再一次打开试题查阅. 在查阅的过程中,用户可以同时查看参考答案和自己给出的答案,单击“详细说明”还可获得参考答案的思路,以达到进一步理解和巩固的目的.试卷参考实际上是随机产生1 份试卷,并将试题和相应的答案按指定格式存放到txt 文档中,调用前面定义的每一种试题类型形成数据表的函数,形成了1 个新的数据库. 最后,由转化格式命令完成数据库到数据文件的实现,并将试题和答案分别形成2 个不同的文件.
4.2 数据流程
从登陆界面开始,学生和教师登陆后到同一个界面,但某些功能只在拥有教师的权限时才能生效并使用. 学生登陆后先选择科目,是复习还是自我测试,在题库中随机抽取题目,组成学生的题目卷,并生成1个新的小型数据库. 学生在复习过程中能够随时查阅到参考答案;在测试过程中,只有在交卷后重新查阅试卷时才能比较自己给出的答案和参考答案,并得到相应题目的简单解析.
4.3软件开发中的关键问题及解决的方法
开发无纸化考试系统,通常涉及的关键问题有:试题图文混排问题、试卷导入/出与排版问题、答案描述问题、考试环境生成与智能评分问题,一般来说前三个问题在命题系统中涉及,通常多半采用RTF格式、特征值抽取等方式来解决;对于考试环境生成有的采用语句生成,有的则干脆将环境数据文件信息存入数据表来解决,本人在开发该系统时就采用后者;至于智能评分问题,应该说客观题已经成熟,主观题则是所有无纸化考试系统面临的共同难题,目前尚无有效方法,有的本部分采用人工阅卷,有的只比较结果,而有的既看结果又考察过程,当然由于主观体解题方法的多样性,这种方法就要靠命题老师来把握了,这就是我们在使用有些无纸化考试系统时所出现的问题症结所在。
4.3.1 试题库的建立和管理
在制作考试系统之前,首要任务是进行数据库的设计,为了随机生成试卷,并保证试卷无重复性,以及方便管理和维护,在建立本系统试题数据库时采用Access来实现。在考试前,教师可以规定需考察的章节题数及难度,通过对类型字段和难度字段的控制,在随机抽取试题时,达到规定的要求。还可通过添加试题、查询试题、删除试题等操作调整试卷。自动创建数据库和库表时使用DAO 方法。
DAO是数据库编程的重要方法之一,是一种面向对象的界面接口,是设计关系型数据库系统结构的对象类的集合,它提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库、定义表、字段和索引,建立表间的关系、定位和查询数据库等工具,由于DAO无须使用开放数据库连接便可连接各个数据源,因此本系统使用大量的DAO,也使用了ADO控件和DATA控件,以达到更好地使用数据库的目的。
4.3.2 随机成卷系统
生成试卷算法与题库的结构密切相关。一个好的算法可以将题库中的题目随机结合成成套试卷。但是如何随机组建知识点均匀、难度相同的试卷的相关算法是本系统的一个关键问题。本系统将考试时间、试题数量、难度系数分别设定为1、2、3的题数信息写入系统注册表,在抽取试题时,使用随机抽取算法抽取试题生成试卷。随机组卷实例如下:按组卷要求,均匀地从各章中随机抽题。试题库中试题数目、难度、类型由注册表中提供。
4.3.3考试环境的生成
由于ACCESS考试系统一般要涉及考试环境数据库,其中通常含有若干个数据表或查询等,考试时要求考生根据给定的表来建立规则、查询、窗体、宏或报表等,如果用语句生成考试数据库不仅缺乏灵活性,而且影响系统速度,为此我们采用ADO数据流概念,将考试数据库以二进制信息写入试题库,考试时再将试题库存入的信息还原成数据库,实践证明,这种方法不仅快速,还适用任意类型的文件写入数据库,如图像文件、Word或Excel格式的文件等。
具体做法是使用VB编制两个过程:FileToMdb 、FileFromMdb,在命题端通过调用FileToMdb过程将考试环境数据库写入试题库中,在考试端通过调用FileFromMdb过程来生成考试环境。假定db_name数据库中存在STK表,其中有字段HJ (OLE对象) , ′F_nam为欲根据数据库中信息生成的文件,则从数据库取信息保存到文件中:
Private Sub FileFromMdb ( db _ name As String,F _ name As String)
Dim iConcstrAs String
Dim iConc As New ADODB. Connection
Dim iStm As ADODB. Stream
Dim iRe As ADODB. Recordset ′打开库
iConcstr = " Provider =Microsoft. Jet. OLEDB. 4. 0; Persist
Security Info = False;Data Source = " & db_name
iConc. Open iConcstr ′打开表
Set iRe = New ADODB. Recordset
iRe. Open " select 3 from stk" , iConc, adOpenKeyset,
adLockReadOnly
if dir ( F_name,VbDirectory) < > " " Then
kill F_name ′如F_name代表的文件存在则删除
End_if ′保存到文件
Set iStm = New ADODB. Stream
With iStm
. Mode = adModeReadWrite
. Type = adTypeBinary
. Open
. Write iRe ( " hj" )
. SaveToFile F_name
EndWith
′关闭对象
iRe. Close
iStm. Close
End Sub
4.3.4 系统评分
评分系统是整个考试系统的关键部分。对于客观题如选择题,评分系统根据评分标准会自动、准确、迅速的评分并给出相应成绩;而对于主观题如填空、程序改错、编程等没有一个要求明确、标准唯一的答案,要让计算机自动正确评分确实还有相当大的问题。在开发过程中,对于填空题和程序改错题我们采用"黑箱测试"的方法,即用多种可能性答案的关键字组成数据组,然后把考生的答案与该数据组比较,如果一致,就认为考生操作正确。对于操作题、程序题等主观题的评分是个难点,我们采用了OLE2技术,通过程序创建的接口直接访问操作对象中的数据和功能。
一般的高级语言,像VB、VFP、C + +、Fortron90、Delphi等,其工程、窗体、报表等都是以单独的文件形式存储,对它们的评分,通常只需从对应的文件中找出相应的过程、对象及其属性值即可判断,而Access数据库则不同,其数据库中包括表、查询、表单、报表、宏和模块等对象,因此对它的评分就必须首先判断数据库中相应对象是否存在,然后再找出相应的过程、对象及其属性值。作者通过对ACCESS数据库的临时文件进行跟踪分析并查阅相关资料,找到了在Access中App lication对象有两个未公开的方法,其中一个是SaveAsText,另一个是LoadFromText。使用上述的方法不仅能对整个Access的所有对象如窗体、报表、查询、视图、存储过程、关系、宏、模块等导出到一个文本文件,而且还可逆向重载。这样当窗体或报表导出到文本文件之后,所有的窗体、控件属件以及默认控件属性都在文本文件中体现出来,对此生成的文本使用正则表达式对代码进行分析,包括分析语法(对象的名称、大小、位置、字体或其他属性) ,代码结构、语法错误、字数统计等,从而可以判断考生操作的正确性。但需要提醒的是这两个方法对表是不支持的,也就是说通过它们不能实现对表的导入与导出。
由于ACCESS数据库中,表的操作不同于其他对象,我们用VB写了两个函数: kdxfx ( ) 、bjgfx ( ) ,分别用于判断数据库中给定的对象是否存在以及提取数据库中表的结构信息与记录信息。至此,我们已解决ACCESS数据库无纸化考试系统操作题智能评分的主要问题,具体方法如下:
(1)输出表信息
If kdxfx( "C: \DB1. MDB" , 0, "表1" ) = 1 Then
Call bjgfx( "C: \DB1. MDB" , "表1" )
End If
(2)输出窗体、报表、查询、视图、存储过程、关系、宏、模块等信息
If kdxfx( "C: \DB1. MDB" , 1, "查询1" ) = 1 Then
Dim Acc As Object
SetAcc = GetObject ( "C: \DB1. MDB" )
Acc. Visible = False
Acc. App lication. SaveAsText 1, "查询1" , "C:\WYG1.TXT"
Acc. Quit
End If
(3)两个函数
Public Function bjgfx ( db_name As String, tb_name As String)
As Integer
′调用格式: bjgfx(库名,表名)如: bjgfx ( " C: \DB1. MDB" , " 表1")
′表结构与记录分析
’′N2 - 1字节型 3 - 2整型 4 - 4长整型与自动编号
6 - 4单精度(不考虑小数) 7 - 8双精度(不考虑小数)
′C 10
′L - 1 D - 8 Y - 5 O - 11 M - 12 (同超级连接)
Dim IAs Integer
Dim st_TextAs String
Dim SJK As DAO. Database
Dim SJB As DAO. Recordset
On Error GoTo kk
Set SJK = OpenDatabase ( db_name)
Set SJB = SJK. OpenRecordset ( tb_name)
Open " c: \ test. txt" ForOutputAs #1
st_Text = "@1 " & db_name & " " & tb_name & " " &
SJB. Fields. Count
Print #1, st_Text
For I = O To SJB. Fields. Count - 1
st_Text = UCase ( SJB. Fields( I). Name) & " , " & SJB.
Fields ( I). Type & " , SJB. Fields ( I). Size
Print #1, st_Text
Next
st_Text = "@2 " & SJB. RecordCount
Print #1, st_Text
If SJB. RecordCount < > 0 Then
SJB. MoveFirst
While Not SJB. EOF
st_Text =" "
For I = 0 To SJB. Fields. Count - 1
st_Text = st_Text & IIf ( IsNull ( SJB. Fields ( SJB.
Fields( I). Name) ) , " " , SJB.
Fields ( SJB. Fields ( I). Name) ) & " "
Next
Print #1, st_Text
SJB. MoveNext
Wend
End If
SJB. Close
SJK. Close
Close #1
bjgfx = 1
Exit Function
kk: MsgBox "错误号: " & Err. Number & " ,原因: " & Err. De
scrip tion, 48, "系统提示"
bjgfx = 0
End Function
Public Function kdxfx( db_name As String, id As Integer, dx_name As String) As Integer
′调用格式: kdxfx(库名,对象类型,对象名)如: kdxfx( "C: \ DB2. MDB" , 0, "wyg1" )
′查找数据库里的每一个用户对象,找到返回1,否则为0
′对象类型: acTable - 0 acQuery - 1 acForm - 2 acReport - 3 acMacro - 4 module- 5
Dim icnt, jAs Integer
Dim objWks As Workspace
Dim mydb As DAO. Database
Dim mytable As TableDef
Dim myquery As QueryDef
Dim ctrAs Container, doc As Document
On Error GoTo kk
Set objWks = DBEngine. Workspaces(0)
Setmydb = objWks. OpenDatabase ( db_name)
kdxfx = 0
Select Case id
Case 0
icnt = mydb. TableDefs. Count ′表
For j = 0 To icnt - 1
Setmytable = mydb. TableDefs ( j)
If Left (mytable. Name, 4) < > "MSys" Then
IfUCase (mytable. Name)
= UCase ( dx_name)
Then
kdxfx = 1
Exit For
End If
End If
Next
Case 1
icnt = mydb. QueryDefs. Count ′查询
For j = 0 To icnt - 1
Setmyquery
= mydb. QueryDefs ( j)
If UCase (myquery. Name) = UCase
( dx_name) Then
kdxfx = 1
Exit For
End If
Next
Case 2
Set ctr = mydb. Containers! Forms ′窗体
For Each doc In ctr. Documents
If UCase ( doc. Name) = UCase ( dx_name) Then
kdxfx = 1
Exit For
End If
Next doc
Case 3
Set ctr = mydb. Containers! Reports ′报表
For Each doc In ctr. Documents
If UCase ( doc. Name) = UCase ( dx_name) Then
kdxfx = 1
Exit For
End If
Next doc
Case 4
Set ctr = mydb. Containers! scrip ts ′宏
For Each doc In ctr. Documents
If UCase ( doc. Name) = UCase ( dx_name) Then
kdxfx = 1
Exit For
End If
Next doc
Case 5
Set ctr = mydb. Containers! Modules ′模块
For Each doc In ctr. Documents
If UCase ( doc. Name) = UCase ( dx_name) Then
kdxfx = 1
Exit For
End If
Next doc
End Select
mydb. Close
Exit Function
kk: MsgBox "错误号: " & Err. Number & " ,原因: " & Err.
Descrip tion, 48, "系统提示"
End Function
5 结语
虽然无纸化考试系统具有交互性、实时性等特征,能提高学生学习计算机课程的兴趣与动手能力,基本将教师从繁琐的考试环节中解放出来,节省了大量的人财物,使教师有更多的时间和精力放在试题的科学性建设中和教学内容、教学方法的钻研中。但毕竟是用计算机代替人,我们在组织开展无纸化考试中深感必须注意解决以下问题:
(1)由于所有考生都必须在机器上进行,考试周期长,题库必须达到一定的容量,题库安全都必须予以高度重视,否则不仅容易泄题,对考生来说也不够公平;
(2)由于目前对操作题的评分通常仅限于从答案和关键字匹配上给分,对于编程算法的多样化还只能靠教师命题来进行控制。因此,对命题老师要求较高,在智能评分的解决方法与技术上还有待突破和完善;
(3)对于大规模的考试来说,网络的安全和传输质量问题是至关重要的,否则容易造成网络阻塞,影响考试正常进行。
当然,无纸化考试毕竟是伴随着计算机与互联网的发展而欣起的一种新的考试方式,也是一种改革尝试,随着时间的推移,我想这些问题都会得到圆满的解决。
参考文献
1 王宇虹、熊靖、李宏亮编着. 专家门诊———ACCESS开发答疑. 北京:人民邮电出版社, 2005.
2 教育部考试中心. 二级教程———Access数据库程序设计. 北京:高等教育出版社, 2004.
3 (美) [ E. 彼得鲁森斯] Evangelos Petroutsos, (美) [ K. 霍夫]Kevin Hough着,邱仲潘等译. Visual BASIC 6高级开发指南.北京:电子工业出版社, 1999.
致 谢
本论文是在我的指导老师×××老师的亲切关怀和悉心指导下完成的。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,×老师都始终给予我细心的指导和不懈的支持。×教授不仅在学业上给我以精心指导,同时还在思想上给我以无微不至的关怀,在此谨向×老师致以诚挚的谢意和崇高的敬意。