一 技 应用 基于XM L 和Fl ex 的网络考试系统 的设计与实现 摘要:本文通过对网络考试系统发展的研究,结合C/S 这往往导致交互速度低得让人无法忍受。随着Web技术的不断 Web开发有了新的发展分支,即包含丰富用户体验的应用 模式良好的界面交互和B/S模式客户端零维护的优点,设计并 发展,实现了基于XML和Flex的网络考试系统。 程序,这就是RIA(Rich Internet Applications),富因特网应用 关键词:Flex,RIA,网络考试系统,XML 程序。 1、引言 RIA利用相对健壮的客户端描述引擎,这个引擎能够提供 响应速度快和图形丰富的用户界面。除了提供一个具有各种控 件(滑标、El期选择器、窗El、选项卡、微制器和标尺等) 随着计算机和网络技术的不断发展,数字化、标准化考试 的界面之外,RIA一般还允许使用SVG(Scalable Vector aphics,可伸缩向量图)或其他技术来随时构建图形。一 日益普及,网络考试系统作为一个新兴的技术被广泛应用于教 GrA技术甚至能够提供全活动的动画来对数据变化作出响应。 育系统中。传统的纸张考试从老师的选题、出题、打印、复印、 些RIRlA的另一个好处在于,大量数据被缓存在客户端,从而有 学生信息登记、答题、批改、记分、学生查询分数到学校的各 科成绩管理,整个过程花费了大量的师资力量和相当长的时间, 响应速度快和数据交换少的优点(现在比较热门的网络社区“开 A技术)。对于无线设备和需要偶尔连接的设 这个时候网络考试系统呼之欲出,它将教师出题、学生考试、 心网”就采用RI试题管理、成绩管理集合在一起,方便了师生,缩短了考试的 备来说,将来的趋势肯定是向富客户端的方向发展(如不久前 推出的3G将会进一步推广RlA的应用),并且会逐渐远离基于 周期。 目前,网络考试系统都需要数据库的支持,其设计模式都 文本的Web客户端。它是集桌面应用程序与Web应用程序于一体的新一代网络 是基于C/S模式和B/S模式两种。C/S(C ent/Server)模式 服务器通常采用高性能的服务器,工作站或者小型机,这种模 应用程序,即具备桌面应用程序的强大功能、高效的用户界面交 式灵活性强,能充分发挥客户端PC机的处理能力,很多数据可 互,也具备Web应用程序的快速、低成本布署、互动、多媒体 以在客户端处理后传送至服务器,性能和安全性较高。缺点主 处理、实时通信。而Flex是RIA领域中的典型代表,只要客户 ash Player,即可运行,而Flash Player本身就能运 要是需要在客户端安装相关软件,对客户端和操作系统也有一 端安装了FlE、Firefox等主流浏览器中,所以兼容性较好。其次还有 定的,例如:由于操作系统的用户访问设置不正确导致环 行于I境冲突,计算机病毒导致操作系统不稳定,都会造成客户端软 Microsoft公司的SilverLight和Sun公司的JavaFX。 如图1,在基于Flex的Web应用模型中,用户和服务器之 件不能正常启动和发生异常错误等问题。客户端软件不能够跨 平台,兼容性较差,管理和维护需要在客户端和服务器端共同 间加了一个0ptional data Services中间层,使用户操作与服 完成,工作量大而且繁琐,升级困难。B/S(Browser/Server)模 务器响应异步化。式在客户机只需要安装一个浏览器,如:IE、Google Chrome 且由用户触发一个业务请求的时候,服务器对其处理之后 或者FireFox,服务器端安装数据库。客户机通过浏览器与web 不是将整个页面返回给用户,而仅仅返回数据,并不是界面,数 服务器进行数据交互即可,这样可以实现客户端的零维护。该模 据量就少多了,返回之后,由客户端来完成界面变更,用户界面 式的缺点是灵活性和安全性较差,例如由于网络不稳定,造成数 无需刷新。这样就可以像开发桌面应用程序一样,只需同服务器 据读取不完整导致的异常,网速较慢造成页面白板等问题…。 进行数据层面的交换,而不用每次都刷新界面也不用每次将数据 处理的工作提交给服务器来做,这样即减轻了服务器的负担又加 快了响应速度,缩短了用户等候时间。从用户的感觉上,采用了 2、Flex概述 Flex技术的应用程序,几乎所有的操作都会很快响应,没有页面 传统的HTML应用程序功能单一、 人机交互性差、安全性 重载的等待,更不会出现白屏。 能不高。基于HTML的应用程序应用系 统的部署成本低、结构简单,不用更新 升级客户端。很多用户和开发人员都乐 于放弃由桌面计算机带来的用户界面改 进,来实现对新数据和应用系统的快速 访问。 然而,某些应用系统并不完全适 合采用HTML技术。复杂的应用系统可 能要求多次提取网页来完成一项事务处 理,在某些领域中,如医药和财务领域, 72 EI-=l' E: I.I ̄IRi"LlE l2nll1.口E AP PLICATION一 - 3、没 实现 performance.”type=”singleChoice”link=”http://live2 d o c s.a d o b e.c o m/f I e x/3/h t m I/ 在设计过程中,主要把在线考试系统分为前台考试端口和 后台数据服务器两部分。后台主要是在服务器中提取数据库并 layoutperformance01.htmII.> ~<!【CDATA【Which of the following is NOT an option ly employ to improve the perceived startup 生成一份试题内容的XML文档,在这里主要是一个存储数据的 you’d typical数据库文件和一个提取数据的ASP.net文件。而前台则是一个 time in your Flex application?Choose One:】】> 接收端口,它用来接收后台传来的数据,同时接收用户的响应。 </question> 为了减轻服务器的负担,前台同时兼具格式化用户响应并与后 台传来的答案进行对比,评出用户考试分数的功能。由于前台 兼容性,即在B/S中,只要客户机有这个考试端口,直接就可 <answer> defe r red c reation of comPonent s with 的内容是整合在一个swf文件中,因此它具有较好的移植性和 createComponent s2 FromDescriptors 0 以连接后台进行考试。 3.1试题获取模块 模块启动一个定时器来保证获取试题的完整性。本模块采 用异步方式获取数据 考试前台界面不受影响 。试题请求模块 如下: 参数current表示当前要请求的序号 而count用于计数 表示从当前开始请求多少道题目,默认为1 o Public function Question—test item(cu rrent:int count=1)( httpServiceReadXML.url=Misc.randomUrl(test_item—U RL): httpServiceReadXML.addEventListenerfFau}tEvent. Fault.questiontest—item—Error): httpServiceReadXML.addEventListener(ResultEvent. Result,questiontestitem—Finish); httpServiceReadXML.send(): ) 当请求成功之后,会触发ResultEvent.Result事件,在事件 处理函数question—test_item—Finish中将题目显示在界面上。 Public function Questiontestitem—Finish(】 Public function fetchTest ltemComPIete fe: ResultEvent】{ var testXL:XMLList=e.result.item as XMLList; for fvar i:int=O;i<testXL.1ength ++) { var title:String=testXL[i】.question;//题目 vat type:String:testXL[i].@type;//试题类型:单选、 多选等 var id:String=testXL[i].@id;//试题编号 ) ) 上述代码中的试题规范使用一个XML进行管理,其格式举 例如下: <?xml version=”1.0”encoding=”utf一8”?> <items int ro Title=”Attest 1.5”desc=”You wil lhave 35 minutes to complete this mini exam.”> <item> question category= ’UI”feedback=。。C is correct Minimizing the number of object s created in your code actuallv makes Ioad time faster.The other methods listed make no difference to actuaI startuP time,but rather they improve the conceived startup time.Read the first livedocs link,and move on to About startuP <,answer> <answer>use the callLater 0 method</answer> <answer correct=”Y”>minimize the number of object s that a re created when the aPplication Ioads</ anSWer> <answer>make use of ordered creation for your compo2 nent s</answer> </item> </items> 此XML为ASP.NET在后台生成,具体说明如下:items 为根节点 表示一套试题。item为每一题,question为题 目,category表示类别,此处为Ul(用户界面题),feedback 是答案解析,type为类型f单选) link为参考资料的网址。 answer为答案,正确答案标志为:correct=y。 3.2考试计时和答案实时保存 两者都是采用Flex提供的计时器来完成,需达成的目标:本 模块计时和答案实时保存都采用异步技术来完成,前台界面不受 影响。计时模块具体实现如下: tickTimer=new Timer(1 000)://一秒钟一次 //student—num是当前学生学号 tickTimer.addEventListener f TimerEvent.TIMER ,function (e:TimerEvent) {tickHanlder(studenLnum))): tickTimer.start(1: 答案实时保存模块具体实现如下: saveTimer=new Timer(3000)://三秒钟一次 //其中a是答案集合中的元素。 saveTimer.addEventListener f TimerEvent.TIMER, function(e:fimerEvent) {foreach(a in answers){saveHandler(a.id,’submit an2 swer’):))】: saveTimer.start 0:c 参考文献: 【l】汪永明,基于B/S模式的在线考试系统微机发展,2004;O1; 59~62 [2】刘明伟,任永攀,黄兴.Flash与后台[M】.北京:清华大学出版 社,2007:31-71 作者单位:昆明冶金高等专科学校 2rlln.na/ I_ lSrl|IFRlIE…:5 l :73