公园的导游图

公园的导游图
公园的导游图

用C++语言设计一个公园的导游图

摘要现实生活中,常常会遇到求最短路径的问题。本课程设计旨在提供一种解决这类问题的实例,把某一公园的景点与路线抽象成顶点和边,从而构成图,进而解决一系列相关的最短路径,最佳路线等问题。在课程设计中,系统开发平台为Windows XP,程序设计设计语言采用C++,程序运行平台为Windows 98/2000/XP。对于求解最短路径,使用了著名的Dijkstra算法。对于求最佳路径,采用了常用于解决TSP问题的贪心法。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,这一导游图系统将同样适用于其他公园。

关键词程序设计;数据结构;图;最短路径;Dijkstra算法;TSP问题

1 引言

现实生活中,常常会遇到求最短路径的问题,本课程设计将把这类问题实例化,把一个公园的景点顶点化、路径边化,建成一个图,再通过比较对图中各边及顶点的关系,实现对公园各个景点进行访问,并能根据要求,求出任意两个顶点的最短路径,还能给出一条依次不重复访问各点的最短路径。

【这部分应写明前人相关的研究成果、理论与实践依据,内容可包括研究的目的、意义、主要方法、范围和背景等。】

随着计算机科学的迅速发展,计算机已深入到揉社会的各个领域,它的应用已不再局限于科学计算,以解决一些数学问题,而且可以解决一些抽象化的具体问题,更多地用于控制,管理及数据处理等非数值计算的处理工作,这便为我们的日常生活提供了很多的方便,譬如说火车售票系统,学生成绩管理,车厢调度等实际问题。如今程序设计的语言很多,有发展比较完善高级语言,也有最基本的低级语言,然而再好的程序设计也要有一个比较清晰的思路——算法。为了编写好一个好程序,必须分析待处理对象的特性以及各处理对象之间的关系,于是数据结构便成为我们绝佳的选择。数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且已成为其他理工专业的热门选修课。

2程序的功能需求分析

2. 1 程序的功能分析

一个公园的导游图,至少应该有一个简单的景点分布图,让游客能对公园概况一目了然。其次,应该能提供相关的景点信息:包括景点名称,景点简介等。以上功能是基础,在此基础上,使公园的导游图系统更具人性化,更具有实用性:为导游图系统添加景点最短路径的计算,提供依次不重复访问所有景点的最佳旅游路线。

菜单项及其基本操作

拥有了完整的功能的导游图系统,还需要有清爽,简易的操作界面,让游客一目了然,操作方便。本导游图用数字键的选择方式,加以提示,提供给用户如图的简单方便的操作。

图抽象化的公园导游图

至此,已经规划好导游图系统的功能和操作的基本构架,下一步就是着手为每一个操作的实现做程序实现的考虑了。

3 程序的算法分析

要完成对整个导游图系统的功能实现,需要对的每一项功能都有清楚的设想和认识,了解并明确每一项功能的实现需要解决的问题,选择正确并且高效的算法把问题逐个解决,最终实现程序的正确调试运行。

为此,可把系统分为以下几个核心:图的初始化、图的遍历、求两点间的最短路径、求最佳路线。

图的初始化

图是一种复杂的数据结构,表现在不仅各个顶点的度可以相差很多,而且顶点之间的逻辑关系——邻接关系也错综复杂[1]。从图的定义可知,一个图包括两部分信息:顶点的信息以及描述顶点之间关系(边或弧)的信息。图的初始化是所有相关操作的基础,其存储结构将直接影响到程序的实现的难易度、空间性能和时间性能,因此选择适合本次程序的存储结构至关重要。

图的存储结构有邻接矩阵、邻接表、十字链表、邻接多重表、边集数组等多种,较常用的有邻接矩阵和邻接表,而这两者的存储方式的比较如表3-1。

表3-1 邻接矩阵与邻接表存储结构的比较

图的邻接矩阵和邻接表存储各有利弊,应用时要根据图的稠密和稀疏程度以及问题的需求进行选择[2]。仔细比较这两种存储方式容易知道,由于邻接矩阵特殊的存储方式,如图所示,它非常便于快速的查找两个顶点之间的边上的权值。所以,图采用带权的邻接矩阵存储。

Vertex[5] =

∞ ∞ 9 5 7

∞ ∞ 3 4 ∞ Arc[5][5]=

9 3 ∞ 7 2 5 4 7 ∞ ∞ 7

2

图 无向图及其邻接矩阵存储示意图

决定了图的存储方式后,需要有一个公园的实例,本程序选择本人所在地的姑婆山国家森林公园的游览地图作为蓝本,把公园地图抽象化成顶点与边构成的图形式,如图,途中红色数字代表线的权值。

图 抽象化的公园导游图

图的遍历

图的遍历是图中最基本的操作。图的遍历是指从图中某一顶点出发,对图中所有顶点

访问一次且仅访问一次。导游图需要把每条路径的信息都向游客展示,就需要读取每两个顶点间的路径信息。由于采用了带权的邻接矩阵存储结构进行存储,所以需要针对这一存储结构对路线进行遍历操作。其遍历算法如图所示,执行效果如图所示。

图图的遍历算法流程图

V 2V 1

V 4

V

3

V

4

3

7

5

7

9

2

选择图片控件

For循环语句

