数据结构-校园导游系统..pdf
《数据结构-校园导游系统..pdf》由会员分享,可在线阅读,更多相关《数据结构-校园导游系统..pdf(54页珍藏版)》请在三一文库上搜索。
1、课程设计论文(附有代码! ) 题目:校园导游咨询 学院:计算机科学与工程学院 专业:计算机科学与技术 姓名: 学号: 指导教师: 2014 年 9 月 22 日 摘要 桂林众山环绕,风景优美,加之近年来校园环境也得到不断地改善,来访 校园的游客逐渐增加,为了方便众多游客对校园景点的参观,需要给来访人士 提供校园导游咨询服务,利用计算机建立一个便利的咨询系统可以很好地解决 这个问题。 在本设计实验中,我所采用的是邻接矩阵作为数据的存储结构,用不同的 功能模块对两地距离和校园道路信息进行编辑。当游客来访时,系统能根据用 户输入的景点代号查询景点信息,提供任意两个景点间的最短路径查询,并能 查询校园
2、内的交通信息,方便游客访问。工作人员还可以为校园更新景点以及 路径信息。 本文将简单介绍该系统的开发背景,详细介绍系统的主要设计思路,函数 的建立和使用过程,该系统功能的实现方式和实现结果,以及对所遇到问题的 分析解决,最后对该系统进行总结描述。 关键词: 校园导游咨询; 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 查询模块功能子函数设计
3、 5 3.4 更新功能模块详细设计7 3.4.1 更新模块功能子函数设计 8 4 所遇到的问题和分析解决10 5系统特色及关键11 6 结论12 参考文献 13 桂林电子科技大学综合设计说明书用纸第 1页 共 13 页 引言 随着计算机科学技术的不断提高, 计算机依靠其强大的功能已经成为人们生 活中不可缺少的一部分,计算机能解决人类生活中的大部分问题,为人类文明 和社会进步做出了巨大贡献。 桂林是一个全世界著名的旅游城市,近几年来旅游业得到了飞速的发展,来 自各个国家各个城市的游客给城市带来了巨大的经济效益。地处尧山地带的桂 林电子科技大学风景非常优美,随着我们大学知名度的提高,来访游客数量大
4、 大增加,这就需要我们建立一个校园导游咨询系统来解决游客的来访咨询,为 游客提供所需要了解的景点信息,或者统观所有景点信息后再选择需要参观的 景点;校园里有公车巴士等交通工具,价格合理,乘坐方便,可以为游客们提 供代步工具,系统可以为游客提供所有的交通方式由游客自行选择。当游客们 参观完某景点需要参观下一个景点时,系统可以为其提供两景点间的最短路径, 减少游客的步行量。 最终的目的是给各位游客们提供参观校园的便利,让游客更好地了解我们的 大学。使校园旅游实现管理信息化,智能化。 1 系统概述 从选定题目之后,本人在校园内做了实地调查,画出了大致的校园平面图; 并查找相关资料,熟悉了开发环境以及
5、图结构的知识。参考了资料书上的其他 类似案例,对系统的开发做了较好的准备。 该系统是由用户、管理员、计算机组成的用以进行校园咨询校园更新的系统。 可实现通过认为输入查询各类景点信息,交通信息;当校园景点更新时,工作 人员可以及时地通过系统更新景点信息,为游客提供任意两景点之间的最短路 径。 2 需求分析 2.1 系统需求 校园导游咨询系统的基本要求: (1)设计你所在学校的校园平面图, 所含景点不少于10个。 (2)以图中顶点表示校内各景点, 存放有景点名称、编号、简介等信 息;以边表示路径,存放路径长度等相关信息。 (3)为来访客人提供图中任意景点相关信息的查询。 桂林电子科技大学综合设计说
6、明书用纸第 2页 共 13 页 (4)为来访客人提供图中任意景点的问路查询,即查询任意两个景点 之间的一条最短的简单路径。 (5)必须具有校园平面图的修改和扩充功能,即某些景点坐标的修改 和景点个数的增加。(6)需要有 5 条以上的文件记录。 (7)为游客提供校园交通方案的查询。 (8)能够根据景点实际变化进行景点信息的更新。 (9)能够将更新后景点信息传入到文本文件里保存。 程序设计分析: (1)构造一个无向带权网G并用邻接矩阵来存储; (2)利用 Dijkstra算法来计算出起点到各个顶点之间的最短路径并进 行存储,弗洛伊德算法将找出每一对顶点之间的最短路径; 系统的输入与输出: (1)键
7、盘输入。 (2)磁盘输入输出。 该系统需要具备下面几个使用要求: (1)需要有友好的系统界面,易于理解,操作简单,中文菜单。 (2)数据处理要保证精确度,能给予用户实际有效的信息。 (3)当用户输入错误,需要有友好的提醒界面,并能再次输入。 (4)将用户需要的信息完整地输出到系统界面,不能输出无用信息和 不完整的信息。 (5)系统易于读懂,易于维护和扩充。 2.2 开发环境 校园导游咨询系统在联想计算机上进行开发配置为: CPU: AMDTrinityAPUA8-4500M CPU 2.30GHz 操作系统为 windows 7 旗舰版( 64) 开发平台是 VC+6.0 开发语言: C+ 桂
8、林电子科技大学综合设计说明书用纸第 3页 共 13 页 C+ 是在 C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编 程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重 编程的通用程序设计语言。 它支持过程化程序设计,数据抽象,面向对象设计, 制作图标等多种程序设计风格。 3 详细设计 3.1 系统结构 从该系统整体结构上分析,该系统主要分为查询模块和更新模块,查询模 块包括景点信息查询,任意两景点间的最短路径查询,校园交通方案的查询这 三个基本查询功能,基本上满足来访游客的查询需求。更新模块包括校园景点 信息更新,校园景点道路更新,车辆行驶路线更新等功能,可以对校
9、园各个信 息进行更改,以便于来访游客能了解到景点的最新信息。这两个模块之间通过 这里已经具有了紧密的联系。 因为各种查询必须建立在各种数据的输入更新之上,当校园信息改变时, 游客查询得到信息也应该是更新过后的信息。通过查询模块与更新模块之间的 功能联系,就可以实现一个有机的循环。 系统基本运行界面如下所示, 这里我用了一个while(1)将开始菜单放到一个 初始大循环里,当用户操作完成一项基本功能后便会自动回到这个主菜单,方 便下一个用户的使用。用一个switch(k)由用户输入的相应字符来执行相应的功 能函数,最后可以按 #号键退出。 桂林电子科技大学综合设计说明书用纸第 4页 共 13 页
10、 3.2 数据结构设计以及数据的初始化 3.2.1 图结构设计 在本系统中,需要使用图结构来存储各个景点数据。图由若干边和若干顶 点组成,在这里每个顶点对应的景点包含有景点编号,景点坐标,景点名称, 景点简介这些信息。 图是一种非线性的数据结构,其中的数据元素之间是多对多的的关系。对 于校园景点来说,其中每一个景点可以看做是一个顶点,若两个景点之间可以 直接到达,那么他们有一条边相连,在边上附加一个权值,代表两个景点间的 距离。若两景点间不能直接到达,我们可以使用一个给定的数值来代表距离的 无穷大。 我们使用邻接矩阵来表示图,它由一个顺序存储顶点信息的顶点表和一个 存储顶点间的相互关系的关系矩
11、阵两部分组成。 如下所示,图结构包括当前顶点数目,当前边的数目。用一个一维数组来 存放顶点,用一个二维数组来存放边。 typedef struct int n,e; /顶点数目,边数目 Vertex vexsMaxVertexNum; /存放顶点 Vertex* pvexs; /顶点指针 int edgesMaxVertexNumMaxVertexNum; /存放边 MGraph; 3.2.2 数据的初始化 图结构定义好之后,就需要把图结构中的各个数据项初始化。方便后边程 序的使用。 首先在程序中定义一个图的全局变量MGr , 初始时默认顶点个数也就是景点 个数为 15,给每个景点按照校园地图
12、附上景点信息,并用一个for 循环暂时先 给图中每一条边赋值为无穷大,顶点到自身的距离为0。 然后通过一个 int mile(int a,int b)函数,通过给定的两个景点的编号来 调用两个景点的x,y 坐标进而求出它们间的距离。并将求出来的距离赋值到图 结构的相应的边上。 在车辆结构中,也先定义一个车类型的全局变量,用数组来表示三种不同 类 型的车辆,每种车型包含有车辆名称,车辆速度,车辆票价,车辆行驶路线等 桂林电子科技大学综合设计说明书用纸第 5页 共 13 页 基本信息。 3.3 查询模块的详细设计 本模块主要用于实现游客对现有景点的信息的查询,通过这个模块的功能 可以为游客提供需要
13、查找的景点信息。 由于本系统需要使用文本文件来存储景点信息,所以我们在程序里要首先 创建一个文本文件来存放所有的景点信息,当使用景点查询功能时,首先在文 本文件中找到对应的景点信息,然后从文本文件里输出并显示。 考虑到如果用户需要一次性查询所有景点信息,则将文本文件里的所有景 点信息输出显示。 在该模块中,程序还可以实现两个景点间最短路径的查询。图结构中已经 存放有边的长度的数组,任意两个景点之间可以有多条路径到达,为了能使用 户快速地到达,使用Dijstra算法和打印函数可以实现最短路距离的查询,并 将该条路径顺序打印到屏幕上。 为了使功能丰富,这里还添加了校园交通方案的查询。提供给用户两个
14、景 点之间的多种交通方案供用户选择。给每一种类型的车辆规定一条路径,该种 车辆在这条道路上往返,能够经过某些景点,但也有某些景点不能通过。反馈 给用户包括车型、车辆从出发点到终点所用的时间、票价信息。 3.3.1 查询模块功能子函数设计 (1)void writefile()函数 文本文件的读入函数。使用ofstream fout(“ST3.txt“)来实现建立打开一 个文本文件,并用一个for 循环来依次读入校园景点信息,每一个景点信息存 放为一行,信息读入完成关闭ST3. 桂林电子科技大学综合设计说明书用纸第 6页 共 13 页 (2)void find(int i)与 void allv
15、exs()函数 这里的整型参数i代表着需要查询的校园景点的编号,使用ifstream fin(“ST3.txt“)来打开存放有所用景点信息的文本文件,用一个for循环来查 找该编号是否存在。在void allvexs()中用一个for循环多次调用void find(int i)函数,实现对所有景点信息的查询。 (3)void Dijkstra(MGraph *G,int v,int path,int dist)函数 这里使用了著名的Dijkstra算法,它可以实现求出图中某个源点到其余各 顶点的最短路径。按照路径长度递增的次序产生最短路径。首先在程序中定义 两个个数组 distMaxVerte
16、xNum 、pathMaxVertexNum ,数组元素 pathi用 来存放各个顶点的顶点信息, 其中每个元素 disti表示起点 V0到每个终点的 最短路径长度。 假设 S 表示以求出的最短路径的终点集合,那么下一条最短路径即从顶点 V0 到达顶点 Vx 的路径,它们之间的最短路径长度要么为弧的权值, 要 么 为 distj与Vj到Vx 的 权 值 之 和 。 因 此 下 一 条 路 径 可 以 用 distx=G-edgesv0Vx或者 distx=distj+G-edgesVjVx来存放源 点到该顶点的最短路径。 (4)int DispPath(MGraph *G,int path,i
17、nt dist,int start,int end) 函数 由于前面定义的一维数组dist和 path 已经在 Dijstra函数中将最短路 径上的顶点信息和源点到各顶点的距离保存了下来,这时就需要定义一个 DispPath 函数来输出最短路径上的顶点信息及总距离。系统通过调用用户输入 的两个景点编号确定起始景点和目的景点,并使用一个while 循环实现依次递 减将各景点信息输出。 桂林电子科技大学综合设计说明书用纸第 7页 共 13 页 查询 1 号景点到 4 号景点的最短路径: (5)float Time(int a,int b,int c)和 int li(int a,int b,int
18、 i)函数 在车辆类型的初始化中已经为各个车辆录入相关的车辆信息,使用一个一 维数组 Car.mycari.licheng来存放车辆运营的景点历程, 规定它所能经过的 景点。利用 time() 函数来求往返两景点需要的时间。在 li()函数中首先需要用 for遍历判断用户输入的两个景点是否在车辆规定的运营路径上,由于部分景 点不通过,所以路程不能由最短路径求出,只能通过使运营路径上相邻的景点 一一相加求出,除以车辆速度,返回一个时间值。最后用li()函数将各个信息 输出,无法到达的景点给出相应提示。 3.4 更新功能模块详细设计 校园导游咨询系统的另一个功能模块就是对于整个系统的数据具有一定的
19、 更新功能,对于管理人员而言,当校园环境发生实时变化,他们就需要修改系 统内部原本的旧信息,把变化后的新信息录入到系统当中。对于游客而言,他 们需要的是当下最新的景点和路径等校园信息,以确定他们的校园旅游方案, 不至于出现错误的访问方式。 由上面的叙述可知,最初的景点数据信息已经保存在文本文件中了,每个 景点信息都占用一行。当某个景点暂停开放或施工,游客是不能访问的,这时 桂林电子科技大学综合设计说明书用纸第 8页 共 13 页 就需要从文本文件中删去其中的一行景点信息,游客在访问时就无法得到这个 景点的信息。 当校园中道路需要关闭通行时,除去路径首尾的两个景点之间的相邻关系, 用无穷大替换掉
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 校园 导游 系统
链接地址:https://www.31doc.com/p-5217408.html