【河北科技大学数据结构课设】校园导航问题

文档到我的资源下载

点击这里进入我的资源下载

1. 简单介绍

【河北科技大学数据结构课设】校园导航问题
【河北科技大学数据结构课设】校园导航问题
【河北科技大学数据结构课设】校园导航问题
【河北科技大学数据结构课设】校园导航问题

2. 代码

#include
#include
#include

using namespace std;
/*测试使用十六地点,直接定义*/
#define Num 17
/*最大距离*/
#define Maxedge 32760

/*
 * @coder: slience_me
 * @time: 2021.12.09
 * @blog: www.slienceme.xyz
 */

/*定义对各个地点信息存储的结构体类型*/
typedef struct {
    char name[10]; /*用来存储名称信息属性*/
    int number;   /*距离属性*/
    char introduce[100]; /*相关介绍*/
} vertex;

/*定义结构体数组,用来存储我的位置信息 constructions 建筑物的数组,内含有建筑物信息*/
vertex constructions[Num];
/*用来存放两地的对应距离*/
int edge[Num][Num];
/*用来存放最短距离*/
int shortest[Num][Num];
/*用来存放路径*/
int path[Num][Num];

/*河北科技大学新校区平面图,给使用程序者以直观认识*/
int myMap() {
    printf("\t\t河北科技大学新校区平面图(括号内为相对应的数字编号)\n\n");
    printf(" 西北操场(1)———————校医院(2)——————文法学院(3)——————风雨操场(4)    \n");
    printf("  |                  |             |              |          \n");
    printf("  |                  |             |              |          \n");
    printf(" 西门(5)—————————牧星湖(6)————————公教楼(7)————————主体育场(8)    \n");
    printf("  |                  |             |              |          \n");
    printf("  |                  |             |              |          \n");
    printf(" 第三餐厅(9)—————————图书馆(10)—————讲堂群(11)————————东门(12)     \n");
    printf("  |                  |             |              |          \n");
    printf("  |                  |             |              |          \n");
    printf(" 研究生公寓(13)———工程训练中心(14)———南公教楼(15)——————信息楼(16)   \n\n");
    printf("\n----------------------------------------------------------------------------\n");
    return 0;
}

/*河北科技大学新校区平面图距离图,给使用程序者以直观认识*/
int myMapDistance() {
    printf("\n--------------------------------------平面图距离图开始--------------------------------------\n");
    printf("\t\t河北科技大学新校区平面图(括号内为相对应的数字编号)\n\n");
    printf(" 西北操场(1)—————30—————校医院(2)—————200—————文法学院(3)—————60—————风雨操场(4)       \n");
    printf("    |                    |                     |                     |            \n");
    printf("   300                  310                   500                   50           \n");
    printf("    |                    |                     |                     |            \n");
    printf("  西门(5)——————400—————牧星湖(6)—————100—————公教楼(7)—————200—————主体育场(8)      \n");
    printf("    |                    |                    |                      |            \n");
    printf("   300                  50                   200                    200           \n");
    printf("    |                    |                    |                      |            \n");
    printf(" 第三餐厅(9)—————200————图书馆(10)—————200————讲堂群(11)——————400——————东门(12)       \n");
    printf("    |                    |                    |                      |            \n");
    printf("   300                  350                  600                    600           \n");
    printf("    |                    |                    |                      |            \n");
    printf(" 研究生公寓(13)——300———工程训练中心(14)——300———南公教楼(15)————300————信息楼(16)        \n\n\n");
    printf("\n--------------------------------------平面图距离图结束------------------------------------\n");
    return 0;
}

