数据结构课程设计-校园导游程序

2023-12-25 05:04

本文主要是介绍数据结构课程设计-校园导游程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

根据题目内容,需要用无向网表示所在学校的景点平面图,即校内每个景点

为无向网中的各个结点,景点的编号、名称、简介等信息存储在结点中,图中的 边表示景点间的道路,存放景点之间的路径长度等信息。需要回答有关景点介绍、

游览路径等问题。具体要求为:

(1) 能够查询各个景点的相关信息。

(2) 查询图中任意两个景点间的最短路径。

(3) 查询图中任意两个景点间的所有路径。

(4) 增加、删除、更新有关景点和道路的信息。

选取10个代表性景点

实现代码

#include <stdio.h>
#include <stdlib.h>
#include<iostream>
using namespace std; 
#include<string.h>
#include<algorithm>
#include<stack>
#define INF 9999999
#define MAX 30
int dist[MAX][MAX];///距离
int path[MAX][MAX];///路径
int Stack[MAX];///路径栈
int top;///栈顶
int counts;///记录路径数typedef struct VexNode//景点信息结构体
{int vertex;//景点编号char name[20];//景点名称char vertax_message[400];//景点介绍
}VerNode;
typedef struct maps//景点图的结构体
{
VerNode  v[MAX];
int vexnum;//点数
int arcnum;//边数
int edgs[MAX][MAX];//邻接矩阵
}AdjList;
int visited[MAX];void create_vertex(AdjList &GL);//初始化校园景点及景点信息函数
void Init_Creat_maps(AdjList & GL);//初始化校园景点图函数
void Dis_menu();//展示程序菜单
void Dis_map();//展示校园景点图
void add_message(AdjList &GL);//更新或添加或删除校园景点及路径信息函数
void find_message(AdjList GL);//查询景点信息函数
void Floyd(AdjList GL);//弗洛伊德求最短路径
void Floyd_print(int s, int e,AdjList GL);//打印最短路径
void Dfs_allpaths(int s,int e,AdjList GL);//查询两景点之间所有路径函数
void message(AdjList GL);//已有景点int main(){      AdjList graph;int key;int start,end;create_vertex(graph);Init_Creat_maps(graph);while(1){Dis_menu();cin>>key;if(key==1){Dis_map();find_message(graph);system("pause");system("cls");}if(key==2){message(graph);printf("请输入起点的景点(编号):\n");scanf("%d",&start);printf("请输入起点的终点(编号):\n");scanf("%d",&end);Floyd(graph); printf("从%s到%s的最短路径是:%d米 ",graph.v[start].name,graph.v[end].name,dist[start][end]);printf("%s->",graph.v[start].name);Floyd_print(start,end,graph);printf("%s\n",graph.v[end].name);system("pause");system("cls");}if(key==3){message(graph);printf("请输入起点的景点(编号):\n");scanf("%d",&start);printf("请输入起点的终点(编号):\n");scanf("%d",&end);counts=0;top=0;Dfs_allpaths(start,end,graph);system("pause");system("cls");}if(key==4){message(graph);add_message(graph);system("pause");system("cls");}if(key==0){printf("使用结束!\n");printf("即将退出安工程校园导游系统.....");break;}if(key>4||key<0){printf("输入有误!请重新输入!");continue;}}return 0;}void create_vertex(AdjList &GL)
{//预置初始时景点图的景点信息GL.v[1].vertex=1;strcpy(GL.v[1].name,"网球场");strcpy(GL.v[1].vertax_message,"网球场是安工程校园的一个户外运动场地,提供给师生们进行网球运动的场所。这里有专业的网球场地和设施,可以让你尽情享受网球运动的乐趣。");GL.v[2].vertex=2;strcpy(GL.v[2].name,"体育馆");strcpy(GL.v[2].vertax_message,"体育馆是安工程校园内的一个综合性体育场馆,设有多个室内运动场地,如篮球场、羽毛球场、乒乓球场等。师生们可以在这里进行各种体育锻炼和比赛活动。");GL.v[3].vertex=3;strcpy(GL.v[3].name,"英语角");strcpy(GL.v[3].vertax_message,"英语角是安工程校园内一个特殊的交流区域,提供给学生们练习英语口语和交流的场所。在这里,你可以与其他同学自由对话,提高自己的英语口语能力。");GL.v[4].vertex=4;strcpy(GL.v[4].name,"情人桥");strcpy(GL.v[4].vertax_message,"情人桥是安工程校园内的一座浪漫的小桥,因其景色优美而得名。这里是情侣们约会和散步的热门地点,也是学生们放松心情的好去处。");GL.v[5].vertex=5;strcpy(GL.v[5].name,"师生活动中心");strcpy(GL.v[5].vertax_message,"师生活动中心是安工程校园的一个集休闲、娱乐、学习于一体的场所。这里有图书馆、电影院、多功能厅等设施,为师生们提供了丰富多样的活动和学习资源。\n学生处、招生就业处、校团委、校史馆、校学生会联合会、校社团联合会、校大学生艺术团在此办公。");GL.v[6].vertex=6;strcpy(GL.v[6].name,"建设银行");strcpy(GL.v[6].vertax_message,"建设银行是安工程校园内的一家银行分支机构,为师生们提供金融服务,包括存取款、贷款、理财等。方便师生们进行日常的金融交易和管理。");GL.v[7].vertex=7;strcpy(GL.v[7].name,"图书馆");strcpy(GL.v[7].vertax_message,"图书馆是安工程校园内的知识殿堂,收藏了大量的

这篇关于数据结构课程设计-校园导游程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/534337

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

这些心智程序你安装了吗?

原文题目:《为什么聪明人也会做蠢事(四)》 心智程序 大脑有两个特征导致人类不够理性,一个是处理信息方面的缺陷,一个是心智程序出了问题。前者可以称为“认知吝啬鬼”,前几篇文章已经讨论了。本期主要讲心智程序这个方面。 心智程序这一概念由哈佛大学认知科学家大卫•帕金斯提出,指个体可以从记忆中提取出的规则、知识、程序和策略,以辅助我们决策判断和解决问题。如果把人脑比喻成计算机,那心智程序就是人脑的

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于