校园导游系统代码(数据结构)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、问题描述

设计一个校园模拟导游程序,为新生或来访的客人通过与机器的“对话“提供最短路径的信息查询服务。

二、基本要求

1.任意选取n个场所,构成一个无向带权图,图中顶点表示场所,边上的权值表示两点间的距离,图的存储结构可采用带权的邻接矩阵。

2.咨询以用户和计算机的对话方式进行,由用户输入起始点和终点,输出信息:最短路径是多少?并指出所经过的场所。

3、计算并记录从校门口到各个场所的最短路径,即求单源点到其它各个场所的最短路径。

4、提供校园中任意场所的问路查询,即求任意两点之间的最短路径。

三、测试数据

学生根据实际情况指定

#define INFINITY 10000 /*无穷大*/

#define MAX_VERTEX_NUM 40

#define MAX 40

#include

#include

#include

#include

typedef struct ArCell

{

int adj; //路径长度

}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedef struct //图中顶点表示主要景点,存放景点的编号、名称、简介等信息,

{

char name[30];

int num;

char introduction[200];//简介

}infotype;

typedef struct

{

infotype vexs[MAX_VERTEX_NUM];//景点

AdjMatrix arcs;//路径数组

int vexnum,arcnum;//景点数,路径长度记录

}MGraph;

MGraph b;//全局变量

void cmd(void);//在主函数中用来调用其他应用子函数的函数声明

MGraph InitGraph(void);//用来构造学校地图的子函数返回MGraph类型

void Menu(void);//菜单函数;

void Browser(MGraph *G);//调用MGraph类型的地址,进行

void ShortestPath_DIJ(MGraph * G);//迪杰斯特拉算法求最短路径的子函数

void Floyd(MGraph *G);//佛洛伊德算法

void Search(MGraph *G);//寻找要查询的景点,并输出该景点的信息

void browse_view_distribute();//查看景点分布图

void tou(MGraph *G);//景点列表

void panduan();

//void Exit();//退出

int LocateVex(MGraph *G,char* v);//定点位置

MGraph * CreatUDN(MGraph *G);////初始化图形,接受用户输入

void print(MGraph *G);//打印输出子函数

/******************************************************/

void main(void)

{

cmd();//用该函数来调用其他需要用到的函数

}

/******************************************************/

void cmd(void)//用来调用其他需要用到的函数的子函数

{

int i;

b=InitGraph();//构造校园地图

Browser(&b);//Menu();//调用菜单函数

scanf("%d",&i);

while(i!=4)

{

switch(i)

{

case

1:system("cls");/*ShortestPath_DIJ(&b);*/browse_view_distribute();Browser(&b);break;

case 2:system("cls");tou(&b);Floyd(&b);Browser(&b);break;

case 3:system("cls");tou(&b);Search(&b);Browser(&b);break;

case 4:exit(0);break;

default:break;

}

scanf("%d",&i);

}

printf("欢迎下次继续使用!\n\n");

}

//*******************************************************************

MGraph InitGraph(void)//构造校园地图

{

MGraph G;

int i,j;

G.vexnum=13;//景点数量

G.arcnum=21;//路径数量

for(i=1;i<=G.vexnum;i++)

G.vexs[i].num=i;//对景点进行对应编号

/*对对应的景点编号进行命名,输入简介*/

strcpy(G.vexs[3].name,"行政办公楼");

strcpy(G.vexs[3].introduction,"学校的行政机构。");

strcpy(G.vexs[6].name,"图书馆");

strcpy(G.vexs[6].introduction,"体积庞大,是学校的标志性建筑,目前还在建设中。");

strcpy(G.vexs[2].name,"果园");

strcpy(G.vexs[2].introduction,"枝叶茂盛,各种新鲜水果。");

strcpy(G.vexs[1].name,"校门");

strcpy(G.vexs[1].introduction,"学校的形象,气势宏伟。");

strcpy(G.vexs[4].name,"体育运动区");

strcpy(G.vexs[4].introduction,"包括有排球场、篮球场、网球场等。");

strcpy(G.vexs[5].name,"教学区");

strcpy(G.vexs[5].introduction,"包括左教学楼、小湖、右教学楼、实验楼和医务室等。");

strcpy(G.vexs[10].name,"男生宿舍");

strcpy(G.vexs[10].introduction,"分1、2、7、8栋,供男同学居住,女生勿进。");

strcpy(G.vexs[7].name,"琴房");

strcpy(G.vexs[7].introduction,"音乐学院学生练琴的地方。");

strcpy(G.vexs[8].name,"足球场");

strcpy(G.vexs[8].introduction,"踢球,跑步,运动比赛场地。");

strcpy(G.vexs[9].name,"省高速路");

strcpy(G.vexs[9].introduction,"上面是省高速路,下面是人行隧道。");

strcpy(G.vexs[11].name,"食堂");

strcpy(G.vexs[11].introduction,"分1、2、3、4楼,价格有所不同,根据自己爱好,随意点菜。");

strcpy(G.vexs[12].name,"女生宿舍");

strcpy(G.vexs[12].introduction,"楼下一“爱心”超市,价格绝对不便宜。楼上女同学居住,男生勿进。");

strcpy(G.vexs[13].name,"教师村");

strcpy(G.vexs[13].introduction,"老师们的居住地,10多楼高。");

//对有路的各景点之间的路径长度进行设置,没路的设置为无穷大

for(i=1;i<=G.vexnum;i++)

相关文档
最新文档