/*作用就是初始化数组内容,将建筑物的相关信息装载进去*/
int initData() {
    int i, j; /*从41到73行,对平面图中的各个地点信息进行输入,运用strcpy函数*/
    //向数组内装载数据
    /*西北操场*/
    constructions[1].number = 1;
    strcpy(constructions[1].name, "西北操场");
    strcpy(constructions[1].introduce, "学生运动,打篮、足球、排球、棒球的地方!(described by slience_me)\n");
    /*校医院*/
    constructions[2].number = 2;
    strcpy(constructions[2].name, "校医院");
    strcpy(constructions[2].introduce, "学生们,诊断看病的地方!(described by slience_me)\n");
    /*文法学院*/
    constructions[3].number = 3;
    strcpy(constructions[3].name, "文法学院");
    strcpy(constructions[3].introduce, "文法相关专业学生上专业课的地方!(described by slience_me)\n");
    /*风雨操场*/
    constructions[4].number = 4;
    strcpy(constructions[4].name, "风雨操场");
    strcpy(constructions[4].introduce, "科大唯一的室内运动场,内含篮球场,羽毛球场等场地!(described by slience_me)\n");
    /*西门*/
    constructions[5].number = 5;
    strcpy(constructions[5].name, "西门");
    strcpy(constructions[5].introduce, "这里是学校的西边出口,西大门!(described by slience_me)\n");
    /*牧星湖*/
    constructions[6].number = 6;
    strcpy(constructions[6].name, "牧星湖");
    strcpy(constructions[6].introduce, "科大学子,在闲暇之余,用来欣赏风景的地方,这里有山有水有瀑布!(described by slience_me)\n");
    /*公教楼*/
    constructions[7].number = 7;
    strcpy(constructions[7].name, "公教楼");
    strcpy(constructions[7].introduce, "科大学子,用来上公共课的地方!大的地方!(described by slience_me)\n");
    /*主体育场*/
    constructions[8].number = 8;
    strcpy(constructions[8].name, "主体育场");
    strcpy(constructions[8].introduce, "科大最主要的体育场,重大活动的场地,体育课,打球,运动的地方!(described by slience_me)\n");
    /*第三餐厅*/
    constructions[9].number = 9;
    strcpy(constructions[9].name, "第三餐厅");
    strcpy(constructions[9].introduce, "学生第三食堂,主供新宿舍区域的食物供给!(described by slience_me)\n");
    /*图书馆*/
    constructions[10].number = 10;
    strcpy(constructions[10].name, "图书馆");
    strcpy(constructions[10].introduce, "科大学子上自习备考,借阅图书的地方!十年图书馆必辉煌!(described by slience_me)\n");
    /*讲堂群*/
    constructions[11].number = 11;
    strcpy(constructions[11].name, "讲堂群");
    strcpy(constructions[11].introduce, "属于科大公共课最大的教室场地,一般用来举办讲座活动!(described by slience_me)\n");
    /*东门*/
    constructions[12].number = 12;
    strcpy(constructions[12].name, "东门");
    strcpy(constructions[12].introduce, "科大的最东侧出口,也是科大的正门!(described by slience_me)\n");
    /*研究生公寓*/
    constructions[13].number = 13;
    strcpy(constructions[13].name, "研究生公寓");
    strcpy(constructions[13].introduce, "研究生居住的宿舍!(described by slience_me)\n");
    /*工程训练中心*/
    constructions[14].number = 14;
    strcpy(constructions[14].name, "工程训练中心");
    strcpy(constructions[14].introduce, "学生们进行金工实习,做实验的地方,内有各种仪器!(described by slience_me)\n");
    /*南公教楼*/
    constructions[15].number = 15;
    strcpy(constructions[15].name, "南公教楼");
    strcpy(constructions[15].introduce, "仅次于公教楼的第二个公共课开展场地!(described by slience_me)\n");
    /*信息楼*/
    constructions[16].number = 16;
    strcpy(constructions[16].name, "信息楼");
    strcpy(constructions[16].introduce, "信息学子学习生活的场所!(described by slience_me)\n");

    /*对存储距离的距离矩阵取值进行初始化,全定义为最大*/
    for (i = 1; i > i;
    printf("--------------------------------------菜单结束--------------------------------------\n");
    return i;
}

/*输出简介函数*/
int information() {
    int i;
    while (true) {
        printf("请输入查询地点的编号:");
        cin >> i;
        printf("\n--------------------------------------介绍开始--------------------------------------\n");
        if (i = 1) {
            printf("\n\t@名称:%s\n\t#简介:%s\n", constructions[i].name, constructions[i].introduce);
            return 0;
        } else {
            printf("输入有误!");
        }
        printf("\n--------------------------------------介绍结束--------------------------------------\n");
    }
    return 0;
}

/*输出全部简介函数*/
int informationAll() {
    printf("\n--------------------------------------全部简介开始--------------------------------------\n");
    for (int i = 1; i < Num; i++) {
        printf("\n\t@名称:%s\n\t#简介:%s\n", constructions[i].name, constructions[i].introduce);
    }
    printf("\n--------------------------------------全部简介结束--------------------------------------\n");
    return 0;
}

/*小彩蛋神龙*/
int fun() {
    cout << "\n\t111111111111111111111111111111111111111111111110000111111111111111111111111111111111111111111\n"
            "\t111111111111111111111111111111111111111111111000011111111111111111111111111111111111111111111\n"
            "\t111111111111111111111111111111111111111111100000011111111111111111111111111111111111111111111\n"
            "\t111111111111111111111111111111111111111110000001111000110000000000000001111111111111111111111\n"
            "\t111111111111111111111111111111110000000000000000000000000000000001111111111111111111111111111\n"
            "\t111111111111111111111111111111011100000000000000000000000000001111111111111111111111111111111\n"
            "\t111111111111111111111111111111111111100000000000000000000000000000000011111111111111111111111\n"
            "\t111111111111111111111111111111111000000000000000000000000000000011111111111111111111111111111\n"
            "\t111111111111111111111111111111110001110000000000000000000000000000011111111111111111111111111\n"
            "\t111111111111111111111111111110000011000000000001100000000000000000001111111111111111111111111\n"
            "\t111111111111111111111111111100000000000000010011110000000000000110000011111111111111111111111\n"
            "\t111111111111111111111111000000000000000000111011111000000000000011100001111111111111111111111\n"
            "\t111111111111111111111100000000000000000001111111110000000000000001111000111111111111111111111\n"
            "\t111111111111111111111000000001111111111111111111110000000000000000111110011111111111111111111\n"
            "\t111111111111111111111100000111111111111111111111000000000000000000111111111111111111111111111\n"
            "\t111111111111111111111111011111111111111111110000000000000000000000011111111111111111111111111\n"
            "\t111111111111111111111111111111000000000000000000000000000000000000011111111111111111111111111\n"
            "\t111111111111111111111111111111110000000000000000000000000000110000011111111111111111111111111\n"
            "\t111111111111111111111111111100000000000000000000000000000011110000011111111111111111111111111\n"
            "\t111111111111111111111111100000000000000000000000000000000111111000011111111111111111111111111\n"
            "\t111111111111111111111110000000000000000000000000000000111111111000011111111111111111111111111\n"
            "\t111111111111111111111000000000000000000000000000000011111111111000011111111111111111111111111\n"
            "\t111111111111111111110000000000000000000111000000111111111111111000111111111111111111111111111\n"
            "\t111111111111111111100000000000000001111111111111111111111111111001111111111111111111111111111\n"
            "\t111111111111111111000000000000000111111111111111110011111111111111111111111111111111111111111\n"
            "\t111111111111111110000000000000001111111111111111111110000111111111111111111111111111111111111\n"
            "\t111111111111111110000000000100011111111111111111111111100000111111111111111111111111111111111\n"
            "\t111111111111111100000000000110011111111111111111111111111000000011111111111111111111111111111\n"
            "\t111111111111111100000000000011101111111111110001111100001110000000111111111111111111111111111\n"
            "\t111111111111111100000000000001111111111111111100011111000000000000001111111111111111111111111\n"
            "\t111111111111111100000000000000001111111111111100000000000000000000000011111111111111111111111\n"
            "\t111111111111111100100000000000000000111111111000000000000000000000000000111111111111111111111\n"
            "\t111111111111111110011000000000000111111111000000000000000011100000000000011111111111111111111\n"
            "\t111111111111111111011000000000000000000000000000000000011111111111000000001111111111111111111\n"
            "\t111111111111111111111000000000000000000000000000000000111111111111110000000111111111111111111\n"
            "\t111111111111111111111000001000000000000000000110000000011101111111111000000111111111111111111\n"
            "\t111111111111111111111100011111000000000000011111000000000011111111111011000011111111111111111\n"
            "\t111111111111111111111000111111110001000000000111110000011111111111111111000011111111111111111\n"
            "\t111111111111111111111000111111111111111000000011111110000000011111111111100011111111111111111\n"
            "\t111111111111111111111100111111111111111111100000011111111111111111111111110001111111111111111\n"
            "\t-   ------------------------------   神龙保佑,永无BUG   ---------------------------------   -\n";

    return 0;
}

/*弗洛伊德算法*/
int floyd() {
    int i = 1, j = 1, k = 1, l = 1;
    for (i = 1; i  (shortest[i][k] + shortest[k][j])) {
                    shortest[i][j] = (shortest[i][k] + shortest[k][j]);
                    path[i][j] = path[j][i] = k;
                }
            }
        }
    }
    return 0;
}

