数据结构课程设计实验报告《校园导游咨询系统》内含程

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

上海电力学院

数据结构C++课程设计

题目: 校园导游咨询

学生姓名:

学号:

院系:

专业年级:

2011年7月1日

一、设计题目

校园导游咨询;

1、实验目的

(1)熟练掌握图的创建及遍历基本操作算法。

(2)熟练掌握最短路径算法。

(3)利用图的遍历和最短路径求解技术,设计一个校园导游程序,为来访的客人提供各种信息查询服务。

2、实验内容

【问题描述】

设计一个校园导游程序,为来访的客人提供各种信息查询服务。

【基本要求】

(1)设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

(2)为来访客人提供图中任意景点相关信息的查询。

(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一个最短的简单路径。【测试数据】

由读者根据实际情况指定。

【实现提示】

一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。顶点和边均含有相关信息。【选作内容】

(6)扩充每个景点的邻接景点的方向等信息,使得路径查询结果能提供详尽的导向信息。

二、小组成员分工说明

三、需求分析

1)运行环境(软、硬件环境)

硬件环境:windows2000、windows XP、windows7 皆可;

软件环境:Microsoft (R) Developer Studio (2)

2)输入的形式和输入值的范围

输入形式:整形数据(景点代号、路径长度、地图上的方位信息),字符串(景点名称及简介);

输入值范围:

景点代号为:整形0~17(共18个景点)

路径长度为:整形1~10(两景点间距离,以近似1::100m比例换算,最远1km)

景点名称字符串长度:整形1~15(景点名称)

字符串长度为:字符数组1~50(对景点进行简要介绍)

景点在地图方位图上的位置:整形0~10

3)输出的形式描述

景点代号、景点名称、信息的关联以cout形式输出,告知来访客人,以便查询;

景点信息查询结果的输出形式为cout字符串;

两景点间最短路径输出形式为cout字符串符号、以及嵌套的printroad()函数以显示路径信息及方位信息,方便客人获取最佳路线;

4)功能描述

(1)设计学校的校园平面图,所含景点18个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

(2)为来访客人提供图中任意景点相关信息的查询。

(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一个最短的简单路径,并提示出各景点之间的方位关系,行走方向。

5)测试数据

输入功能选择号码,进入各项功能界面;根据功能界面的提示输入所要查询的内容:如,在查询景点功能界面需要根据提示输入所需查询的景点代号;在问路查询功能界面需要根据提示输入起点终点的景点代号。

四、概要设计

1)抽象数据类型定义描述

(对各类的成员及成员函数进行抽象描述,参见书或ppt及实验)

#include

using namespace std;

const int MaxSize=18;

const int INFINITY=65535;//最大值无穷

class direction;

template class MGraph;

template

class VertexNode//定义景点结点,存储景点信息{

friend class MGraph;

public:

int vex;//景点名称

T vexname;//景点名称

T vexinf;//景点信息

direction dir;//存放景点方位信息的direction类的dir。

};

class direction

{

public:

int ln;//存放在方向图中的横坐标,表示东西

int col;//存放在方向图中的纵坐标,表示南北};

template

class MGraph//定义无向图的邻接矩阵

{

public:

MGraph();

//构造函数,初始化具有n个顶点的图

void printvexname();//显示所有景点及景点代号

void printvexinf(int i);//显示代号为i景点的名称及信息

void printroad(int i,int j);//显示景点i~j 的最短路径方案信息

void printdir(int i,int j);//显示景点i到j 的方向信息,如“向东100m,向南200m”

VertexNode adjlist[MaxSize]; //存放景点全部信息的景点类数组

int vertexNum,arcNum; //图的顶点数和边数void Root(int p,int q);//递归寻找pq间的最

短路径

int Path[MaxSize][MaxSize],Dist[MaxSize][MaxSize];//创建Path和Dist分别存放两点间最短路径的前驱节点,两点间最短路径长度

int Line[MaxSize];//Line存放路径

int kkk;//在floyed算法中,做Line[]数组的标记

private:

T vertex[MaxSize]; //存放图中顶点的数组

int arc[MaxSize][MaxSize];//存放图中边的数组

};

2)功能模块设计(如主程序模块设计)

int funcchoice()//系统功能选择页面

{

int choice;

cout<<"=============================================================="<

cout<<" 欢迎进入校园导游咨询平台"<

cout<<" 1--显示校园所有景点信息"<

cout<<" 2--查询校园景点信息"<

cout<<" 3--问路查询系统"<

cout<<" 4--退出导游资讯平台"<

cout<<"=============================================================="<

cout<<"请输入要选择的功能号:";

cin>>choice;

return choice;

}

3)模块层次调用关系图

相关文档
最新文档