公交车线路查询系统.docx

上传人:b****5 文档编号:6378571 上传时间:2023-01-05 格式:DOCX 页数:32 大小:293.52KB
下载 相关 举报
公交车线路查询系统.docx_第1页
第1页 / 共32页
公交车线路查询系统.docx_第2页
第2页 / 共32页
公交车线路查询系统.docx_第3页
第3页 / 共32页
公交车线路查询系统.docx_第4页
第4页 / 共32页
公交车线路查询系统.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

公交车线路查询系统.docx

《公交车线路查询系统.docx》由会员分享,可在线阅读,更多相关《公交车线路查询系统.docx(32页珍藏版)》请在冰豆网上搜索。

公交车线路查询系统.docx

公交车线路查询系统

 

全日制普通本科生毕业论文

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

DESIGNANDIMPLEMENTATIONOFBUSLINEINQUIRY

SYSTEMOFCHANGSHA

 

学生姓名:

学号:

年级专业及班级:

指导老师及职称:

学院:

 

湖南·长沙

提交日期:

2013年5月

 

********全日制普通本科生毕业论文(设计)

诚信声明

 

本人郑重声明:

所呈交的本科毕业论文(设计)是本人在指导老师的指导下,进行研究工作所取得的成果,成果不存在知识产权争议。

除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。

对本文的研究做出重要贡献的个人和集体在文中均作了明确的说明并表示了谢意。

本人完全意识到本声明的法律结果由本人承担。

 

毕业论文(设计)作者签名:

年月日

 

目录

 

摘要1

关键词1

1前言1

1.1研究意义1

1.2国内外研究现状2

2系统分析2

2.1研究设计中要解决的问题2

2.2可行性分析3

2.2.1技术可行性分析3

2.2.2关键技术3

2.3需求分析3

2.3.1软件功能分析3

2.3.2运行环境要求4

3开发工具简介4

3.1C语言4

3.2VisualStudio20105

4系统结构与模型6

4.1概要设计6

4.1.1功能模块介绍6

5详细设计7

5.1数据定义7

5.1.1定义站点7

5.1.2定义公交线路7

5.1.3定义相邻两站之间的链接点8

5.1.4定义图8

5.2创建图8

5.3模糊查询14

5.4线路查询15

5.5最少换乘16

5.6最短路径20

6软件测试及其维护23

6.1系统测试平台简介23

6.2软件测试24

6.3系统维护27

7结论27

参考文献28

致谢30

 

长沙市公交线路查询系统的设计与实现

学生:

指导老师:

(*************长沙410128)

摘要:

城市公共交通是与人民群众生产生活息息相关的重要基础设施,设计一个公交线路查询系统,既可以方便人们出行,又可缓解城市交通。

本系统旨在实现长沙市公交线路查询,前期对长沙市所有公交线路和站点以及站点之间的距离和时间进行收集与处理,定义合理的数据类型,利用数据结构中图的理论知识,将所有公交线路及其站点信息存储,创建公交线路网,以深度优先算法、Dijkstra最短路径算法为理论基础,实现了公交线路的基本查询功能——线路查询,并且实现了高级查询功能——模糊查询、最少换乘查询、最短路径查询。

关键词:

数据结构;模糊查询;线路查询;最少换乘;最短路径

DesignandImplementationofBusLineInquirySystemofChangsha

Student:

Tutor:

(CollegeofInformationScienceandTechnology,HunanAgriculturalUniversity,Changsha410128,China)

Abstract:

