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

2023-12-24 12:46:07

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

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

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

(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,"图书馆是安工程校园内的知识殿堂,收藏了大量的

文章来源:https://blog.csdn.net/weixin_74384251/article/details/135179888
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。