基于flash+xml的考试系统的构建
2010-07-19张艳艳
张艳艳
(浙江海洋学院数理与信息学院,浙江舟山 316004)
考试系统是实现无纸化考试的重要手段,可以全面考核学生的基础知识和基本操作能力。目前考试系统大多采用ASP、VB来制作,本考试系统采用了全新的思路,即将flash与xml结合起来,在外部xml文档中存储题目和正确答案,在flash软件中制作考试系统界面并调用xml文档,这样做的优点是:一、独立的xml试题库可以确保考试的公平性。二、xml文档易于扩充,可以非常方便地添加删除题目,提高考试系统的通用性。三、使用flash来搭建平台,可以使考试系统的体积做到非常小巧。
1 xml语言简介
xml是可扩展标记语言(eXtensible Markup Language)的缩写,在xml文档中,用户可以自己定义标记,标记扩充容易、灵活性大。xml文档容易创建,可读性强,非常简洁[1]。xml文档采用树状组织结构,每个标记为一个节点,有且只有一个根节点。本考试系统中单项选择题对应的xml代码为:
<root>
<timu>
<tigan>1.以助记符代替机器码的语言是()</tigan>
<optiona>高级语言</optiona>
<optionb>汇编语言</optionb>
<optionc>C 语言</optionc>
<optiond>VB</optiond>
<answer>2</answer>
</timu>
……
</root>
上文中<timu> </timu>是用来存放题目的标记,<tigan> </tigan>是用来存放题干的标记,<optiona> </optiona>是用来存放选项A的标记,<answer></answer>是用来存放正确答案的标记。如果需要更改题目或选项,只需更改各标记中的相应内容即可。通过添加xml文档中的标记,可以添加多道题目。
本代码采用了专门的xml编辑器xmlwriter来编写。为了解决在flash中显示中文会出现乱码的问题,在xml文档里要指明编码格式:“encoding="UTF-8"”,并且要在flash的帧动作中加入语句System.useCode-Page=true。
2 系统的关键技术
2.1 加载 xml文档
Flash actionscript2.0使用childNodes来访问xml的子节点,而actionscript3.0[2]对xml的支持更加完美。在AS3.0中通过URLloader来加载xml文档,并且可以直接使用“.”加子元素的名称来访问子节点。首先需要定义多个数组来存放xml节点的相应内容,其次在加载时,需要定义URLRequest和URLLoader对象,并添加事件侦听器。加载xml文档的核心代码为:
var myXML:XML=new XML(); //定义XML对象
myXML.ignoreWhitespace=true; //忽略空白
var myXMLURL:URLRequest=new URLRequest("xuanze.xml");
var myLoader:URLLoader=new URLLoader(myXMLURL);
myLoader.addEventListener("complete",xmlLoaded);
function xmlLoaded(evtObj:Event){ //定义加载函数
var myXML:XML=XML(myLoader.data);
for(var i=0;i<myXML.length;i++){
title.push(myXML.timu[i].tigan); //将 xml内容加载到数组中
option1.push(myXML.timu[i].optiona);
option2.push(myXML.timu[i].optionb);
option3.push(myXML.timu[i].optionc);
option4.push(myXML.timu[i].optiond);
}
}
2.2 显示xml各个节点的内容
上文的代码实现的功能是将xml文档中各个节点的内容放入相应的数组之中,其中将题干的内容存放在title数组中,四个单选项的内容分别放在option1~option4数组中。为了在flash界面中显示出相应的内容,需要将数组的内容赋值给各个动态文本框,如将title数组中的内容赋值给la1文本框[3],其核心代码如下:
var NUM=0;
function next_btn_click(evtObj:Event){
NUM++;
if(NUM==(n)){
next_btn.enabled=false;}
la1.text=title[NUM]; //将题干的内容显示在la1文本框中
op1.text=option1[NUM]; //将各选项显示在对应的动态文本框中
op2.text=option2[NUM];op3.text=option3[NUM];
op4.text=option4[NUM];
}
next_btn.addEventListener("click",next_btn_click);
2.3 设置显示格式
如果采用默认格式,则在flash界面中显示出来的字号偏小,针对这种情况,可以采用两种解决办法,一种是使用CSS样式[4]来设置xml文档的显示格式,另一种是直接在flash中使用TextFormat对象设置显示格式。本系统采用了后一种方法:
var mytf:TextFormat=new TextFormat();
mytf.color=0x0099CC;//设置颜色
mytf.size=17;//设置字号
la1.setStyle("textFormat",mytf);
op1.setStyle("textFormat",mytf);
op2.setStyle("textFormat",mytf);
op3.setStyle("textFormat",mytf);
op4.setStyle("textFormat",mytf);
2.4 界面设计
本考试系统包含主界面、单项选择题页面、多项选择题页面、判断题页面和反馈页面,在flash中分别设置不同关键帧,设计不同的界面。
以单项选择题为例,界面中包含显示题干的文本框(实例名la1),显示各备选项的四个文本框(实例名为op1-op4),以及“上一题”和“下一题”按钮(实例名分别为before_btn和next_btn)。界面如下图所示:
图1 单项选择题页面Fig.1 Page of monomial-choices
图2 加载xml文档后单项选择题页面Fig.2 Page of monomial-choices after loading xml
多项选择题页面与此类似,不同之处是使用复选按钮替换了单选按钮。判断题可以直接使用单项选择题的形式,设置选择项为“是”或“否”。
2.5 反馈环节
此环节设置动态文本框显示用户回答正确的题目数及得分。首先在上图单项选择题的页面中,设置四个单选按钮同属mygroup组中,并且给其value属性分别赋值。其次将数组中的正确答案与单选按钮的value值进行匹配,如果相同,则表示回答正确的变量加1。最后在flash的关键帧中显示答对的题目数和得分。
3 结束语
本考试系统采用外部的xml文档存放考试题目,实现了单项选择题、多项选择题和判断题的测试。Flash制作的考试系统,体积小巧,安装方便。Xml除了可以与flash结合构建考试系统,也可以与java结合,或者直接生成PDF试卷。总之,随着人们对xml技术研究的深入,xml必将对教育教学产生更大的影响。
[1]Comp-U-Learn Tech India Ltd.贾素玲,王强等编译.XML核心技术[M].北京:高等教育出版社,2005:8.
[2]杨 珊.征服Flash CS4中文版完全实战学习手册[M].北京科海电子出版社,2009:226-543.
[3]张培山.基于XML的flash选择题测验模板的研究与实践[J].信息技术教育,2006.12:69-71.
[4]黄泳瑜,徐蕙英.XML网页设计应用基础教程[M].北京:中国铁道出版社,2006:86.