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

文档到我的资源下载

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

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)

大家都在看

  • springBoot 获取注解参数的原理

    判断每个参数带有注解是哪个,是否存在相应的解析器 寻找合适的处理适配器 DispatcherServlet中的 doDispatch方法 // Determine handler …

    Linux 2023年6月7日
    092
  • LAXCUS授权开源协议

    LAXCUS 授权许可证 第1版 本许可证仅针对LAXCUS分布式操作系统和衍生子版本,围绕LAXCUS分布式操作系统设计开发的硬件、硬件驱动程序、应用软件不受本许可证约束。 您对…

    Linux 2023年6月6日
    0110
  • 【MQTT】在Linux下sqlite3的使用

    安装sqlite3 #下载 wget https: #解压 tar -xzvf sqlite-autoconf-3310100.tar.gz sqlite3库函数 1. 打开/创建…

    Linux 2023年6月13日
    073
  • ECMAScript 6.0

    本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。 博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。 博主…

    Linux 2023年6月13日
    078
  • nand

    nand flash裸机编程第001节_NAND_FLASH操作原理第002节_NandFlash时序及初始化第003节_NandFlash的芯片id读取第004节_NandFla…

    Linux 2023年6月13日
    069
  • 自动化集成:Kubernetes容器引擎详解

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译、打包、镜像构建、部署等操作; 本篇文章主要描述Kubernetes引擎用法。 …

    Linux 2023年5月27日
    0107
  • 2021年3月-第02阶段-前端基础-HTML+CSS阶段-Day03

    HTML5 第三天 一、 认识 3D 转换 3D 的特点 近大远小 物体和面遮挡不可见 三维坐标系 x 轴:水平向右 — 注意:x 轴右边是正值,左边是负值 y 轴:垂…

    Linux 2023年6月8日
    0104
  • Linux 0.11源码阅读笔记-中断过程

    Linux 0.11源码阅读笔记-中断过程 是什么中断 中断发生时,计算机会停止当前运行的程序,转而执行中断处理程序,然后再返回原被中断的程序继续运行。中断包括硬件中断和软件中断,…

    Linux 2023年5月27日
    0108
  • python 对文件操作

    实现对文件的简单操作 #!/usr/bin/env python -*- coding:utf-8 -*- def Find(class_name): class_list = […

    Linux 2023年6月13日
    0114
  • windows 挂载 NFS共享

    实验环境: NFS主机(192.168.18.10):CentOS7.0 软件包:nfs-utils、rpcbind; 客户机(192.168.18.41):windows ser…

    Linux 2023年5月27日
    0201
  • Ubuntu 进程 线程 查看 设置(top taskset)

    top 的基本使用 taskset 的基本使用 top top 详解 及 使用 top 常用的命令 taskset taskset 的基本使用 1. 显示某个进程(线程)运行所在的…

    Linux 2023年6月6日
    0109
  • redis持久化存储

    redis持久化存储 redis多被用于缓存和消息中间件,当被用作缓存时,数据的读写都是在内存中进行的,而内存一旦在主机断电或者主机重启时里面的数据将被清空,为保证数据不被丢失,r…

    Linux 2023年6月7日
    0103
  • Ubuntu更换镜像源

    当修改 sources.list文件时,我们需要将下面任意一个镜像源的代码 复制粘贴到该文件中。 阿里源 阿里镜像源 deb http://mirrors.aliyun.com/u…

    Linux 2023年6月14日
    085
  • WPF 切换主题使用 luna 复古版本

    本文告诉大家如何在 WPF 里面使用 luna 等复古主题 今天在 lsj 说他准备优化 WPF 的程序集时,准备删除 luna 等程序集时,找到了一段有趣的注释,发现在 WPF …

    Linux 2023年6月6日
    069
  • 设计模式——–代理模式

    代理模式:为其他对象提供一种代理以控制对这个对象的访问。 最简单的代理模式,分为三种角色: 抽象主题角色:代理类与被代理共同实现的接口,内部定义了最普通的业务类型。 具体主题角色:…

    Linux 2023年6月7日
    070
  • 秒懂悲观、乐观锁、互斥、自旋锁、读写锁

    前言 生活中用到的锁,用途都比较简单粗暴,上锁基本是为了防止外人进来、电动车被偷等等。 但生活中也不是没有 BUG 的,比如加锁的电动车在「广西 – 窃·格瓦拉」面前,…

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