数据结构校园导游系统Word文件下载.docx
《数据结构校园导游系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构校园导游系统Word文件下载.docx(40页珍藏版)》请在冰豆网上搜索。
2014年9月22日
摘要
桂林众山环绕,风景优美,加之近年来校园环境也得到不断地改善,来访校园的游客逐渐增加,为了方便众多游客对校园景点的参观,需要给来访人士提供校园导游咨询服务,利用计算机建立一个便利的咨询系统可以很好地解决这个问题。
在本设计实验中,我所采用的是邻接矩阵作为数据的存储结构,用不同的功能模块对两地距离和校园道路信息进行编辑。
当游客来访时,系统能根据用户输入的景点代号查询景点信息,提供任意两个景点间的最短路径查询,并能查询校园内的交通信息,方便游客访问。
工作人员还可以为校园更新景点以及路径信息。
本文将简单介绍该系统的开发背景,详细介绍系统的主要设计思路,函数的建立和使用过程,该系统功能的实现方式和实现结果,以及对所遇到问题的分析解决,最后对该系统进行总结描述。
关键词:
校园导游咨询;
C++;
数据结构;
最短路径;
查询;
引言………………………………………………………………………1
1系统概述…………………………………………………………………………1
2需求分析…………………………………………………………………………1
2.1系统需求………………………………………………………………………1
2.2开发环境………………………………………………………………………2
3详细设计…………………………………………………………………………3
3.1系统结构………………………………………………………………………3
3.2数据结构设计以及数据的初始化……………………………………………4
3.2.1图结构设计…………………………………………………………………4
3.2.2数据的初始化………………………………………………………………4
3.3查询模块的详细设计…………………………………………………………5
3.3.1查询模块功能子函数设计…………………………………………………5
3.4更新功能模块详细设计………………………………………………………7
3.4.1更新模块功能子函数设计…………………………………………………8
4所遇到的问题和分析解决…………………………………………………10
5系统特色及关键………………………………………………………………11
6结论…………………………………………………………………………12
参考文献………………………………………………………………13
引言
随着计算机科学技术的不断提高,计算机依靠其强大的功能已经成为人们生活中不可缺少的一部分,计算机能解决人类生活中的大部分问题,为人类文明和社会进步做出了巨大贡献。
桂林是一个全世界著名的旅游城市,近几年来旅游业得到了飞速的发展,来自各个国家各个城市的游客给城市带来了巨大的经济效益。
地处尧山地带的桂林电子科技大学风景非常优美,随着我们大学知名度的提高,来访游客数量大大增加,这就需要我们建立一个校园导游咨询系统来解决游客的来访咨询,为游客提供所需要了解的景点信息,或者统观所有景点信息后再选择需要参观的景点;
校园里有公车巴士等交通工具,价格合理,乘坐方便,可以为游客们提供代步工具,系统可以为游客提供所有的交通方式由游客自行选择。
当游客们参观完某景点需要参观下一个景点时,系统可以为其提供两景点间的最短路径,减少游客的步行量。
最终的目的是给各位游客们提供参观校园的便利,让游客更好地了解我们的大学。
使校园旅游实现管理信息化,智能化。
1系统概述
从选定题目之后,本人在校园内做了实地调查,画出了大致的校园平面图;
并查找相关资料,熟悉了开发环境以及图结构的知识。
参考了资料书上的其他类似案例,对系统的开发做了较好的准备。
该系统是由用户、管理员、计算机组成的用以进行校园咨询校园更新的系统。
可实现通过认为输入查询各类景点信息,交通信息;
当校园景点更新时,工作人员可以及时地通过系统更新景点信息,为游客提供任意两景点之间的最短路径。
2需求分析
2.1系统需求
校园导游咨询系统的基本要求:
(1)设计你所在学校的校园平面图,所含景点不少于10个。
(2)以图中顶点表示校内各景点,存放有景点名称、编号、简介等信息;
以边表示路径,存放路径长度等相关信息。
(3)为来访客人提供图中任意景点相关信息的查询。
(4)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
(5)必须具有校园平面图的修改和扩充功能,即某些景点坐标的修改和景点个数的增加。
(6)需要有5条以上的文件记录。
(7)为游客提供校园交通方案的查询。
(8)能够根据景点实际变化进行景点信息的更新。
(9)能够将更新后景点信息传入到文本文件里保存。
程序设计分析:
(1)构造一个无向带权网G并用邻接矩阵来存储;
(2)利用Dijkstra算法来计算出起点到各个顶点之间的最短路径并进行存储,弗洛伊德算法将找出每一对顶点之间的最短路径;
系统的输入与输出:
(1)键盘输入。
(2)磁盘输入输出。
该系统需要具备下面几个使用要求:
(1)需要有友好的系统界面,易于理解,操作简单,中文菜单。
(2)数据处理要保证精确度,能给予用户实际有效的信息。
(3)当用户输入错误,需要有友好的提醒界面,并能再次输入。
(4)将用户需要的信息完整地输出到系统界面,不能输出无用信息和不完整的信息。
(5)系统易于读懂,易于维护和扩充。
2.2开发环境
校园导游咨询系统在联想计算机上进行开发配置为:
CPU:
AMDTrinityAPUA8-4500MCPU@2.30GHz
操作系统为windows7旗舰版(64)
开发平台是VC++6.0
开发语言:
C++
C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。
应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。
它支持过程化程序设计,数据抽象,面向对象设计,制作图标等多种程序设计风格。
3详细设计
3.1系统结构
从该系统整体结构上分析,该系统主要分为查询模块和更新模块,查询模块包括景点信息查询,任意两景点间的最短路径查询,校园交通方案的查询这三个基本查询功能,基本上满足来访游客的查询需求。
更新模块包括校园景点信息更新,校园景点道路更新,车辆行驶路线更新等功能,可以对校园各个信息进行更改,以便于来访游客能了解到景点的最新信息。
这两个模块之间通过这里已经具有了紧密的联系。
因为各种查询必须建立在各种数据的输入更新之上,当校园信息改变时,游客查询得到信息也应该是更新过后的信息。
通过查询模块与更新模块之间的功能联系,就可以实现一个有机的循环。
系统基本运行界面如下所示,这里我用了一个while
(1)将开始菜单放到一个初始大循环里,当用户操作完成一项基本功能后便会自动回到这个主菜单,方便下一个用户的使用。
用一个switch(k)由用户输入的相应字符来执行相应的功能函数,最后可以按#号键退出。
3.2数据结构设计以及数据的初始化
3.2.1图结构设计
在本系统中,需要使用图结构来存储各个景点数据。
图由若干边和若干顶点组成,在这里每个顶点对应的景点包含有景点编号,景点坐标,景点名称,景点简介这些信息。
图是一种非线性的数据结构,其中的数据元素之间是多对多的的关系。
对于校园景点来说,其中每一个景点可以看做是一个顶点,若两个景点之间可以直接到达,那么他们有一条边相连,在边上附加一个权值,代表两个景点间的距离。
若两景点间不能直接到达,我们可以使用一个给定的数值来代表距离的无穷大。
我们使用邻接矩阵来表示图,它由一个顺序存储顶点信息的顶点表和一个存储顶点间的相互关系的关系矩阵两部分组成。
如下所示,图结构包括当前顶点数目,当前边的数目。
用一个一维数组来存放顶点,用一个二维数组来存放边。
typedefstruct
{
intn,e;
//顶点数目,边数目
Vertexvexs[MaxVertexNum];
//存放顶点
Vertex*pvexs;
//顶点指针
intedges[MaxVertexNum][MaxVertexNum];
//存放边
}MGraph;
3.2.2数据的初始化
图结构定义好之后,就需要把图结构中的各个数据项初始化。
方便后边程序的使用。
首先在程序中定义一个图的全局变量MGr,初始时默认顶点个数也就是景点个数为15,给每个景点按照校园地图附上景点信息,并用一个for循环暂时先给图中每一条边赋值为无穷大,顶点到自身的距离为0。
然后通过一个intmile(inta,intb)函数,通过给定的两个景点的编号来调用两个景点的x,y坐标进而求出它们间的距离。
并将求出来的距离赋值到图结构的相应的边上。
在车辆结构中,也先定义一个车类型的全局变量,用数组来表示三种不同类
型的车辆,每种车型包含有车辆名称,车辆速度,车辆票价,车辆行驶路线等基本信息。
3.3查询模块的详细设计
本模块主要用于实现游客对现有景点的信息的查询,通过这个模块的功能可以为游客提供需要查找的景点信息。
由于本系统需要使用文本文件来存储景点信息,所以我们在程序里要首先创建一个文本文件来存放所有的景点信息,当使用景点查询功能时,首先在文本文件中找到对应的景点信息,然后从文本文件里输出并显示。
考虑到如果用户需要一次性查询所有景点信息,则将文本文件里的所有景点信息输出显示。
在该模块中,程序还可以实现两个景点间最短路径的查询。
图结构中已经存放有边的长度的数组,任意两个景点之间可以有多条路径到达,为了能使用户快速地到达,使用Dijstra算法和打印函数可以实现最短路距离的查询,并将该条路径顺序打印到屏幕上。
为了使功能丰富,这里还添加了校园交通方案的查询。
提供给用户两个景点之间的多种交通方案供用户选择。
给每一种类型的车辆规定一条路径,该种车辆在这条道路上往返,能够经过某些景点,但也有某些景点不能通过。
反馈给用户包括车型、车辆从出发点到终点所用的时间、票价信息。
3.3.1查询模块功能子函数设计
(1)voidwritefile()函数
文本文件的读入函数。
使用ofstreamfout("
ST3.txt"
)来实现建立打开一个文本文件,并用一个for循环来依次读入校园景点信息,每一个景点信息存放为一行,信息读入完成关闭ST3.
(2)voidfind(inti)与voidallvexs()函数
这里的整型参数i代表着需要查询的校园景点的编号,使用ifstreamfin("
)来打开存放有所用景点信息的文本文件,用一个for循环来查找该编号是否存在。
在voidallvexs()中用一个for循环多次调用voidfind(inti)函数,实现对所有景点信息的查询。
(3)voidDijkstra(MGraph*G,intv,intpath[],intdist[])函数
这里使用了著名的Dijkstra算法,它可以实现求出图中某个源点到其余各顶点的最短路径。
按照路径长度递增的次序产生最短路径。
首先在程序中定义两个个数组dist[MaxVertexNum]、path[MaxVertexNum],数组元素path[i]用来存放各个顶点的顶点信息,其中每个元素dist[i]表示起点V0到每个终点的最短路径长度。
假设S表示以求出的最短路径的终点集合,那么下一条最短路径即从顶点V0到达顶点Vx的路径,它们之间的最