数据结构课设—校园导游咨询
一.需求分析
-
任务分析
设计一个校园的导游图,为来访的客人进行景点信息的查询服务。包括对所有景点基本信息的查询,从一个景点到其他任意景点的最短路径的查询,还可以对景点按照评分进行排序输出。 -
功能分析
1.用图的数据结构对校园导游图的构建。
2.用顺序查找对景点进行按照景点名进行信息查询。
3.用折半查找对景点按照景点编号进行信息查询。
4.用快速排序的方法对景点按照评分排序输出。
5.用迪杰斯特拉算法进行从一个景点到另一个景点的最短路径查询。 -
数据输入
1.景点总数,景点路径总数;
2.所有景点名,景点代号,景点评分,景点推荐语;
3.路径两端的景点名的代号,进行创建图;
注:实际上,由于景点名和景点路径过多,所以直接从文件中读取已定义的数据。
文件内容为:
-
功能模块图:
-
抽象数据类型描述
ADT MGraph{
数据对象:
具有相同特性的数据元素的集合,顶点集。
数据关系
R={VR}
VR={<v,w>|表示从顶点v到顶点w存在路径}
基本操作
Create_MGraph(MGraph &G);//创建图
初始条件:G为空
操作结果:创建完整的图
Output_MGraph(MGraph &G);//输出图
初始条件:G为已创建好的图
操作结果:输出图中顶点和边的信息
Dijkstra(MGraph G, int v0,int path[][MAX], int D[]);//求最短路径
初始条件:G不为空
操作结果:求出单源点到其他点的最短径路
Find_Short_Path(MGraph G);//查询最短路径
初始条件:G不为空
操作结果:输出单源点到查询点的最短路径
Find_Short_AllPath(MGraphG);//查询所有的最短路径
初始条件:G不为空
操作结果:输出单源点到其他点的最短路径
Find_scenery(MGraph G);//按照景色名称查询信息
初始条件:G不为空
操作结果:输出查询的景点信息
Find_num(MGraph G);//按照编号查询相关信息
初始条件:G不为空
操作结果:输出查询的景点信息
Output_Score(MGraph&G);//按照评分排序
初始条件:G不为空
操作结果:输出按评分排序的景点
Fast_Partition(MGraph &G,int low,int high);//返回快排的最终位置
初始条件:G不为空
操作结果:返回每次快排的最终位置
Fast_Sort(MGraph &G,int low,int high);//用快排对景色按照评分排序
初始条件:G不为空
操作结果:对快排序列排序
}
代码实现:
#include<iostream>
#include<fstream>
#include<istream>
#include<windows.h>
#include<string>
#include<iomanip>
#define MAX 15
#define INF 1000
using namespace std;
struct Node {
string name;//景点名称
int num;//代号
i