Urbanpublictransportisacriticalinfrastructurecloselyrelatedtopeople’sproductionanlife.Designingabuslinequerysystem,ontheonehand,isconvenientforpeople’stravel,ontheotherhand,caneasethecitytransportation.ThesystemaimstoimplementingbuslinesinquiriesofChangsha.First,collectingandprocessingalloftheinformationaboutbuslinesandstopsinChangsha,aswellasthedistanceandtimebetweencertaintwostops.Definingsomeproperandreasonabledatatypesandusingthegraphtheoreticalknowledgeindatastructure.Alltheinformationaboutbuslinesandstopshasbeenstoredandthetransportnethasbeencreated.Basedonthetheoryofadepth-firstalgorithm,Dijkstrashortestpathalgorithm,ithasimplementedthebasicqueryfunctions-----buslinequeryandtheadvancedqueryfunctions----fuzzylookup,leasttransferandshortestpath.

KeyWords:

datastructure;fuzzylookup;buslinequery;leasttransfer;shortestpath

1前言

1.1研究意义

城市公共交通是与人民群众生产生活息息相关的重要基础设施,公共交通系统是城市交通系统的重要组成部分。

随着城市化进程的加快、城市经济的繁荣、城市居民出行次数增加,优先发展城市公共交通,提高乘坐公交出行人数的比例,深挖交通资源利用效率,成为缓解交通拥堵的重要手段。

而且随着移动互联网业务的爆炸式增涨,人们开始倾向于利用网络解决生活中遇到的问题,从网络中寻找答案,所以公交线路查询系统应运而生,人们开始利用公交查询系统查找出行的公交线路,为市民的出行提供便利。

开发一个公交线路查询系统,便于市民了解公交信息,合理安排出行。

出行人员可以最快时间内查到想要的准确站点信息和线路信息。

可以进行模糊站点查询。

为城市居民和外地游客搜索站点提供一条或若干条快速、经济的经过该点的线路选择,极大方便了人们的社交活动。

1.2国内外研究现状

随着计算机普及应用于各个行业领域,也有许多国内外致力于研究计算机各种应用技术的学者专家们将目光放在交通领域上,试图将生活交通中遇到的种种问题交给计算机进行科学精密的计算,以帮助人们解决因交通带来的各种困扰,提高人们的生活质量。

目前,国内外公交线路查询系统都发展到一个比较成熟的阶段,无论是从理论上还是从技术上都比较成熟。

国外的公交线路查询系统已经将GIS、GPS、RS技术集合到公交查询系统中。

GIS技术:

即GeographyInformationSystem,地理信息系统。

简单说就是将地图与数据库相结合。

GPS技术:

即GlobePositionSystem,全球定位系统,通过每3颗卫星确定一个点的经纬度坐标,使用WGS_1984坐标系。

RS技术:

RemoteSensing,遥感[1]。

通过卫星或飞机接收地面反射波谱,判断地面情况技术。

目前国内的公交车线路查询系统也结合了很多技术,比如:

基于ASP.NET+XML的公交查询系统,基于J2ME的公交线路查询系统,基于WebGIS公交线路查询系统。

国内公交线路查询系统也正向将GIS、GPS、RS技术相结合的发展方向[2]。

2系统分析

2.1研究设计中要解决的问题

作为一个长沙市公交线路查询系统,必须首先存储长沙市所有公交线路及其站点信息,包括站与站之间的距离、平均两站之间所要花费的时间。

距离与时间这两项数据,并不能得到具体实际准确值,所以在此系统设计中采用模拟数据,没有实际意义,因此在实现最短路径和最省时这两个高级查询功能时,不能根据实际现实去参考结果是否完全正确。

基本查询功能(线路查询)的实现,可以直接根据图论的理论知识,如DFS(Depth_First_Search)算法、BFS(Breadth_First_Search)算法,高级查询功能还必须结合实际情况,对此算法加以合理的调整,如:

最少换乘,实际上是以线路为权限的深度优先算法。

2.2可行性分析

2.2.1技术可行性分析

设计长沙市公交线路查询系统,对所有数据进行存储,再实现基本查询以及高级查询功能,利用所有知识,运用C语言开发工具VisualStudio2010,利用数据结构中图的理论知识,创建公交网的图,并利用图的搜索查询算法实现查询,因此,在技术上是完全可行的。

