基于Flash和数据库技术构建网络课程的测验模块
2009-03-11赵志靖周静
赵志靖 周 静
摘 要:本文在分析目前基于Flash技术开发练习测验的四种方法的基础上,提出了借助数据库技术,通过Flash调用数据库的方法来构建网络课程的测验模块,并以网络课程测验模块中的单选题为例,详细阐述了这种方法的实现过程。
关键词:Flash;数据库;XML;网络课程
中图分类号:TP393 文献标识码:A 文章编号:1673-8454(2009)04-0072-03
一、网络课程的设计和开发概述
网络课程的设计和开发是教育技术研究的一个重要内容。一个完整的网络课程,其基本模块通常包括:教学内容的多媒体演示、练习测验、检索查询、学习指导、帮助导航、讨论交流等。其中“练习测验”部分作为一种行之有效的教学手段和测评手段,是一个优秀的网络课程不可缺少的重要组成部分。开发网络课程的技术有很多,如ASP、ASP.NET、PHP、JSP等,本文研究的是Flash技术。
目前,基于Flash技术开发的练习测验主要有四种方法:一是利用帧技术,即每一帧编辑一道习题;[1]二是利用组件,即利用Flash内置的“学习交互”组件开发练习测验;[2] 三是利用LoadVariablesNum命令,即利用Flash脚本语言中的LoadVariablesNum命令调用外部文本文件;[3][4][5] 四是利用XML技术,即利用Flash脚本语言调用外部XML文件。[6][7]
前两种方法每道题目都要在Flash源文件中占用一帧,并且题目的内容必须在Flash源文件中才能编辑,当需要修改练习题的内容时必须打开源文件,一帧一帧地修改才能完成,即如果要修改题目内容就要重新做一遍课件,不利于广泛应用。后两种方法是将试题信息存放在外部文本文件或XML文件中,通过Flash读取文本文件或XML文件中的数据将试题呈现给用户,而不必打开Flash源文件一帧一帧地修改。但随着题目总数的增加,外部文件也会随之增加,增加到一定程度时,外部文件的建立和管理都比较困难,通过调用外部文件的方法只能解决修改题目内容的困难,而无法解决随意增添或减少题目数量的困难。因此,本文借助数据库技术,通过Flash间接调用数据库来构建网络课程的测验模块。
二、设计思路
本测验模块主要由用户界面文件、数据库文件、ASP处理文件和动作脚本四部分组成。用户界面文件向使用者显示试题信息、交互信息等;数据库文件用来存放试题内容,如题干、各备选项及正确答案等;利用ASP与数据库发生交互,将数据库中的数据动态生成XML格式的数据文件;动作脚本则是用户界面和数据间通信的桥梁,它将动态生成的XML格式的数据解析后存放在数组中,并通过界面文件将试题显示在Flash文件中。本测验模块的各部分关系及其流程如图1所示。
三、实现过程
本文以单选题为例介绍一下上述思路的实现过程。
1.创建用户界面
打开Flash软件,在其中创建一影片剪辑元件,命名为question。在question中添加六个动态文本框和四个单选按钮组件,如图2所示。
设置六个动态文本框的名称依次为num_txt、t_txt、k1_txt、k2_txt、k3_ txt和k4_txt,分别用于显示试题序号、试题内容和四个备选项内容。设置四个单选按钮组件的名称依次为A_btn、B_btn、C_btn和D_btn。
2.设计数据库文件
数据库文件用来存放试题内容,如题干、各备选项以及正确答案等,其各个字段名称、数据类型及含义如图3所示。
3.编写ASP处理文件
通过ASP将数据库中试题数据转换成XML文件,再由Flash前台读入XML文件实现试题的显示。将数据库数据转换成XML文件的核心代码如下:
i=1
response.Write("<?xml version='1.0' encoding='utf-8'?><root>")
do while not rs.eof
response.Write("<t"&i&" key='"&rs("key")&"'><question>"&rs("t")&"</question><key1>"&rs("k1")&"</key1><key2>"&rs("k2")&"</key2><key3>"&rs("k3")&"</key3><key4>"&rs("k4")&"</key4></t"&i&">")
i=i+1
rs.movenext
loop
response.Write("</root>")
其中,rs为数据库记录集对象,用于存放数据库文件中的各条数据记录;rs("key")、rs("t")、rs("k1")、rs("k2")、rs("k3")、rs("k4")用于输出当前试题的正确答案、题干、选项A、选项B、选项C、选项D。上述ASP代码命名为test.asp,转换成的XML文件的结构如图4示(以两道题为例)。
有两点需注意,一是上述ASP代码在保存时一定要选择utf-8编码;二是ASP文件的输出类型一定要是XML格式的,即在代码中设置Response.ContentType="text/xml"。
4.编写AS脚本
有了用户界面文件和动态生态的XML数据文件,就可以在Flash中显示试题了。在Flash中利用AS脚本将动态生成的XML文件加载到Flash中,然后解析XML格式数据,并通过进一步编写脚本将试题显示在Flash界面中。XML文件解析如图4所示,核心脚本如下:
myxml = new XML();
myxml.ignoreWhite = true;
myxml.load("test.asp");
key_arr = new Array();//用于存放每道题目的正确答案
t_arr = new Array();//用于存放每道题目的题干及其答案选项
result_arr = new Array();//用于存放题目序号,作用是随机出题
mykey_arr = new Array();//用于存放用户选择的答案
myxml.onLoad = function(status) {
if (status) {
trace("XML文件加载成功!");
len = myxml.firstChild.childNodes.length;//题目数
tt = myxml.firstChild.childNodes;//节点root下的所有子节点构成了一个数组
for (var i = 0; i<len; i++) {
result_arr[i] = i;//用于存放题目序号,作用是随机出题
key_arr[i] = tt[i].attributes.key;//用于存放每道题目的正确答案
t_arr[i] = new Object();
t_arr[i].question = tt[i].childNodes[0].firstChild;//用于存放每道题目的题干
t_arr[i].k1 = tt[i].childNodes[1].firstChild;//用于存放每道题目的A答案
t_arr[i].k2 = tt[i].childNodes[2].firstChild;//用于存放每道题目的B答案
t_arr[i].k3 = tt[i].childNodes[3].firstChild;//用于存放每道题目的C答案
t_arr[i].k4 = tt[i].childNodes[4].firstChild;//用于存放每道题目的D答案
}
for (var i = 0; i<len; i++) {
//随机排列题目
tmp = random(len);
v1 = result_arr[i];
result_arr[i] = result_arr[tmp];
result_arr[tmp] = v1;
v2 = key_arr[i];
key_arr[i] = key_arr[tmp];
key_arr[tmp] = v2;
}
nextFrame();
} else {
trace("XML文件加载失败!");
}
};
stop();
在Flash界面中显示题目的核心代码如下:
attachMovie("question", "qu", 1,{_x:50,_y:50});//加载库中带有题目题干及其答案选项的影片剪辑
var v1 = 0;
qu.t_txt.selectable=false;
qu.t_txt.text = t_arr[result_arr[v1]].question;//显示题干
qu.k1_txt.text = t_arr[result_arr[v1]].k1;//显示答案选项A
qu.k2_txt.text = t_arr[result_arr[v1]].k2;//显示答案选项B
qu.k3_txt.text = t_arr[result_arr[v1]].k3;//显示答案选项C
qu.k4_txt.text = t_arr[result_arr[v1]].k4;//显示答案选项D
v1++;
qu.num_txt.text="第"+v1+"题";//显示第v1道题
……(代码略)
5.运行
将上文生成的swf文件插入到网页中并在IIS下测试运行。本测验模块在Windows XP+Flash8+IIS5.1下运行通过。
四、结束语
基于Flash和数据库技术构建的网络课程测验模块具有文件体积小、交互性强、表现力丰富、便于维护、测验内容可实时更新等特点,该方法对于网络课程的开发及其它Flash应用有一定的借鉴意义。
参考文献:
[1]林惠文. 用Flash&Asp技术开发无机化学网络习题课件[J].计算机与应用化学,2007(3).
[2]刘海霞. 基于Flash MX的多媒体教学练习课件的制作探索[J].新课程研究·职业教育,2008(5).
[3]徐华. Flash制作动态组卷测试系统的方法[J].教育信息技术,2006(5).
[4]杨双丽,丁革建. 基于Flash的简易智能题库系统开发[J].中国教育信息化,2008(10).
[5]方艳,刘永福. 应用Flash动作脚本语言制作多媒体测试课件[J].广西轻工业学报,2007(1).
[6]张培山. 基于XML的Flash选择题测验模板的研究与实践[J].信息技术教育,2006(12).
[7]赵航涛. 利用Flash和XML制作通用单选练习课件[J].中小学电教,2005(11).
(编辑:隗爽)