论文部分内容阅读
摘 要:作者基于Excel优秀的信息管理功能,研究了简单易制的课程平时练习作业系统制作过程:以客观化为练习题编写模式,大量利用Excel中的宏录制功能和网络资源获取实现相应过程的VBA代码;实现按指定数量和题型随机抽题、省时的电子化作业方式;作业成绩的判定由系统自动快速完成、班级成绩自动汇总,无人为干涉;设计了较为严格的安全措施,防止作业题库内容的不合理传播,一定程度上减少了学生作业抄袭与考试作弊的可能;并简单介绍了该系统在实际应用过程中的情况。
关键词:Excel;制作;作业题库系统;电子化作业
中图分类号:G434 文献标志码:B 文章编号:1673-8454(2013)16-0081-04
平时练习作业,是学生学好课程的必要保证之一。对于工业分析、湿法冶金学这样的专业性很强的课程,也只有通过平时作业练习和实践操作,才能真正掌握课程的知识内容,才有可能具备灵活运用课程基础知识解决实际问题的能力。另一方面,为了解决湿法冶金学、工业分析这类课程“以考试为唯一判断标准”的弊端,过程环节被不断强化。[1]平时练习作业作为过程环节考核的重要组成部分之一,理应得到重视。平时练习作业对学生能力的训练主要有两方面,其一是通过平时练习作业达到熟练掌握课程基础知识的目的,这是打基础的作用,其二是训练对基础知识的灵活运用,这是课程培养较高层次的目标了。尽管后者才是课程的最终目标,但如果前者达不到较好的程度,则后者就如“空中楼阁”,无法实现。因此,在多年教学实践的基础之上,笔者认为平时练习作业应以“打基础”为主,灵活运用知识能力培养为辅,并且灵活应用能力培养应少而精。要打好基础,平时练习对课程知识的包涵必须泛而细,这就要求练习题必须达到一定的数量才有可能实现这一目标。然而,这样做的话,会给学生和教师额外增加不少的负担,使学生对课程产生厌烦情绪,也会使教师对改进课程教学方式提高教学效果缺乏兴趣。
为此,鉴于Excel软件具有强大的数据处理和信息管理能力,容易实现信息管理自动化的优势,笔者提出在Excel软件环境下建设课程题库,实现随机快速自动组卷,自动评分,自动处理学生成绩数据。并且利用Excel实现这一过程比较简单,不需要专门的编程能力,只要会用这一软件,就能够理解并实现这一系统。
一、Excel题库建设的基本思想
为了实现既能全面强化对基础的掌握,又能高效利用学生紧张的课外时间,题库题型全部客观化,即以练习时间相对较少的选择题和判断题为题库题型。练习题以课程章为单位进行编写,数量除了根据章的内容多少和课时比例进行确定之外,还应规定最低题量,每一章的习题数量一般应超过100道,其目的是为了保证在随机抽题过程中,任两个学生之间的题目在理论上都有可能不完全相同,并且还应保证一定的富余空间。为了适当减小任两个学生随机抽取的习题间尽可能小的相似率,这一基数有必要取得稍微大一些。为此,在随机抽取题数为50时,以100为基数,已经可以在较大程度上保证前述目的的实现。为了保证习题不被恶意修改,题库应采取适当的保护措施,以避免不被授权的人在接触到题库的任何时刻都不能够有机会修改题库中的习题和程序代码,并且也不能够轻松地复制出习题以进行不被授权的传播。为了减少教师的工作量,题库应具有自动评分和班级成绩自动汇总功能。
二、Excel题库的具体实现
上述系统完全可以在Excel中通过由宏录制功能产生的VBA代码来简单地实现,具体包括如下方面。
1.题的输入方式
选择题包括题干、选项和答案,它们在Excel工作表中的输入方式为“一行一题”,由随机数、原始序号、题干、选项(四个)、答案共8个部分(列)组成,每一部分占用一个单元格。判断题包括随机数、原始序号、题干、答案共四部分。选择题和判断题在不同的工作表中单独输入。它们的输入顺序建议按相关教材上相应知识点的教学顺序输入,这就是题库中题目的原始顺序,这样做可以方便今后的修改、增删。
2.随机抽题
在Excel中有一个随机数产生函数rand(),可以产生(0,1)之间的随机数,其小数位数高达9位。在题目的随机数单元格中通过rand()产生随机数,再借助于Excel的扩展区域排序功能,以随机数列为排序的主要排序关键字进行排序,从而可以实现一章题目的随机排列。每个学生的每章习题量为50题(可很容易地实现题量调节与题型组合),则选取经过随机排列的题目的前50题输出作为习题即可。这一过程在学生打开题库文件并按要求输入必要的信息(如姓名、学号等)并点击开始做题按钮之后由VBA代码自动实现。
在程序中的具体算法是,利用For-Next语句查询题目总数:指定一个比较大的循环数(取肯定大于每章题目数的一个值,比如1000),逐个判断题目序号单元格是否为空(“”),如果为空,中断循环,则当前循环数减去1即为题目数。经过转换、去空格、替换等字符处理之后,作为扩展区域排序语句中的输入值(此排序代码可由宏录制功能产生)。必须指出的是,Excel软件本身具有自动重算选项,只要某一单元格发生改变,软件即自动对所有单元格的公式进行重算,当然此功能无需在自编制的宏代码中实现。题库在运行过程中,总会有单元格发生改变,随机数也会自动重算而与上一次操作时不同。因此可实现不同的学生、不同的时候抽出的题目都是不一样的,都是随机的。完成了题目的随机排列之后,再用一段代码将随机排列后的前50题复制到另外一个工作表区“作业完成区”。在复制时,只复制题目和选项。也可灵活设置所随机抽取题目数,只需将题目数进行字符串处理后作为复制代码的输入值即可实现。至此,完成了随机抽题功能。
3.完成作业
在“作业完成区”表格里,已经预先设置好相关格式,指定好题的每一部分的位置。因此学生在做作业时,只需要在指定的答案位置(相应的单元格)里按要求(除了指定的答案字符外)输入答案即可。学生完成作业之后,有必要设置一段检查确认程序。它的功能就是检查学生输入的答案字符的合法性和学生是否全部输入完答案,检查无误后要求学生确认是否提交答案。这一段代码基本上使用If-Then-Else条件语句完成。 具体算法是:利用一循环语句遍历50个题的答案单元格,穷举判断答案字符是否合法(包括是否输入答案),如果遍历中发现非法答案输入,即用Exit语句强行退出该段子程序,并用Msgbox函数弹出相关提示信息“答案输入不正确,或者题未做完!请检查!检查修正后请重新点击提交!”。答案全部输入无误后(条件判断语句)仍用Msgbox函数弹出确认信息,学生确认提交答案后利用宏录制产生的代码实现作业区的不可修改保护,以防止误操作修改答案。同时可以计算作业成绩。
4.成绩计算与汇总
学生在输入完答案并确认提交之后,即可计算成绩。而成绩汇总则需要学生将完成的作业文件传送给教师,在教师的本地计算机上完成。
在发给学生的题目文件里,包含题库表格和作业区表格。在题库表格里是包含答案的,但该表格在发给学生的版本里被密码隐藏起来。在题库表格里的题被随机排序并将前50题复制到作业区表格中直至学生完成作业并提交,这一过程题库表格中题目的顺序并不发生变化,因此成绩的判定可以通过简单的一一对比进行,而无需再编写或录制宏代码来实现了。单独建立一张工作表,由于题库和作业的答案都是放在一列中的,因此在成绩判定表格里也任意选择一列,在其单元格中输入If函数,对题库表格中与作业区表格中对应位置(相同题目)题的答案是否相同进行判断,如果相同则得1分,不同则得0分。最后对所有50个题的得分进行求和,换算成百分制成绩。
成绩汇总是该简易题库中非常重要的一项功能。它的实现本身其实很简单,不需要特意编写或录制宏代码。在Excel单元格中,可以通过输入适当的公式实现不同Excel文件之间的数据传递。方法是打开成绩汇总的Excel文件和需要从其中读出数据的Excel文件(学生发送过来的作业文件),在成绩汇总的某单元格中输入“=”,然后单击作业文件中相应的单元格(学生作业文件中“成绩判定”表格里的成绩求和所在单元格),即可将该作业文件中的成绩数据输入到成绩汇总文件中。然而,必须要注意的是,我们要处理的作业文件数不是几份,而是几十乃至数百份,如果按照上述的过程去一一处理的话,工作量相当大,因此必须要借助于宏代码实现这一重复过程。首先录制这一完整过程的宏代码,然后将此宏代码放入一个二重For-Next循环语句中进行适当修改。外循环是列循环,即作业的各章循环;内循环是学生循环,即在某一章的学生作业文件中进行循环。灵活应用VBA的字符串处理函数,不断修改公式中的路径字符串,实现各章各学生作业成绩数据传递公式的自动输入,为更清楚地说明这一过程,现将代码列举如下:
Sub test1()
x = "......"
//此为宏录制产生的公式字符串样例,此处略
For i = 5 To 13 //此为列循环
Cells(1, i 5).Select //选择章号单元格
dijizhang1 = Str(ActiveCell.Value)
//取章号单元格内的章号,并转换成章号字符串
dijizhang1 = Trim(dijizhang1) //去除空格
dijizhang2 = "\"
关键词:Excel;制作;作业题库系统;电子化作业
中图分类号:G434 文献标志码:B 文章编号:1673-8454(2013)16-0081-04
平时练习作业,是学生学好课程的必要保证之一。对于工业分析、湿法冶金学这样的专业性很强的课程,也只有通过平时作业练习和实践操作,才能真正掌握课程的知识内容,才有可能具备灵活运用课程基础知识解决实际问题的能力。另一方面,为了解决湿法冶金学、工业分析这类课程“以考试为唯一判断标准”的弊端,过程环节被不断强化。[1]平时练习作业作为过程环节考核的重要组成部分之一,理应得到重视。平时练习作业对学生能力的训练主要有两方面,其一是通过平时练习作业达到熟练掌握课程基础知识的目的,这是打基础的作用,其二是训练对基础知识的灵活运用,这是课程培养较高层次的目标了。尽管后者才是课程的最终目标,但如果前者达不到较好的程度,则后者就如“空中楼阁”,无法实现。因此,在多年教学实践的基础之上,笔者认为平时练习作业应以“打基础”为主,灵活运用知识能力培养为辅,并且灵活应用能力培养应少而精。要打好基础,平时练习对课程知识的包涵必须泛而细,这就要求练习题必须达到一定的数量才有可能实现这一目标。然而,这样做的话,会给学生和教师额外增加不少的负担,使学生对课程产生厌烦情绪,也会使教师对改进课程教学方式提高教学效果缺乏兴趣。
为此,鉴于Excel软件具有强大的数据处理和信息管理能力,容易实现信息管理自动化的优势,笔者提出在Excel软件环境下建设课程题库,实现随机快速自动组卷,自动评分,自动处理学生成绩数据。并且利用Excel实现这一过程比较简单,不需要专门的编程能力,只要会用这一软件,就能够理解并实现这一系统。
一、Excel题库建设的基本思想
为了实现既能全面强化对基础的掌握,又能高效利用学生紧张的课外时间,题库题型全部客观化,即以练习时间相对较少的选择题和判断题为题库题型。练习题以课程章为单位进行编写,数量除了根据章的内容多少和课时比例进行确定之外,还应规定最低题量,每一章的习题数量一般应超过100道,其目的是为了保证在随机抽题过程中,任两个学生之间的题目在理论上都有可能不完全相同,并且还应保证一定的富余空间。为了适当减小任两个学生随机抽取的习题间尽可能小的相似率,这一基数有必要取得稍微大一些。为此,在随机抽取题数为50时,以100为基数,已经可以在较大程度上保证前述目的的实现。为了保证习题不被恶意修改,题库应采取适当的保护措施,以避免不被授权的人在接触到题库的任何时刻都不能够有机会修改题库中的习题和程序代码,并且也不能够轻松地复制出习题以进行不被授权的传播。为了减少教师的工作量,题库应具有自动评分和班级成绩自动汇总功能。
二、Excel题库的具体实现
上述系统完全可以在Excel中通过由宏录制功能产生的VBA代码来简单地实现,具体包括如下方面。
1.题的输入方式
选择题包括题干、选项和答案,它们在Excel工作表中的输入方式为“一行一题”,由随机数、原始序号、题干、选项(四个)、答案共8个部分(列)组成,每一部分占用一个单元格。判断题包括随机数、原始序号、题干、答案共四部分。选择题和判断题在不同的工作表中单独输入。它们的输入顺序建议按相关教材上相应知识点的教学顺序输入,这就是题库中题目的原始顺序,这样做可以方便今后的修改、增删。
2.随机抽题
在Excel中有一个随机数产生函数rand(),可以产生(0,1)之间的随机数,其小数位数高达9位。在题目的随机数单元格中通过rand()产生随机数,再借助于Excel的扩展区域排序功能,以随机数列为排序的主要排序关键字进行排序,从而可以实现一章题目的随机排列。每个学生的每章习题量为50题(可很容易地实现题量调节与题型组合),则选取经过随机排列的题目的前50题输出作为习题即可。这一过程在学生打开题库文件并按要求输入必要的信息(如姓名、学号等)并点击开始做题按钮之后由VBA代码自动实现。
在程序中的具体算法是,利用For-Next语句查询题目总数:指定一个比较大的循环数(取肯定大于每章题目数的一个值,比如1000),逐个判断题目序号单元格是否为空(“”),如果为空,中断循环,则当前循环数减去1即为题目数。经过转换、去空格、替换等字符处理之后,作为扩展区域排序语句中的输入值(此排序代码可由宏录制功能产生)。必须指出的是,Excel软件本身具有自动重算选项,只要某一单元格发生改变,软件即自动对所有单元格的公式进行重算,当然此功能无需在自编制的宏代码中实现。题库在运行过程中,总会有单元格发生改变,随机数也会自动重算而与上一次操作时不同。因此可实现不同的学生、不同的时候抽出的题目都是不一样的,都是随机的。完成了题目的随机排列之后,再用一段代码将随机排列后的前50题复制到另外一个工作表区“作业完成区”。在复制时,只复制题目和选项。也可灵活设置所随机抽取题目数,只需将题目数进行字符串处理后作为复制代码的输入值即可实现。至此,完成了随机抽题功能。
3.完成作业
在“作业完成区”表格里,已经预先设置好相关格式,指定好题的每一部分的位置。因此学生在做作业时,只需要在指定的答案位置(相应的单元格)里按要求(除了指定的答案字符外)输入答案即可。学生完成作业之后,有必要设置一段检查确认程序。它的功能就是检查学生输入的答案字符的合法性和学生是否全部输入完答案,检查无误后要求学生确认是否提交答案。这一段代码基本上使用If-Then-Else条件语句完成。 具体算法是:利用一循环语句遍历50个题的答案单元格,穷举判断答案字符是否合法(包括是否输入答案),如果遍历中发现非法答案输入,即用Exit语句强行退出该段子程序,并用Msgbox函数弹出相关提示信息“答案输入不正确,或者题未做完!请检查!检查修正后请重新点击提交!”。答案全部输入无误后(条件判断语句)仍用Msgbox函数弹出确认信息,学生确认提交答案后利用宏录制产生的代码实现作业区的不可修改保护,以防止误操作修改答案。同时可以计算作业成绩。
4.成绩计算与汇总
学生在输入完答案并确认提交之后,即可计算成绩。而成绩汇总则需要学生将完成的作业文件传送给教师,在教师的本地计算机上完成。
在发给学生的题目文件里,包含题库表格和作业区表格。在题库表格里是包含答案的,但该表格在发给学生的版本里被密码隐藏起来。在题库表格里的题被随机排序并将前50题复制到作业区表格中直至学生完成作业并提交,这一过程题库表格中题目的顺序并不发生变化,因此成绩的判定可以通过简单的一一对比进行,而无需再编写或录制宏代码来实现了。单独建立一张工作表,由于题库和作业的答案都是放在一列中的,因此在成绩判定表格里也任意选择一列,在其单元格中输入If函数,对题库表格中与作业区表格中对应位置(相同题目)题的答案是否相同进行判断,如果相同则得1分,不同则得0分。最后对所有50个题的得分进行求和,换算成百分制成绩。
成绩汇总是该简易题库中非常重要的一项功能。它的实现本身其实很简单,不需要特意编写或录制宏代码。在Excel单元格中,可以通过输入适当的公式实现不同Excel文件之间的数据传递。方法是打开成绩汇总的Excel文件和需要从其中读出数据的Excel文件(学生发送过来的作业文件),在成绩汇总的某单元格中输入“=”,然后单击作业文件中相应的单元格(学生作业文件中“成绩判定”表格里的成绩求和所在单元格),即可将该作业文件中的成绩数据输入到成绩汇总文件中。然而,必须要注意的是,我们要处理的作业文件数不是几份,而是几十乃至数百份,如果按照上述的过程去一一处理的话,工作量相当大,因此必须要借助于宏代码实现这一重复过程。首先录制这一完整过程的宏代码,然后将此宏代码放入一个二重For-Next循环语句中进行适当修改。外循环是列循环,即作业的各章循环;内循环是学生循环,即在某一章的学生作业文件中进行循环。灵活应用VBA的字符串处理函数,不断修改公式中的路径字符串,实现各章各学生作业成绩数据传递公式的自动输入,为更清楚地说明这一过程,现将代码列举如下:
Sub test1()
x = "......"
//此为宏录制产生的公式字符串样例,此处略
For i = 5 To 13 //此为列循环
Cells(1, i 5).Select //选择章号单元格
dijizhang1 = Str(ActiveCell.Value)
//取章号单元格内的章号,并转换成章号字符串
dijizhang1 = Trim(dijizhang1) //去除空格
dijizhang2 = "\"