2.2.2关键技术

查询功能的实现前提关键在于模糊查找的实现,用户输入的站点不一定能与站点库中的某一站点实现完全匹配,所以必须提供模糊查找功能,将与用户输入的站点相似的的站点都提供出来,让用户进行精确输入。

最少换乘以及最短路径,必须是基于DFS算法考虑以路线为准则,实现查找。

2.3需求分析

2.3.1软件功能分析

本软件的主要功能包括:

数据存储、线路查询、站到站查询、最少换乘、最短路径。

具体如下:

(1)数据存储:

长沙市截止到2012年7月更新的数据包括公交线路175条(市区路线152条、机场线4条、长株潭线3条、城乡公交线3条、浏阳线13条),站点共1611个。

在数据存储前先做数据处理,将所有站点名称放在文件stops.txt中,站与站之间用空格隔开,将所有线路的初步信息(线路名称、起点站名、终点站名、票价、总站数)放在文件buses.txt中,所有数据之间也用空格隔开。

将所有公交线路所经过的所有站点名称依照公交线路名的顺序依次存在temp.txt文件中。

将随机生成的距离与时间的数据存在distance_and_time.txt文件中,数据存储时,先存储图中的顶点(即:

站点信息),再存储线路信息,最后再存储图中的弧信息(即:

某一站与它相邻的某一站之间的信息,如:

两站之间的距离、平均所用时间、经过的公交线路总数、所有经过的公交线路编号、下一个与该站相邻的弧在弧信息列表中的位置),与此同时,将该线路所经过的站点的编号以此存入线路信息中,以便于线路查询。

(2)线路查询;首先根据用户输入(如:

903),利用模糊查找,将所有与用户输入相关的公交线路名提供给用户(提供:

903路、903区间线),进行精确输入(再次输入:

903路),然后找到该公交线路的线路编号,将所有经过的站点编号找出来,以此去站点库中查找站点名,并输出结果。

(3)站点查询:

首先也是提供用户输入(如:

起点:

湖南农业大学),利用模糊查找,将所有与用户输入相关的站点提供给用户(提供:

湖南农大、科教路口(湖南农大)),用户确定输入(湖南农大),再输入终点:

(如:

望城汽车站),同理提供与该输入相关的站点,为用户进行精确输入。

再根据精确输入的站点,首先寻找站点编号,以此将站点编号传送至查询搜索函数中,实现最少换乘以及最短路径。

(4)最少换乘:

首先是输入起点站名和目的站名,同样,也要利用模糊查找把与用户输入信息相关的站点全部提供出来,以便于用户进行精确输入,如果两站之间可以直达,则输出可以直达的公交路线名称、经过的站点总数以及此公交线路的价格。

如果此两站之间没有可以直达的路线,则输出此两站之间的所有最少换乘方式,也包括公交线路名称从起始站名到换乘站名、途径总站数,然后是从换乘站到另一换乘站等等直到目的站。

(5)最短路径:

首先是输入起点站名和目的站名,同样也要利用模糊查找把与用户输入信息相关的站点全部提供起来,以便于用户进行精确输入,如果两站是相邻站,那么它们的最短路径毫无疑问就是它们的距离,如果不是相邻站,就要利用算法以起点站为源点,找目的站到起点站的最短路径,输出该路径的所有站点名称以及这两站的最短距离值。

2.3.2运行环境要求

大量的测试表明本软件在内存必须不少于512M的物理条件下,在Windows2000/2007/XP平台配合VisualC++6.0/VisualStudio2008/2010的环境下程序运行稳定且各项功能运行得都很正确,基本达到了预期的要求。

3开发工具简介

3.1C语言

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。

它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。

C语言主要有一下主要特征:

C是高级语言:

它把高级语言的基本结构和语句与低级语言的实用性结合起来,C语言可像汇编语言一样对位、字节和地址进行操作,此三者是计算机最基本的工作单元。

