数据结构课设——校园导游咨询(图的应用)

问题描述

设计一个校园导游程序,为来访的客人提供各种信息查询服务。

(1)设计学校的校园平面图,所含景点不少于10个,以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息;

(2)提供基本信息的修改功能;

(3)为来访客人提供图中任意景点相关信息的查询;

(4)为来访客人提供景点的问路查询,即已知一个景点,查询到某景点之间的一条最短路径及长度。

算法思想

用直接赋值的方法给予各个景点信息,若两景点之间可达,则对路径长度赋值,对于自己到自己的路径,赋值为0,其他均赋成最大值。查看所有景点时,就遍历结构体数组,然后全部输出;查询景点,根据输入的景点代号,遍历数组然后利用字符串比较方法找到所查询的景点,输出景点的具体信息;修改景点信息的第一步为查找到该景点,然后将该景点的所有信息清空,重新输入即可;问路求最短路径及长度即是采用弗洛伊德算法,获得具体的最短路径时,从后往前追溯走过的结点,并且用一个数组记录下它的位置,然后再遍历数组输出所经过的每个点的信息。

算法设计

1、菜单显示void menu()——供用户选择的功能菜单。

2、输出所有景点信息void Allprint(AMGragh G)——输出景点名称、代号和简介。

3、建图void CreateUDG(AMGragh &G)——用直接赋值的方法给予各个景点信息,若两景点之间可达,则对路径长度赋值,对于自己到自己的路径,赋值为0,其他均赋成最大值。

4、修改信息void Change(AMGragh &G)——修改景点信息的第一步为查找到该景点,然后将该景点的所有信息清空,重新输入即可。

5、查询景点void Query(AMGragh G)——查询景点,根据输入的景点代号,遍历数组然后利用字符串比较方法找到所查询的景点,输出景点的具体信息。

6、弗洛伊德算法void Floyd(AMGragh G)——获得最短路径及长度。

7、获得具体路径void Path(AMGragh G,int a,int b)——从后往前追溯走过的结点,并且用一个数组记录下它的位置,然后再遍历数组输出所经过的每个点的信息。

8、问路void Ask(AMGragh G)——调用函数输出具体路径及长度。

9、主函数int main()——先调用建图函数,然后用while循环实现不断地对功能进行选择。

代码实现

#include//实验四
#include
#include
#include
using namespace std;
#define Max 11
#define MX 999999
int D[Max][Max];
int path[Max][Max];
typedef struct Ver{//顶点信息
    char num[5];
    char name[51];
    char instruct[101];
}Ver;
typedef struct{//邻接矩阵
    Ver vex[Max];//顶点表
    int arcs[Max][Max];
    int vnum,arcnum;
}AMGragh;
void menu(){
    cout<<"************中工欢迎您************"<>c;
    for(int i=0;i>c;
    int i;
    for(i=0;i=0){
    cout<<"--->"<>a>>b;
    Floyd(G);
    cout<>m;
        switch(m){
        case 1:
            Allprint(G);
            break;
        case 2:
            Query(G);
            break;
        case 3:
            Ask(G);
            break;
        case 4:
            Change(G);
            break;
        case 5:
            cout<<"感谢您的使用!"<

 

你可能感兴趣的:(数据结构)