基于富互联网应用的初中物理电学实验系统实现.doc

上传人:jian****018 文档编号:8993112 上传时间:2020-04-02 格式:DOC 页数:16 大小:360KB
返回 下载 相关 举报
基于富互联网应用的初中物理电学实验系统实现.doc_第1页
第1页 / 共16页
基于富互联网应用的初中物理电学实验系统实现.doc_第2页
第2页 / 共16页
基于富互联网应用的初中物理电学实验系统实现.doc_第3页
第3页 / 共16页
点击查看更多>>
资源描述
基于富互联网应用的初中物理电学实验系统实现松江区古松学校 何少莎一、 Adobe富互联网应用介绍选择Adobe富户联网应用,是因为Adobe富媒体不但提供了一种整合图文、动画、视频、音频等多媒体的新方式,还带来了比传统Web更加丰富的交互体验。富互联网应用(Reach Internet Applications,简称RIA)开发技术有很多种,其中以Adobe公司的Flex发展最为成熟。Flex的最大优势在于,有强大的Flash平台作为后盾。一方面,Flex生成的文件Flash文件体积较小,网络传输快。另一方面,Flash跨平台支持性高。主流的操作系统,如Windows系列,Linux系列,Mac OS系列都支持Flash,不受操作系统的约束。同时,主流的网络浏览器,如Internet Explorer,Firefox,Opera,Safari等也都支持Flash文件的播放。所以这些,不但为网络环境中制作体验良好的初中物理电学实验系统提供了基础,它所具备的强大媒体整合能力以及高度互动反馈能力对于实现理解也有很好的促进作用。Adobe公司的网络富媒体应用,又称为AIR(Adobe Integrated Runtime),基于Flex技术开发。Flex是一种基于标准编程模型的高校RIA开发产品集,最初由Macromedia公司在2004年发布,后被Adobe公司收购。一个完整的Flex程序由MXML代码和Action Script代码组成。MXML基于XML标准,用于配置和设计Flex程序的界面及编写表现层数据模型;Action Script3.0基于ECMAScript,原来用于设计Flash动画,在Flex中用于实现程序逻辑,其语法类似于JavaScript,一种面向对象的程序设计语言,可以制定一系列的控件、类、事件的处理机制,可扩展性和定制性很强。近几年,Flex已经逐渐成为富互联网应用的首选利器,受到越来越多的关注和重视。二、实验系统结构和开发框架(1)实验系统结构。Flex一直以来都没有提供统一的接口操作数据库,Action Script 3.0也无法方便的与数据库直接建立连接,却能实现XML格式数据的输入与输出。要存储大量的信息,特别是需要稳定、安全的存储时,XML数据根本无法满足。要解决这个问题,必须采取其他方式来建立数据库与Flex应用程序之间的联系。本研究采用了PHP脚本语言作为服务器后台脚本,用以动态生成中间XML数据,实现Flex应用程序与数据库的相互交互。整个系统的具体结构,如图1所示。图1 系统结构设计 (2)开发框架。本研究借用了Cairngorm开发框架实现所有代码的组织。Cairngorm,中文译名“烟水晶”,是Adobe公司为方便Flex企业级应用而开发的一个微架构,其主要目的是防止代码结构中的界面显示层和业务逻辑层的混杂。本次开发利用Cairngorm将所有代码分成三类组件,即模型(Model)、视图(View)和控制(Control)。图2,大致描述了三者之间的关系。具体数据 模型(Model)业务逻辑和数据处理 控制(Control)浏览器界面 视图(View)数据更新数据绑定事件处理图2 模型、视图和控制之间的关系“模型”主要负责所有的Action Script 3.0编写的业务逻辑操作和业务数据的数据储存,“模型”中的数据使用Flex中的数据绑定功能,实现数据与“视图”的同步,这样当数据产生变化时,用户的“视图”也将自动相应调整。“视图”主要负责界面排布并将数据直观的显示给用户,并接收用户的操作行为,进而产生相应的“事件”。利用“事件”管理和发送机制,引起“控制”部分的相应操作。它使用MXML标记语言和Action Script 3.0联合编写。“控制”主要负责系统中的各种 “事件”处理,通过操作模型中的数据和传递数据到模型层来实现来自于“视图”的请求,主要使用Action Script 3.0编写。以上是关于整个开发框架的设计,具体实现上还需要借助Cairngorm一系列的类、对象和事件处理机制,包括Model Locator、View、Front Controller、Delegate、Dispatcher、Command、Service等,各部分的程序流程如图3,具体功能如下:Model Locator(模型定位):将所有系统运行中生成的数据放在若干对象里并集中保存,Model Locator是共享的,整个实验系统都可以对其进行数据操作。View(视图):指的是用户在浏览器直接看到的用户界面,包括按钮(Button)、面板(Panel)、列表(List)等一系列可视Flex控件,这些控件所需要的数据可以和Model Locator绑定,两者同步变化。View还负责与用户交互行为(如点击、拖拽等),是学习者在实验系统中主要的可视部分。Front Controller(前端控制器):负责监听View中以Dispatcher发出的Cairngorm事件,并将此事件的处理交给相应的Command。Delegate(代理):Dlegate是Service实例。Dlegate在Command的代码中创建,并将Service的结果数据(本研究中指PHP代码获取的XML数据)返回给Command。Service(服务):指的是远程过程调用,本研究中主要指服务器端PHP脚本对数据库的操作。图3 开发框架中的程序流程三、电路图工具的设计实现(1)基于图模型图论(Graph Theory)是应用数学中的分支,它以图为研究对象。“图G(Graph)指的是具体事物的集合V和事物之间联系的集合E所组成的偶对”王朝瑞.图论M.北京:北京理工大学出版社,2001.2.。图是描述数据元素间多对多关系的一种数据结构,并加上一组基本操作构成的抽象数据类型模型,是一种复杂的非线性数据结构,可称为图状结构或网状结构。在图中,以结点表示事物,以结点与结点之间的连线边,表示事物之间的特定关系。即图由若干给定的结点的集合V和连接两结点的边的集合E构成,借以描述某些事物之间的关系,一般表示为G=(V,E)。图分为有向图和无向图,其中边有方向的图称为有向图,边无方向的称为无向图。图的定义和特性与计算机编程中的电路分析有着诸多共同点,使得利用图论来实现电路分析有了可能。首先,在实验系统中,电路元件是由众多flash动画组成的,其中每个电路元件都含有若干接线柱作为用户进行电路连线导线的接口。每个接线柱都可以引出无数的导线连接到其他电路元件上。由此,我们可以将电路元件的接线柱作为结点,将导线和电路元件本身作为边,则可以利用这些结点和边构成一个图。其次,在电路连接的实验中,从接线柱A到接线柱B之间相连接的导线与从接线柱B到接线柱A相连的导线是等效的,因此本设计中涉及到的模型为无向图,不用考虑边的方向。(2)图的矩阵表示在实验系统中,学习者使用鼠标画出一截线段来连接不同的电路元件,对于学习者来说,如果要分析电路,必须知道组成电路的拓扑结构,我们通常用观察电路的方法来获取这些信息,但是计算机并不能直接识别电路,计算机也并不能自动创建基于用户操作而形成的电路连接方式。就计算机程序语言来说,只能以数组或数据模型作为处理对象。因此,要实现本研究中的电路分析和计算,第一步就是建立计算机程序能够识别的图的模型,来表示相互连接的电路元件的关系。图通常采用两个表来进行表示,其中一个一维顺序表来保存结点信息,另一个邻接矩阵来保存结点之间的相邻关系。在邻接矩阵中,如果两个结点相邻,即两个电路元件的接线柱之间存在导线,即用数字“1”表示,否则用“0”表示。设G=(V,E)是具有n个结点的图,则G的邻接矩阵是满足如下条件的n阶方阵。(3)建立图的数据模型根据上述分析,首先,将所有电路元件设定一个name值(它是唯一的),并将所有电路元件的接线柱进行标记即元件左边的接线柱标记为“+”,右边的接线柱标记为“-”,第三个接线柱(一般存在电流表和电压表中)标记为“+”。设定一个一维数组lineData,用于保存实验系统中所有用户鼠标连线起来的电路元件。当用户点击电路元件的某个接线柱并连接于下一个接线柱的时候,必须在数组中加入这样四个值,分别是第一个电路元件在程序中的name(如“lamp0”)值、第一个元件的“接线柱”标记(如“+”),第二个元件在程序中的name值,第二个元件的接线柱标记。将name值分别为lamp0左边的接线柱和name值为lamp1右边的接线柱连接起来,则该数组的元素应该是:,如若有更多的元件连接,以此类推即可。其次,为了获得适应于构建图的数据,需要对电路元件的连接数组lineData进行一系列的去除、删减。在这里,将接线柱看作是结点,电路元件看作图的边。筛选的原则是将两个元件相连的接线柱合并为同一结点(如将上述数据中的lamp0的“+”和lamp1的“-”合并),将电路元件本身作为结点相互连接的边,并为每一个结点进行编号。因为所有相连的接线柱都可以合并,所以最后,图中的边全部是由各电路元件组成,而不存在导线组成的边。将其组成一个新的二维数组node,其中数组每行的第一个元素(如“结点0”)是合并之后结点的编号,数组中每行,从第二个元素开始,表示的是该结点朝外连接的电路元件name值。大体结构如下:再次,利用node数组得到图的邻接矩阵数组adja。其基本思想是首先利用node中结点个数n,得到一个n行n列的二维数组adja,并且如果node中某行a与另一行b含有相同元素,则相应的adja(a,b)就为1,否则为0。(4)算法实现要求出图中的所有回路,其本质是图的遍历,即从图中某一结点出发,按某种搜索方法访遍其余结点,且使每一结点仅被访问一次。在这之中需要考虑的因素,首先,所得的图是无向图,没有开始和结束点之分,所以算法的参考要指定第一个访问的结点;其次,对图的遍历路径有可能构成一个回路,这样必然会造成程序的死循环,因此算法设计要考虑遍历路径得过程中可能出现的无限循环问题;再次,一个结点可能和若干个结点相邻,必须要保证该结点的所有相邻结点按照某种次序被访问。本文采用深度遍历算法思想,求得图中的所有通路,其具体步骤如下:(1)访问指定的初始结点(假定为v)同时标记结点v为已访问。(2)查找结点v众多相邻结点的第一个(假定为w)。(3)若结点v的邻接结点w存在,则继续执行算法;否则返回到v,再找v的另外一个从未访问过的相邻结点。(4)若结点w尚未被访问,则首先访问结点w并标记结点w为已访问。(5)继续查找结点w的下一个邻接结点(假定为wi),如果v取值wi转到步骤(3)。直到连通图中所有结点全部得到访问则自动结束。附录2第一部分程序描述了电路图工具算法的核心代码,其中node是表示图结点的顺序表、adja是图结点的邻接矩阵、path保存已经经过的结点编号,每一行表示一个回路、visited结点是否访问的标识符数组(共n行,初始化全部为false,表示未被访问),v是当前结点、des是node数组的最后一个结点编号、length是path的行数。四、电流、电压计算工具的设计实现(1)电路模型的矩阵表示要求得电流和电压的具体数值,现实生活中可以利用电流表、电压表直接进行测量获得,也可以利用已知的欧姆定律和基尔霍夫定律列出一定的数学方程后,进行计算。而在计算机中,则需要将这些信息进行抽象、组织形成一组数据,按照一定的方式存储在一个矩阵或表格中,供计算机建立方程时使用。通常,要计算电流电压,需要知道电路元件的类型、参数和连接方式等信息。这里,结合在“寻找通路”中运用图论的已有成果,将所需信息保存在如下的一个二维数据中(表头为标注,不存于数据中)。表电路模型数据的数组表示元件类型支路编号开始结点终止结点控制支路元件参数电压源V1电流源I2电阻R3.矩阵中的每一行表示出了每一条支路的相关信息,其中元件类型可以用特定的符号和字段进行标识,这里统一使用“V”表示电压源,“I”表示电流源,“R”表示电阻。支路编号是唯一的,每一个元件有一个固定的数字编号。开始结点和终止结点,则利用在“寻找通路”一章中所得的node数组,找到其所在行的结点编号即可,并规定 “+”或“+”所在的结点为开始结点,“-”所在结点为结束结点。元件参数采用采用标准单位,电压为伏特(V),电流为安培(A),电阻为欧姆()。(2)建立电路方程在获得已有的各个元件的信息和参数之后,需要依靠已知的条件求得未知,即我们所需要的电流、电压的具体数值。这里以每个结点的电压、每个元件通过的电流和每个元件的电压作为未知变量建立方程。现在以前面的图为例,说明方程的建立过程。支路 1,2,3,4,5,共有四个结点V1,V2,V3,V4,设其结点电压分别为v1,v2,v3,元件通过的电流分别为i1、i2、i3、i4、i5,元件的电压为分别为u1、u2、u3、u4、u5,则:a)电流的方程:在任何时候,流向某一结点的电流之和恒等于由该结点流出的电流之和。因此需要选择n-1个结点,即三个结点便可以列出结点的方程。用数组A表示,数组中的0和1,可以这样理解: b)电压的方程:元件电压是由元件所接触到的两个结点电压相减得来的,如u2=v1-v2,由此得出下面的关于结点电压和支路电压关系的方程。数组AT中1表示某结点与元件的“+”或“+”接线柱相连,-1表示与“-”接线柱相连,0表示结点与元件没有直接相连。 c)最终方程数组:物理学的欧姆定律中指出,元件的电阻值等于电压与电流的比值。根据这一规律,结合前两部求得的方程数组,将其组合,可以得到我们所要组建的电路的所有方程组合,称之为最终方程数组。(3)求解电路方程求解电路方程是一个复杂的数学计算过程,本实例中使用高斯消去的数学思想来进行方程的求解。高斯消去法是计算机求解方程中常用方法,它与数学界求解方程中常用的求解减消元法有类似之处。基本原理是罗列方程组中的每个等式,设法对其进行恒等变形,最终设法使其中两个等式中的同一个未知数的系数项相等;其次,利用得出的两等式互减,得出一个消去了该未知数的等式(系数为0);再次,重复前两步,直到得出未知数的值。上一节中所列的方程数组,事实上就是一个多元一次方程组的集合,因此也可以使用高斯消去法进行计算机程序的设计。附录2第二部分中详细描述了本文求解方程函数的核心代码。五、小结本文从初中物理电学的教学内容中甄选出基尔霍夫定律和欧姆定律两个知识主题,并提出了网络环境中该实验系统实现的整体结构、开发框架和功能模块等,就基于Adobe网络富媒体技术的实验系统实现做出了实践,对系统中核心工具的开发给出了可行思路和方法。附录1 系统运行截图学习者实验中教师管理界面实验任务评价数据统计系统统计实验系统设置自定义实验任务附录2 系统程序相关代码1、电路图工具核心代码public static function searchAllPath(node:Array,adja:Array,path:Array,visited:Array,v:int,des:int,length:int):voidvar result:Array=new Array();var nodeCount:int=node.length;if (visitedv) return;pathlength-1=v;if (v=des)printPath(path,length);elsevisitedv=true;for (var i:int=0;inodeCount;i+)if (int(adjavi) !=0 &!visitedi)searchAllPath(node,adja,path,visited,i,des,length+1);visitedv=false;/end function2、求解方程函数的核心代码public static function gauss(t:Array,nod:int,nbr:int):Arrayvar l:int;var temp:Number;var c:Number;var m:int=nod+2*nbr;var n:int=m+1const E:Number=2.718282;for (var k:int=1;k=m;k+) /10l=k;for (var i:int=k+1;iMath.abs(tlk) l=i;if (Math.abs(tlk)E-30) trace(电路无唯一解);break;if (l !=k)for (var j:int=k;j=n;j+)temp=tkj;tkj=tlj;tlj=temp;for (i=k;i=m;i+) /40c=tik;if (c !=0) for (j=k;jk) tij=tij-tkj;/ end of 50/end of 40/ end of 10for (i=m-1;i=1;i-)/60for (j=m;j=i+1;j-)/60tin=tin-tij*tjn;/end of 60/tin=tin-tij*tjn;/ end of 60return t;
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!