校园导航系统课程设计文档格式.doc
《校园导航系统课程设计文档格式.doc》由会员分享,可在线阅读,更多相关《校园导航系统课程设计文档格式.doc(32页珍藏版)》请在冰豆网上搜索。
关键词:
C++;
C;
visualc++6.0;
目录
目录 1
第一章 开发环境和开发工具 1
1.1 C/C++语言简介 1
1.2开发背景 1
1.3开发环境 1
第二章算法思想 2
2.1系统需求分析 2
2.2系统总体设计 3
2.2.1系统设计目标 3
2.2.2开发设计思想 3
2.2.3系统功能模块设计 3
2.3算法思想描述 4
第三章 算法实现 6
3.1数据结构 6
3.2程序模块 6
3.3各模块之间的调用关系上 12
3.4源程序代码 12
第四章 测试与分析 22
4.1测试数据选择 22
4.2测试结果分析 26
总结 27
心得体会 28
参考文献 29
第一章开发环境和开发工具
1.1C/C++语言简介
C语言是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它由美国贝尔研究所的D.M.Ritchie于1972年推出。
1978后,C语言已先后被移植到大、中、小及微型机上。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。
具体应用比如单片机以及嵌入式系统开发。
C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。
它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。
1.2开发背景
随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。
采用计算机进行校园导航已成为衡量校园数字化的重要标志。
校园导航效率的好坏对于来校参观的客人和学校管理者来说都至关重要,在很大程度上影响着校园的数字化建设和学校的影响力。
因此,本文所研究的校园导航系统具有一定的使用价值和现实意义。
1.3开发环境
本文所采用的开发环境主要是基于c++的visualstadioc++。
它是一个系统的集成开发环境。
很适合C\C++程序的开发。
我们日常的学习和生活中大多就用这个开发环境进行学习和编程。
第二章算法思想
2.1系统需求分析
1、设计你的学校的校园平面图,所选的景点不少于10个。
以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;
以边表示路径,存放路径长度等相关信息。
2、为来往客人提供图中任意景点相关信息的查询。
3、为来往的客人提供图中任意景点的问路查询,即查询任意两个景点间的一条最短的简单路径。
根据以上分析和抽象可得到本系统的抽象数据类型如下:
ADTgraph{
数据对象R:
V是校园中景点的集合,称为顶点集。
R={VR}
VR={<
v,w,>
|v,w∈V且P(v,w),(v,w)表示从景点v到景点w的路径长度
基本操作P:
Creatgraph(&
G,V,VR)
初始条件:
V是图的顶点集,VR是图中边的集合。
操作结果:
按V和VR的定义构造图G。
Output(G)
图G已经存在。
打印出图的信息
ShortestPath(G,v)
图G已存在,v是图中的一个顶点。
返回从v出发到图中任意顶点的最短的路径。
}ADTgraph;
2.2系统总体设计
2.2.1系统设计目标
本文研究开发的校园导航系统用于支持来往校园参观的客人提供最省时的导航服务,有如下三个方面的目标:
1、为来往的客人提供校园的简介。
2、为来往的客人提供校园中各景点的简介,以及各景点的距离等情况。
3、为来往的客人提供到达目的地的最短的路线。
2.2.2开发设计思想
基于以上系统设计目标,本文在开发校园导航系统时遵循了以下开发设计思想:
1、采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。
2、尽量达到操作过程中的直观、方便、实用、安全等要求。
3、系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。
2.2.3系统功能模块设计
本系统分为四个模块:
菜单模块、景点介绍模块、路径查询模块、最短路径模块。
得到如图3-1所示的系统功能模块图。
主菜单
校园导航系统
菜单
景点介绍
路径查询
最短路径
查询子菜单
退
出
学校简介
景点简介
各景点间距离
最短路径长度
最短路线
图3-1系统功能模块图
2.3算法思想描述
1、迪杰斯特拉算法思想:
按路径长度递增次序产生最短路径算法:
把V分成两组:
(1)S:
已求出最短路径的顶点的集合
(2)V-S=T:
尚未确定最短路径的顶点集合
将T中顶点按最短路径递增的次序加入到S中,
保证:
(1)从源点V0到S中各顶点的最短路径长度都不大于
从V0到T中任何顶点的最短路径长度
(2)每个顶点对应一个距离值
S中顶点:
从V0到此顶点的最短路径长度
T中顶点:
从V0到此顶点的只包括S中顶点作中间
顶点的最短路径长度
依据:
可以证明V0到T中顶点Vk的最短路径,或是从V0到Vk的
直接路径的权值;
或是从V0经S中顶点到Vk的路径权值之和
2、邻接矩阵建立有无向权图的算法思想:
用两个数组分别存储数据元素的信息和数据之间的关系的信息其形式描述如下:
#defineMax32767//最大值∞
#defineNUM11//最大顶点个数
typedefstructArcCell{
intadj;
//相邻接的景点之间的路程
char*info;
}ArcCell;
//定义边的类型
typedefstructVertexType{
intnumber;
//景点编号
char*sight;
//景点名称
char*description;
//景点描述
}VertexType;
//定义顶点的类型
typedefstruct{
VertexTypevex[NUM];
//图中的顶点,即为景点
ArcCellarcs[NUM][NUM];
//图中的边,即为景点间的距离
intvexnum,arcnum;
//顶点数,边数
}MGraph;
//定义图的类型
其中用二维数组表示途中个边之间的关系。
第三章算法实现
3.1数据结构
1、顶点、边和图类型:
//定义图的类型
3.2程序模块
1.main函数
voidmain()//主函数
{intv0,v1;
charck;
system("
colorcb"
);
CreateUDN(NUM,11);
do
{
ck=Menu();
switch(ck)
{
case'
1'
:
introduce();
printf("
\n\n\t\t\t%-25s\n\n"
G.vex[0].description);
getchar();
break;
case'
2'
system("
cls"
pingmu();
\n\n\t\t\t请选择起点景点(1~10):
"
scanf("
%d"
&
v0);
\t\t\t请选择终点景点(1~10):
v1);
ShortestPath(v0);
//计算两个景点之间的最短路径
output(v0,v1);
//输出结果
\n\n\t\t\t\t请按回车键继续...\n"
3'
search();
5'
PrintMGraph();
};
}while(ck!
='
e'
}
2.主菜单
charMenu()//主菜单//
{
charc;
intflag;
do{
flag=1;
\n\t\t┏━━━━━━━━━━━━━━━━━━━┑\n"
\t\t┃┃\n"
\t\t┃1.学校简介┃\n"
\t\t┃2.查询景点路径┃\n"
\t\t┃3.查询景点信息┃\n"
\t\t┃5.查询各景点之间的距离┃\n"
pr