C是结构式语言:

结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。

这种结构化方式可使程序层次清晰,便于使用、维护以及调试。

C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化[3]。

C语言功能齐全:

具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。

而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。

C语言适用范围大:

适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。

C语言对编写需要硬件进行操作的场合,优于其它高级语言,有一些大型应用软件也是用C语言编写的[4]。

C语言应用指针:

可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。

C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。

Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。

一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名[5]。

C语言文件由数据序列组成:

可以构成二进制文件或文本文件常用的C语言IDE(集成开发环境)有MicrosoftVisualC++,Dev-C++,Code:

:

Blocks,BorlandC++,WatcomC++,BorlandC++Builder,GNUDJGPPC++,Lccwin32CCompiler3.1,HighC,TurboC,C-Free,win-tc,xcode(macosx)等[6]。

3.2VisualStudio2010

VisualStudio是微软公司推出的开发环境。

是目前最流行的Windows平台应用程序开发环境。

VisualStudio2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。

VisualStudio2010同时带来了NETFramework4.0、MicrosoftVisualStudio2010CTP(CommunityTechnologyPreview--CTP),并且支持开发面向Windows的应用程序。

除了MicrosoftSQLServer,它还支持IBMDB2和Oracle数据库[7]。

VisualStudio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。

1992年4月,微软发布了革命性的操作系统Windows3.1,把个人计算机引进了真正的视窗时代。

微软在原有C++开发工具MicrosoftC/C++7.0的基础上,开创性地引进了MFC(MicrosoftFoundationClasses)库,完善了源代码,成为MicrosoftC/C++8.0,也就是VisualC++1.0,并于1992年发布。

VisualC++1.0是真正意义上的WindowsIDE,这也是VisualStudio的最初原型。

虽然以现在的眼光来看,这个界面非常简陋和粗糙,但是它脱离了DOS界面,让用户可以在图形化的界面下进行开发,把软件开发带入了可视化(Visual)开发的时代。

从此,称霸的时代开始了。

使用VisualStudio2005,专业开发人员能够:

创建满足关键性要求的多层次的智能客户端、Web、移动或基于MicrosoftOffice的应用程序。

使用改进后的可视化设计工具、编程语言和代码编辑器,享受高效率的开发环境;

在统一的开发环境中,开发并调试多层次的服务器应用程序;

使用集成的可视化数据库设计和报告工具,创建SQLServer2005解决方案;

使用VisualStudioSDK创建可以扩展VisualStudioIDE的工具。

Microsoft为单独工作或在小型团队中的专业开发人员提供了两种选择,VisualStudio2005ProfessionalEdition和用于MicrosoftOffice系统的VisualStudio2005工具。

每种版本都在标准版的特性上进行了扩展,包括用于远程服务程序开发和调试、SQLServer2005开发的工具,以及完整的、没有限制的开发环境。

每种产品都可以单独购买或打包定购。

专业开发人员喜欢自由的使用.NETFramework2.0,它是一种稳健的、功能齐备的开发环境,支持创建扩展VisualStudio集成开发环境的工具[8]。

4系统结构与模型

4.1概要设计

4.1.1功能模块介绍

根据系统的功能需求,系统主要进行5个功能模块的设计。

(1)数据定义模块:

首先要定义合理的数据类型,在节约存储空间,数据模块清晰的前提下,定义图的顶点(即站点)数据类型、图的弧(即线路中相邻两站)数据类型,以及公交线路的数据类型。

(2)创建图模块:

通过以文件形式将存有相关数据的几个文件内容依次读入,在读数据的同时创建好图,实现公交网的建立。

(3)模糊查找模块:

利用KMP模式匹配算法实现的是字串在主串中的精确查找,所以模糊查找的功能实际上是在KMP算法的基础上做稍微的改动应用,例如输入数据为:

