- 一.问题描述
- 二.基本要求
- 三.问题分析
- 1.数据结构的选取
- 2.结构体的定义
- 3.功能分析
- 四.逻辑设计
- 1.模块划分
- 2. 抽象数据结构ADT
- 3. 模块调用关系图
- 五.物理设计
- 1.存储结构
- 2.主函数设计
- 3.景点信息查询设计
- 4.两景点间最短路径查询
- 5.函数算法框架
- 6.测试数据
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
二.基本要求- 设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介 等信息;以边表示路径,存放路径长度等相关信息。
- 为来访客人提供图中任意景点相关信息的查询。
- 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
使用无向图作为该项目的数据结构,并采用邻接矩阵作为无向图的存储结构。其中,图的顶点按照1-n编号分别用于存放校园中的n个景点的详细信息(包括景点名称,代号,简介等);以无向图的边表示两个景点之间连通,并以边的权重表示两个景点之间的路径长度。
2.结构体的定义定义一个无向图结点结构体,图中的每个结点代表校园内的一个景点,该结构体中包含该景点的详细信息——String类型的景点名称,int类型的景点代号,String类型的景点简介等。
3.功能分析1)为来访客人提供图中任意景点相关信息的查询。用户可以通过输入景点代号或者景点名称来查询对应景点的详细信息。
2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径,用户通过输入两个景点的代号并调用相应函数来输出两个景点之间的最短路径以及最短路径长度。
1)主函数模块
2)景点信息查询模块
3)两景点间最短路径查询模块
ADT 校园导游咨询
Data
校园中的各个景点及其详细信息
校园中景点两两之间的路径长度
Operation
创建无向图
初始数据:景点和邻接矩阵
功能:由给定的初始数据确定一个带权值的无向网络图
景点信息查询
输入:景点代号或景点名称
功能:查询该景点的详细信息
输出:景点详细信息
问路查询
输入:两个景点代号
功能:求出两个景点之间的最短路径
输出:两个景点之间的最短简单路径
endADT
3. 模块调用关系图
五.物理设计
1.存储结构
1)定义一个结构体作为无向图的结点类型,用于存储单个景点的相关信息。
2)定义一个上述结构体类型的数组,将所有结点存放在该数组中。
2)用一个整型的二维数组(矩阵)存储每两个结点之间的权值大小,用于表示两两景点之间的路径长度。
伪代码: 1.创建无向网络图,定义景点个数n 2.初始化n个景点的详细信息并存储在一个数组中和一个n*n的邻接矩阵 3.再提供用户界面供用户选择功能,用switch语句供用户选择 4.调用执行相应的用户选择模块3.景点信息查询设计
伪代码: 1.从键盘读取需要查询的景点的代号或景点名称 2.遍历存放所有结点的结点数组,寻找符合要求的结点 3.按照格式要求输出该景点的相关信息4.两景点间最短路径查询
伪代码: 1.从键盘读取两个景点的代号 2.编写迪杰斯特拉算法,求图G中从i顶点到其他所有顶点的最短路径 or编写弗洛伊德算法,求图G中每一对顶点之间的最短路径 3.输出步骤2中算法返回的最短路径 4.计算并输出最短路径的长度5.函数算法框架 6.测试数据
1)在江苏科技大学地图上随机选取11个景点并进行编号如下图:
2)景点标号对应景点名称如下表:
| 标号 | 景点名称 |
|---|---|
| 1 | 江苏科技大学北门 |
| 2 | 海韵湖 |
| 3 | 文理大楼 |
| 4 | 经世楼 |
| 5 | 图书馆 |
| 6 | 三号组团 |
| 7 | 西食堂 |
| 8 | 西操场 |
| 9 | 文体中心 |
| 10 | 东操场 |
| 11 | 东食堂 |
3)各个景点之间是否联通以及联通景点之间的路径长度可以自行决定,下面给出本人随意作出的带权无向图。



