用Authorware制作考试程序
文/图 幽雀
Authorware是一个非常优秀的多媒体开发工具,虽然现在的多媒体开发工具层出不穷,但Authorware以其简单易学易用、功能强大、无需太多的编程即可制作出具有交互功能非常强的多媒体产品,在教学应用的多媒体开发中,深受教育工作者的喜爱。用Authorware制作的考试程序,虽然比不上专业的考试软件,但它以制作简单、操作简单、无需进行软件操作培训,也不用花费一笔资金去购买或制作专用考试系统,在教学工作中还是有很大实用价值。
本文将通过实例进行讲解,帮助你逐步掌握用Authorware制作考试程序整个流程。这里要求你对Authorware有相当的了解,因为本文要用到较多Authorware的函数,而且不对用Authorware制作的细节做详细讲解。下面进入正题,我们实例讲解一个“初级中学微机考试系统”制作过程,这个作品运行后的界面如图1、图2、图3所示。
一、 程序分析
考试的对象是面向初中的学生,因为各地方采用的学制不同,所以程序结构有所差异。本程序是采用五四制,初中为四个学年,那实例程序共有四大模块,每一学年为一模块,点击相应的学年进入每一模块,每一模块会有三个分支,分别是:答题、检查、交卷。下面介绍每一分支具体的工作。请结合图一—图十理解本程序。
1、答题部分,也是核心部分,考虑Authorware本身,因为它对文件的读写能力并不是很强,所以实例程序采用纯文本文件存储试题及答案,试题形式只有选择题和判断题,本实例程序选择题采用单项选择题,如果采用多项选择题,那整个程序结构会有很大的不同。点击答题按钮进入答题部分,首先进行单项选择题,然后是判断题,具体工作要用函数功能完成,读取试题文件并显示(包括试题及选项)每个选项对应一个按钮,按钮实现的功能为:读取下一道试题及选项并把上一道试题的答案写入临时的答案文件(每一题答案为一行),如果有多人考
试,那在下一个进行考试时,此文件要被覆盖,还有一个答题完毕按钮,以备随时终止答题。如果是多项选择题,那要多制作出一个按钮,实现功能为读取下一道试题,选项按钮只实现写入答案的功能。至此整个答题部分的功能都已经实现。2、检查部分只实现试题的浏览,而并未提供修改的功能。可在答题之前先浏览试题。要求程序在读取试题文件和临时答案文件时,保持试题与答案的统一、一致。
3、交卷部分要实现自动打分功能,要求事先把答案做好,每一题的答案为一行,存储为标准的答案文件。试题数量要与分值匹配好,实例程序是选择题30题,判断题20题共50题,每题2分共100分,试题数量可根据
实际情况而定,提倡是选择题要多,判断题要少,这样更能体现真实水平。程序实现标准答案文件和临时答案文件的读取并加以判断,如果相同分值加2,最后显示总成绩,程序退出。至此整个程序的结构及流程,我们都已经分析完毕,相信大家对此程序已经有了一个概况。在这里补充一点,我们可在程序的开始加人一个考试时间倒计时显示,以分钟为基本单位,定义一个变量保存总时间,每过一分钟变量值减一,在答题部分读取下一题的同时并判断变量值,如果值为零程序退出并打分。
二、程序制作
由于篇幅所限,文中提示文字、背景及添加各种图标的制作过程不做详细叙述,请结合图四—图十中提示文字去自行设计。本文只对计算图标中的变量和函数的作用做详细讨论,以及在制作过程中需要注意的事项。制作之前先把试题文件格式加以说明,以更好理解本程序。试题内容:首先是选择题,每题为一行,每题选项为一行,下面是判断题,每题为一行,在选择题和判断题之间要空两行,最后是一行提示文字,提示答题完毕。
(一)程序主干程序主干主要包括:背景、提示文字、开始按钮和退出按钮,如图四。退出按钮中主要是几个显示图标(版权信息等)和一个计算图标(实现程序退出),计算图标的内容是:Quit(0)。在开始按钮中是本程序的四大模块,开始按钮内容如图五。图中标注“定义变量并赋初值”的计算图标,它的作用是:定义各模块使用的变量并且赋初值,内容如下(在/*……*/之间的为解释文字,以下类同):
number:=1 /*记录试题行数*/numbera:=0 /*记录选择题答案行数*/
lin:=0 /*读取文件时使用的变量*/
line:=0 /*读取文件时使用的变量*/
file:=0 /*读取文件时使用的变量*/
xzt:=0 /*存储试题内容变量*/
xzda:=0 /*存储选择题选项变量*/
(二)四大模块
四大模块,每一个模块为一个学年,本文只以初一学年为例,其它学年和它制作过程相同,只是在读写文件时的文件名不同,制作时做相应的修改即可,如图六。在图中标注“写临时答案文件”的计算图标,作用是写一个空的文件,记录答题者的答案,计算图标的内容如下:
wc:="" /*定义临时变量赋空值*/WriteExtFile(FileLocation^"tiku\\daan.txt",wc) /*使用函数,写答题者答案文件,文件写入tiku目录,文件名为daan.txt内容为空*/
tihao:=1 /*定义题号变量,用来记录题号*/
每一个大模块中,有三个分支,以下讨论各分支工作。
1、 答题分支
答题是最复杂的,需要制作的内容较多,如图七。图中标注“读取第一道试题”的计算图标,作用是读取第一道试题,如果不加入此图标,程序进入答题界面时就无法正常显示,内容如下:file:=ReadExtFile(FileLocation^"tiku\\shiti1.txt") /*读取tiku目录下的shiti1.txt文件给file变量*/
if file=""then
xzt:="无题" /*判断file变量,为空则显示“无题”*/
else /*如果不为空,执行以下程序*/
number:=1 /*第一道选择题行数*/
numbera:=2 /*第一道选择题选项行数*/
line:=GetLine(file,number)
lin:=GetLine(file,numbera)
xzt:=GetLine(line,1,1,Return) /*读取选择题赋给变量xzt*/
xzda:=GetLine(lin,1,1,Return) /*读取选项赋给变量xzda*/
end if /*判断结束*/
现在已经实现了试题的读取,但是还是无法显示。试题显示制作过程:双击如图七中,标注“选择题”的交互图标,在出现的界面中,用文本工具分别添加两行内容:{xzt}和{xzda}。{xzt}用来显示选择题,{xzda}用来显示选项,这时就可以正常显示了,如图八。制作判断题时只把{xzda}去掉即可,只用变量{xzt}来完成试题的显示。读取下一试题的工作由四个选项按钮来完成,本文以字母为“A”的按钮为例讲述如何读取下一试题,其它的按钮制作过程和它相同,只是写入临时答案文件的字符不同。在字母为“A”的群组图标中添加一个计算图标,内容如下:
AppendExtFile(FileLocation^"tiku\\daan.txt",tihao^"A"^Return) /*把题号和字母“A”写入tiku目录下的临时答案文件daan.txt*/
file:=ReadExtFile(FileLocation^"tiku\\shiti1.txt")
if file=""then
xzt:="无题"
else
tihao:=tihao+1 /*题号加1*/
number:=number+2 /*选择题行数加2*/
numbera:=numbera+2 /*选项行数加2*/
line:=GetLine(file,number)
lin:=GetLine(file,numbera)
xzt:=GetLine(line,1,1,Return) /*读取下一题赋给变量xzt*/
xzda:=GetLine(lin,1,1,Return) /*读取下一题选项赋给变量xzda*/
end if
if xzt="" then /*判断选择题是否结束,如果结束执行以下语句*/
tihao:=tihao-1 /*题号减1*/
AppendExtFile(FileLocation^"tiku\\daan.txt","下面是判断题"^Return) /*向临时答案文件写入字符“下面是判断题”,作用是在执行检查时给以提示*/
GoTo(IconID@"擦除背景") /*跳出选择题进入判断题*/
end if
“答题完毕”按钮的作用是结束本次交互,进入判断题。图七中标注“变量赋值”的计算图标内容是:
number:=62 /*第一道判断题的前一行,本例选择题是30道,加上选项共60行,再加上两行空行*/
图七中标注“读取判断题”的计算图标内容如下:
tihao:=tihao+1 /*题号加1*/
number:=number+1 /*第一道判断题*/
line:=GetLine(file,number)
xzt:=GetLine(line,1,1,Return) /*读取判断题赋给变量xzt*/
实现下一道题的读取是由“正确”和“错误”两个按钮来完成的。向“正确”按钮的群组图标中添加一个计算图标内容如下:
AppendExtFile(FileLocation^"tiku\\daan.txt",tihao^"A"^Return) /*向临时答案文件中写入题号和字符“A”*/
GoTo(IconID@"读取判断题") /*跳转到“读取判断题”的计算图标,实现下一道判断题的读取*/
“正确”和“错误”两个按钮的内容基本相同,只是“正确”按钮向文件中写入字符“A”用以标示正确,“错误”按钮向文件中写入字符“B”用以标示错误。
2、
检查分支检查分支只实现文件的读取,较好制作,如图九。图中标注“读取试题”的计算图标内容如下:
file:=ReadExtFile(FileLocation^"tiku\\shiti1.txt")
file1:=ReadExtFile(FileLocation^"tiku\\daan.txt") /*读取临时答案文件*/
if file=""then
xzt:="无题"
else
number:=1 /*第一道选择题的行数*/
numbera:=2 /*第一道选择题选项的行数*/
tihao:=1
line:=GetLine(file,number)
lin:=GetLine(file,numbera)
tihao1:=GetLine(file1,tihao)
xzt:=GetLine(line,1,1,Return)
xzda:=GetLine(lin,1,1,Return)
tihaox:=GetLine(tihao1,1,1,Return) /*读取临时答案文件的答案内容赋给变量tihaox*/
end if
在“下一道题”的群组图标中添加一个计算图标内容如下:
if tihao>31 then /*判断是否为判断题,如果是执行以下语句*/
tihao:=tihao+1
number:=number+1
tihao1:=GetLine(file1,tihao)
line:=GetLine(file,number)
xzt:=GetLine(line,1,1,Return)
xzda:="" /*此变量是显示选择题选项的,在此为空*/
tihaox:=GetLine(tihao1,1,1,Return)
else /*以下是读取选择题的*/
tihao:=tihao+1
number:=number+2
numbera:=numbera+2
tihao1:=GetLine(file1,tihao)
line:=GetLine(file,number)
lin:=GetLine(file,numbera)
xzt:=GetLine(line,1,1,Return)xzda:=GetLine(lin,1,1,Return)
tihaox:=GetLine(tihao1,1,1,Return)
end if
3、 交卷分支
交卷分支主要实现成绩的统计。统计成绩主要是由标准答案文件内容和临时答案文件内容进行比较,如果答案相同,则分值累加。交卷分支的制作流程如图十所示。其中最主要的是“统计成绩”计算图标,其内容如下:
number:=0
numbera:=0
line:=0
lin:=0
tihao44:=0 /*用它记录分数*/
xzt:=0
xzda:=0 /*以上所有变量清零*/
i:=1 /*定义计数变量*/
file1:=ReadExtFile(FileLocation^"tiku\\daan.txt")
file2:=ReadExtFile(FileLocation^"tiku\\bzda1.txt")
repeat with i:=1 to 51 /*循环读取50道题的答案,进行比较,其中包括一行“下面是判断题”的提示语,所以要循环51次*/
number:=number+1
numbera:=numbera+1
line:=GetLine(file1,number)
lin:=GetLine(file2,numbera)
xzt:=GetLine(line,1,1,Return)
xzda:=GetLine(lin,1,1,Return)
if xzt=xzda then
tihao44:=tihao44+2 /*分值累加,每题2分*/
end if
end repeat /*结束循环*/
至此,考试程序我们已制作完成,相信大家在程序分析和程序制作的指引下,再结合图例,能很快制作出属于自己的考试软件。如果大家需要示例程序可访问http://lwcsoft.myrice.com,到“麻雀老巢”专栏下载。
http://lwcsoft.myrice.com 2003.9.14