(i=0;i<顶点数;

N

For循环语句

(j=0;j

Y

Y

N

Y

开始

结束

如果路径存在

输出该路径信息

N

第一次循环

第二次循环

第三次循环

第四次循环

图图的遍历算法执行效果示意图

最短路径(Dijkstra算法)

基于本程序中图的存储是邻接矩阵结构存储的图结构,因而采用适合该存储结构的Dijkstra算法用于解决求最短路径的问题。

迪杰斯特拉(Dijkstra)提出了一个按路径长度递增的持续产生最短路径的算法,其基本思想是:设置一个集合S存放已经找到最短路径的顶点,S的初始状态只包含源点v,

对于v

i ∈V-S,假设从源点v到v

i

的有向边为最短路径。以后每求得一条最短路径v,…,

v k ,就将v

k

加入集合S中,并将路径v,…,v

k

,v

i

,与原来的假设相比较,取路径长度较

小者为最短路径。重复上述过程,直到集合V中全部顶点加入到集合S中。如图所示。

图图的遍历算法执行效果示意图

辅助数组dist[n]:元素dist[i]表示当前找到的从源点到终点v

i

的最短路径的长度。

初态为:若从v到v

i

有弧,则dist[i]为弧上的权值;否则置dist[i]为∞。若当前求得的

终点为v

k

,则根据下式进行迭代:

dist[i]=min{dist[i],dist[k]+arc[k][i]} 1≦i≦n

辅助数组path[n]:元素path[i]是一个串,表示当前所找到的从源点到终点v

i

的最短

路径。初态为:若从v到v

i 有弧,则path[i]为“vv

k

”,否则置path[i]为空串。

数组s[n]:存放源点和已经生成的终点(即集合S),初态为只有一个源点v。算法的伪代码描述是:

1.初始化数组dist、path和s;

(s中的元素个数

在dist[n]中求最小值,其下标为k(则v

为正在生成的终点);

k

输出dist[j]和path[j];

修改数组dist和path;

添加到数组s中;

将顶点v

k

最佳访问路线(贪心法)

在解决最佳访问路线问题时,不得不提到TSP问题。所谓的TSP问题就是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次,并要求所走的路程最短,最后返回到出发点。该这个又称货郎担问题、邮递员问题,是图问题中最广为人知的问题。对于TSP 问题,一种最容易想到,也肯定能得到最佳解的算法是穷举法,即考虑所有可能的旅游路线,从中选择最佳的一条。但是用穷举法求解TSP问题的时间复杂度为O(n!),当n大到一定程度后是不可解的[3]。在这里就引出解决此问题的一个经典算法:贪心法。

贪心法( Greedy algorithm ,直译:贪心算法)是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。比如在旅行推销员问题中,如果旅行员每次都选择最近的城市,那这就是一种贪心算法[4]。因此贪心法非常适合程序的最佳旅游路径的求解。

贪心法可以解决一些最优性问题,如:求图中的最小生成树、求哈夫曼编码……对于其他问题,贪心法一般不能得到我们所要求的答案。一旦一个问题可以通过贪心法来解决,那么贪心法一般是解决这个问题的最好办法。由于贪心法的高效性以及其所求得的答案比较接近最优结果,贪心法也可以用作辅助算法或者直接解决一些要求结果不特别精确的问题。

对于大部分的问题,贪心法通常(但不一定)都不能找出最佳解, 因为他们一般没有测试所有可能的解。贪心法容易过早做决定, 因而没法达到最佳解。然而,贪心法的好处在于容易设计和很多时能达到好的近似解[5]。本程序的最佳路线问题的解决办法,就采用这种求近似最优解的算法。

贪心法算法用伪代码描述如下:

1.任意选择某个顶点v作为出发点;

2.执行下述过程,直到所有点都被访问:

v= 最后一个被访问的顶点;

在顶点v的邻接点中查找距离顶点v最近的未被访问的邻接点j;

访问顶点j;

3.从最后一个访问的顶点回到出发点v;

以图为导游图系统实例代入后,最佳路线的算法按照如图所示的方式进行图的顶点遍历。

最佳路径长度:1+5+2+3+2+1+3+2=19

最佳路径:

图实际最佳路径及路径长度

4程序的运行与测试程序运行初始界面

程序运行,后台对图结构进行初始化,运行结果如图。

图最短路径算法正确输出实现查看公园地图

公园地图的查看,输出用cout语句建立的公园地图。

图公园地图

查看路程信息

遍历图的所有路径并依次输出路径信息。

图所有边的信息

求最短路径

根据用户要求,求始点到终点的最短路径信息和所有路径信息。如图和所示。

图两景点间的最短路径

图始发点到所有景点的最短路径

求最佳路径

为游客提供一条可以依次不重复地游览所有景点并最终回到起点的最短路径。

退出

用break实现程序退出。

5 存在的不足与对策

由于设计者水平有限,本导游图系统的功能还比较简单,还有一些好的设想没有实现:比如添加管理模式,使得公园管理人员能够同样方便的更改导游图,因此更改这一导游图还必须在程序员的帮助下进行。另外,本导游图系统还有一定的局限性,如果存在只有一条通路的景点,导游图将无法求得最佳旅游路径。公园的导游图系统的这些不足请老师多多谅解。今后我会更多的学习数据结构的相关知识,更深刻地理解图的基本操作,不断提升认识,提高编程技巧,借以不断地提高程序设计水平。

参考文献

[1] 朱战立.数据结构——使用C++语言. 西安:西安电子科技大学出版社,2001

[2] 王红梅,胡明,王涛.数据结构(C++版). 北京:清华大学出版社,2005

[3] 马春江,李慧勇,孟繁军. 新编数据结构教程. 北京:中国电力出版社,2006

[4] 贪心法_维基百科.维基百科,

:2008-9-04

[5] 田鲁怀.数据结构.北京:电子工业出版社,2006

附录 A 用C++语言设计一个公园的导游图

. . "<

cout<<" . . .

"<

cout<<" <6> 仙姑瀑布 . <5>猕猴园 "<

c o u t<<" . . . . . . "<

d l;

c o u t<<" . . . . . . "<

d l;

c o u t<<"<4>情人林 . . . . . "<

d l;

c o u t<<" . .<3>方家茶园 . "<

d l;

c o u t<<" . . . . . "<

d l;

c o u t<<" .. . . . "<

d l;

cout<<" <2>梅园山庄 . <1> 牛头寨 "<

c o u t<<" . . . "<

d l;

c o u t<<" . . . "<

d l;

cout<<" <0> 正门 "<

break;

case 2: _str()<<" 到

"<

"<<()<<"\n";

_str()<<" 到 "<

for(int d=1;d

}

if(flat==vertexNum-1) //当已经访问了所有点,把出发点的visited设为0,即表示未访问,以便寻找并返回正门

{

visited[0]=0;

}

if(flat==vertexNum) //返回始发点,输入路径长度

{cout<

}

cout<<"┏━━━┓"<

cout<<"┃小贴士┃这条精品游览路线可以让您一次不重复的游览公园内所有的景点哦!"<

cout<<"┗━━━┛"<

cout<<"**************祝您旅途愉快************"<

某公园申报国家4A级旅游景区自查情况汇报

XX公园申报4A级旅游景区自查情况汇报 关键字:XX公园申报4A级旅游景区自查情况汇报 更新时间:2010-10-18 **市旅游局: 为提升景区品位,提高景区景观质量,员工服务水平和服务质量,规景区开发与管理,根据《旅游景区质量等级划分与评定》标准对AAAA级旅游区的要求,**文化主题公园拟申报AAAA级旅游区,并于2010年4月对照《旅游景区质量等级划分与评定》标准,开展了创建申报AAAA级旅游景区的自检自查工作。现将自查情况汇报如下: 一、基本情况 **文化主题公园占地面积8.5平方公里,集生态植被、峡谷、瀑布、溶洞、湖泊、溪流、壮族风情为一体,是国唯一生命文化主题公园。景区定位为“奇景观光、生命文化、水上娱乐、壮乡风情”,目前已开辟建设有图腾林、烧香石、雏凤堂、女儿湖等景点20余处。2007年4月正式对外开放,景区认真贯彻落实《旅游景区质量等级的划分与评定》标准的各项要求,坚持以诚信经营为基础,以服务游客为宗旨,努力提高景区景观质量、员工服务水平和服务质量。几年来,景区服务实现零投诉,游客综合满意率不断提升。 二、成立自检自查领导小组 旅游局及旅游公司高度重视创建申报工作,为确保创建申报工作的顺利实施,专门聘请旅游管理专家策划方案。并成立了以旅游局局长为组长,旅游公司总经理为副组长,景区管理处负责人及相关部门责任人为成员的申A创建工作领导小组,领导小组下设办公室,由凤凰谷风景区负责人为具体责任人,负责景区申报的各项筹备工作。 三、自检自查情况 创建工作领导小组于2010年4月15日按《旅游区(点)质量等级划分与评定》和《评分细则》对景区进行了自评,评分情况如下:服务与环境质量达到906分,景观质量达到87分,游客意见满意度达到95分,符合AAAA级旅游景区申报条

数据结构课程设计-校园导游图

齐齐哈尔大学 计控学院 数据结构课程设计 选题名称:校园导游图 系(院):计算机与控制工程学院 专业:软件工程 班级:软件121班 姓名:刘泽强 学号:2012023019 指导教师:吴迪 2014年7月1日

数据结构课程设计评分表 90~100为优,80~89为良,70~79为中,60~69为及格,60分以下不及格

目录 一、问题描述 (4) 二、程序设计 (5) 三、运行结果: (8) 四、总结 (11) 附录: (12)

一.问题描述 设计你所在的学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点的名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2)为来访客人提供图中任意景点相关信息的查询。 (3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的最短的简单路径。

二、程序设计 1.用数据结构知识创建校园图。 void creatgraph(vexnode g[],int *n, EdgeType e[],adjmax *adj) //创建校园图 { int b,i,s,d,len; struct edgenode *p,*q; //定义图的结构体 2.手动给校园图赋上相关信息(景点名称、代号、简介),路径及路径长度。得到一个模拟的校园图: 图2.2 3.利用C语言知识编写查找景点相关信息的程序。 手动创建一个校园图creat(Matrix_Graph *G),然后为相应的边赋上真正的值。 主要代码: do{ printf("是否继续? Y/N");

scanf("%c",&ch); getchar(); if(ch == 'Y' || ch == 'y') //继续 { flag = 1; i = 1; printf("请输入您要查询的景点序号:\n"); scanf("%d",&len); getchar(); printf("此景点的名称是:"); Name(len); printf("此景点的介绍是:"); Information(len); 4.利用迪杰斯特拉算法计算任意两点之间的最短路径。 用path函数来求任意两景点之间的最短路径。 while(c<=N) { t=MAX; for(i=1;i<=N;i++) if(flag[i]&&G->arcs[s][i]arcs[s][i];v=i;r[v][1]=v;} for(i=1;i<=c;i++) for(j=1;j<=N;j++) if(flag[j]&&d[i]+G->arcs[T[i]][j]arcs[T[i]][j];v=j; if(r[v][0]!=-1) { u=1; while(r[T[i]][u]!=0) { r[v][u]=r[T[i]][u];u++;} } r[v][u]=v;

某数据结构课程设计公园导游图

实验四:图(内容:某公园导游图) 一、问题描述: 公园导游系统:给出一张某公园的导游图,游客通过终端询问可知︰从某一景到另一景点的最短路径。游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。 二、设计描述: 1.输入导游图的算法(存储方法).本程序特地设计函数void initgraph()用于实现键盘输入图的结构; 2.可访问导游图中任一景点的算法.为此设计了函数void vist(GraphMatrix graph)用于实现访问任一景点的信息; 3.最短路径从一景点到另一景点的算法。利用floyd算法-实现每一对景点间的最短路径。 并利用void outgraph()函数实现显示起始点和终点间的最短路径和其长度; 三、程序清单: #include using namespace std; #include #define MAXVEX 100 #define MAX 999 typedef char VexType; typedef float AdjType; typedef struct //定义图结构 { int n; /* 图的顶点个数 */

VexType vexs[MAXVEX]; /* 顶点信息 */ AdjType arcs[MAXVEX][MAXVEX]; /* 边信息 */ } GraphMatrix; GraphMatrix graph; //定义一个图graph typedef struct //定义最短路径ShortPath结构 { AdjType a[MAXVEX][MAXVEX]; /* 关系矩阵A,存放每对顶点间最短路径长度 */ int nextvex[MAXVEX][MAXVEX]; /* nextvex[i][j]存放vi到vj最短路径上vi的后继顶点的下标值 */ } ShortPath; ShortPath path; //定义路径path void floyd(GraphMatrix * pgraph, ShortPath * ppath) //floyd算法-用于实现每一对景点间的最短路径 { int i, j, k; for (i = 0; i < pgraph->n; i++) for (j = 0; j < pgraph->n; j++) { if (pgraph->arcs[i][j] != MAX) ppath->nextvex[i][j] = j; else ppath->nextvex[i][j] = -1; ppath->a[i][j] = pgraph->arcs[i][j]; } for (k = 0; k < pgraph->n; k++) for (i = 0; i < pgraph->n; i++) for (j = 0; j < pgraph->n; j++) { if ( ppath->a[i][k] >= MAX || ppath->a[k][j] >= MAX )

数据结构课程设计——校园导游图

景德镇陶瓷学院 信息工程学院 班级:12计科(2)班 学号:201210510216 姓名:乐升平 指导老师:林卫中 时间:2014年6月18号 题目:校园导游图 校园导游图 1.1、需求分析: 需求: (1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离。为此图选择适当的数据结构。 (2)把各种路径都显示给游客,由游客自己选择游览路线。 (3)画出景点分布图于屏幕上。 分析: 完成对整个导游图系统的功能实现,需要对的每一项功能都有清楚的设想和认识,了解并明确每一项功能的实现需要解决的问题,选择正确并且高效的算法把问题逐个解决,最终实现程序的正确调试运行。有以下设计思路:(1).结合本校的实际情况,选出10个景点; (2).人为手工为选出的10个景点赋上相关信息(名称、代号、简介信息、以及路权等等); (3).根据选出来的10个景点用邻接矩阵存储校园图。 (4).依照景点的相关信息创建校园图。 (5).把纸质上的内容,利用C++编程语言编写查找景点相关信息的程序。 (6).根据人为赋值的路权,迪杰斯特拉算法计算任意两点之间的最短路径。 (7).综上所诉,用一个主函数把这些板块合成,生产一个菜单界面呈现在用户面前。 1.2、设计与实现:

选出本校10个景点 结合景德镇陶瓷学院实际情况,我选出以下10个景点,从1到10编号: 编号 名称 编号 名称 编号 名称 编号 名称 1 研究生楼 2 二食堂 3 10#宿舍 4 主教学楼 5 毕业礼堂 6 主阶 7 一食堂 8 A 系列楼 9 B 系列楼 10 图书馆 11 科艺楼 12 科阶 13 篮球场 14 田径场 15 游泳池 16 体育馆 17 翠湖 18 校门口 图的初始化 由于邻接矩阵特殊的存储方式,它非常便于快速的查找两个顶点之间的边上的权值。所以,图采用带权的邻接矩阵存储。 决定了图的存储方式后,以华南农业大学18个景点的游览地图作为蓝本,把校园地图抽象化成顶点与边构成的图形式,如图所示 研究生楼 二食堂 10 主教学楼 毕业礼堂 主阶 一食堂 A 系列楼 B 系列楼 图书馆 科艺楼 科阶 篮球场 田径场 研究生楼 10#宿舍 A 系列楼 篮球场 毕业礼堂 主教学楼 科艺楼 一食堂 二食堂 主阶 B 系列楼 图书馆 科阶 田径场

幼儿园大班学习活动公园导游图范文

教学资料参考范本 幼儿园大班学习活动:公园导游图范文 __________________ 撰写人:

__________________门:部 __________________间:时 1 / 6 设计思路: 在最近开展的“我的城市”主题活动中,幼儿关注的焦点从中国到上海,从黄浦江、东方明珠、高架路到星罗棋布的公园、绿地。他们对自己幼儿园的位置、家的所在地及周边熟悉的设施、路名都很热衷于去看一看、找一找。我园遵循生活教育的理念,提倡让幼儿从自己身边开始,与周边环境互动。我们居住的社区和幼儿园附近有一个小公园——东安公园,班里一半以上的幼儿都去过。所以,我选择了东安公园的导游图作为活动的载体:一是因为幼儿对公园比较熟悉,二是因为公园大小合适幼儿后期的真实体验。 整个教学活动主要分为三个流程:寻找游玩地点(东安公园)——观察公园导游图——根据要求,设计游玩路线。在寻找幼儿园位置的过程中充分调动幼儿已有的生活经验:观察导游图引发幼儿对各种图示、标志的经验,交流、关注身边的事物;自主设计游玩路线,这对刚升

人大班的幼儿是一种挑战,因为其中整合了空间方位、时间安排、生活习惯等要素,在师生、生生的互动中使幼儿在计划一件事情的时候能有更周全、更合理的思维方式。幼儿间的差异也是一种学习资源,幼儿尝试用符号表示路线的不同方法、有条理地介绍自己的想法,都是教师要捕捉的有价值的经验点。活动的延伸部分,我还在个体学习活动中让幼儿设计从不同的门进入、出来,引导幼儿经验的迁移。让他们能在以后的实际生活中学会运用,为生活带来方便。 活动目标: 2 / 6 1.看看、说说东安公园导游图,了解图示、标志在我们生活中的作用和意义。 2.尝试设计游玩路线,用符号、语言清楚地记录、表达自己的想法。活动准备: 1.材料准备:PPT、上海地图的局部图、东安公园导游图、彩笔每组一盒。 2.经验准备:幼儿有去公园游玩的经历,熟悉周边环境、设施。 活动过程: 一、寻找游玩地点——东安公园 通过在周边地图上找找东安公园在哪里,引导幼儿回忆,并借助图示进行有效观察。 1.引出话题:东安公园在哪里?

某数据结构课程设计公园导游图

实验四:图(内容:某公园导游图) 一、问题描述: 公园导游系统:给出一张某公园的导游图,游客通过终端询问可知:从某一景到另一景点的最短路径。游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边) 。 、设计描述: 1. 输入导游图的算法(存储方法) .本程序特地设计函数void initgraph() 用于实现键盘输入图的结构; 2. 可访问导游图中任一景点的算法.为此设计了函数void vist(GraphMatrix graph) 用于实现访问任一景点的信息; 3. 最短路径从一景点到另一景点的算法。利用floyd 算法-实现每一对景点间的最短路径。 并利用void outgraph() 函数实现显示起始点和终点间的最短路径和其长度;三、程序清单: #include using namespace std; #include #define MAXVEX 100 #define MAX 999 typedef char VexType;

typedef float AdjType; typedef struct { int n; VexType vexs[MAXVEX]; AdjType arcs[MAXVEX][MAXVEX]; } GraphMatrix; GraphMatrix graph; int i, j, k; fOr (i = 0; i < pgraph->n; i++) fOr (j = 0; j < pgraph->n; j++) { if (pgraph->arcs[i][j] != MAX) ppath->nextvex[i][j] = j; else ppath->nextvex[i][j] = -1; ppath->a[i][j] = pgraph->arcs[i][j]; } for (k = 0; k < pgraph->n; k++) for (i = 0; i < pgraph->n; i++) for (j = 0; j < pgraph->n; j++) { if ( ppath->a[i][k] >= MAX || ppath->a[k][j] >= MAX ) continue; //定义图结构 /* 图的顶点个数 */ /* 顶点信息 */ /* 边信息 */ //定义一个图 graph typedef struct { AdjType a[MAXVEX][MAXVEX]; int nextvex[MAXVEX][MAXVEX]; } ShortPath; ShortPath path; //定义最短路径ShOrtPath 结构 /* 关系矩阵 A ,存放每对顶点间最短路径长度 */ /* nextvex[i][j] 存放 vi 到 vj 最短路径上 vi 的后继顶点的下标值 */ //定义路径 path vOid flOyd(GraphMatrix * pgraph, ShOrtPath * ppath) //flOyd 算法 -用于实现每一对景点间的最短路径

公园导游图课程设计

课程设计 题目公园导游图 教学院计算机学院 专业计算机网络技术 班级09网络技术(1) 姓名 指导老师冯珊、熊敬一 2010 年12 月30 日

课程设计任务书 2009~2010学年第 1学期 学生姓名:何雪梅专业班级: 09网络技术 指导教师:冯姗、熊敬一工作部门:计算机学院 一、课程设计题目:公园导游图 二、课程设计内容 给出一张某公园的导游图,游客通过终端询问可知:从某一景点到另一景点的最短路径。游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。 三、进度安排 1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2.完成最低要求:建立一个文件,包括5个景点情况,能完成遍历功能; 3.进一步要求:进一步扩充景点数目,画出景点图,有兴趣的同学可以自己扩充系统功能。 四、基本要求 1. 界面友好,函数功能要划分好 2. 总体设计应画一流程图 3. 程序要加必要的注释 4. 要提供程序测试方案 5. 程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值 的。 教研室主任签名: 年月日

目录 摘要 1 问题描述 (3) 1.1图、无向图 (3) 1.1.1图的存储结构 (3) 1.1.2 图的邻接矩阵表示法 (3) 1.2算最短路径 (4) 1.3无向图遍历 (4) 1.4广度优先搜索 (4) 2.系统分析 (5) 2.1系统流程图 (5) 3 系统设计 (5) 3.1主要数据结构 (6) 3.2主要函数说明 (6) 3.3主要算法说明 (6) 3.3.1数组表示法 (6) 3.3.2F LOYD算法 (6) 4 心得体会 (7) 附录一:源程序 (8) 附录三:参考文献 (14)

景区认知导游图设计与制作

龙源期刊网 https://www.360docs.net/doc/fa12207888.html, 景区认知导游图设计与制作 作者:卢德华 来源:《科教导刊·电子版》2017年第33期 摘要目前,仅将景区环境被动呈现给游客的导游图,对旅游者主动认知考虑欠缺。基于此,本文提出了用认知地图理念并结合地图设计的基本理论来设计导游图的思路,并以西安世园会景区导游图为例,制作了兼顾有效性和实用性认知导游图。结果表明,该导游图能准确、简洁地展现地图、环境和用户三者之间空间要素的对应关系,并反映环境中结构上或认知上的显著的模式信息,丰富旅客体验。 关键词地图设计认知地图旅游者 中图分类号:P285 文献标识码:A 0引言 导游图,是为了标示景区内部设施类型、数量、空间分布;告知旅游者当前所在位置,帮助旅游者快速寻路。一般而言,寻路的过程中旅游者经由空间认知后建立空间概念,根据其预定的各参考点的位置,来决定路径的选择,以到达其所要前往的目的地。先前研究设计的导游图较为设计成景区环境与导游图的对应关系,却忽视了景区环境与旅游者的空间行为的关系。景区环境认知与空间行为的交互影响分析是人地关系研究至关重要的环节。两者间关系具体表现为:环境认知深刻影响着旅游者空间行为,而空间行为也不断更新着人们的环境认知。 1地图设计的基本理论 地图是根据一定的数学法则,将地球(或其他星体)上的自然和人文现象,使用地图语言,地图是根据一定的数学通过制图综合,缩小反映在平面上,反映各种现象的空间分布、组合、联系、数量和质量特征及其在时间中的发展变化。旅游图作为特殊的地图,其图形系统的内涵不变,其中的各种符号、色彩既要按专题地图创作中的图形结构规律和视觉感受规律组合,又需要加进特殊的艺术处理。其设计过程必须以科学的态度对景区信息进行分析处理,以艺术的眼光进行版式规划。 传统地图强调常规地图强调定量、准确和可量算等特征,但认知科学研究表明,人们的推理决策行为大部分是在定性表达基础上完成的,包括导航、路线寻址中推理、空间方位的辨认等。地图制图过程与认知制图过程是执行方向相反、相互作用的两个过程。地图制图过程,是将制图者大脑中的认知地图,通过符号化形成人们日常使用的地图,而认知地图过程,是通过认知方法将地图表示的空间环境转换成人的大脑中的认知地图。因此对空间认知的深入研究,将有助于地图的设计与制作。 2西安世界园艺博览会导游图的设计与制作

公园导游图课设

课程设计报告 课程名称数据结构 课题名称公园导游图 专业计算机科学与技术 班级计算机0702 学号200703010235 姓名蔡鄂湘 指导教师陈淑红李杰君李珍辉 2009年10月26日

湖南工程学院 课程设计任务书 课程名称数据结构 课题公园导游图 专业班级计算机0702 学生姓名蔡鄂湘 学号200703010235 指导老师陈淑红李杰君李珍辉 审批 任务书下达日期2009 年10 月8 日任务完成日期2009 年11 月8 日

1设计内容与设计要求 1.1设计内容 1.1.9 公园导游图 给出一张某公园的导游图,游客通过终端询问可知:从某一景点到另一景 点的最短路径。游客从公园大门进入,选一条最佳路线,使游客可以不重复地 游览各景点,最后回到出口(出口就在入口旁边)。要求用图示展示最佳路径。1.2 选题方案: 所选题目根据学号确定,学号模9加1,即(学号%9+1)。如你的学号为12,则所选题目号为:12%9+1=(题目4)。注意,所有的课题都要求用图形 方式演示步骤和结果。有兴趣的同学可以自己针对数据结构课程中所讲算法来 设计一个演示过程的算法,但要预先告知老师,经过审批,方可确定课题。 1.3设计要求: 1.3.1 课程设计报告规范 (1)需求分析 a.程序的功能。 b.输入输出的要求。 (2)概要设计 a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个 模块的功能。 b.课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么 样的结构,它们之间有什么关系等。 (3)详细设计 a.采用C语言定义相关的数据类型。 b.写出各模块的类C码算法。 c.画出各函数的调用关系图、主要函数的流程图。 (4)调试分析以及设计体会 a.测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果 和含有错误的输入及输出结果。 b.程序调试中遇到的问题以及解决问题的方法。

公园的导游图

用C++语言设计一个公园的导游图 摘要现实生活中,常常会遇到求最短路径的问题。本课程设计旨在提供一种解决这类问题的实例,把某一公园的景点与路线抽象成顶点和边,从而构成图,进而解决一系列相关的最短路径,最佳路线等问题。在课程设计中,系统开发平台为Windows XP,程序设计设计语言采用C++,程序运行平台为Windows 98/2000/XP。对于求解最短路径,使用了著名的Dijkstra算法。对于求最佳路径,采用了常用于解决TSP问题的贪心法。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,这一导游图系统将同样适用于其他公园。 关键词程序设计;数据结构;图;最短路径;Dijkstra算法;TSP问题

1 引言 现实生活中,常常会遇到求最短路径的问题,本课程设计将把这类问题实例化,把一个公园的景点顶点化、路径边化,建成一个图,再通过比较对图中各边及顶点的关系,实现对公园各个景点进行访问,并能根据要求,求出任意两个顶点的最短路径,还能给出一条依次不重复访问各点的最短路径。 【这部分应写明前人相关的研究成果、理论与实践依据,内容可包括研究的目的、意义、主要方法、范围和背景等。】 随着计算机科学的迅速发展,计算机已深入到揉社会的各个领域,它的应用已不再局限于科学计算,以解决一些数学问题,而且可以解决一些抽象化的具体问题,更多地用于控制,管理及数据处理等非数值计算的处理工作,这便为我们的日常生活提供了很多的方便,譬如说火车售票系统,学生成绩管理,车厢调度等实际问题。如今程序设计的语言很多,有发展比较完善高级语言,也有最基本的低级语言,然而再好的程序设计也要有一个比较清晰的思路——算法。为了编写好一个好程序,必须分析待处理对象的特性以及各处理对象之间的关系,于是数据结构便成为我们绝佳的选择。数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且已成为其他理工专业的热门选修课。

数据结构课程设计报告(校园导游图 )

数据结构 课程设计报告 设计题目:校园导游图 专业计算机(信息处理) 学号07201117 姓名王强荣 2009 年7 月8 日一、设计题目:校园导游咨询。

设计一个校园导游程序,为来访的客人提供各种信息查询服务。 二、设计要求(内容) (1)设计你所在的学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点的名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2)为来访客人提供图中任意景点相关信息的查询。 (3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的最短的简单路径。 三、设计思路: 1.首先用邻接矩阵存储校园图。 2.用数据结构知识创建校园图。 3.手动给校园图赋上相关信息(景点名称、代号、简介),路径及路径长度。得到一个模拟的校园图:

4.利用C语言知识编写查找景点相关信息的程序。 5.利用迪杰斯特拉算法计算任意两点之间的最短路径。 6.最后用一个主函数main输出各项结果。 四、程序简单说明: 1.创建校园图: (1)先定义节点个数N,边的最大值(MAXedg),节点(景点名称、景点信息),邻接点,边,顶点向量,当前顶点数和边数。 (2)先给一个节点赋上其相关信息,然后再用p = (Node)malloc(sizeof(edgenode))语句申请下一结点,再给所申请的节点赋上相关信息,直到节点数为N=10为止。 (3)读入道路的起始点,为邻接矩阵的边赋相应的值。 (4)节点和边的相关信息都弄好了后,校园图也就创建好了。 2.利用函数Name给10个节点赋上相应的名称,利用函数Information给各节点添加相应的介绍信息。 3.利用函数travgraph来查找景点信息,要查找景点名称时调用Name函数,要查找景点介绍信息时调用Information函数。 4.手动创建一个校园图creat(Matrix_Graph *G),然后为相应的边赋上真正的值。 5.用path函数来求任意两景点之间的最短路径。 6.用main函数来输出结果:用switch语句分别输出,要创建校园图时调用creatgraph函数;查找景点相关信息时调用travgraph函数;要查找任意两景点之间的最短路径时,先输入你目前所在的位置,再

某公园导游图

电子信息工程学系实验报告 课程名称:数据结构Array实验项目名称:某公园导游图实验时间: 班级:姓名:学号: 实验目的: 1.掌握图的基本存储方法。 2.掌握有关图的操作算法并用高级语言编程实现; 3.熟练掌握求图的最短路径的方法。 4.巩固和加深对各种数据结构的理解。 5.掌握恰当选用数据结构并设计与实际问题相符的算法的能力。 实验环境: 一人一台微机,安装windows系统及vc++6.0或TC开发环境。 实验内容及过程: 给出一张某公园的导游图(景点不少于10个),游客通过终端询问可知: 1.任一景点的相关信息 2.从某一景点到另一景点的最短路径 实验结果及分析: 程序: #include #define MaxValue 100 /*定义最大值即无穷大用100来代替*/ void ADJMATRIX( int A[][7],int n,int e) /*采用邻接矩阵的方法来存储图*/ {int i,j,k,weight; for(i=0;i

} void SHORTEST_PA TH(int cost[][7],int v,int n, int dist[],int path[7]) { int i,w,u,cout,s[7],j; int min=100; /*在后面找最短路径顶点要用到该值*/ for(i=0;i0) {min=dist[j];u=j;} s[u]=1; cout++; path[cout-1]=u+1; for(j=0;j",path[j]); } void main () {int cost[7][7], dist[7], path[7][7],a,b,c; ADJMA TRIX(cost,7,9) ; /*调用函数ADJMATRIX( int A[][7],int n,int e)生成图的邻接矩阵结构*/ for(a=0;a<7;a++){ /*该for语句作用是输出所创建的图——以邻接矩阵输出*/ for(b=0;b<7;b++) printf("%-4d",cost[a][b]); printf("\n"); } printf("\n\nPlease input the source v:"); scanf("%d",&c); /* 控制输入点即源点*/ SHORTEST_PA TH(cost,c,7, dist,path); /* 调用函数SHORTEST_PA TH(int cost[][7],int v,int n, int dist[],int path[7])得到最短路径*/ getch(); } 分析: 为了便于分析本次试验我采用课本的数据

景区导览图解说词

----全景导游图(含以下内容) ----景区平面图 ----景区文字梗概(中英文) ***省级森林公园概况 ***森林公园属1992年林业部批准列建的省级森林公园,位处宜宾县南部,距宜宾市51公里。海拔860—1115米,冬暖夏凉,年平均气温12.7—14度,最热月均温23.1—25.8度。最冷月均温1.2—2.5度。现有植物87科,327种,是川南地区最具开发潜力的避暑、度假、访古揽胜的旅游胜地。 ***森林公园方圆约4平方公里,面积5400余亩。整个山势由西南向东北倾斜,相对高差200米左右,平均坡度15度—30度。 ***“状如覆斗、环列如城”,四周悬崖百丈。三股水飞泉瀑布,狮子头猴戏其间,二龙抢宝盘龙阻路。巍巍万松楼、幽幽观音阁、云雾山中水帘洞、湖光山色叠翠湖。为游客提供了一个巨大的春赏花、冬观雪、秋夏避暑的森林乐园。 自2002年宜宾和兴公司接手开发***省级森林公园以来,累计投入资金3000多万元。***森林公园现具有高、中、低档客房100余间,会议室、娱乐设施齐全。是集会议、餐饮、

住宿、娱乐、游玩于一体的理想选择。 竭诚欢迎各界朋友前来***观光、旅游、探险、度假。----***省级森林公园游客须知 一进入***景区后,请注意自身安全,树立旅游安全意识,遵守景区安全规定。注意景区内指示和警示标志,未成年和无民事行为能力或独立行动有困难的游客需有人监护或陪同。否则因以上事项发生意外,责任不由景区承担。 二、请保护景区生态环境,爱护景区内的动植物,以免破坏生态平衡,并且不在景区内进行下列活动: (1)携带易燃易爆、剧毒、腐蚀性和放射性等危险物品进入风景区。 (2)擅自在景观景物及公共设施上涂、写、刻、画。 (3)在河流、瀑布和急浪等处抛撒脏物和石砾。 (4)严禁一切违章野外用火和带火种进入景区。 (5)其他一切损害景区资源及设施、污染、破坏环境的活动。 三、爱护公共财物是进入***景区每位游客都应该具备的良好品德,若有公物损坏,则须照价赔偿,有意破坏旅游设施将严肃查处。 四、区内所有车辆请限速行驶,按照规定路线驾车和规定地点停放,服从景区人员的调度指挥。 五、请随身携带一个小塑料袋,把垃圾等废弃物丢到景

公园导游图数据结构课程设计

课程名称:数据结构本科学生课程设计(论文) 题目公园导游图

摘要 随着中国经济不断的发展,城市发展的越来越好,越来越多的人融入了城市生活。公园成为人们散心,娱乐的场所,公园也随即也在不断的扩张,变得越来越全面,但是这不利于逛公园的人寻找自己想要去的地方,尤其是对公园陌生的游客,更是不知道如何走,才能更好的游玩公园,达到的最好经济效益。所以针对这种现象,为了方便游客,开发这么一款公园导游系统软件。 系统是用C语言实现,基于visual c++6.0 开发的,采用图这么一种数据结构,采用邻接矩阵的存储方式,用一个二维数组来记录所有的边,为了实现地图的随时更新,采用了静态链表实现对图的接点的添加,删除。 本系统设计基于图的结构,创建一个无向图,针对游客的需求,将涉外公园的景点编号、名称、介绍等信息放入到图的顶点当中并保存景点文本文件中,将两个景点的编号和它们之间的距离当权值也保存在相同的文本文件中,利用迪杰特斯拉算法来求从一个景点到另一个景点的最短距离,利用Serach();查找景点,本显示他的信息,从而解决了要查找景点信息和两个景点之间的最短路径的问题,最后按照显示屏上的提示进行相关的操作。 关键词:公园导游;图;邻接矩阵;二维数组;静态链

目录 第一章前言 (1) 1.1课题的研究背景、要求和意义 (1) 1.2课题的目标、研究范围 (1) 1.3理论技术方案的选取 (2) 1.4研究方法 (2) 1.5结构与安排 (2) 第二章系统功能分析 (4) 2.1可行性分析 (4) 2.1.1技术可行性 (4) 2.1.2 工具可行性 (4) 2.1.3 经济可行性 (4) 2.1.4 操作可行性 (5) 2.2需求分析 (5) 2.2.1 功能需求 (5) 2.2.2 输入输出的要求 (5) 第三章总体设计 (6) 3.1程序模块 (6) 3.2系统涉及的数据结构 (6) 3.2.1 程序数据结构 (7) 3.2.2 具体数据类型定义 (7) 第四章详细设计 (9) 4.1创建图(F PRINT-L INK) (9) 4.2寻找最佳路径(DFST RAVERSE) (9) 4.3最短路径(S HORT P ATH) (10) 4.4遍历出某一起点到终点的所有路径(S EARCH A LL P ATH) (12) 4.5导入新文件(L OADNEWMAP) (13) 第五章系统实现 (14) 5.1程序执行之前的准备 (14) 5.2主界面 (14) 5.3游客界面 (15) 5.4系统用户界面 (15)

幼儿园大班学习活动:公园导游图

幼儿园大班学习活动:公园导游图 设计思路: 在最近开展的“我的城市”主题活动中,幼儿关注的焦点从中国到上海,从黄浦江、东方明珠、高架路到星罗棋布的公园、绿地。他们对自己幼儿园的位置、家的所在地及周边熟悉的设施、路名都很热衷于去看一看、找一找。我园遵循生活教育的理念,提倡让幼儿从自己身边开始,与周边环境互动。我们居住的社区和幼儿园附近有一个小公园——东安公园,班里一半以上的幼儿都去过。所以,我选择了东安公园的导游图作为活动的载体:一是因为幼儿对公园比较熟悉,二是因为公园大小合适幼儿后期的真实体验。 整个教学活动主要分为三个流程:寻找游玩地点(东安公园)——观察公园导游图——根据要求,设计游玩路线。在寻找幼儿园位置的过程中充分调动幼儿已有的生活经验:观察导游图引发幼儿对各种图示、标志的经验,交流、关注身边的事物;自主设计游玩路线,这对刚升人大班的幼儿是一种挑战,因为其中整合了空间方位、时间安排、生活习惯等要素,在师生、生生的互动中使幼儿在计划一件事情的时候能有更周全、更合理的思维方式。幼儿间的差异也是一种学习资源,幼儿尝试用符号表示路线的不同方法、有条理地介绍自己的想法,都是教师要捕捉的有价值的经验点。活动的延伸部分,我还在个体学习活动中让幼儿设计从不同的门进入、出来,引导幼儿经验的迁移。让他们能在以后的实际生活中学会运用,

为生活带来方便。 活动目标: 1.看看、说说东安公园导游图,了解图示、标志在我们生活中的作用和意义。 2.尝试设计游玩路线,用符号、语言清楚地记录、表达自己的想法。活动准备: 1.材料准备:PPT、上海地图的局部图、东安公园导游图、彩笔每组一盒。 2.经验准备:幼儿有去公园游玩的经历,熟悉周边环境、设施。 活动过程: 一、寻找游玩地点——东安公园 通过在周边地图上找找东安公园在哪里,引导幼儿回忆,并借助图示进行有效观察。 1.引出话题:东安公园在哪里? (1)你们去过很多公园,你们去过东安公园吗?和谁一起去的? (2)过几天小班的弟弟妹妹要去东安公园,想请你们做小导游,你们愿意吗? (3)东安公园在哪里?有什么办法可以知道(看地图、打电话咨询、问路人)? 2.观察地图:找找去东安公园的路线。 (1)从我们幼儿园出发,先在地图上看看幼儿园在哪里(徐汇区大木桥路)?

公园导游图课程设计

课程设计 题目公园导游图 专业网络工程 班级1班 姓名尹颖 指导老师孙菁 2014 年12 月28 日

课程设计(论文) 课程设计任务书 2014~2015学年第 1学期 学生姓名:尹颖吴东旭许益强葛溆李永康朱世豪 专业班级: 12网络工程 指导教师:孙菁 一、课程设计题目:公园导游图 二、课程设计内容 给出一张某公园的导游图,游客通过终端询问可知:从某一景点到另一景点的最短路径。游客 从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就 在入口旁边)。 三、进度安排 1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2.完成最低要求:建立一个文件,包括5个景点情况,能完成遍历功能; 3.进一步要求:进一步扩充景点数目,画出景点图,有兴趣的同学可以自己扩充系统功能。 四、基本要求 1. 界面友好,函数功能要划分好 2. 总体设计应画一流程图 3. 程序要加必要的注释 4. 要提供程序测试方案 5. 程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值 的。 目录 摘要 1 问题描述 (3) 1.1图、无向图 (3) 1.1.1图的存储结构 (3) 1.1.2 图的邻接矩阵表示法 (3) 1.2算最短路径 (4) 1.3无向图遍历 (4)

1.4广度优先搜索 (4) 2.系统分析 (5) 2.1系统流程图 (5) 3 系统设计 (5) 3.1主要数据结构 (6) 3.2主要函数说明 (6) 3.3主要算法说明 (6) 3.3.1数组表示法 (6) 3.3.2F LOYD算法 (6) 4 心得体会 (7) 附录一:源程序 (8) 附录三:参考文献························································错误!未定义书签。 摘要 计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问 题中抽象出一个适当的数学模型,然后设计一个解此数学模型的算法(Algorithm),最后编出程序、进行测试、调整直至得到最终解答。寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语 言加以描述。计算机算法与数据的结构密切相关,算法无不依附于具体的数据结构,数据结构直接关系到算法的选择和效率。运算是由计算机来完成,这就要设计相应 的插入、删除和修改的算法。也就是说,数据结构还需要给出每种结构类型所定 义的各种运算的算法。 1.问题描述

数据结构课程设计(校园导游系统)

一.设计目的 设计一个学校的导游系统,方便游客游览我们学校。 二. 设计内容 为来访的客人提供各种信息查询服务。 主要包括: ①查看学校的全景图 ②各个景点的简介 ③学校主要景点的分布 ④查看某一景点到其它所有景点的最短路径 ⑤查询任意两个景点之间的最短路径。 三.概要设计 1.功能模块图;

2.功能模块详细介绍; (1)main: 主函数 (2) browser: (3) IniGraph:初始化学校地图,给出景点的详细信息,以及景点之间的距离。 (4) Shortestpath_dij:迪杰斯特拉算法,用于求两个景点之间的最短路径。 (5) serch:供游客查询单个景点的详细信息 (6) prim:普利姆算法,用于得出最佳布网方案。 (7) map:无参函数,打印学校的全景图。 (8) menu:游客的输入界面。 (9) print:打印相应的游览路线。 (10) cmd:输入相应的选择进行不同的游览方式。 四.详细设计 1

2.各功能函数的数据流程图 3.重点设计及编码 创建结构体,表示景点,成员为编号,名称,简介 typedef struct //图中顶点表示主要景点,存放景点的编号、名称、简介等信息, { char name[30]; int num; char introduction[100];//简介 }infotype; Prim 算法: void prim(MGraph *G)

{ FILE *fp; fp=fopen("D:sight.txt","at+"); if(fp==NULL) printf("fail to open!!\n"); else { int v,u,i,w,k,j,flag=1,p[10][10][10],D[10][10]; for(v=0;vvexnum;v++) for(w=0;wvexnum;w++) { D[v][w]=G->arcs[v][w].adj; for(u=0;uvexnum;u++) p[v][w][u]=0; if(D[v][w]vexnum;u++) for(v=0;vvexnum;v++) for(w=0;wvexnum;w++) if(D[v][u]+D[u][w]vexnum;i++) p[v][w][i]=p[v][u][i]||p[u][w][i]; } while(flag) { printf("请输入出发点和目的地的编号:"); scanf("%d%d",&k,&j); if(k<0||k>G->vexnum||j<0||j>G->vexnum) { printf("景点编号不存在!请重新输入出发点和目的地的编号:"); scanf("%d%d",&k,&j); } if(k>=0&&kvexnum&&j>=0&&jvexnum) flag=0; } fprintf(fp,"%s",G->vexs[k].name); for(u=0;uvexnum;u++) if(p[k][j][u]&&k!=u&&j!=u) fprintf(fp,"-->%s",G->vexs[u].name); fprintf(fp,"-->%s",G->vexs[j].name); fprintf(fp," 总路线长%dm\n",D[k][j]); } fclose(fp); }

相关文档
最新文档