湖南农业大学,利用KMP算法发现“湖南农业大学”在站点库中没有匹配的,就将字串更改为“湖南农业大”,再一次进行KMP算法,发现“湖南农业大”在站点库中没有完全匹配的,于是将字串更改为“湖南农业”,直到发现“湖南农”在站点库中找到“湖南农大”、“科教路口(湖南农大)”。

将这两个相似站点提供给用户进行精确输入。

(4)最少换乘查询模块:

依次输入起点站名和目的站点名,通过模糊查询由用户再次输入精确站点之后,提供两站之间的最少换乘,如果可以直达,就输出直达公交路线名、票价。

如果不能直达,就输出最少换乘路线,例如:

从起点站通过X路线直达中转站Stop1,票价:

2元,总共经过10站;从中转站Stop1通过Y路线直达目的站,票价:

2元,总共经过10站。

将所有换乘方式提供出来,供用户自己选择。

(5)最短路径查询模块:

依次输入起点站名和目的站点名,通过模糊查询由用户再次精确输入站点之后,提供两站之间的最短路径,以及两站之间的最短距离。

系统的功能需求可通过图来简要表示。

图1功能模块图

Fig1SystemmodulesFlow

5详细设计

5.1数据定义

5.1.1定义站点

typedefstruct{

charstopName[30];//站点名,最长为30个字符,以满足一些站点名很长//(如:

长沙职教基地(长沙商贸旅游职院))的需要

intfirStpANListNo;//与该站点直接相邻的第一个站点此两站之间的弧在StopArcNodeList数组中的编号

}Stop,StopList[MAX_STOP_NUM];

//定义一个StopList数组作为站点库大小为MAX_STOP_NUM即1700[9],

5.1.2定义公交线路

typedefstructBus,{

charbusName[24];//公交线路名

intsourStopNo;//起点站编号

intdestStopNo;//终点站编号

intprice;//票价

intstopsSum;//总站数

int*busline;//该线路依次经过的所有站点的编号

}Bus,BusList[MAX_BUS_NUM];

//定义一个BusList数组作为公交线路库,大小为MAX_BUS_NUM即180,

5.1.3定义相邻两站之间的链接点

typedefstructStopArcNode{

intcurrentStopNo;//当前站的站点编号

intnextStopNo;//与当前站直接相邻的下一站的站点编号

floatdistance;//两站之间距离

inttime;//经过此两站所用的平均时间

intcrossBusSum;//经过此两站之间的公交线路总数

intcrossBusNo[15];//经过此两站之间的所有公交线路的编号

intnextStpANListNo;

//下一个与当前站直接相邻的弧信息在StopArcNodeList中的编号

}*StopArcNodeList;//定义一个StopArcNodeList数组的首地址指针

5.1.4定义图

typedefstruct{

StopVNodeStopVNodeList[MAX_STOP_NUM];

StopArcNode*StopArcNodeList;

intArcListMaxSize;

BusVNodeBusList[MAX_BUS_NUM];

}ALGraph;

5.2创建图

首先是为StopArcNodeList申请空间,初始化StopArcNodeList中的一些成员变量。

然后打开stops.txt文件读取站点信息即读站点名,生成StopList数组,再打开buses.txt文件生成BusList数组,再打开temp.txt和distance_and_time.txt文件,从temp.txt中读入线路中详细站点,对于每一条弧信息start->end,只有在每一条线路的首个弧信息需要读start,其他都是有上一条弧信息中的end中传递过来的,所以需要标记flag标记,同时每次从temp.txt读入一个数据需要判断是否是线路之间的分隔符“#”,遇到“#”,就应该更改flag变量。

对于start->end,需要用IsExisted去判断该弧信息是否已经存在于StopArcNodeList数组中,如果已经存在,则只需要将当前的线路编号存入弧信息的crossBusNo中,并更新相应的crossBusSum变量值,如果

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1