旅游路线导图
1. 假期旅游路线指导
广州。
厦门。
杭州。
南宁。
2. 有没有一款旅游导航地图,就是包含旅游景点内部线路的导航地图
楼主你好;导航地图很多,但是我还是建议你用腾讯路宝,你可以使用腾讯地图用以内公交站位、容路线、自驾路线、测距等,更可使用卫星地图和由专业设备采集的腾讯街景地图用以查找更精确的位置和目标,观看街景地图服务覆盖城市的高清全景图像。
3. 各种景区导游图是什么软件制作出来的
楼主你好。首先要特别容易的话cdr可以做。全名叫CorelDRAW,如果要复杂一点而且有特色的话可以使用专业一点的photoshop。简单易用的话只有cdr。这些都是比较专业的。
4. 外出旅游最常用的地图有()A.导游图B.地形图C.政治地图D.交通
为了更好的方便外出旅游,应选用的地图是导游图和交通图.
故选:A、D.
5. 设计故宫一日游路线图和导游泀
蓝色表示的是旅游景点,一共6个;
绿色表示的是返回的路线;
红色和紫色是进去的路线。
此建议只是个人建议。
6. 4 旅游区导游图 (7人)
#include"stdio.h"
#include"malloc.h"
#include"string.h"
#include<iostream.h>
#define INFINITY 32767 /* 最大值∞ */
/* 根据图的权值类型,分别定义为最大整数或实数 */
#define MAX_VEX 30 /* 最大顶点数目 */
typedef enum {FALSE , TRUE} BOOLEAN ;
typedef struct MGraph{
char vexs[MAX_VEX];
int arcs[MAX_VEX][MAX_VEX];
int vexnum,arcnum;
}MGraph;
/*图的邻接链表表示结构有关定义*/
typedef struct Linknode{
char adjvex; /*邻接点在头结点数组中的位置(下标)*/
int info; /*与边或弧相关的信息, 如权值*/
struct Linknode *nextarc; /*指向下一个表结点*/
}LinkNode; /* 表结点类型定义 */
typedef struct VexNode{
char data; /*顶点信息*/
LinkNode *firstarc; /*指向第一个表结点*/
}VexNode; /* 顶点结点类型定义 */
typedef struct {
int vex1, vex2; /* 弧或边所依附的两个顶点 */
int info; /*与边或弧相关的信息, 如权值*/
}ArcType; /* 弧或边的结构定义 */
typedef struct{
int vexnum;
VexNode AdjList[MAX_VEX];
}ALGraph; /* 图的结构定义 */
////////////////////////////////////////////////////////////////////////////////////////////
/* 图的邻接链表表示 */
void Init_Graph(ALGraph * G){
/*图的初始化*/
printf("旅游区导游图的类型:带权无向图");
G->vexnum=0; /* 初始化顶点个数 */
}
int LocateVex(ALGraph *G, char vp) {
/*图的顶点定位*/
int k;
for(k=0; k<G->vexnum;k++)
if(G->AdjList[k].data==vp)
return(k);
return(-1); /* 图中无此顶点 */
}
int AddVertex(ALGraph *G, char vp)
{
if (G->vexnum>=MAX_VEX)
{
printf("图中顶点数已达到最多!\n");
return(-1);
}
if(LocateVex(G,vp)!=-1)
{
printf("所要添加的顶点已存在!\n");
return(-1);
}
G->AdjList[G->vexnum].data=vp;
G->AdjList[G->vexnum].firstarc=NULL;
++G->vexnum;
return 1;
}
int AddArc(ALGraph *G, ArcType *arc){
/*向图中增加一条边(弧)*/
int k,j;
LinkNode *p,*q;
k=LocateVex(G,arc->vex1);
j=LocateVex(G,arc->vex2);
if (k==-1||j==-1)
{
printf("该两个景点之间一点 或 两点都不存在,错误 !\n"); //////
return(-1);
}
p=(LinkNode *)malloc(sizeof(LinkNode));
p->adjvex=arc->vex1;
p->info=arc->info;
p->nextarc=NULL; /* 边的起始表结点赋值 */
q=(LinkNode *)malloc(sizeof(LinkNode));
q->adjvex=arc->vex2;
q->info=arc->info;
q->nextarc=NULL; /* 边的末尾表结点赋值 */
q->nextarc=G->AdjList[k].firstarc;
G->AdjList[k].firstarc=q;
p->nextarc=G->AdjList[j].firstarc;
G->AdjList[j].firstarc=p ;
return(1);
}
ALGraph *Create_ALGraph(){
/*采用邻接链表作为图的存储结构建立带权有向图*/
char stack1[6],stack2[6],vex,k1,k2;
int weight;
ALGraph *G;
ArcType *p;
printf("首先对旅游区导游图进行初始化!!!\n\n");
G=(ALGraph *)malloc(sizeof(ALGraph));
Init_Graph(G);
printf("\n请输入旅游区导游图的各个旅游景点代码(只允许是字符,不为字符串),0作为结束标志\n");
while(1)
{
scanf("%s",stack1);
vex=stack1[0];
if(vex=='0')
break;
else
AddVertex(G,vex);
}
p=(ArcType *)malloc(sizeof(ArcType));
printf("\n 以(Vi ,Vj ,d)的形式从键盘输入建立该旅游区的旅游景点图,\n 其中: Vi和Vj表示两个不同的旅游景点, d表示这两个景点之间的道路距离;\n 该旅游景点图采用邻接链表存储结构(第一个顶点是0时表示结束):\n");
while(1)
{
scanf("%s",stack1);
k1=stack1[0];
if (k1=='0') /* 输入第一个顶点,0结束 */
break;
else
{
scanf("%s",stack2) ;
scanf("%d",&weight) ; /* 输入第二个顶点和权值 */
k2=stack2[0];
p->vex1=k1;
p->vex2=k2;
p->info=weight;
AddArc(G,p) ;
printf("\n请继续输入下一条道路!!\n") ;
}
}
return(G);
}
void output_ALGraph(ALGraph *G){
/* 输出图的邻接链表 */
int j;
LinkNode *p;
printf("\n旅游区导游图的邻接链表表示如下:\n");
for (j=0;j<G->vexnum;j++)
{
printf("%c",G->AdjList[j].data);
p=G->AdjList[j].firstarc;
while(p!=NULL)
{
printf("->");
printf("<%c,%d>",p->adjvex,p->info);
p=p->nextarc;
}
printf("\n\n");
}
}
void output_Find_ALGraph(ALGraph *G){
/* 相邻景点查询并输出 */
int j;
LinkNode *p;
printf("请输入你要查询的景点(下标值):\n");
scanf("%d",&j);
p=G->AdjList[j].firstarc;
while(p)
{
printf("景点%c到景点%c的距离是%d (该两个景点之间有直接的道路相通)\n",G->AdjList[j].data,p->adjvex,p->info);
p=p->nextarc;
}
printf("\n\n");
}
void ListToMat(ALGraph G, MGraph &g){
/*将邻接链表转换成邻接矩阵*/
int k,i,j,n=G.vexnum;
LinkNode *p;
for (i=0;i<n;i++) /*g.arcs[i][j]赋初值0*/
for (j=0;j<n;j++)
g.arcs[i][j]=INFINITY;
for(i=0;i<G.vexnum;i++)
{
g.vexs[i]=G.AdjList[i].data;
}
for (i=0;i<n;i++)
{
p=G. AdjList[i].firstarc;
while (p!=NULL)
{
k=LocateVex(&G,p->adjvex);
g.arcs[i][k]=p->info;
p=p->nextarc;
}
}
g.vexnum=G.vexnum;
}
void display(ALGraph *G,MGraph g){
//输出邻接矩阵
int i,j;
ListToMat(*G, g);
for(i=0;i<G->vexnum;i++)
printf("%6c",G->AdjList[i].data );
printf("\n");
for(i=0;i<g.vexnum;i++)
{
for(j=0 ;j<g.vexnum ;j++)
{
printf("%6d", g.arcs[i][j]);
}
printf("\n");
}
}
void dijkshort_One(ALGraph F, MGraph G,int v0,int distance[], int pre[]){
// 带权图G从顶点v0到其他定点的最短距离distance和最短路径前驱结点的下标pre
int w;
int S[30],i,j,k,p,min;
ListToMat(F, G);
printf("你所要开始查询的景点是:%c\n",F.AdjList[v0].data);
for(i=0;i<G.vexnum;i++)
{
distance[i]=G.arcs[v0][i];
S[i]=0;
if(distance[i]<32767)
pre[i]=v0;
else
pre[i]=-1;
}
S[v0]=1; //顶点v0已加入到集合S中
for(i=0;i<G.vexnum;i++)
{
min=32767;
for(j=0;j<G.vexnum;j++)
{
if(!S[j]&&distance[j]<min)
{
min=distance[j];
k=j;
}
}
S[k]=1; ///将找到的顶点加入到集合S中
for(w=0;w<G.vexnum;w++) // /修改集合T中顶点的距离值
if(!S[w]&&distance[w]>distance[k]+G.arcs[k][w])
{
distance[w]=distance[k]+G.arcs[k][w];
pre[w]=k;
}
}
printf("查询结果:\n");
for(j=0;j<G.vexnum;j++) //输出结果
if(pre[j]!=-1)
{
printf("从景点%c到景点%c",F.AdjList[v0].data,G.vexs[j]);
p=pre[j];
printf("的最短距离是: %d",distance[j]);
printf(" 途中经过的景点有:");
while(p!=-1)
{
printf(" %c",G.vexs[p]);
p=pre[p];
}
printf("\n");
}
else if(j!=v0)
printf("\n%c到%c : no path",G.vexs[j],G.vexs[v0]);
}
void dijkshort_Two(ALGraph F, MGraph G,int v0,int distance[], int pre[]){
// 带权图G从顶点v0到其他定点的最短距离distance和最短路径前驱结点的下标pre
int w;
int S[30],i,j,k,p,min,d;
ListToMat(F, G);
printf("你所要开始查询的开始景点是:%c\n\n",F.AdjList[v0].data);
for(i=0;i<G.vexnum;i++)
{
distance[i]=G.arcs[v0][i];
S[i]=0;
if(distance[i]<32767)
pre[i]=v0;
else
pre[i]=-1;
}
S[v0]=1; //顶点v0已加入到集合S中
for(i=0;i<G.vexnum;i++)
{
min=32767;
for(j=0;j<G.vexnum;j++)
{
if(!S[j]&&distance[j]<min)
{
min=distance[j];
k=j;
}
}
S[k]=1; ///将找到的顶点加入到集合S中
for(w=0;w<G.vexnum;w++) // /修改集合T中顶点的距离值
if(!S[w]&&distance[w]>distance[k]+G.arcs[k][w])
{
distance[w]=distance[k]+G.arcs[k][w];
pre[w]=k;
}
}
printf("输入你要查询的另外一个景点(下标值):");
scanf("%d",&d);
printf("你要查询的另外一个景点是:%c\n",G.vexs[d]);
printf("\n查询结果:\n"); //输出结果
if(pre[d]!=-1)
{
printf("从景点%c到景点%c",F.AdjList[v0].data,G.vexs[d]);
p=pre[d];
printf("的最短距离是: %d",distance[d]);
printf(" 途中经过的景点有:");
while(p!=-1)
{
printf(" %c",G.vexs[p]);
p=pre[p];
}
printf("\n");
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* ------------菜单------------*/
void main()
{
int n,v0;
MGraph g;
int distance[MAX_VEX],pre[2*MAX_VEX];
ALGraph *G;
printf("┏┉┉┉┉┉┉┉┉┉┉┉┉┓\n");
printf("┋ 欢迎使用旅游区导游系统 ┋\n");
printf("┗┉┉┉┉┉┉┉┉┉┉┉┉┛\n");
do
{
printf("\n请选择对旅游区导游图的操作:\n\n");
printf(" ┏━━━━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ 1.建立旅游区导游图的邻接链表 ┃\n");
printf(" ┃ 2.旅游区导游图的邻接链表的输出 ┃\n");
printf(" ┃ 3.旅游区导游图的邻接矩阵的输出 ┃\n");
printf(" ┃ 4.相邻景点查询 ┃\n");
printf(" ┃ 5.景点路线查询 ┃\n");
printf(" ┃ 6.景点路线综合查询 ┃\n");
printf(" ┃ 7.退出操作 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━━━━┛\n");
do
{
scanf("%d",&n);
}
while (n<1||n>8);
switch(n)
{
case 1:
{
G=(ALGraph *)malloc(sizeof(ALGraph));
G=Create_ALGraph();
printf("\n\n");
break;
}
case 2:
{
printf("\n旅游导游图的邻接链表表示如下所示:\n");
output_ALGraph(G);
printf("\n\n");
break;
}
case 3:
{
printf("\n旅游区导游图的邻接矩阵表示如下所示:\n");
display(G,g);
printf("\n\n");
break;
}
case 4:
{
output_Find_ALGraph(G);
printf("\n\n");
break;
}
case 5:
{
printf("输入你要查询的景点(下标值):");
scanf(" %d",&v0);
dijkshort_One(*G,g,v0,distance,pre);
break;
}
case 6:
{
printf("输入你要查询的开始景点(下标值):");
scanf(" %d",&v0);
dijkshort_Two(*G,g,v0,distance,pre);
break;
}
}
}
while(n!=7);
}
7. 如果旅游需要选择导游图
因为要进行的是全国旅行,选择中国地图是最好的.
故选:A.
8. 求旅游专家解释“游程线路图”、“导游全景图”和“导览图”的区别要专业术语解释,万分感谢!!!
游程线路图是指用图表的方式用来表达游程的进程状态。在这里,游程之所以使用线路来表示,那是因为,线路图中蕴含的最终点也就是事务完成的目标点。
导游全景图通过广角的表现手段以及绘画、相片、视频、三维模型等形式,尽可能多表现出景点周围的环境。
导览图就是全景图的矢量表现方式。
9. 外出旅游,最常用的地图有 ①导游图②地形图③政治地图④交通图
导游图
10. 导游图和旅游图一样吗
导游图好像是对景区景点的一种平面大概描述
旅游图是对景区特点的描述