校园路线查询系统设计与实现-课程设计_第1页
校园路线查询系统设计与实现-课程设计_第2页
校园路线查询系统设计与实现-课程设计_第3页
校园路线查询系统设计与实现-课程设计_第4页
校园路线查询系统设计与实现-课程设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东北石油大学本科生课程设计PAGEII东北石油大学课程设计课课程管理软件实习题目校园路线查询系统设计与实现院系计算机与信息技术学院专业班级信息管理与信息系统08-1班2011年7目录TOC\o"1-2"\h\z\u第1章概述 11.1WebGis的特点 13.2WebGis的发展 13.3WebGis的应用 3第2章开发环境简介 42.1软件开发环境 42.2系统使用的技术 4第3章系统设计 63.1数据库结构 63.2功能设计 63.3系统UML图 7第4章系统实现 84.1系统主要功能 84.2程序代码 9第5章系统测试 165.1测试内容 165.2测试步骤 165.3测试目标 165.4测试方针 17结论 18参考文献 19东北石油大学本科生课程设计PAGE3第1章概述1.1WebGis的特点WebGIS可以简单定义为在Web上的GIS。当前Internet/Intranet正在以惊人的速度迅速膨胀发展,在这样的形势下,如何将GIS引入Internet/Intranet世界,使GIS充分利用和发挥互联网的优势,就成为GIS发展研究的一个重要课题。与传统的基于桌面或局域网的GIS相比,WebGIS具有以下的优点:更广泛的访问范围:客户可以同时访问多个位于不同地方的服务器上的最新数据,而这一Internet/Intranet所特有的优势大大方便了GIS的数据管理,使分布式的多数据源的数据管理和合成更易于实现[1]。平台独立性:无论服务器、客户机是何种机器,无论WebGIS服务器端使用何种GIS软件,由于使用了通用的Web浏览器,用户就可以透明地访问WebGIS数据,在本机或某个服务器上进行分布式部件的动态组合和空间数据的协同处理与分析,实现远程异构数据的共享。可以大规模降低系统成本:普通GIS在每个客户端都要配备昂贵的专业GIS软件,而用户使用的经常只是一些最基本的功能,这实际上造成了极大的浪费。WebGIS在客户端通常只需使用Web浏览器(有时还要加一些插件),其软件成本与全套专业GIS相比明显要节省得多。另外,由于客户端的简单性而节省的维护费用也不容忽视。更简单的操作:要广泛推广GIS,使GIS系统为广大的普通用户所接受,而不仅仅局限于少数受过专业培训的专业用户,就要降低对系统操作的要求。通用的Web浏览器无疑是降低操作复杂度的最好选择。平衡高效的计算负载:传统的GIS大都使用文件服务器结构的处理方式,其处理能力完全依赖于客户端,效率较低。而当今一些高级的WebGIS能充分利用网络资源,将基础性、全局性的处理交由服务器执行,而对数据量较小的简单操作则由客户端直接完成。这种计算模式能灵活高效地寻求计算负荷和网络流量负载在服务器端和客户端的合理分配,是一种较理想的优化模式。3.2WebGis的发展随着计算机技术的发展及其在GIS中不断的深入应用,未来WebGIS的发展趋势和发展方向将会如下:(1)基于.NET平台的WebGIS系统模式。Microsoft公司基于软件就是服务!理念在2001年提出的Microsoft.Net战略计划.NET框架是生成、部署和运行Web服务及应用程序的平台,其战略核心是WebService。由于WebService是在代码级上工作的,能够被其它软件调用,并与其它软件交换数据,最终形成一个能与用户交互的应用系统。因此基于WebService的GIS系统有望在更高层次上解决基于组件式GIS不能很好地解决的在大范围内GIS数据集成和共享这一GIS难题。基于.Net平台建立的WebGIS系统将不再关注单个的网站和与因特网连接的单个设备,而是让所有的计算机群、相关设备和服务商协同工作提供更加广泛和丰富的解决方案。通过Internet标准的服务描述协议WSDL、标准的服务调用协议SOAP和标准的数据描述语言XML建立的基于WebService的GIS系统可以解决WebGIS的分布式、互操作等目前的技术难点和运行瓶颈,做到真正的信息共享,使目前以单个网站为中心信息孤岛现象将不再存在。(2)动态仿真、虚拟现实与WebGIS的结合。基于三库(图形、影像、DEM)一体化的实时3D可视化技术发展非常迅速,在PC机上已实现GIS环境下的三维建筑物室内外漫游、信息查询、空间分析、剖面分析等功能。随着数字地球、数字中国、数字城市等相关工作的开展,目前基于二维的WebGIS显然已不能满足日益需求的3DGIS在Internet/Intranet上应用。结合虚拟现实的可视化优点和GIS的空间分析功能,运用WWW上构建虚拟现实环境的国际标准VRML(VirtualRealityModelingLanguage)及OpenGL编程等技术在Internet环境下实现虚拟3DGIS已成为国内外研究的热点。虚拟现实地理信息系统(VRGIS)主要是通过VRML转换文件格式,把GIS信息转到VR(虚拟现实)中表示。它是一个在传统的GIS数据基础上,利用VR的制图功能,采用VRML标准的GIS系统。把虚拟现实地理信息系统(VRGIS)应用到互联网上和WebGIS技术相结合实现WebVRGIS是地理信息系统发展的必然阶段。(3)移动通信技术与GIS的有机结合。随着计算机通讯网络(包括有线和无线网)的发展,无线应用协议WAP(WirelessApplicationProtocol)的完善与推广,移动通信技术将使WebGIS的应用将得到进一步延伸。未来的GIS用户可以随时方便地双向互动地获取Internet通过无线网络提供的地理信息服务,使将来的地学信息是随时随地为任何人任何事情进行4A服务(geoinformationforanyoneandanythingatanywhereandanytime)。(4)开放式地理信息系统。为了实现客户端透明地访问分布式数据以及无缝操作这些数据,网络地理信息系统就必须进一步走向开放。随着OpenGIS发展及以WebGIS和OpenGIS的相互结合,会使OpenGIS联盟(OGC)得到更广泛的支持,从而促进开放式的GIS的发展,使GIS真正走向社会化、大众化。(5)基于网格计算的新一代WebGIS。网格可以称之为第三代因特网应用,它是把整个因特网整合成一台巨大的超级计算机,实现各种资源的全面共享。网格计算是一种利用互联网或专用网络把地理上分布的各种计算机、计算机集群、存储系统和可视化系统等。基于网格计算的GIS平台,能够分布式、协作和智能化处理信息。网格计算已成为人们研究的热点,随着应用的深入,网络计算必将会运用到GIS中并和计算资源、空间地理数据和通信等集成,构成一个较完整的空间信息服务系统[2]。3.3WebGis的应用随着近年来计算机技术的发展,WebGis技术逐步产生有以下应用:(1)地理信息的空间分布式获取。WebGIS可以在全球范围内通过各种手段获取各种地理信息。将已存在的图形数据语言通过数字化转化为WebGIS的基础数据,使数据的共享和传输更加方便。(2)地理信息的空间查询、检索和联机处理。利用浏览器的交互能力,WebGIS可以实现图形及属性数据的查询检索,并通过与浏览器的交互使不同地区的客户端来操作这些数据。(3)空间模型的分析服务。在高性能的服务器端提供各种应用模型的分析与方法,通过接收用户提供的模型参数,进行快速的计算与分析,即时将计算结果以图形或文字等方式返回至浏览器端。(4)互联网上资源的共享。互联网上大量的信息资源多数都具有空间分布的特征,利用WebGIS对这些信息进行组织管理,为用户提供基于空间分布的多种信息服务,提高资源的利用率和共享程度[3]。PAGE19第2章开发环境简介2.1软件开发环境软件开发环境(SoftwareDevelopmentEnvironment,SDE)是指在基本硬件和宿至软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持[4]。按照WebGis地理信息系统课程设计任务书要求,本校园路线查询系统以WindowsXP系统为操作平台,选用SVGDeveloper作为绘图工具,以AdobeDreamweaver为网页页面制作工具,用C#语言进行编程,利用javascript脚本语言对网页页面进行细节修改。本图书馆管理系统便是在上述开发环境下实现系统的各项功能,体现出了SVGDeveloper制图工具、Dreamweaver开发工具和javascript脚本语言的完美结合。2.2系统使用的技术以系统的软件开发环境为基础,主要应用一下技术:(1)SVGDeveloper技术。SVGDeveloper是一款功能强大的SVG编辑软件,利用功能强大的绘制功能,你可以绘制诸如圆形、矩形、星形等基本形状,也可以绘制文本、图像和自由曲线等复杂图形。同时,SVGDeveloper还提供了其他一些高级功能使得你更加容易的创建和管理SVG程序。强大的代码编辑器,集成了语法着色和智能语法提示功能,使得你可以编写复杂的脚本程序,从而和创建更加复杂的SVG应用。它可绘制各种高质量的SVG矢量图形,提供包括矩形、椭圆、圆、直线、折线、多边形等在内的基本形状构造。(2)Dreamweaver开发工具的使用技术。AdobeDreamweaver是一个全面的专业工具集,可用于设计并部署极具吸引力的网站和web应用程序,并提供强大的编码环境以及功能强大且基于标准的WYSIWYG设计表面。Dreamweaver是个原本由Macromedia公司所开发的著名网站开发工具。它使用所见即所得的接口,亦有HTML编辑的功能。它现在有Mac和Windows系统的版本。随Macromedia被Adobe收购后,Adobe也开始计划开发Linux版本的Dreamweaver。它自MX版本开始,使用了Opera的排版引擎"Presto"作为网页预览。本软件具有制作效率高、网站管理能力强、控制能力强等优点。(3)javascript脚本语言应用技术。JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司的BrendanEich设计,是一种动态、弱类型、基于原型的语言,内置支持类。JavaScript是Sun公司的注册商标。Ecma国际以JavaScript为基础制定了ECMAScript标准。JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型,字节顺序记号。javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。

