基于XML的公交线路查询系统设计与实现精品.docx
- 文档编号:28609210
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:44
- 大小:1.03MB
基于XML的公交线路查询系统设计与实现精品.docx
《基于XML的公交线路查询系统设计与实现精品.docx》由会员分享,可在线阅读,更多相关《基于XML的公交线路查询系统设计与实现精品.docx(44页珍藏版)》请在冰豆网上搜索。
基于XML的公交线路查询系统设计与实现精品
本科生毕业论文(设计)
题目基于XML的公交线路查询系统设计与实现
学生姓名
指导教师
学院
专业班级
完成时间2010年6月
摘要
城市公共交通是与出行人员生产生活息息相关的重要基础设施,就目前来说,它是绝大多数人出行的首选工具。
在公交线路复杂多变的今天,建立一个网络化的查询系统能有效帮助人们合理安排出行、了解公交线路变更,方便人们获得各种公交线路信息。
本毕业设计主要针对公交路线查询而开发设计的,利用VisualStudio2005开发工具结合C#编程语言来完成了功能和界面设计,实现了公交路线的查询功能(包括按线路查询、按站点查询、换乘查询等),并使用了.NET中一些web控件编写数据库连接、更新的代码,从而实现了公交路线信息的管理功能(包括对路线信息的添加、删除、修改)。
数据库选用的是SQLSERVER2005,而应用程序与SQLSERVER2005数据库建立链接,并且运用SQL语言实现对其数据库进行操作。
本文共分为五大章,分别是:
引言、理论基础、系统需求分析、系统设计、系统实现及测试。
关键词公交查询,信息系统,SQLServer2005,C#,XML
Abstract
Urbanpublictransportiscloselylinkedwiththetravelstafftheimportanceofproductionandlifeofinfrastructure.Fornow,itisthetoolofchoiceformostpeopletravel.Complexinthebuslinestoday,theestablishmentofanetworkquerysystemcanhelppeoplerationalizetravel,learntochangeofbusroutestofacilitateaccessofinformationofvariousbuslines.
InallusiontotheCPTbuslinequery,thecoursedesignisdevelopedanddesigned.ItusingdevelopmenttoolVisualStudio2005andprogramminglanguageC#tocompletethefunctionandthedesignofinterface,andrealizethequeryoftheCPTbuslines(includingquerybyline,querybystop,querybystartstopandendstop,andprovidetheshortestroutequeryingfromstartstoptoendstop,changelinequery,andalsosupportblurquery.),andusedsomeWebwidgetstocompiledatabaseconnectionandupdatingcode,soastorealizetheCPTbuslinesinformationmanagement(includingadd,delete,updatethebuslinesinformation).DatabaseusestheSQLServer2005,andtheapplicationaccessesthedatabaseandusesSQLlanguagetooperatethedatabase.
Thethesishasfivechaptersinall,theyareintroduction,rationale,systemrequirementanalysis,systemdesign,systemactualizingandtesting.
KEYWORDSpublicinquiry ,informationsystem,SQLServer2005,C#,XML
第一章绪论
本章简要介绍公交查询系统的应用背景、发展现状及发展前景。
1.1应用背景
随着交通工具的不断革新,距离已经不再是人们足迹的羁绊,庞大复杂的交通网几乎覆盖了世界的每一个角落,使人们可以到达任何一个想去的地方,然而当人们面对交通网时却会因为它本身的复杂而显得不知所措,从而感觉到出行的麻烦。
在过去,当人们在一个不熟悉的城市时,或不清楚本城市的公交线路时,只能采用打电话咨询,看交通地图,向熟人打听等传统方式查询公交信息,这样会浪费大家很多时间、精力和财力,而且得到的信息也不一定是可靠的。
这是还没有公交线路查询系统时所出现的情况。
在互联网普及的今天,交通信息服务的电子化、网络化是已经是必然的趋势,而提供良好的公交服务是建设和谐社会的基本要求。
以信息化为基础,促进乘客、车辆、站点设施以及交通环境等要素之间的良性互动,能有效推动公交系统建设。
为了能够为市民特别是为外来旅游、出差、就医、求职等急需了解本地的公交路线的人提供高效、快捷的公交信息查询,让他们可以方便的在网络上得到自己所需要的各种相关信息,以便减少各种可能产生的不必要的交通流量,提高公交的运作效率,节约出行时间。
因此,开发一个供人们快速查找公交线路的网络程序是势在必行的。
1.2发展现状
近年来,公交查询系统发展迅速,各大城市基本都拥有着自己的公交线路查询系统,网络上也有着许多不同的版本。
不过公交查询系统在发展的同时也存在着一些问题,还需要进行不断的规范和完善。
最开始的公交查询系统脱离了网络,只是一种放在网络上供人下载后再查询的程序,可以说是一种单机程序。
用户需下载后再使用程序来查询公交路线,且若有更新的版本还需更新程序。
这样的查询费时费力,还容易被人在程序中种入木马,已经逐渐被淘汰;
有一部分公交查询系统,它们只是把各条线路和线路的信息一一罗列在页面上,让用户自己一页一页的翻看查找,这样的公交查询根本不方便不快捷。
一个真正完善的公交查询系统应该实现用户输入想查询的内容,系统自动给出查询结果,而不是让用户手动去翻找查询;
也有一部分公交查询系统,它们的系统功能不完善,只实现了各个站点和线路的查询信息,而没有实现站点到站点的查询和转乘的功能,这也就是相当于一种电子地图。
这种系统不能完全满足用户的需求;
还有一部分公交查询系统,它们系统功能还算完善,但是页面结构复杂,而且页面上布满了广告和各种与公交查询无关的信息,容易误导使用者。
这样使用户查询一点都不方便,而且影响美观度,也影响了系统在用户心目中的良好形象。
除此之外,现行的公交查询系统还有着或多或少的缺陷。
因此,公交查询系统的发展还有待进一步的规范和改进。
1.3国内外研究概况
目前,国内外公交查询系统都发展到了一个比较成熟的阶段,无论是从理论上还是从技术上都比较成熟。
国外公交查询系统更是早已经实现了智能化、信息化、社会化。
据相关资料了解,国外的公交查询系统现在已经将GIS、GPS、RS技术集合到公交查询系统中。
GIS技术:
即GeographyInfomationSystem,地理信息系统。
简单说就是将地图与数据库相结合。
GPS技术:
即GlobePositionSystem,全球定位系统,通过每3颗卫星确定一个点的经纬度坐标,使用WGS_1984坐标系。
RS技术:
RemoteSensing,遥感。
通过卫星或飞机接收地面反射波普,判断地面情况的技术。
现在国内的公交查询系统也结合了很多技术,比如:
基于ASP.NET+XML的公交查询系统,基于J2ME的公交查询系统,基于WebGIS公交查询系统。
国内公交查询系统也正在向将GIS、GPS、RS技术相结合的方向发展。
在20世纪90年代初意大利学者D.origo,V.Maniezzo,A.Colorni等通过模拟蚂蚁搜索路径的行为,发明出蚂蚁算法。
该算法可以带记忆功能,选择某路径的次数最多,说明此路径是比较优的路径,其信息素的值也越大,为以后选择路径提供必要的信息。
系统使用的时间越长,为乘客提供的信息越全面,越准确,系统也越智能化。
1.4发展前景
随着公交查询系统的不断发展完善,各种新技术的不断涌现,未来的公交查询系统将基于B/S架构,通过浏览器查询,通过计算机网络全面联网,实现中心控制、自动更新、异地查询等功能,同时可添加电话服务、语音服务、在线服务等功能,帮助用户更好的使用公交查询系统。
还可以开发手机版本的公交线路查询系统,使用手机上网的用户可以轻松的随时随地进行公交线路查询,免去了上网的时间,大大方便了用户。
1.5系统目标
随着科学技术的迅猛发展,计算机已经得到了广泛的应用。
几乎各行各业都有关于计算机的使用,这使得计算机已成为社会中普遍存在的事物。
由于计算机的使用,使得人们在管理、应用及服务等各个领域使用数据方面变得更加简洁,更加方便,大大提高了工作效率,产生了以计算机为主体,以人为辅助的局面。
在此所设计的公交车查询系统就是为了方便人员在数据查询方面的操作,使得他们在日常生活中都会达到事半功倍的效果,减轻了人力的负担,方便了数据的存储,增加了安全性。
本系统能够使用户简单的查询出他们自己想要的车次经过哪些站点,在哪一站可以转乘,然后继续换乘哪路车;也可以预先知道可以通过哪些车次可以到达目的地。
管理员可以通过对公交线路系统信息进行一系列的修改。
第二章相关理论基础
本章简要介绍了数据库、XML、C#、B/S系统的一些知识及系统的查询算法。
2.1数据库介绍
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。
数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。
有了这个"数据仓库"人们就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。
这些工作如果都能在计算机上自动进行,那企业的人事管理就可以达到极高的水平。
此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种"数据库",使其可以利用计算机实现财务、仓库、生产的自动化管理。
数据库发展史数据库技术从诞生到现在,在不到半个世纪的时间里,形成了坚实的理论基础、成熟的商业产品和广泛的应用领域,吸引越来越多的研究者加入。
数据库的诞生和发展给计算机信息管理带来了一场巨大的革命。
三十多年来,国内外已经开发建设了成千上万个数据库,它已成为企业、部门乃至个人日常工作、生产和生活的基础设施。
同时,随着应用的扩展与深入,数据库的数量和规模越来越大,数据库的研究领域也已经大大地拓广和深化了。
30年间数据库领域获得了三次计算机图灵奖(C.W.Bachman,E.F.Codd,J.Gray),更加充分地说明了数据库是一个充满活力和创新精神的领域[1]。
2.1.1数据库基本结构
数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。
1.物理数据层
它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。
这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。
2.概念数据层
它是数据库的中间一层,是数据库的整体逻辑表示。
指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。
它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。
3.逻辑数据层
它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。
数据库不同层次之间的联系是通过映射进行转换的。
2.1.2SQLServer2005
SQLServer2005是Microsoft公司发行的关系型数据库管理与分析系统,它提供了功能全面、操作简单的图形界面。
SQLServer2005具有较好的可伸缩性和可靠性,提供了以Web标准为基础的扩展数据库编程功能,可以满足电子商务和企业应用程序的要求。
SQLServer2005支持XML和Internet标准,具有基于Web的分析能力,允许使用内置的存储过程以XML格式存储、更新、删除和检索数据。
由于ASP.NET与SQLServer2005都是由微软公司出品的,所以在ASP.NET应用于后台程序中,有专门针对SQLServer2005的数据应用类库供用户使用,方便了用户对数据的操作。
2.2XML介绍
XML(ExtensibleMarkupLanguage)即可扩展标记语言,它是从1996年开始有其雏形,并向W3C(全球信息网联盟)提案,而在1998二月发布为W3C的标准(XML1.0)。
XML的前身是SGML(TheStandardGeneralizedMarkupLanguage,标准通用标记语言),是自IBM从60年代就开始发展的GML(GeneralizedMarkupLanguage)标准化后的名称。
XML与HTML一样,都是SGML。
XML是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。
扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
XML与Access,Oracle和SQLServer等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:
数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。
事实上XML与其他数据表现形式最大的不同是:
他极其简单。
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、MacOS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。
为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,因为这些繁杂的功能使得SGML在设计网站时显得复杂化。
XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型[2]。
2.3C#介绍
C#是微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言。
并在微软职业开发者论坛(PDC)上登台亮相。
C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。
但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(ComponentObjectModel,组件对象模型)是直接集成的,而且它是微软公司.NETwindows网络框架的主角。
C#语言定义主要是从C和C++继承而来,是给那些愿意牺牲C++一点底层功能,以获得更方便和更产品化的企业开发人员而创造的。
C#简单、面向对象和类型安全。
尽管它借鉴了C和C++的许多东西,但是在一些诸如名字空间、类、方法和异常处理等特定领域,它们之间还存在着巨大的差异。
关于C#最重要的一点:
它是现代的编程语言。
它简化和现代化了C++在类、名字空间、方法重载和异常处理等领域。
屏弃了C++的复杂性,使它更易用、更少出错[3]。
2.3.1C#的特点
C#是面向对象的语言,其主要有6个特点:
1.生成中间特点:
使用C#开发的应用程序,在编译成机器码,都是生成中间汇编形式的语言。
只有当它们运行时,才会被编译成本地计算机可执行的代码。
2.在命名空间中声明:
当使用C#语言创建一个应用程序,就会在一个命名空间里创建一个或多个类。
同时在这个命名空间里,还有可能声明要有结构体、变量等。
这时就必须使用using关键字来引用其他的命名空间内容,用来支持对结构体等类型的操作。
3.丰富的数据类型:
C#语言拥有比C、C++更广泛和丰富的数据类型。
4.有两个基本类:
在C#语言中,Object类是所有其他类的基类,String类和Object类一样,是两个基类之一,都是C#语言的一部分。
5.方法可当做参数传递:
在一般情况下,默认的参数传递只是对基本数据类型进行值传递。
但是在C#语言中,既可以通过值传递,也可以通过应用传递。
通过引用传递参数允许函数成员(包括方法、属性、索引器、运算符)和构造函数等传递参数的值。
6.与COM集成:
COM技术是微软公司的WIN32组件技术。
C#语言能与COM组件进行无缝集成。
用C#语言编写的类可以子类化COM组件,所谓子类化就是指替换窗口的过程。
C#语言生成的类也可以当做一个COM组件使用,可用任何.NET语言进行子类化。
2.3.2C#中的数据库访问
用.NET框架编写的(也包括用C#的)应用程序需要访问数据库时,将使用ADO.NET来实现数据库访问。
ADO.NET是微软的数据访问框架的最新产物,它是.NET框架的一部分。
在ADO.NET之前,程序员在ASP(ActiveServerPages)或VisualBasic中使用ADO(AtiveXDataObjects),这是一组COM组件,它通过一个易于使用的封装类提供对底层数据访问代码的访问。
ADO.NET比ADO的功能更强大,它是在.NET代码中访问数据库的最好工具。
.NET框架中的ADO.NET类型包括那些为访问SQLServer、OLEDB、ODBC和Oracle数据库而优化的类型。
它们是基于通用类的,因此使用ADO.NET访问不同的DBMS是相似的。
除此之外ADO.NET还将XML整合进来,这样一来数据的交换就变的非常轻松容易了。
ADO.NET包含5大主要对象:
·Connection对象就是数据库连接对象,专门进行数据库连接。
·Command对象主要用于执行SQL数据库命令。
·DataSet对象的目的就是想要实现独立于任何数据源的数据访问技术。
·DataReader对象用于从数据源中获取高性能的数据流。
·DataAdapter对象用于提供连接DataSet对象和数据源的桥梁。
ADO.NET类型实现两个主要的功能:
·数据访问:
用于访问数据库中数据和操作数据库的类型;
·数据表示:
用于包含数据库数据(如数据表)的类型。
这两种类型之间联系密切,在数据库开发中两种类型都会用到。
然而,如果使用数据访问类型来填充数据表示类型将节省大量工作。
ADO.NET目前的主流版本是3.5,比之前的版本提供了更先进的功能,主要包括以下高级特性:
·支持批量复制,在其.NET类库中提供了批量复制类。
·新的主要数据控件,包括DataGridView、DataConnector和DataNavigator。
·DbProvidersFactories类,该类能导出本地计算机中的.NET数据提供者列表。
·DataTable新增两个重要的方法:
Load()方法和Save()方法。
Load()方法可将数据对象直接加载到DataTable中,而Save()方法可以将DataTable中的数据保存到一个持久化的存储媒体中。
·支持自定义的数据提供者。
2.4最短路径算法介绍
最短路经算法分静态最短路径算法和动态最短路径算法。
静态最短路径算法是外界环境不变,计算最短路径。
主要有Dijkstra算法,A*(AStar)算法。
动态最短路径算法是外界环境不断发生变化,即不能计算预测的情况下计算最短路。
如在游戏中敌人或障碍物不断移动的情况下。
典型的有D*算法[4]。
最短路径不仅仅指一般意义上的距离最短,还可以引申到其他的度量,如时间、费用、线路容量等。
相应地,最短路径问题就成为最快路径问题、最低费用问题等。
由于最短路径问题在实际中常用于汽车导航系统以及各种应急系统等(如110报警、119火警以及医疗救护系统),这些系统一般要求计算出到出事地点的最佳路线的时间应该在1s~3s内,在行车过程中还需要实时计算出车辆前方的行驶路线,这就决定了最短路径问题的实现应该是高效率的。
其实,无论是距离最短、时间最快、费用最低,它们的核心算法都是最短路径算法。
经典的最短路径算法——Dijkstra算法是目前多数系统解决最短路径问题采用的理论基础,只是不同系统对Dijkstra算法采用了不同的实现方法。
Dijkstra算法的基本思路是:
假设每个点都有一对标号(dj,pj),其中dj是从起源点s到点j的最短路径的长度(从顶点到其本身的最短路径是零路(没有弧的路),其长度等于零);pj则是从s到j的最短路径中j点的前一点。
求解从起源点s到点j的最短路径算法的基本过程如下:
1.初始化。
起源点设置为:
①ds=0,ps为空;
②所有其他点:
di=∞,pi=?
;
③标记起源点s,记k=s,其他所有点设为未标记的。
2.检验从所有已标记的点k到其直接连接的未标记的点j的距离,并设置:
dj=min[dj,dk+lkj]
式中,lkj是从点k到j的直接连接距离。
3.选取下一个点。
从所有未标记的结点中,选取dj中最小的一个i:
di=min[dj,所有未标记的点j]
点i就被选为最短路径中的一点,并设为已标记的。
4.找到点i的前一点。
从已标记的点中找到直接连接到点i的点j*,
作为前一点,设置:
i=j*
5.标记点i。
如果所有点已标记,则算法完全推出,否则,记k=i,转到2再继续。
从上面可以看出,在按标记法实现Dijkstra算法的过程中,核心步骤就是从未标记的点中选择一个权值最小的弧段,即上面所述算法的
(2)~(5)步。
这是一个循环比较的过程,如果不采用任何技巧,未标记点将以无序的形式存放在一个链表或数组中。
那么要选择一个权值最小的弧段就必须把所有的点都扫描一遍,在大数据量的情况下,这无疑是一个制约计算速度的瓶颈。
要解决这个问题,最有效的做法就是将这些要扫描的点按其所在边的权值进行顺序排列,这样每循环一次即可取到符合条件的点,可大大提高算法的执行效率[5]。
还有一种基于Dijkstra算法的优化算法———邻接结点算法,该算法充分利用了网络拓扑信息中的弧段的连接关系,避免了使用含有大量无穷值的关联矩阵,使之更适合带有拐向限制设置的最短路径算法和大量结点的实际数据。
实践证明,该算法可以节约大量的内存,对于结点数比较大的网络,或带有大量拐向限制设置的网络,具有较好的适用性。
A*算法作为一种改进的Dijkstra算法,实际上是一种启发式搜索,所谓启发式搜索,就是利用一个估价函数评估每次的决策的价值,决定先尝试那一种方案。
这样可以极大地优化普通的广度优先搜索。
一般来说,从起始点A到终点B的最短路径是固定的,可以写一个函数Judge()来估计A到B的最短距离,如果程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 XML 公交线路 查询 系统 设计 实现 精品
![提示](https://static.bdocx.com/images/bang_tan.gif)