1 课题描述
(一)基本要求
1、 设计你的学校的校园平面图,所含景点10-15个。以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
2、 为来访客人提供图中任意景点相关信息的查询。
3、 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
4、 提供图中任意景点问路查询,即求任意两个景点之间的所有路径。
5、 提供校园图中多个景点的最佳访问路线查询,即求途经这多个景点的最佳路径。
6、 区分汽车线路与步行线路。
7、 设计一实用的查询界面和功能菜单。
(二)、测试数据
由读者根据实际情况设定。
2 问题分析和任务定义
题目要求我们写一个学校的导游图,并且可以查询有关景点的信息,还可以查找任意两景点的最短路径和所有路径。还要求如果要参观多个景点时,也要找出一个最优的路径。
限制条件要求我们区分出汽车路线还是步行路线。
3 逻辑设计
(1)数组
先用二维数组存储学校景点的名字、信息、距离。
(2)主函数
包括命令调用函数,查看学校全景图函数、查看学校景点信息该函数、输入程序、查询景点间距离、查找所有路径
(
4 详细设计
(1)两个二位数组分别存储校园的景点的名字,具体介绍信息。还有一个数组去存景点间的信息。
(2)具体函数
1、void chushi()//存储景点的距离
2、void menu()//菜单
3、void start()//初始页面。
4、void look()//学校的全景图
5、void mulu()//学校景点的目录
6、void ask()//关于景点信息询问函数
7、void floyed1(int s,int e)//弗洛伊德算法,求最短路
8、void shorter()//调最短路的函数
9、void bfs1(int s,int e,int p,int sum)//深搜函数
10、void all()//求两景点间的所有路径
11、void tree(int n,int m)//求多景点之间的最优路径
12、void lots()//调用函数
13、void command()//命令函数
14、int main()//主函数
5 程序编码
#include
#include
#include
#include
#include
7 结果分析
程序的空间复杂度为O(N2),时间复杂度为O(N3),主要是在求最短路用的弗洛伊德算法中。程序的运行可以判断一些非法的数据,当访问的景点不存在时会有提醒,命令不存在时也会有提醒。
8 总结
这次的程序设计主要是校园导游系统,可以查看校园全景图,可以查看景点的信息,道路也分为人行道和车行道,还可以查找两景点间的最短路径和所有路径,还可以根据想去看的所有景点推荐一个最佳路径。程序中用了最短路算法和最小生成树算法,还有深搜算法。设计的过程当中遇到了很多的问题,最后通过思考和查找资料等方法将其解决。在设计的过程当中学到了很多,也发现解决一个问题需要有耐心、恒心。通过这次程序设计,使我加深了对数据结构的理解,也提高了自己解决问题的能力。