文档库 最新最全的文档下载
当前位置:文档库 › 公交线路查询系统设计与实现

公交线路查询系统设计与实现

?========================================第1页========================================




本科生毕业论文
本科生毕业论文
本科生毕业论文
本科生毕业论文(
((
(设计
设计
设计
设计)
))








题 目
基于XML的公交线路查询系统设计与实现

学生姓名


指导教师


学 院


专业班级




完成时间
2010年6月
========================================第2页========================================

I
目 录

摘 要 ............................................................. III
Abstract ........................................................... IV
第一章 绪 论 ....................................................... 1
1.1 应用背景 .................................................... 1
1.2 发展现状 .................................................... 1
1.3 国内外研究概况 .............................................. 2
1.4 发展前景 .................................................... 2
1.5 系统目标 .................................................... 3
第二章 相关理论基础 ................................................. 4
2.1 数据库介绍 .................................................. 4
2.1.1 数据库基本结构 ......................................... 4
2.1.2 SQL Server 2005 ........................................ 5
2.2 XML介绍 ..................................................... 5
2.3 C#介绍 ...................................................... 6
2.3.1 C#的特点 ............................................... 6
2.3.2 C#中的数据库访问 ....................................... 7
2.4 最短路径算法介绍 ............................................ 8
2.5 B/S介绍 .................................................... 10
第三章 系统需求分析 ................................................ 11
3.1性能需求分析 ................................................ 11
3.2功能需求分析 ................................................ 12
3.2.1 普通用户需求分析 ...................................... 12
3.2.2 管理员需求分析 ........................................ 13
3.3功能模块划分 ................................................ 14
第四章 系统设计 .................................................... 15
4.1 数据库设计 ................................................. 15
4.1.1 数据库概念结构设计 .................................... 15
4.1.2 数据库表设计 .......................................... 16
========================================第3页========================================

II
4.2功能模块具

体设计 ............................................ 18
4.2.1 普通用户模块设计 ...................................... 18
4.2.2 管理员模块设计 ........................................ 19
第五章 系统实现与测试 .............................................. 20
5.1主要程序功能 ................................................ 20
5.1.1连接数据库的包含文件 .................................. 20
5.1.2 XML技术 .............................................. 21
5.1.3 按两站点查询 .......................................... 22
5.1.4 按站点查询 ............................................ 25
5.1.5 按线路查询 ............................................ 27
5.1.6 管理员登陆 ............................................ 28
5.2测试和维护 .................................................. 29
5.2.1 测试分类 .............................................. 29
5.2.2 软件维护 .............................................. 30
5.2.3 具体测试 .............................................. 31
5.2.4 尚存在的问题 .......................................... 32
结束语 ............................................................. 34
致 谢 ............................................................. 35
参考文献 ........................................................... 36

========================================第4页========================================

III
摘 要
城市公共交通是与出行人员生产生活息息相关的重要基础设施,就目前来
说,它是绝大多数人出行的首选工具。在公交线路复杂多变的今天,建立一个网
络化的查询系统能有效帮助人们合理安排出行、了解公交线路变更,方便人们获
得各种公交线路信息。

本毕业设计主要针对公交路线查询而开发设计的,利用Visual Studio 2005
开发工具结合C#编程语言来完成了功能和界面设计,实现了公交路线的查询功
能(包括按线路查询、按站点查询、换乘查询等),并使用了.NET中一些web控
件编写数据库连接、更新的代码,从而实现了公交路线信息的管理功能(包括对
路线信息的添加、删除、修改)。数据库选用的是SQL SERVER 2005,而应用程序
与SQL SERVER 2005数据库建立链接,并且运用SQL 语言实现对其数据库进行操
作。
本文共分为五大章,分别是:引言、理论基础、系统需求分析、系统设计、
系统实现及测试。


关键词

公交查询,信息系统,SQL Server 2005,C#,XML
========================================第5页========================================

IV
Abstract
Urban public transport is closely linked with the travel staff the importance of
production and life of infrastructure.For now, it is the

tool of choice for most people
travel. Complex in the bus lines today ,the establishment of a network query system
can help people rationalize travel, learn to change of bus routes to facilitate access of
information of various bus lines.
In allusion to the CPT bus line query, the course design is developed and
designed. It using development tool Visual Studio 2005 and programming language
C# to complete the function and the design of interface, and realize the query of the
CPT bus lines (including query by line, query by stop, query by start stop and end
stop, and provide the shortest route querying from start stop to end stop, change line
query, and also support blur query.), and used some Web widgets to compile database
connection and updating code, so as to realize the CPT bus lines information
management(including add, delete, update the bus lines information).Database uses
the SQL Server 2005,and the application accesses the database and uses SQL
language to operate the database.
The thesis has five chapters in all, they are introduction, rationale, system
requirement analysis, system design, system actualizing and testing.

KEY WORDS

public inquiry ,information system,

SQL Server 2005,C#,XML

========================================第6页========================================
基于XML的公交线路查询系统设计与实现 第一章 绪 论
1
第一章 绪 论
本章简要介绍公交查询系统的应用背景、发展现状及发展前景

1.1 应用背景
随着交通工具的不断革新,距离已经不再是人们足迹的羁绊,庞大复杂的交
通网几乎覆盖了世界的每一个角落,使人们可以到达任何一个想去的地方,然而
当人们面对交通网时却会因为它本身的复杂而显得不知所措,从而感觉到出行的
麻烦。

在过去,当人们在一个不熟悉的城市时,或不清楚本城市的公交线路时,只
能采用打电话咨询,看交通地图,向熟人打听等传统方式查询公交信息,这样会
浪费大家很多时间、精力和财力,而且得到的信息也不一定是可靠的。这是还没
有公交线路查询系统时所出现的情况。

在互联网普及的今天,交通信息服务的电子化、网络化是已经是必然的趋势,
而提供良好的公交服务是建设和谐社会的基本要求。以信息化为基础,促进乘客、
车辆、站点设施以及交通环境等要素之间的良性互动,能有效推动公交系统建设。
为了能够为市民特别是为外来旅游、出差、就医、求职等急需了解本地的公交路
线的人提供高效、快捷的公交信息查询,让他们可以方便的在网络上得到自己所
需要的各种相关信息,以便减少各种可能产生的不必要的交通流量,提高公交的
运作效率,节约出行

时间。因此,开发一个供人们快速查找公交线路的网络程序
是势在必行的。

1.2 发展现状
近年来,公交查询系统发展迅速,各大城市基本都拥有着自己的公交线路查
询系统,网络上也有着许多不同的版本。不过公交查询系统在发展的同时也存在
着一些问题,还需要进行不断的规范和完善。

最开始的公交查询系统脱离了网络,只是一种放在网络上供人下载后再查询
的程序,可以说是一种单机程序。用户需下载后再使用程序来查询公交路线,且
若有更新的版本还需更新程序。这样的查询费时费力,还容易被人在程序中种入
木马,已经逐渐被淘汰;

有一部分公交查询系统,它们只是把各条线路和线路的信息一一罗列在页面
========================================第7页========================================
基于XML的公交线路查询系统设计与实现 第一章 绪 论
2
上,让用户自己一页一页的翻看查找,这样的公交查询根本不方便不快捷。一个
真正完善的公交查询系统应该实现用户输入想查询的内容,系统自动给出查询结
果,而不是让用户手动去翻找查询;

也有一部分公交查询系统,它们的系统功能不完善,只实现了各个站点和线
路的查询信息,而没有实现站点到站点的查询和转乘的功能,这也就是相当于一
种电子地图。这种系统不能完全满足用户的需求;

还有一部分公交查询系统,它们系统功能还算完善,但是页面结构复杂,而
且页面上布满了广告和各种与公交查询无关的信息,容易误导使用者。这样使用
户查询一点都不方便,而且影响美观度,也影响了系统在用户心目中的良好形象。

除此之外,现行的公交查询系统还有着或多或少的缺陷。因此,公交查询系
统的发展还有待进一步的规范和改进。

1.3 国内外研究概况
目前,国内外公交查询系统都发展到了一个比较成熟的阶段,无论是从理论
上还是从技术上都比较成熟。国外公交查询系统更是早已经实现了智能化、信息
化、社会化。据相关资料了解,国外的公交查询系统现在已经将GIS、GPS、RS
技术集合到公交查询系统中。GIS技术:即Geography Infomation System,地理
信息系统。简单说就是将地图与数据库相结合。GPS技术:即Globe Position
System,全球定位系统,通过每3颗卫星确定一个点的经纬度坐标,使用WGS_1984
坐标系。RS技术:Remote Sensing,遥感。通过卫星或飞机接收地面反射波普,
判断地面情况的技术。现在国内的公交查询系统也结合了很多技术,比如:基于
https://www.wendangku.net/doc/b07200226.html,+XML的公交查询系统,基于J2ME的公交查询系统

,基于WebGIS公交查
询系统。国内公交查询系统也正在向将GIS、GPS、RS技术相结合的方向发展。
在20世纪90年代初意大利学者D.origo,V.Maniezzo,A.Colorni等通过
模拟蚂蚁搜索路径的行为,发明出蚂蚁算法。该算法可以带记忆功能,选择某路
径的次数最多,说明此路径是比较优的路径,其信息素的值也越大,为以后选择
路径提供必要的信息。系统使用的时间越长,为乘客提供的信息越全面,越准确,
系统也越智能化。

1.4 发展前景
随着公交查询系统的不断发展完善,各种新技术的不断涌现,未来的公交查
询系统将基于B/S架构,通过浏览器查询,通过计算机网络全面联网,实现中心
控制、自动更新、异地查询等功能,同时可添加电话服务、语音服务、在线服务
========================================第8页========================================
基于XML的公交线路查询系统设计与实现 第一章 绪 论
3
等功能,帮助用户更好的使用公交查询系统。还可以开发手机版本的公交线路查
询系统,使用手机上网的用户可以轻松的随时随地进行公交线路查询,免去了上
网的时间,大大方便了用户。

1.5 系统目标
随着科学技术的迅猛发展,计算机已经得到了广泛的应用。几乎各行各业都
有关于计算机的使用,这使得计算机已成为社会中普遍存在的事物。由于计算机
的使用,使得人们在管理、应用及服务等各个领域使用数据方面变得更加简洁,
更加方便,大大提高了工作效率,产生了以计算机为主体,以人为辅助的局面。
在此所设计的公交车查询系统就是为了方便人员在数据查询方面的操作,使得他
们在日常生活中都会达到事半功倍的效果,减轻了人力的负担,方便了数据的存
储,增加了安全性。
本系统能够使用户简单的查询出他们自己想要的车次经过哪些站点,在哪一
站可以转乘,然后继续换乘哪路车;也可以预先知道可以通过哪些车次可以到达
目的地。管理员可以通过对公交线路系统信息进行一系列的修改。
========================================第9页========================================
基于XML的公交线路查询系统设计与实现 第二章 相关理论基础
4
第二章 相关理论基础
本章简要介绍了数据库、XML、C#、B/S系统的一些知识及系统的查询算法。
2.1 数据库介绍
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产
生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,
数据管理不再仅仅是存储和

管理数据,而转变成用户所需要的各种数据管理的方
式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数
据存储的大型数据库系统都在各个方面得到了广泛的应用。
例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、
姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一
个数据库。有了这个"数据仓库"人们就可以根据需要随时查询某职工的基本情
况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在计算机
上自动进行,那企业的人事管理就可以达到极高的水平。此外,在财务管理、仓
库管理、生产管理中也需要建立众多的这种"数据库",使其可以利用计算机实现
财务、仓库、生产的自动化管理。
数据库发展史数据库技术从诞生到现在,在不到半个世纪的时间里,形成了
坚实的理论基础、成熟的商业产品和广泛的应用领域,吸引越来越多的研究者加
入。数据库的诞生和发展给计算机信息管理带来了一场巨大的革命。三十多年来,
国内外已经开发建设了成千上万个数据库,它已成为企业、部门乃至个人日常工
作、生产和生活的基础设施。同时,随着应用的扩展与深入,数据库的数量和规
模越来越大,数据库的研究领域也已经大大地拓广和深化了。30年间数据库领
域获得了三次计算机图灵奖(C.W. Bachman,E.F.Codd, J.Gray),更加充分地说
明了数据库是一个充满活力和创新精神的领域
[1]

2.1.1 数据库基本结构
数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。
1.物理数据层
它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。这
些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理
========================================第10页========================================
基于XML的公交线路查询系统设计与实现 第二章 相关理论基础
5
的位串、字符和字组成。

2.概念数据层
它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据
的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据
库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下
的数据库。
3.逻辑数据层
它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的
数据集合,即逻辑记录的集合。
数据库不同层次之间的联系是通过映射进行转换的。
2.1.2 SQL Server 2005
SQL Server 2005是Microsoft 公司发行的关系型数

据库管理与分析系统,
它提供了功能全面、操作简单的图形界面。SQL Server 2005具有较好的可伸缩
性和可靠性,提供了以Web标准为基础的扩展数据库编程功能,可以满足电子商
务和企业应用程序的要求。 SQL Server 2005支持XML和Internet标准,具有
基于Web的分析能力,允许使用内置的存储过程以XML格式存储、更新、删除和
检索数据。由于https://www.wendangku.net/doc/b07200226.html,与SQL Server 2005都是由微软公司出品的,所以在
https://www.wendangku.net/doc/b07200226.html,应用于后台程序中,有专门针对SQL Server 2005的数据应用类库供用
户使用,方便了用户对数据的操作。
2.2 XML介绍
XML(Extensible Markup Language)即可扩展标记语言,它是从1996年开
始有其雏形,并向 W3C(全球信息网联盟)提案,而在1998二月发布为W3C的
标准(XML1.0)。 XML的前身是SGML(The Standard Generalized Markup
Language,标准通用标记语言),是自IBM从60年代就开始发展的 GML
(Generalized Markup Language)标准化后的名称。
XML与HTML一样,都是SGML。XML是Internet环境中跨平台的,依赖于内
容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简
单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的
方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简
单易于掌握和使用。
XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更
========================================第11页========================================
基于XML的公交线路查询系统设计与实现 第二章 相关理论基础
6
强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致
性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:
他极其简单。XML的简单使其易于在任何应用程序中读写数据,这使XML很
快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据
交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与
Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容
易加载XML数据到程序中并分析他,并以XML格式输出结果。
为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参
数,去掉了大量的很少用到的功能,因为这些繁杂的功能使得SGML在设计
网站时显得复杂化。XML保留了SGML的结构化功能,这样就使得网站设计
者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发
者也可以不必定义文档类型
[2]

2.3 C#介绍
C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的

级程序设计语言。并在微软职业开发者论坛(PDC)上登台亮相。C#看起来
与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同
样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,
它借鉴了Delphi的一个特点,与COM(Component Object Model

组件对象模
型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。
C#语言定义主要是从C和C++继承而来,是给那些愿意牺牲C++一点底
层功能,以获得更方便和更产品化的企业开发人员而创造的。C#简单、面
向对象和类型安全。尽管它借鉴了C和C++的许多东西,但是在一些诸如名
字空间、类、方法和异常处理等特定领域,它们之间还存在着巨大的差异。
关于C#最重要的一点:它是现代的编程语言。它简化和现代化了C++在类、
名字空间、方法重载和异常处理等领域。屏弃了C++的复杂性,使它更易用、
更少出错
[3]

2.3.1 C#的特点
C#是面向对象的语言,其主要有6个特点:
1.生成中间特点:使用C#开发的应用程序,在编译成机器码,都是生
成中间汇编形式的语言。只有当它们运行时,才会被编译成本地计算机可
执行的代码。
========================================第12页========================================
基于XML的公交线路查询系统设计与实现 第二章 相关理论基础
7
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.2 C#中的数据库访问
用.NET框架编写的(也包括用C#的)应用程序需要访问数据库时,将使用
https://www.wendangku.net/doc/b07200226.html,来实现数据库访问。
ADO.

NET是微软的数据访问框架的最新产物,它是.NET框架的一部分。在
https://www.wendangku.net/doc/b07200226.html,之前,程序员在ASP(Active Server Pages)或Visual Basic中使用
ADO(AtiveX Data Objects),这是一组COM组件,它通过一个易于使用的封装类
提供对底层数据访问代码的访问。https://www.wendangku.net/doc/b07200226.html,比ADO的功能更强大,它是在.NET
代码中访问数据库的最好工具。.NET框架中的https://www.wendangku.net/doc/b07200226.html,类型包括那些为访问SQL
Server、OLE DB、ODBC和Oracle数据库而优化的类型。它们是基于通用类的,
因此使用https://www.wendangku.net/doc/b07200226.html,访问不同的DBMS是相似的。除此之外https://www.wendangku.net/doc/b07200226.html,还将XML整合
进来,这样一来数据的交换就变的非常轻松容易了。
https://www.wendangku.net/doc/b07200226.html,包含5大主要对象:
·Connection对象就是数据库连接对象,专门进行数据库连接。
·Command对象主要用于执行SQL数据库命令。
·DataSet对象的目的就是想要实现独立于任何数据源的数据访问技术。
·DataReader对象用于从数据源中获取高性能的数据流。
·DataAdapter对象用于提供连接DataSet对象和数据源的桥梁。
https://www.wendangku.net/doc/b07200226.html,类型实现两个主要的功能:
========================================第13页========================================
基于XML的公交线路查询系统设计与实现 第二章 相关理论基础
8
·数据访问:用于访问数据库中数据和操作数据库的类型;
·数据表示:用于包含数据库数据(如数据表)的类型。
这两种类型之间联系密切,在数据库开发中两种类型都会用到。然而,如果
使用数据访问类型来填充数据表示类型将节省大量工作。
https://www.wendangku.net/doc/b07200226.html,目前的主流版本是3.5,比之前的版本提供了更先进的功能,主要
包括以下高级特性:
·支持批量复制,在其.NET类库中提供了批量复制类。
· 新的主要数据控件,包括DataGridView、DataConnector和DataNavigator。
·DbProvidersFactories类,该类能导出本地计算机中的.NET数据提供者列
表。
·DataTable新增两个重要的方法:Load()方法和Save()方法。Load()方法可
将数据对象直接加载到DataTable中,而Save()方法可以将DataTable中
的数据保存到一个持久化的存储媒体中。
·支持自定义的数据提供者。
2.4 最短路径算法介绍
最短路经算法分静态最短路径算法和动态最短路径算法。静态最短路径算法
是外界环境不变,计算最短路径。主要有Dijkstra算法,A*(A Star)算法。
动态最短路径算法是外界环境不断发生变化,即不能计算预测的情况下计算最短
路。如在游戏中敌人或障碍物不断移动的情况下。典型的有D*算法
[4]

最短路径不仅仅指一般意义上的距离最短,还可以引申到其他的度量,如时
间、费用、线路容量等。相应地,最短路径问题就成为最

快路径问题、最低费用
问题等。由于最短路径问题在实际中常用于汽车导航系统以及各种应急系统等
(如110报警、119火警以及医疗救护系统),这些系统一般要求计算出到出事
地点的最佳路线的时间应该在1 s~3 s内,在行车过程中还需要实时计算出车
辆前方的行驶路线,这就决定了最短路径问题的实现应该是高效率的。其实,无
论是距离最短、时间最快、费用最低,它们的核心算法都是最短路径算法。
经典的最短路径算法——Dijkstra算法是目前多数系统解决最短路径问题
采用的理论基础,只是不同系统对Dijkstra算法采用了不同的实现方法。
Dijkstra算法的基本思路是:假设每个点都有一对标号 (dj, pj),其中dj
是从起源点s到点j的最短路径的长度 (从顶点到其本身的最短路径是零路(没
有弧的路),其长度等于零);pj则是从s到j的最短路径中j点的前一点。求
解从起源点s到点j的最短路径算法的基本过程如下:
1.初始化。起源点设置为:
========================================第14页========================================
基于XML的公交线路查询系统设计与实现 第二章 相关理论基础
9
① 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的最短距离,如果
程序已经尝试着从A沿着某条路线移动到了C点,那么认为这个方案的AB间的
估计距离为A到C实际已经行走了的距离H加上用Judge()估计出的C到B的距
离。如此,无论程序搜索展开到了哪一步,都会算出一个评估值,每一次决策后,
将评估值和等待处理的方案一起排序,然后挑出待处理的各个方案中最有可能是
========================================第15页========================================
基于XML的公交线路查询系统设计与实现 第二章 相关理论基础
10
最短路线的一部分的方案展开到下一步,一直循环到对象移动到目的地为止
[6]

2.5 B/S介绍
B/S(browser/server,简称B/S)模式,即浏览器/服务器模式,它是基于
Intranet 的需求而出现并发展的。Intranet是应用TCP/IP协议建立的企事业
单位内部专用网络,它采用诸如TCP/IP、HTTP、SMTP和HTML等Internet技术
和标准,能为企事业单位内部交换信息提供服务。同时,它具有连接Internet 的
功能和防止外界入侵的安全措施。另一方面,由于数据库具有强大的数据存储和
管理能力,并且能够动态地进行数据输入和输出,如果把数据库应用于Intranet
上,不仅可以实现大量信息的网上发布,而且能够为广大用户提供动态的信息查
询和数据处理服务,进而加强企事业单位内部部门之间、上级部门与下级部门之
间、企事业单位员工之间、企事业单位与客户之间以及企事业单位与企事业单位
之间的信息交流,降低企事业单位的日常工作成本,提高企事业单位的经济效益。
它通常采用3层结构:浏览器――WEB服务器――数据库服务器。
在Intranet框架中,Browser/Server模型的处理方式如下:
1.用户打开计算机中的浏览器。
2.输入或自动启动主页的URL (Uniform Resource Locator),浏览器生成
一个HTTP请求并把它发给指定的Internet服务器。
3.服务器发回主页的HTML (Hypertext Markup Language)页面。浏览器将
其显示在屏幕上。
4.用户在主页面上进行操作(如:点击、键入等)


5.浏览器生成相应的HTTP要求,发送给相应的服务器。
6.服务器收到请求后,查看本站点是否拥有这个文档。如果有,就将它放
入响应信息中返回给浏览器。
7.浏览器收到响应,查看头文件的格式,判断能否直接显示。如果否,就
调用对应的帮助应用程序或外挂程序处理显示。

========================================第16页========================================
基于XML的公交线路查询系统设计与实现 第三章 系统需求分析
11
第三章 系统需求分析
本章分析了系统的各项需求,包括性能需求、功能需求、模块划分等。
3.1性能需求分析
为了保证系统能够长期、安全、稳定、可靠、高效地运行,公交查询系统应
该满足以下性能需求:
1.系统处理的准确性、及时性和响应速度
系统处理的准确性和及时性是系统的必要性能。查询时应保证查全率,所有
相应域包含查询关键字的记录都应能查到。在系统设计和开发过程中,要充分考
虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足系
统管理员对信息处理的需求。响应时间,更新处理时间都要比较迅速,应满足大
部分用户的要求。一般操作的响应时间应在1-2s内,对数据的导入、导出的操
作也应在可接受的时间内完成,原则上保证操作人员不会因为速度问题而影响工
作效率。
2.系统的开放性和系统的可扩充性
系统在开发过程中,应该充分考虑以后的可扩充性。例如,用户查询的需求
也会不断地更新和完善。这就要求系统提供足够的手段进行功能的调整和扩充。
而要实现这一点,应通过系统的开放性来完成,即系统应是一个开放系统,只要
符合一定的规范,可以简单地加入和减少系统的模块,配置系统的硬件。通过软
件的修补、替换,完成系统的升级和更新换代。
3.系统的易用性和易维护性
系统是直接面对使用人员的,而使用人员往往对计算机并不是非常熟悉。这
就要求系统能够提供良好的用户接口,易用的人机交互界面。所以在系统开发的
时候就考虑到了这一点,只要用户知道本系统的网址就可以直接使用本系统的查
询模块而无须用户注册及登陆,充分节约了用户查询的方便及随意性。其次,要
实现本系统的易用性就要求系统应该尽量使用用户熟悉的术语和中文信息的界
面;针对用户可能出现的使用问题,要提供足够的在线帮助,在本系统中专门设
置了“联系我们”这一信息,可以让用户对本系统的不足之处让设计者知道,使
系统更加完善。公交查询系统中涉及到的数据是

公交公司的相当重要的信息,系
统要提供方便的手段供系统维护人员进行数据的备份,日常的安全管理,系统意
外崩溃时数据的恢复等工作。
========================================第17页========================================
基于XML的公交线路查询系统设计与实现 第三章 系统需求分析
12
4.系统的标准性与先进性
系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都
要符合主流国际、国家和行业标准。例如在开发中使用的操作系统、网络系统、
开发工具都必须符合通用标准。如规范的数据库操纵界面、作为业界标准的
TCP/IP网络协议及ISO9002标准所要求的质量规范等;同时,在自主开发本系
统时,要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读
性、可操作性和可移植性。目前计算系统的技术发展相当快,做为公交查询系统
工程,应该保证系统长期保持先进,在系统的生命周期尽量做到系统的“与时俱
进”,充分完成企业信息处理的要求而不至于落后。这一方面通过系统的开放性
和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,
应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。
3.2功能需求分析
本系统采用结构化设计的方法来实现系统总体功能,提高系统的各项指标,
即将整个系统合理的划分成各个功能模块,正确地处理模块之间和模块内部的联
系以及和数据库的联系,定义各模块的内部结构,通过对模块的设计和模块之间
关系的系统来实现整个系统的功能。
3.2.1 普通用户需求分析
基于方便市民搭乘公交出行的原则,该系统应满足普通用户下面几方面功能
需求:
1.线路查询:方便用户了解到最快最新的线路信息,如:此线路经过哪些站
点,和站点在线路中的位置等。
2.站点查询:用户如果对线路不清楚,只知道自己要去的地方,那么站点查
询会帮你快速找出可以搭乘哪些线路的公交车到达此地,还能提供各线路的相关
信息,并注明了此站点在相应线路中的顺序,方便用户了解该站点在线路中所处
的位置。
3.换乘查询:如果没有直达线路,则找出转乘的最短公交路线。用户输入起
始站和终点站作为查询关键字,即可查询到三次转车内到达目的地址的公交线
路。可以为用户节省更多的时间,也提高了效率。
4.打印输出:将用户查询到的内容自动生成报表,并打印输出。
5.联系与投诉:用户可联系管理员反映自己的意见。
查询者可以执行线路查询、站点查询

、换乘查询(包括:一次换乘、二次换
========================================第18页========================================
基于XML的公交线路查询系统设计与实现 第三章 系统需求分析
13
乘、三次换乘查询)的操作。查询者的用例分析如图3.1所示:



图3.1 查询者的用例分析
由上图可查询者所需执行的系统功能。

3.2.2 管理员需求分析
为了维护系统的正常运行,系统还需提供后台管理功能,用于管理员登陆,
添加、修改、删除公交数据信息,修改信息资料、安全密码,回复用户留言等,
其中最主要的功能是新增、修改、删除数据信息,以保证公交车线路是正确可用
的。管理员的用例分析如图3.2所示:



图3.2 管理员的用例分析

由上图可知管理员所需执行的系统功能。
========================================第19页========================================
基于XML的公交线路查询系统设计与实现 第三章 系统需求分析
14
3.3功能模块划分
1.普通用户模块
该模块实现公交查询功能。可实现按线路查询、站点查询和起点-终点查询
三种查询方式。
2.管理员用户模块
该模块实现数据的新增、修改、删除功能。
模块的各功能划分如图3.3所示:





























图3.3 系统功能模块图
系统的功能模块由上图所示划分,在不同的模块下实现不同的功能,如普通
用户模块下有车次查询、站点查询等功能,管理员用户模块下有修改、删除数据
等功能,分工明确,一目了然。
公交路线查询系统

普通用户模块

管理员用户模块

















线












线













========================================第20页========================================
基于XML的公交线路查询系统设计与实现 第四章 系统设计
15
第四章 系统设计
本章介绍了系统的各个设计步骤,具体为数据库设计、功能模块设计等。
4.1 数据库设计
数据库设计是系统设计的一个重要内容,其设计质量的好坏直接影响系统开
发的成败,系统的质量,系统效率及可维护性。
在本系统的设计中,充分考虑到了管理系统数据繁杂,重复性很大,数据使
用频繁。因此本系统采用了一种能正确反映用户实现环境,能被现行系统接受,
易于维护

、效率高的数据管理方法—SQL Server 2005数据库系统。
数据库设计的核心问题是设计好的数据模型。数据模型是指数据库中记录与
记录之间联系的数据结构形成的。不同的数据管理系统有不同的数据模型。在目
前的数据库管理系统中有层次模型,网状模型、关系模型三种数据模型。其中,
关系模型具有较高的数据独立性,使用也较为方便。本设计采用关系数据库。该
数据库实行增、删、编辑、统计、显示和打印都极为方便。其中的排序和索引功
能,对数据快速定位,查询提供了有利条件。
4.1.1 数据库概念结构设计
本系统采用“实体联系模型”(ER模型)来描述数据库的结构与语义,以对
现实世界进行抽象。ER模型直接从现实世界抽象出实体类型及实体间联系,然
后用ER图来表示数据模型。它有两个明显的优点:接近于人的思维,容易理解;
与计算机无关,用户容易接受。
E-R图是直观表示概念模型的工具,它有三个基本成分:
1.矩形框,表示实体类型(考虑问题的对象)。
2.菱形框,表示联系类型(实体间的联系)。
3.椭圆形框,表示实体的属性。
实体和属性的定义如下:
管理员表(用户名,登录密码)
站点信息表(站点编号,站名)
公交信息表(车次编号,车次,起止站点,运行时间,起步价,全程价)
具体的实体关系图如图4.1所示:
========================================第21页========================================
基于XML的公交线路查询系统设计与实现 第四章 系统设计
16



















图4.1 各实体属性关系图
建立E-R图能有效理解各数据类型的关系,如图存在三个实体:站点、管理
员、公交线路,由此三实体可定义其独自属性,为建立数据库表做好准备。
4.1.2 数据库表设计
首先通过SQL Server 2005创建一个名为“Bus_Search”的数据库,然后在
其中创建各个表。各个表的结构及数据类型分述如下。
1.管理员表(admin)
管理员表存放登陆系统所需要的用户名和密码,修改密码时也同样需要访问
此表。如表4.1所示:
表4.1 管理员表

名 称 字段名 类 型 主 键 非 空
用户名 name nchar Yes Yes
密码 password nchar No Yes
用户名:每个管理员都有自己的用户账号,用户名最多由十个字符组成。





站点名称

站点编号

管理员

用户名

登陆密码

公交线路


车次编号

全程价

起步价

终点站

首发站

收班时间

开班时间

========================================第22页=======================================

=
基于XML的公交线路查询系统设计与实现 第四章 系统设计
17


码:用户密码不能为空,不能复制密码。

2.关联关系表(Bus_Station)
关联关系表存放各站点的编号和车次编号,在查询站点和车次的关系时需要
访问此表。如表4.2所示:
表4.2 关联关系表

名 称 字段名 类 型 主 键 非 空
车次编号 B_Id int Yes Yes
站点编号 S_Id int Yes Yes
关系编号 id int No No
车次编号:代表不同的车次,由数字组成。
站点编号:代表不同的站点,由数字组成。
3.公交信息表(BusInfo)
公交信息表存放车次的各项信息,在查询车次时需要访问此表。如表4.3
所示:
表4.3 公交信息表

名 称 字段名 类 型 主 键 非 空
车次编号 B_Id int Yes Yes
车次 B_Name varchar No No
开班时间 B_Stime varchar No No
收班时间 B_Etime varchar No No
起止站点 B_StoE varchar No No
起步价 B_Sprice real No No
全程价 B_Aprice real No No
车次:存放具体的公交路线编号。
开班时间、收班时间:公交车辆每天运行的时间。
全程价:坐完全程所需交纳的车费。
4.站点信息表(StationInfo)
站点信息表存放站点信息,在查询站点时需要访问此表。如表4.4所示:
表4.4 站点信息表

名 称 字段名 类 型 主 键 非 空
站点编号 S_Id int Yes Yes
========================================第23页========================================
基于XML的公交线路查询系统设计与实现 第四章 系统设计
18
站点名称 S_Name varchar No No
站点名称:存放各具体的站点名称。
为了保证各数据表间的独立性,减少其间的关联程度,设计的数据表基本独
立成表,储存各自独立的信息,操作方便简单,出错几率较少。
4.2功能模块具体设计
本节主要介绍系统主要功能模块的设计,包括普通用户查询模块的设计和管
理员用户模块的设计。

4.2.1 普通用户模块设计
查询模块是系统最主要的功能模块,在此模块下用户无需登录就能查询公交
信息,能使用系统的车次查询、站点查询、站站查询等功能,每一个功能都是主
要功能。其具体的程序流程图如图
4.3
所示。




















图4.2 查询模块程序流程图




是否查询?



选择相应功能进行查询


结束

查询完毕
是否再次查询?





相应
XML
文件是否存在

访问XML文件




查询数据库文件
========================================第24页========================================
基于XML的公交线路查询系统设计与实现

第四章 系统设计
19

在查询模块中,访问相应的XML文件能有效减轻系统负担,是查询过程中的
重要步骤。
4.2.2 管理员模块设计
管理员模块是系统一个非常重要的模块,它需要防止其他人恶意冒充管理员
来对系统进行随意修改或破坏,而正常的管理员登陆后,还需要能对数据库表进
行操作,来维护系统的正常运行。其具体的程序流程图如图4.4所示。



















图4.3 管理员模块程序流程图
两大功能模块均实现各自不同的功能,每个模块的权限和职责明晰,结构简
单明了,易于理解。




输入管理员账号和密码
是否正确?





结束
进入管理员模块
是否维护?



进行维护


========================================第25页========================================
基于XML的公交线路查询系统设计与实现 第五章 系统实现与测试
20
第五章 系统实现与测试
本章主要演示和测试程序功能,并展示程序核心代码。
5.1主要程序功能
程序登陆主界面后,可以根据提示选择相应服务。如图5.1所示


图 5.1 主界面截图
用户可在主界面中选择自己的去向,进入不同的分界面,在分界面中得到自
己所选择的服务。
5.1.1连接数据库的包含文件
在动态网站中,调用数据库中的数据是十分频繁的,为了避免编写重复的代
码。编写一个数据库连接文件是非常重要的。web.config文件中包含了本系统
中的数据库连接代码。本系统的数据库的连接代码如下:
<
add
name
="SQLConnStr"
connectionString
="server=091F6BB946074F2;Datab
ase=Bus_Search;User=sa;password=506321236"/>
========================================第26页========================================
基于XML的公交线路查询系统设计与实现 第五章 系统实现与测试
21
5.1.2 XML技术

由于系统是运行在服务器端,当使用查询功能的人多了,难免会影响到查询
速度,这个时候运用XML技术就十分必要了。XML文件可作为数据存储的媒介存
在,系统从数据库中读出查询到的相应信息建立特定的XML文件,便于下次同样
的查询不需要再访问数据库而是直接访问XML文件。
1.生成XML文件。将数据库数据生成为XML文件,以便在查询时可以读取
XML文件。以公交信息表为例,主要实现代码如下:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=practice ";


String user= "sa ";
String password= "506321236 ";
Connection conn= DriverManager.getConnection(url,user,password);
Statement
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql= "select * from BusInfo ";
ResultSet rs=stmt.executeQuery(sql);
Document document=new Document(new Element( " BusInfo "));//创建文档
ResultSetMetaData rsmd = rs.getMetaData(); //获取字段名
int numberOfColumns = rsmd.getColumnCount(); //获取字段数
int i=0;
while(rs.next())
{ //将查询结果取出
Element element0= new Element( "BusInfo"); //创建元素
document.getRootElement().addContent(element0);
for (i=1; i <=numberOfColumns;i++)
{
String date=new String(rs.getString(i).getBytes( "ISO-8859-1 "), "gb2312 ");
Element element=new Element(rsmd.getColumnName(i)).setText(date);
element0.addContent(element);
}
}
rs.close(); //关闭结果集
stmt.close(); //关闭statement
========================================第27页========================================
基于XML的公交线路查询系统设计与实现 第五章 系统实现与测试
22
conn.close(); //关闭连接
XMLOutputter outp = new XMLOutputter( " ",true, "GB2312 ");
outp.output(document,new FileOutputStream( "D:\\jsp\\data.xml "));
//输出XML文档
out.print( "XML 文档生成完毕! ");
2.查询XML文件。查询者在查询过程中,首先看是否存在包含查询数据的
XML文件,若有则先读取XML文件,没有则查询数据库。查询的主要实现代码可
添加在查询模块中,也可如下代码所示:
private void Page_Load(Object sender, EventArgs e)
{
if (!IsPostBack)
{
ArrayList values = new ArrayList();//将其当作数据源
XmlDocument doc = new XmlDocument();//表示XML文档
doc.Load(Server.MapPath("data.xml"));
//返回一个XmlNodeList集合,包含与指定名称匹配的所有子代元素列表
XmlNodeList elemList = doc.GetElementsByTagName("name");//System.Xml 命名空间
for (int i=0; i < elemList.Count; i++)
{
values.Add (elemList[i].InnerXml);
}
ListBox1.DataSource = values;
ListBox1.DataBind();
}
}
5.1.3 按两站点查询

用户进入站站查询模块中后,可以在起点站输入框中输入自已的出发点,然
后在终点站输入框输入出行的终点,也可以进行选择。点击查询,系统便会检测
这两个站点间是否有直达车,如果有直达车,系统会给出直达车次。如果没有直
达车,系统会

给出所乘车次及中转站名称。

如图,有直达车的情况:

========================================第28页========================================
基于XML的公交线路查询系统设计与实现 第五章 系统实现与测试
23


图5.2 有直达车的站站查询
如图,无直达车的情况:



图5.3 无直达车的站站查询
系统首先通过文本框中的值查询经过起点站和终点站的车次编号B_Id,若
相同则表示存在直达车,输出直达车信息,若B_Id不相同就同时查询经过起点
站和终点站的车次编号,然后将这两个不同的车次循环比较它们的站点,若存在
公共的站点就可以作为中转站,最后输出至文本框中。
主要实现代码如下:
========================================第29页========================================
基于XML的公交线路查询系统设计与实现 第五章 系统实现与测试
24
if
(!S_S_Start.SelectedValue.ToString().Equals(
"1"
)&& !S_S_End.SelectedValue.ToString().Equal
s(
"1"
))
//如果选择了下拉框的话,则按照下拉框的内容查询
{
//如果起止站点不相同

If
(!S_S_Start.SelectedValue.ToString().Equals(S_S_End.SelectedValue.ToString()))

{
//判断文本框的值


if
(Txt_S.Text ==
null
|| Txt_S.Text ==
""
&& Txt_E.Text ==
null
|| Txt_E.Text
==
""
||(Txt_S.Text.Equals(S_S_Start.SelectedItem.Text.ToString())
&&Txt_E.Text.Equals(S_S_End.SelectedItem.Text.ToString())))
{
//根据选择的内容,查询同时经过起点站和终点站的公交信息

String
str =
"select * from BusInfo where B_Id in (select B_Id from "

+
" Station_Line_View where S_id ='"
+ S_S_Start.SelectedValue.ToString() +
"' INTERSECT "
+
"select B_Id from Station_Line_View where S_id ='"
+ S_S_End.SelectedValue.ToString() +
"')"
;

if
(
database
.GetList(str).Rows.Count > 0)
//表明有直达车
{
GridView_S_S.DataSource =
database
.GetList(str).DefaultView;
//获取查询信息并将其显示在表格中
GridView_S_S.DataBind();
}

else

//查找起止站点之间是否有中转车
{
//查找所有经过起点站的公交车

String
str1 =
"select B_Id from Station_Line_View where S_id ='"
+
S_S_Start.SelectedValue.ToString() +
"'"
;
//查找所有经过终点站的

公交车


String
str2 =
"select B_Id from Station_Line_View where S_id ='"
+
S_S_End.SelectedValue.ToString() +
"'"
;

for
(
int
i = 0; i <
database
.GetList(str1).Rows.Count; i++)
{
//循环判断经过起点站的线路和经过重点站的线路是否有公共的站点
s1 =
database
.GetList(str1).Rows[i][
"B_Id"
].ToString();
//经过起点站的公交车

for
(
int
j = 0; j <
database
.GetList(str2).Rows.Count; j++)
{
//经过终点站的公交车
s2 =
database
.GetList(str2).Rows[j][
"B_Id"
].ToString();
//判断经过起点站的线路和经过终点站的线路是否有公共的站点

String
str3 =
"select * from Station_Line_View where S_id in
(select S_id from "
+
" Station_Line_View where B_Id = '"
+ s1 +
"' INTERSECT "
+
"select S_id from
Station_Line_View where B_Id = '"
+ s2 +
"')"
;

if
(
database
.GetList(str3).Rows.Count > 0)
//如果有公共的站点,则该站点就是中转站
{
//分别查找经过起点站的线路的详细信息和经过终点站的线路详细信息

String
str4 =
"select * from BusInfo,StationInfo where B_Id='"
+ s1 +
"' and S_id='"

+
database
.GetList(str3).Rows[i][
"S_id"
].ToString() +
"'"
;

String
str5 =
"select * from BusInfo,StationInfo where B_Id='"
+ s2 +
"' and S_id='"

+
database
.GetList(str3).Rows[i][
"S_id"
].ToString() +
"'"
;

//将起点站线路详细信息显示到表格
GridView_S_S_to.DataSource =
database
.GetList(str4).DefaultView;
========================================第30页========================================
基于XML的公交线路查询系统设计与实现 第五章 系统实现与测试
25
GridView_S_S_to.DataBind();

for
(
int
k = 0; k <
database
.GetList(str4).Rows.Count; k++)
{
//定义label的几个对象分别将终点站线路的详细信息显示到表格

Label
lab1 = (
Label
)GridView_S_S_to.Rows[k].FindControl(
"Lab1"
);
lab1.Text = S_S_Start.SelectedItem.Text.ToString();

HyperLink
ha = (
HyperLink
)GridView_S_S_to.Rows[k].FindControl(
"HyperLink1"
);
ha.Text =
database
.GetList(str5).Rows[k][
"B_Name"
].ToString();

Label
lab2 = (
Label
)GridView_S_S_to.Rows[k].FindControl(
"Lab2"
);
lab2.Text =
database
.GetList(str5).Rows[k][
"B_Sp

相关文档
相关文档 最新文档