景区旅游信息管理系统Word下载.docx
《景区旅游信息管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《景区旅游信息管理系统Word下载.docx(32页珍藏版)》请在冰豆网上搜索。
![景区旅游信息管理系统Word下载.docx](https://file1.bdocx.com/fileroot1/2022-10/10/e5ca0809-c13d-484e-ae56-3420530d99f1/e5ca0809-c13d-484e-ae56-3420530d99f11.gif)
输出导游线路图;
判断导游线路图有无回路;
求两个景点间的最短路径和最短距离;
输出道路修建规划图。
主程序用菜单选项供用户选择功能模块。
1.2项目设计流程
1.2.1项目总体框架
1.2.2项目数据结构
#ifndefSUCCESS//标志位成功
#defineSUCCESS1
#endif
#ifndefFAILURE//标志位失败
#defineFAILURE0
#ifndefINF//标志位无穷
#defineINF0x3f3fffff
#ifndefMAXNUM
#defineMAXNUM20
typedefboolSTATUS;
//定义函数状态数据类型
typedefcharVERTEXTYPE[MAXNUM][11];
//定义顶点向量数据类型
typedefintADJMATRIX[MAXNUM][MAXNUM];
//定义邻接矩阵数据类型
typedefstructGRAPH//定义图数据类型
{
VERTEXTYPEVexs;
//图的顶点向量
ADJMATRIXArcs;
//图的邻接矩阵
intVexNum;
//图的当前顶点
intArcNum;
//图的当前弧
}*PGRAPH;
//定义图的指针数据类型
typedefstructCLOSEDGE//定义辅助数组数据类型
intLowcost[MAXNUM];
//
}*PCLOSEDGE;
//定义辅助数组指针数据类型
1.2.3项目模块设计
创建景区景点分布图
一.邻接矩阵(AdjacencyMatrix)(二维数组表示法)
在图的邻接矩阵表示中,有一个记录各个顶点信息的顶点表,还有一个表示各个顶点之间关系的邻接矩阵。
设图A=(V,E)是一个有n个顶点的图,图的邻接矩阵是一个二维数组A.edge[n][n],定义(满足如下条件的n阶矩阵):
无向图数组表示法特点:
1)无向图邻接矩阵是对称矩阵,同一条边表示了两次;
2)顶点v的度:
在无向图中等于二维数组对应行(或列)中1的个数;
在有向图中,统计第i行1的个数可得顶点i的出度,统计第j列1的个数可得顶点j的入度。
3)判断两顶点v、u是否为邻接点:
只需判二维数组对应分量是否为1;
4)顶点不变,在图中增加、删除边:
只需对二维数组对应分量赋值1或清0;
5)设存储顶点的一维数组大小为n(图的顶点数n),G占用存储空间:
n+n2;
G占用存储空间只与它的顶点数有关,与边数无关;
适用于边稠密的图;
流程图:
程序:
//创建景区景点分布图
STATUSCreateGraph(PGRAPHpGraph)
printf("
\t\t\t_________________________________\n"
);
\n\t\t\t$\t创建景区景点分布图\t$\n"
//初始化图的顶点数
\t\t\t初始化顶点数和弧度数......\n"
\t\t\t请输入图的顶点数(<
=20):
"
scanf("
%d"
&
pGraph->
VexNum);
//检查
if(pGraph->
VexNum>
20)
{
\t\t\t警告:
输入数据错误!
!
\n"
\t\t\t按任意键回主菜单!
getch();
returnFAILURE;
}
//初始化图的弧数
\t\t\t请输入图的弧度数(<
ArcNum);
ArcNum>
//初始化图的顶点名称
\t\t\t---------------------------------\n"
\t\t\t初始化的顶点名称......\n"
for(inti=0;
i<
VexNum;
i++)
\t\t\t请输入第%d个顶点名称:
i+1);
%s"
pGraph->
Vexs[i]);
//初始化图的弧权值为最大值
for(i=0;
for(intj=0;
j<
j++)
pGraph->
Arcs[i][j]=INF;
//输入弧的信息
\t\t\t初始化的弧的信息......\n"
\t\t\t请输入弧的信息(注:
从0开始):
ArcNum;
intStav,Endv,Weight;
\t\t\t请输入第%d条弧(格式:
ViVjWeight):
%d%d%d"
Stav,&
Endv,&
Weight);
Arcs[Endv][Stav]=Weight;
Arcs[Stav][Endv]=Weight;
\t\t\t创建景区景点分布图成功!
returnSUCCESS;
}
输出景区景点分布图
//输出景区景点分布图
STATUSPrintGraph(constPGRAPHpGraph)
\n\t\t\t$\t显示景区景点分布图\t$\n"
\t\t\t_________________________________\n\n"
//
\t景区景点名称......\n\t"
%s\t"
\n\n\t景区景点信息......\n"
\t___________________________________________________________\n\t"
Arcs[i][j]==INF)
∞\t"
else
%d\t"
Arcs[i][j]);
按任意键回主菜单!
}
输出景区导游线路图
图的遍历
从图中某一顶点出发访遍图中所有的顶点,且使每个顶点仅被访问一次,这一过程就叫做图的遍历(TraversingGraph)。
图中可能存在回路,且图的任一顶点都可能与其它顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点。
为了避免重复访问,可设置一个标志顶点是否被访问过的辅助数组visited[]。
辅助数组visited[]的初始状态为0,在图的遍历过程中,一旦某一个顶点i被访问,就立即让visited[i]为1,防止它被多次访问。
两种图的遍历方法:
深度优先搜索
DFS(DepthFirstSearch)
广度优先搜索
BFS(BreadthFirstSearch)
广度优先搜索遍历图(BFS)
对连通图,从起始点V到其余各顶点必定存在路径。
其中,V->
w1,V->
w2,V->
w8的路径长度为1;
V->
w7,V->
w3,V->
w5的路径长度为2;
w6,V->
w4的路径长