/*最短路径的输出*/
int way(int i, int j) {
    int k = 0, a = i, b = j;
    if (shortest[i][j] != Maxedge) {
        printf("\n从 (%s) 到 (%s) 的最短路径为:\n", constructions[i].name, constructions[j].name);
        printf("(%s)", constructions[i].name);
        while (path[i][j] != 0) {
            k = path[i][j];
            while (path[i][k] != 0) {
                k = path[i][k];
            }
            printf("-->(%s)", constructions[k].name);
            i = k;
        }
        printf("-->(%s);\n", constructions[j].name);
        printf("\n最短距离为:(%d)米。\n", shortest[a][b]);
        printf("\n数据均为测试数据,与实际有误差,敬请谅解.\n\n");
    } else
        printf("从%s不能到达%s。", constructions[i].name, constructions[j].name);

    return 0;
}

/*寻找最短路径*/
int shortestpath() {
    int i = 0, j = 0;
    while (true) {
        printf("请输入要查询的两点的编号:(以空格间隔): ");
        cin >> i >> j;
        if (i  0 && j  0) {
            floyd();
            way(i, j);
            return 0;
        }
    }
    return 0;
}

int main() {
    char i;
    printf("\n----------------------------------------------------------------------------\n");
    printf("\t\t\t欢迎使用河北科技大学新校区导航系统\n\n");
    initData();
    myMap();/*输出地图,提示使用者*/
    while (true) {
        i = menu();
        switch (i) {
            case 's':
                shortestpath();
                break;
            case 'i':
                information();
                break;
            case 'a':
                informationAll();
                break;
            case 'd':
                myMapDistance();
                break;
            case 'c':
                fun();
                break;
            case 'q':
                printf("\n\n\n\t\t\t\t谢谢使用!\n");
                return (0);
            default :
                printf("输入错误!\n");
                break;
        }
    }
    return 0;

}

