【数据结构课程设计】c++实现校园导游程序及通信线路设计
校园导游程序及通信线路设计
问题描述:
设计校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(1) 显示校园平面图(用cout显示即可)。
(2) 景点信息查询:为来访客人提供图中任意景点相关信息的查询。
(3) 任意2个景点的路径查询:为来访客人提供图中任意2个景点的问路查询,即查询任意两个景点之间的一条最短的简单路径及距离。
(4) 通信线路设计:以尽可能低的造价建造景点间的通信网络把这些景点联系在一起,每条通信线路的造价与景点间的距离成正比。给出铺设方案。
如何将编码转换成文字,或者不转换
基本要求:
1)关于显示校园平面图,示例如下:
2)图的存储采用邻接表;
3)程序做成菜单形式:
(路径查询->输入出发地与目的地->出最短路径)
4)给出部分景点的名称及简介(从中选取几个自己设计图,距离自定)
代码实现
主程序
#include<iostream>
#include<fstream>
using namespace std;
#define MaxEdgNum 100
#define MaxVerNum 100
#define Distance 50
#define Price 300
typedef string VertexTtpe;
typedef int EdgeType;
typedef struct node
{
int adjvex;
struct node* next;
int info;
}EdgeNode; //边结点
typedef struct vnode
{
VertexTtpe vertex;
EdgeNode* firstedge;
}VertexNode; //顶点结点
typedef struct {
VertexNode AdjList[MaxVerNum];
int vnum, lnum;
}ALGraph;
typedef struct
{
int v1;
int v2;
int cost;
}TreeEdgeType; //最小生成树边结点
TreeEdgeType edges[MaxEdgNum], T[MaxVerNum];
//打印地图
void menu()
{
cout << "1.景点信息查询" << endl;
cout << "2.景点路径查询" << endl;
cout << "3.通信线路铺设方案" << endl;
cout << "0.退出系统" << endl;
}
void view()
{
cout << "本地图的比例尺为1:5000 " << endl;
cout << " 北校门 " << endl;
cout << " / \\ " << endl;
cout << " / \\ " << endl;
cout << " 北图书馆 北运动场 " << endl;
cout << " / \\ / \\ " << endl;
cout << " / \\ / \\ " << endl;
cout << " 大学生文化活动中心 奋 进 楼 大礼堂 " << endl;
cout << " \\ / \\ / " << endl;
cout << " \\ / \\ | " << endl;
cout << " 至诚楼 行政楼 | " << endl;
cout << " \\ | \\ | " << endl;
cout << " \\ | \\ / " << endl;
cout << " 南运动场 | 南 图 书 馆 " << endl;
cout << " \\ | / " << endl;
cout << " 南 校 门 " << endl;
}
//建邻接表
void CreateALGraph(ALGraph* G)
{
int i, j, k, inf;
EdgeNode* s;
ifstream infile; //从文件中导出哈夫曼树
infile.open("data.dat");
infile >> G->vnum >> G->lnum;
for (i = 0; i < G->vnum; i++)
{
infile >> G->AdjList[i].vertex;
G->AdjList[i].firstedge = NULL;
}
for (k =