校园导游咨询系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.需求分析
1、1创建结点(旅游景点)
创建该旅游景点就是在顺序表中完成得,在顺序表中,首先要创建结点结构体,将该结构体命名为SeqList,成员变量有数组list与size,分别用来表示最大元素个数(即旅游景点得最大个数)与顺序表中当前存储得数据元素个数,顺序表可以完成得功能有求当前数据元素个数,插入数据元素,删除数据元素,取数据元素.
1、2创建图
在构造图得操作中包括结点得插入(实参包括AdjMGraph*G,DataTyp v [],n,RowColWeightE[],e)分别表示在该*G得结构体中得SeqlistVertices[]中插入结点,在*G得结构体中得edge[MaxVertices][MaxVertices]得边数组中插入边信息结点分别为行下标、列下标、权值,该*G得结构体中numOfEdges,e表示边得条数,即将e得值给它。结点得顺序表初始化,在该函数中也应包括一个结构体边信息结构体:成员包括行下标、列下标、权值.并将该结构体命名为RowColWeight。
1、3图得实现
在该函数中要使用SeqList头文件,在该文件中要真正进行插入边与结点.首先在该函数中应该定义一个结构体AdjMGraph,在该结构体得成员变量包括存放结点得顺序表定义为SeqlistVertices[]、存放边得邻接矩阵用edge[MaxVertices][MaxVertices]表示,边得条数numOfEdges。初始化AdjMGraph中得成员变量线性表与边数及存放边得邻接矩阵。然后在顺序表中插入结点,在邻接矩阵中插入边,删除边,删除结点。取序号为V得结点得第一个邻接结点,取序号为V1得邻接结点V2结点得下一个邻接结点
1、4求最短路径
在该函数中,应该有四个参数,两个位输入参数,分别为带权图G与源点(景点起点)序号v0,两个为输出参数,分别为distance[]与path[],distance[]用来存放达到得从源点v0到其余各结点得最短距离,path[]用来存放最短路径得下标.
1、从江西农业大学得平面地图中选取出6个有代表性得景点。
2、为来访得客人提供图中任意景点得路径查询,即查询任意两个景点之间得最短简单路径。当用户输入正确时,为用户输出任意两景点得最短路径;当用户输入不合法时,提示用户输入有误并返回让用户重新输入。
3、为来访客人推荐参观最短路线.
2、概要设计
1.首先用邻接矩阵存储校园图.
2。用数据结构知识创建校园图。
3.手动给校园图赋上相关信息(景点名称、代号、简介),路径及路径长度。
4.利用C语言知识编写查找景点相关信息得程序。
5.利用迪杰斯特拉算法计算任意两点之间得最短路径。
6。最后用一个主函数main输出各项结果。
1.创建校园图:
(1)先定义节点个数N,边得最大值(Maxweight),节点(景点名称、景点信息),邻接点,边,顶点向量,当前顶点数与边数。
(2)先给一个节点赋上其相关信息,然后再用p = (Node)malloc(sizeof (edgenode))语句申请下一结点,再给所申请得节点赋上相关信息,直到节点数为N=6为止。
(3)读入道路得起始点,为邻接矩阵得边赋相应得值。时
(4)节点与边得相关信息都弄好了后,校园图也就创建好了.
2.利用函数Name给10个节点赋上相应得名称,利用函数Information给各节点添加相应得介绍信息。
3.利用函数travgraph来查找景点信息,要查找景点名称时调用Name函数,要查找景点介绍信息时调用Information函数.
4。手动创建一个校园图AdjMGraphgcreat(AdjMGgrph *G),然后为相应得边赋上真正得值。
5。用distance[]数组来存放任意两景点之间得最短路径.
6.用main函数来输出结果:用switch语句分别输出,要创建校园图时调用AdjMGraphgraphcreat函数;查找景点相关信息时调用search函数;要查找任意两景点之间得最短路径时,先输入您目前所在得位置,再输入您得目得地,最后调用path函数。
3.详细设计
#defineN 10
#define MAXSize 20//图中顶点数得最大值
#define MAXedg30 //图中边数得最大值
#include〈stdio、h〉
#include 〈string、h>
#include <stdlib、h>
#include
typedefint AdjMGraph[MAXSize][ MAXSize];//存放邻接矩阵得权值信息
typedefstruct
{
int vexs[ MAXSize];
AdjMGraph s;//
}Matrix_Graph;//图得邻接矩阵表示法。
typedefstruct numofedge//
{
ﻩint adjvex; //邻接矩阵结点序号
ﻩint length;//定义道路长度
ﻩchar info[10];//定义景点名称
ﻩchar info2[100];//定义景点详细信息
ﻩstruct numofedge*next;//定义指向下一个结点得指针
}numofedge,*Node;//将该结构体重新命名为*Node
typedef struct
{
ﻩcharname[10];//存储景点得名称数组
ﻩcharinformation[100]; //具体得介绍此景点信息数组
ﻩstruct numofedge*link; //指向下一个景点得指针
}vextices;//创建景点及其信息结构体
typedef struct Edge
{
ﻩint lengh;//边得权值,表示路径长度、
ﻩint ivex,jvex;//表示两个连接得结点得位置变量
ﻩstruct Edge*next;//指向下一条边得指针变量
}EdgeType;
//边及其信息、
typedef struct
{
int num; //结点编号。
ﻩchar name[10];//结点名称
} vertex;//存放结点信息结构体
typedef struct
{
ﻩvertex vexs[ MAXSize];//存放结点数组元素信息
ﻩintedges[MAXSize][ MAXSize]; //存放边得邻接矩阵
}adjmax,adj;//表示图得结构体
FILE *fp;//文件得读取
void clrscr()//清屏
{
system(”cls");
}
voidcreatgraph(vextices g[],int*n, EdgeType e[],adjmax*adj)//创建校园图vexticesg[]表示存放景点信息数组,n表示下一个景点,EdgeType e[]表示存放边得信息数组,adjmax *adj表示下一条边得信息数组
{
intb,i,s,d,len;//b代表结点之间得边数
ﻩstruct numofedge *p,*q;//定义图得结构体
if((fp = fopen("",”r"))== NULL)//打开文件,对文件进行读得操作
{
ﻩprintf(”文件打开错误!\n");
getchar();//获取景点信息
exit(0);
}
fscanf(fp,”%d%d\n",n,&b);//读入景点个数与边数