第3章系统设计3.1数据库结构通过对系统功能模块和系统构架的分析研究可知,系统要实现查询路线功能所需要的数据应包括地图中的地点站名、地点编号ID、地点经纬度、邻街站等数据元素。因此系统数据库设计如下:表3-1系统数据库序号字段名数据类型数据长度NULLPrimarykey描述1IDint4NY地点编号2站名string20NN地点站名3经度decimal8NN纵向位置4纬度decimal8NN横向位置5邻街站string20NN相邻站名3.2功能设计根据系统的功能分析得到系统的功能模块图如下:校园路线查询系统校园路线查询系统路线查询模块细节显示模块图层控制模块地图缩放模块路线查询模块细节显示模块图层控制模块地图缩放模块图3-2系统功能模块图以上是本校园路线查询系统的基本功能。3.3系统UML图根据系统的功能设计,系统UML用例图如下:路线查询路线查询地图缩放地图缩放图层控制图层控制详细显示详细显示图3-3管理员用例图第4章系统实现4.1系统主要功能经过全方位的分析和设计,本系统主要拥有校园路线查询、地图缩放功能,图层控制功能以及详细信息显示功能。校园路线查询功能:打开系统页面,可以看见页面上现实的所有站点,在页面的输入框中输入要查询的起点和终点,便可查询到地图中的任何两个站点之间的路线,点击查询按钮,输入的两个站点间的路线会清晰地显示在页面的文本框中。地图缩放功能:点击地图的大小缩放功能控制按钮,然后点击图片。可放大地图的尺寸,也可所有地图的大小,点击缩放按钮后,也可在图中框选需要缩放的范围进行放大或缩小。点击还原按钮,可将地图大小还原为系统默认初始大小。图层控制功能:本系统地图共分为四个图层,分别为站点名称图层,用文本框表示;站点标记图层,用小圆圈表示;行车路线图层,由网状线条组成;建筑物图层,由类似图表示。系统运行后,分别点击各个图层的复选框,便可显示或隐藏任意图层。使地图显示更加明朗。详细信息显示功能:点击地图系统上的任意一个地点,便可显示出此地点的相关详细信息。如图所示:图4-1校园路线查询系统4.2程序代码系统页面代码如下:<?xmlversion="1.0"standalone="no"?><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.1plusMathML2.0plusSVG1.1//EN""/2002/04/xhtml-math-svg/xhtml-math-svg.dtd"><htmlxmlns="/1999/xhtml"xml:lang="en"><head><title>东油校车路线图</title><scripttype="text/javascript">varxmlDoc=newActiveXObject("Microsoft.XMLDOM");xmlDoc.async="false";xmlDoc.load("stations.xml");nodes=xmlDoc.documentElement.childNodes; <!--搜索按钮响应函数-->functionsearch(){for(i=0;i<=nodes.length;i++) { try { if((nodes.item(i).nodeType)==1) { textfield.innerText=textfield.innerText+nodes.item(i).childNodes[0].text+">"+"\r\n"; <!--document.write("<br/>");--> } }catch(e){} }} <!--求距离函数-->functiondistance(x1,x2,y1,y2){vardx=x2-x1;vardy=y2-y1;returnMath.sqrt(dx*dx+dy*dy); }<!--通过数组建立邻接矩阵-->functioncreate_graph(){ if(form1.from.value.length==0){ alert("请输入起点!"); form1.from.focus(); returnfalse; } elseif(form1.to.value.length==0){ alert("请输入终点!"); form1.to.focus(); returnfalse; } varaa=newArray();//定义一维数组 for(m=0;m<nodes.length-1;m++) { aa[m]=newArray();//将每一个子元素又定义为数组 for(n=0;n<nodes.length-1;n++) { aa[m][n]=m+n;//此时aa[k][n]可以看作是一个二级数组 } } <!--初始化数组--> for(vari=1;i<=nodes.length-1;i++) for(varj=1;j<=nodes.length-1;j++) aa[i-1][j-1]=10000 //接下来这个for的i控制二维数组的行 for(vari=1;i<=nodes.length-1;i++){ varx=nodes.item(i).childNodes[4].text; vart=nodes.item(i).childNodes[2].text; vark=nodes.item(i).childNodes[3].text; varg=null; varf=null; //if(i==1) //alert(g); //该if语句用来判断每个地铁节点中有几个邻接站 if(nodes.item(i).childNodes.length==7) { varg=nodes.item(i).childNodes[6].text; varf=nodes.item(i).childNodes[5].text; //alert(111) //alert(g) //alert(f) //alert(x) } elseif(nodes.item(i).childNodes.length==6) { varf=nodes.item(i).childNodes[5].text; } if(g){ for(varj=1;j<=nodes.length-1;j++) { vary=nodes.item(j).childNodes[0].text; varq=nodes.item(j).childNodes[2].text; varp=nodes.item(j).childNodes[3].text; if(y==g) {//if(i==2) //alert("g:"+nodes.item(j).text); aa[i-1][j-1]=distance(parseInt(t), parseInt(q), parseInt(k), parseInt(p) ); aa[j-1][i-1]=aa[i-1][j-1]; } } } if(f) { for(varj=1;j<=nodes.length-1;j++) { vary=nodes.item(j).childNodes[0].text; varq=nodes.item(j).childNodes[2].text; varp=nodes.item(j).childNodes[3].text; if(y==f) {if(i==2) // alert("f:"+nodes.item(j).text); aa[i-1][j-1]=distance(parseInt(t), parseInt(q), parseInt(k), parseInt(p) ); aa[j-1][i-1]=aa[i-1][j-1]; } }//如果邻接站有2个,需要并列两个for,这个第1个for}if(x) { for(varj=1;j<=nodes.length-1;++j) { vary=nodes.item(j).childNodes[0].text; varq=nodes.item(j).childNodes[2].text; varp=nodes.item(j).childNodes[3].text; if(y==x) {//if(i==2)// alert(nodes.item(j).text); aa[i-1][j-1]=distance(parseInt(t), parseInt(q), parseInt(k), parseInt(p) ); aa[j-1][i-1]=aa[i-1][j-1]; } }//如果邻接站只有1个,需要1个for,这是唯一的for }}//for1 // varv=parseInt(nodes.item(10).childNodes[1].text); // varend=parseInt(nodes.item(20).childNodes[1].text);//functiontext1()//{//varx=document.getElementsByName("start")[0];//returnx//}//functiontext2()//{//vary=document.getElementsByName("end")[0];//returny//} //document.form.t1.value //alert(document.form1.start.value) for(varu=1;u<nodes.length;u++) { if(nodes.item(u).childNodes[0].text==document.form1.start.value) { varv=parseInt(nodes.item(u).childNodes[1].text) //alert(v) } elseif(nodes.item(u).childNodes[0].text==document.form1.end.value) { varend=parseInt(nodes.item(u).childNodes[1].text) //alert(end) } } if(v==null||end==null){ alert("请输入正确的起点和终点!"); returnfalse; form1.from.focus(); } varn=nodes.length-1; vardist=newArray(nodes.length-1);varprev=newArray(nodes.length-1);//if(v<0||v>n-1)return; vars=newArray(n+1);//初始化for(vari=1;i<=n;i++){dist[i]=aa[v][i];s[i]=false;if(dist[i]==10000){prev[i]=0;}else{prev[i]=v;}}dist[v]=0;s[v]=true;for(vari=1;i<n;i++){vartemp=10000;varu=v;for(varj=1;j<=n;j++){if((!s[j])&&(dist[j]<temp)){u=j;temp=dist[j];}}s[u]=true;//找到了第一个并入S的节点for(varj=1;j<=n;j++){if((!s[j])&&(aa[u][j]<10000)){varnewdist=dist[u]+aa[u][j];if(newdist<dist[j]){dist[j]=newdist;prev[j]=u;}}}} varpath=newArray() path[0]=end varm=1; vari=end while(prev[i]!=v) { path[m++]=prev[i]; i=prev[i]; } path[m]=v; varanswer=newArray(m) varpathpoint=""; for(i=0;i<m+1;i++) { answer[i]=path[m-i]; } for(i=0;i<m;i++) pathpoint=pathpoint+nodes.item(answer[i]+1).childNodes[0].text+"->" pathpoint=pathpoint+nodes.item(answer[m]+1).childNodes[0].text textfield.innerText=pathpoint }</script><styletype="text/css"><!--#Layer1{ position:absolute; width:800px; height:605px; z-index:1; left:248px; top:182px;}--></style></head><body><h1><imgsrc="标题.png"alt=""width="1038"height="189"/></h1><h1>请输入查询路线</h1><formname="form1"><spanclass="from">从:<inputtype="text"id="start"name="from"/><br/>到:<inputtype="text"id="end"name="to"/></span></form>                 <inputtype="button"id="search"value="查询"style="font-family":宋体;value="15"onclick="create_graph()"><divalign="left"><p>路线:<br><textareaid="textfield"cols="30"rows="8"></textarea></p></div><divid="Layer1"><p> </p><p><iframealign="left"id="frame"src="XSLOutput.svg"width="800"height="550"frameborder="1"></iframe></p></div><p><imgsrc="图书馆.jpg"alt=""width="237"height="180"/></p></body></html>

第5章系统测试5.1测试内容系统测试的目的是验证最终软件系统满足用户的需求。主要内容包括:(1)功能测试。即测试软件系统的功能是否正确,其依据是需求文档。由于正确性是软件最重要的质量因素,所以功能测试必不可少。(2)健壮性测试。即测试软件系统在异常情况下能否正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力。(3)性能测试。即测试软件系统处

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论