郑州师范学院
信息科学与技术学院
《校园导游系统》课程设计报告
设计题目:
校园导游系统
班
组
组
级:
长:
员:
指导教师:
完成日期:
成绩:
摘 要
本次选做的课程设计是校园导游系统。该系统按照最短路的思想,为你寻找最优路径
并介绍相应的景点信息,该导游系统能为来访者提供景点介绍、景点查询、仿真地图和最
短路径之类的快捷指导。所谓系统,也不尽然,只是一个小小的信息提示程序。其中主要
运用到的程序、算法(Floyd 和 Dijkstra)也较简单实用。
基于数据结构的学习,我们设计了包含郑州师范学院老校区的全部景点和信息的该系
统,为新生和外来来宾提供方便。我们选择用二维数组来存储各个地点之间的距离和信息。
其中用到了两个比较经典的最短路算法:Floyd 和 Dijkstra 算法,相对来说比较简单。另
外,我们能够输出相应的仿真地图,和查询你想要了解的地点的详细信息。
I
目 录
摘 要.............................................................................................................................. I
目 录.............................................................................................................................II
1.需求分析.................................................................................................................... 3
1.1 功能分析 .............................................................................................................................. 3
1.2 设计平台 .............................................................................................................................. 3
2.概要设计.................................................................................................................... 4
2.1 抽象数据类型图的定义如下: .......................................................................................... 4
2.2 主程序: .............................................................................................................................. 4
2.3 主要程序模块: .................................................................................................................. 4
2.4 程序详细的流程图: .......................................................................................................... 5
3. 主要设计(数据结构及模块算法说明).............................................................. 6
3.1 顶点、边、和图类型: ...................................................................................................... 6
3.2 基本函数操作: .................................................................................................................. 6
3.3 函数调用模块: .................................................................................................................. 7
4.测试分析.................................................................................................................... 7
5.使用说明.................................................................................................................... 8
6.测试结果.................................................................................................................... 9
7.设计总结:...............................................................................................................11
附录 1:参考资料 ................................................................................................................... 12
附 录 2:程序源码................................................................................................................. 12
II
《郑州师范学院校园导游系统》课程设计
1.需求分析
1.1 功能分析
本次选做的课程设计是校园导游系统。本系统的目的是为用户提供路径查
询。根据用户指定的始点和终点输出相应路径,或者根据用户指定的景点输出景
点的信息。该系统为同学们提供快捷和最优的路径,本次课题要求用程序语言的
方式解决实际生活问题。此问题仅使用数据结构相应的图的知识就可以解决,也
可以解决实际问题。
1. 从郑州师范学院老校区的平面图中选取 16 个有代表性的景点,抽象成
一个无向带权图,以图中顶点表示景点,边上的权表示两地的之间的距离。
2. 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提
示信息”之后,由用户在键盘上输入演示程序中规定的运算命令:相应的输入
数据和运算结果显示在其后。
3. 程序执行的命令包括:
⑴ 构造相应的图存储相关信息;
⑵ 按照提示进行功能选择,(1:了解各个景点信息,2:按照 Floyd 算法
进行最短路查询,3:按照 Dijkstra 算法进行最短路径查询,4:打印出仿真地图,
5:退出,等);
⑶ 当用户选择退出时,结束。
4. 测试数据
(附后);
1.2 设计平台
(1)Windows2000 以上操作系统;
(2)Microsoft Visual C++ 6.0;
3
《郑州师范学院校园导游系统》课程设计
2.概要设计
2.1 抽象数据类型图的定义如下:
ADT Graph{
数据对象 View:View 是具有相同特性的数据元素的集合,称为顶
点集。
数据关系 MGr:
MGr.View[]
MGr.length={(i,j)|i,j∈View,(i,j)表示 i 和 j 之间存在路径。}
基本操作:
此程序不涉及诸如创建图、销毁图等;
}
2.2 主程序:
int main()
{
初始化;
while()
{
接受命令;
处理命令;
退出;
}
2.3 主要程序模块:
4
《郑州师范学院校园导游系统》课程设计
主函数
调 用 函 数
2.4 程序详细的流程图:
通过设计思想,可设计出如下图所示的校园导游系统总流程图:
开始
进入程序
选择相应的操作
退
出
1.查询景点信息或4.打印地图
2.3.查找最短路径
执行相关操作
进入相关算法的函数
结束
图 4.1 一元多项式总流程图
5
《郑州师范学院校园导游系统》课程设计
3.主要设计(数据结构及模块算法说明)
3.1 顶点、边、和图类型:
#define MaxViewNum 50
#define MaxRoad 1000
#define N 16
typedef struct
{
char name;
char number;
char introduce;
}Elemtype;
typedef struct
{
int num;
Elemtype date;
}View;
typedef struct
{
//景点个数最大值
//定义路径无穷大
//目前景点个数
//景点名称
//景点代号
//景点介绍
//景点编号
//景点信息
//定义景点
View view[MaxViewNum];//
unsigned int length[MaxViewNum][MaxViewNum];//
int m,n;
}MGraph;
3.2 基本函数操作:
void init(GraphType &MGr.view,int i j)
6
《郑州师范学院校园导游系统》课程设计
//景点信息函数,初始化各个景点信息数据;
void introduce(GraphType &MGraph.view,int m)
//查询景点介绍函数,若 m 存在,则返回景点编号所在信息,并返回
TRUE
//否则返回 FALSE;
void floyd(GraphType &MGr.view,int i,j,k)
//弗洛伊德算法,求两景点最短距离;
void display(GraphType &MGr.view,int a b)
//输出两景点路径及最短路径;
int shortdistance(GraphType &MGr.view,int i j)
//计算两景点最短路径函数;
void map(GraphType &MGr.view)
//景点平面图函数;
3.3 函数调用模块:
main
init
introduce
shortdistance
display
floyd
map
4.测试分析
4.1 本程序参考数据结构图相关知识编写而成,其中的景点编号设计,弗
洛伊德算法部分以及迪杰斯拉算法,平面图绘制均由组员相关知识积累而完
成。期间或自我摸索,或查找资料,或请教同学,最终实现了该系统。编程过
程不断出现各种 BUG,均能设法将其化解,算是在实践中有了不小的收获。
以下是编写过程中出现过的几个较大漏洞,直接导致程序的 BUG,在此
记录下来作为之后自省。
7