数据结构课程设计——校园导游图

  • 格式:doc
  • 大小:98.00 KB
  • 文档页数:15

下载文档原格式

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

景德镇陶瓷学院

信息工程学院

班级:12计科(2)班

学号:201210510216

姓名:乐升平

指导老师:林卫中

时间:2014年6月18号

题目:校园导游图

校园导游图

1.1、需求分析:

需求:

(1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离。为此图选择适当的数据结构。

(2)把各种路径都显示给游客,由游客自己选择游览路线。

(3)画出景点分布图于屏幕上。

分析:

完成对整个导游图系统的功能实现,需要对的每一项功能都有清楚的设想和认识,了解并明确每一项功能的实现需要解决的问题,选择正确并且高效的算法把问题逐个解决,最终实现程序的正确调试运行。有以下设计思路:(1).结合本校的实际情况,选出10个景点;

(2).人为手工为选出的10个景点赋上相关信息(名称、代号、简介信息、以及路权等等);

(3).根据选出来的10个景点用邻接矩阵存储校园图。

(4).依照景点的相关信息创建校园图。

(5).把纸质上的内容,利用C++编程语言编写查找景点相关信息的程序。

(6).根据人为赋值的路权,迪杰斯特拉算法计算任意两点之间的最短路径。

(7).综上所诉,用一个主函数把这些板块合成,生产一个菜单界面呈现在用户面前。

1.2、设计与实现:

选出本校10个景点

结合景德镇陶瓷学院实际情况,我选出以下10个景点,从1到10编号: 编号 名称 编号 名称 编号 名称 编号 名称 1 研究生楼 2 二食堂 3 10#宿舍 4 主教学楼 5 毕业礼堂 6 主阶 7 一食堂 8 A 系列楼 9

B 系列楼

10

图书馆

11

科艺楼

12

科阶

13 篮球场 14 田径场 15 游泳池 16 体育馆

17 翠湖 18 校门口 图的初始化

由于邻接矩阵特殊的存储方式,它非常便于快速的查找两个顶点之间的边上的权值。所以,图采用带权的邻接矩阵存储。

决定了图的存储方式后,以华南农业大学18个景点的游览地图作为蓝本,把校园地图抽象化成顶点与边构成的图形式,如图所示

研究生楼 二食堂 10

主教学楼 毕业礼堂

主阶 一食堂

A 系列楼

B 系列楼 图书馆 科艺楼 科阶

篮球场

田径场

研究生楼 10#宿舍 A 系列楼 篮球场 毕业礼堂

主教学楼 科艺楼

一食堂 二食堂

主阶

B 系列楼 图书馆 科阶 田径场

游泳池

体育馆 翠湖

校门口

1.3、模块的划分

含有四个模块:(1)陶院地图信息 (2)陶院景点信息 (3)查找两点间最短路径 (4)退出 模板功能

(1)将陶院的地图显示在程序运用上;

(2)输入一个景点,运用程序上能够显示该景点的信息; (3)可以给游客提供两个景点的最短路径; (4)给游客提供方便。

#define N 18

#define MAX 25 #define MAXedg 50 #include #include #include #include

void clrscr() { system("cls"); }

typedef int AdjMatrix[MAX][MAX];

体育馆 游泳池 翠湖 校门口

typedef struct

{

int vexs[MAX];

AdjMatrix arcs;

}Matrix_Graph;

typedef struct

{

char name[18];

char information[1010];

struct edgenode *link;

}vexnode;

typedef struct edgenode

{

int adjvex;

int length;

char info[18];

char info2[1010];

struct edgenode *next;

}edgenode, *Node ;

typedef struct Edge

{

int lengh;

int ivex, jvex;

struct Edge *next;

} EdgeType;

typedef struct

{

int num;

char name[18];

} vertex;

typedef struct

{

vertex vexs[MAX];

int edges[MAX][MAX]; }adjmax;

void Name(int i)

switch(i)

{

case 1:

printf("1:研究生楼\n\n");break;

case 2:

printf("2:二食堂\n\n");break;

case 3:

printf("3:10#宿舍\n\n");break;

case 4:

printf("4:主教学楼\n\n");break;

case 5:

printf("5:毕业礼堂\n\n");break;

case 6:

printf("6:主阶\n\n");break;

case 7:

printf("7:一食堂\n\n");break;

case 8:

printf("8:A系列楼\n\n");break;

case 9:

printf("9:B系列楼\n\n");break;

case 10:

printf("10:图书馆\n\n");break;

case 11:

printf("11:科艺楼\n\n");break;

case 12:

printf("12:科阶\n\n");break;

case 13:

printf("13:篮球场\n\n");break;

case 14:

printf("14:田径场\n\n");break;

case 15:

printf("15:游泳池\n\n");break;

case 16:

printf("16:体育馆\n\n");break;

case 17:

printf("17:翠湖\n\n");break;

case 18:

printf("18:校门口\n\n");break;

default:

printf("景点编号输入错误!请输入1-18的数字编号!\n\n"); break;

}

}