课程设计:旅游管理系统!C语言+图结构带你轻松完成作业-

课程设计:旅游管理系统!C语言+图结构带你轻松完成作业

问题描述:

创建一个至少有15个点的有向网表示的某个旅游景点的导游图。顶点代表景点,类型为字符串(例如,泰山导游图:“天地广场门”,“十八盘”,“冯玉祥墓”,“桃花峪门”,“中天门”,“南天门”,“玉皇顶”等),弧表示两个景点之间可以直达,弧上的权值表示两个景点之间的路程(公里数),弧上还有到达方法的信息(有步行和索道两种)。建立一个游客咨询系统。

1.基本要求

(1)创建图的存储结构。

(2)输入两个景点名,就可以得到从一个景点到达另一个景点的所有简单路径、相应路径的路程公里数、行走的方法(每一段是步行,还是坐索道);

(3)输入两个景点名,就可以得到其最短路径,即:路程最短的行进方法;如果两者无路径可通,就得出“两景点不可达的信息”。

2.重点、难点

重点:

(1)通过实验掌握图状结构数据的存储与表式;

(2)通过实验掌握对图的存储、遍历、运算等各种操作;

(3)深入理解图的特征及应用;

难点:

(1)任意两个景点所有路径的计算;

(2)最短路径的计算与算法设计。


代码示例:

#include
#include
#include
#include
#define N 15
#define MAX 999

int min_len[N];
int route[N][N];
int visited[N];
int flag[N];
int stack[N];
int path[N][N];
int temp[N][N];
int start=99,end=99;
int v,w,m=1;
int static n=0;



typedef struct
{
    char name[N][20];
    int length[N][N];
    char way[N][N];
}Point;

void init_path()
{
    int i,k;
    for(i=0;iname[i]);
    fclose(fp1);
    for(i=0;ilength[i][j]);
            temp[i][j]=info->length[i][j];
        }
    }
    fclose(fp2);
    for(i=0;iway[i][j]);
    }
    fclose(fp3);
}

void output_view(Point *info)
{
    int i,j;
    printf("一共有%d个景点,关系如下:

     ",N);
    for(i=0;iname[i]);
    printf("
");
    for(i=0;iname[i]);

            if(j!=N)printf("%4d(%c)",info->length[i][j],info->way[i][j]);
            else printf("
");
        }
}


void Dijkstra(Point *info)
{
    int i=1,j,min;
    for(v=0;vlength[start][v];
        for(w=0;wlength[v][w]length[v][w];
            route[w][w]=1;
        }
    }
    }
}

void DFS(Point *info,int p)
{
    int i,j,len;
    visited[p]=1;
    for(i=0;ilength[p][i]!=MAX)
        {
            if(i==end)
            {
                n++;printf("第%d条: ",n);
                for(j=0;j",stack[j]+1,info->name[stack[j]],info->way[stack[j]][stack[j+1]]);
                    printf("(%s)---%c--->",info->name[stack[j]],info->way[stack[j]][stack[j+1]]);
                }
                //printf("%d(%s)

",end+1,info->name[end]);
                printf("(%s)

",info->name[end]);
            }
            else if(!visited[i])
            {
                info->length[p][i]=MAX;
                visited[i]=1;
                stack[m]=i;
                m++;
                DFS(info,i);
                info->length[p][i]=temp[p][i];
                visited[i]=0;
                m--;
            }
        }
    }
}

void receive(Point *info)
{
    int i;
    char a[20],b[20];
    printf("
输入起点和终点标号,按# #退出:");scanf("%s%s",a,b);
    printf("得出所有简单路径和最短路径
");
    if(strcmp(a,"#")==0&&strcmp(b,"#")==0)return;
    for(i=0;iname[i])==0)start=i;
        if(strcmp(b,info->name[i])==0)end=i;
    }
    init_path();
    //for(i=0;iname[start],info->name[end],min_len[end]);
            for(i=0;iname[start],info->name[end],min_len[end]);
            printf("最短路径为: ");
            for(i=0;i",path[end][i]+1,info->name[path[end][i]],info->way[path[end][i]][path[end][i+1]]);
                printf("(%s)---%c--->",info->name[path[end][i]],info->way[path[end][i]][path[end][i+1]]);
            }
            //printf("%d(%s)
",path[end][i]+1,info->name[path[end][i]]);
            printf("(%s)
",info->name[path[end][i]]);
        }
        else {printf("
非常抱歉!!!景点%s无法到达%s",info->name[start],info->name[end]);}
        printf("
");
    }
    start=end=99;n=0;
}


int main()
{
    int i,j=0;
    char x;
    Point *view_info=NULL;
    view_info=(Point *)malloc(sizeof(Point));
    read_file(view_info);
    msgbox(view_info);
    printf("输入操作:");
    while(scanf("%c",&x)!=EOF)
    {
        switch(x)
        {
            case 'S':msgbox(view_info);receive(view_info);printf("输入操作:");break;
            case 'E':exit(0);
            default :cur_sys();msgbox(view_info);printf("输入操作:");continue;
        }
    }
    printf("谢谢使用!!!");
}

写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

编程学习书籍分享:

课程设计:旅游管理系统!C语言+图结构带你轻松完成作业

编程学习视频分享:

课程设计:旅游管理系统!C语言+图结构带你轻松完成作业

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

展开阅读全文

页面更新:2024-03-20

标签:南天门   公里数   作业   索道   景点   路程   路径   课程设计   两个   语言   轻松   结构   操作   方法   项目

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top