Original: https://www.cnblogs.com/Slience-me/p/16341906.html
Author: Slience_me
Title: 【河北科技大学数据结构课设】校园导航问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585853/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 如何在博客中添加Aplayer音乐播放器

    前言 是否有一首音乐,前奏一响起,让你灵魂不自主的颤栗。音乐就像老胶卷,每个旋律,每句歌词,都承载着每个人的往事回忆和情愫感受。 我收藏了好多的音乐,奈何好多音乐受版权限制,需要购…

    Linux 2023年6月7日
    0106
  • 2012年脱离程序员队伍,时隔9年,居然一次性把“冒泡排序”算法写对了

    2012年脱离程序员队伍,时隔9年,居然一次性把”冒泡排序”算法写对了 2021年2月7日 立贴纪念 #include int bubble_sort(in…

    Linux 2023年6月13日
    075
  • ajax跨域问题

    public class CrosFilter implements Filter { @Override public void destroy() { // TODO Auto…

    Linux 2023年6月7日
    0109
  • 嵌入式软件架构设计-程序分层

    1 前言 在嵌入式MCU软件开发过程中,程序分层设计也是重中之重,关系到整个软件开发过程中的协同开发,降低系统软件的复杂度(复杂问题分解)和依赖关系、同时有利于标准化,便于管理各层…

    Linux 2023年6月7日
    0150
  • PHP str_repeat()

    str_repeat str_repeat() 函数把字符串重复指定的次数。 示例: function strRepeat() { echo str_repeat("*&…

    Linux 2023年6月7日
    0187
  • rsync

    Rsync-远程同步 简介 rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同…

    Linux 2023年6月13日
    076
  • MapReduce入门实例——WordCount

    摘要:MapReduce的IDEA配置及WordCount案例 Maven项目配置 创建一个空的Maven项目 打开根目录下的 pom.xml文件,参考配置: UTF-8 3.2….

    Linux 2023年6月8日
    0102
  • Centos7 ifconfig中没有ens33

    在使用Secure CRT连接虚拟机连接不上,可能之前虚拟机关闭不当 登到虚拟机的中断使用ifconfig发现没有ens33 猜测是CentOS图形管理中的NetworkManag…

    Linux 2023年6月13日
    0160
  • Java中List<T>和List<?>的区别【转载】

    ` List、List<?>、List这三者都可以&#x…

    Linux 2023年6月8日
    093
  • [Linux]iptables防火墙

    一、iptables介绍 二、表(Table) 三、链(Chain) 四、规则(Rule) 五、iptables规则的增删改查 一、iptables介绍 iptables是一个针对…

    Linux 2023年6月13日
    0118
  • 搭建ES集群

    添加以下elasticsearch用户: bash;gutter:true; 1 useradd elasticsearch 2 passwd elasticsearch</…

    Linux 2023年6月8日
    089
  • 小试牛刀:Linux中部署RabbitMQ

    一、下载地址 本人采用的是 RabbitMQ 3.8.20+ Erlang 23.3.4.16 1、Erlang下载:https://github.com/erlang/otp/r…

    Linux 2023年6月14日
    098
  • echarts属性的设置大全(完整大全)

    1. &#x5168;&#x56FE;&#x9ED8;&#x8BA4;&#x80CC;&#x666F;&#xA0; &amp…

    Linux 2023年6月13日
    071
  • 【证券从业】金融基础知识-第四章 股票02

    注1:后续学习并整理到第八章,全书完结后再合并成一个笔记进行源文件分享 注2:本章内容巨多,大约分为两篇文章记录消化 posted @2022-06-06 02:11 陈景中 阅读…

    Linux 2023年6月13日
    0114
  • LAMP 架构介绍及环境搭建

    1、LAMP 架构介绍及环境搭建 1.LAMP分别代表什么? L代表服务器操作系统使用Linux A代表网站服务使用的是Apache软件基金会中的httpd软件 M代表网站后台使用…

    Linux 2023年6月7日
    0111
  • 【演讲】2020年马云谈疫情过后的新风口

    2020年马云谈疫情过后的新风口 【关键词】:疫情、新风口、数字化趋势、传统行业转型、教育 一、演讲背景 背景 2020线上智博会,马云8分钟演讲30次提到数字化 原视频 2020…

    Linux 2023年6月13日
    0116
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球