公园的导游图(利用简便方法实现五个景点的遍历)

这是一个公园导游系统,采用Floyd算法计算景点间的最短路径。系统提供游客和管理员两种模式,管理员可以修改景点信息,游客则可以查看景点介绍、全图和遍历路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*

功能:给出一张某公园的导游图,游客通过终端询问可知:

从某一景点到另一景点的最短路径。游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。

 

分步实施:

1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2. 完成最低要求:建立一个文件,包括5个景点情况,能完成遍历功能;

3. 进一步要求:进一步扩充景点数目,画出景点图,有兴趣的同学可以自己扩充系统功能。

 

*/

#include <stdio.h>

#include <stdlib.h>
#include <windows.h>
#define MaxVertexNum 100
#define MaxCost 9999
typedef char VertexType;
typedef int  EdgeType;
typedef struct
   { VertexType vexs[MaxVertexNum];
       /* 存放顶点信息 */
      EdgeType  edges[MaxVertexNum][MaxVertexNum];
/* 存放邻接关系 */
      int  n,e; /*顶点数和边数*/
}Mgraph;
void mune();                //主菜单界面
void floyd(Mgraph G,int D[MaxVertexNum][MaxVertexNum],int P[MaxVertexNum][MaxVertexNum]);       //指定距离的弗洛伊德
void opfloy(int n,int D[MaxVertexNum][MaxVertexNum],int P[MaxVertexNum][MaxVertexNum]);         //指定距离的输出
void hamanzi(Mgraph *G);        //从起点开始遍历的函数。
void CreateMGraph(Mgraph *G);      //建立图的函数
void printph();
void look();
int main()
{
    Mgraph G;
    int n,D[MaxVertexNum][MaxVertexNum],P[MaxVertexNum][MaxVertexNum];
    int a;
    char b[100];
    char user[20],mana[20]="password",*q,*p,m=0;//依次是登录者,管理者,指针来判断登录账号是否是管理者。
        system("color f0");
   L: printf("\t     ***************************************************\n");
    printf("\t请登录(输入你的用户名):");
    scanf("%s",user);
    p=user;
    q=mana;
    while(*p==*q)//用来判断登陆者是否为管理者的部分
    {
        m=1;
        p++;
        q++;
        if(*q=='\0')
            break;
    }
    if(*p!=*q)
        m=0;
    /******************************************************************/
    if(m==1)
    {
        printf("");

    CreateMGraph(&G);
    system("cls");
   L1: mune();
    printf("请输入您的选项\n");
    scanf("%d",&a);
    switch(a)
    {
        case 1:
                floyd(G,D,P);
                opfloy(G.n,D,P);
                system("pause");
                system("cls");
                a=35421568;
                goto L1;
        case 2:
                hamanzi(&G);
                system("pause");
                system("cls");
                a=35421568;
                goto L1;
        case 3:
                printph();
               

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值