校园导航系统课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
校园导航
课程设计报告书专业:计算机科学与技术
课程设计名称:《数据结构课程设计》
题目:校园导航问题
班级:
学号:
姓名:
同组人员:
指导老师:
完成时间:2012年2月17日
摘要
校园导航问题是基于校园中的不同的景点,从陌生人的角度,为来往的客人提供校园景点相关信息的查询以及为来往的客人提供校园中任意景点的问路查询,以便客人能用最短的时间从某一地点到达想要去的地方。大大节约了旅客参观校园的时间。
本文是采用C++作为开发语言,又最大程度上用了C语言的有关的语法。以visual c++为开发工具。旨在实现校园导航系统中,学校的简介,景点的介绍,路线查询等基本的问题。为来往客人参观校园提供方便。
关键词:C++;C;visual c++;校园导航
目录
第一章开发环境和开发工具
1.1C/ C ++语言简介
C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。
C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。
开发背景
随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。采用计算机进行校园导航已成为衡量校园数字化的重要标志。校园导航效率的好坏对于来校参观的客人和学校管理者来说都至关重要,在很大程度上影响着校园的数字化建设和学校的影响力。因此,本文所研究的校园导航系统具有一定的使用价值和现实意义。
开发环境
本文所采用的开发环境主要是基于c++的visual stadio c++。它是一个系统的集成开发环境。很适合C\C++程序的开发。我们日常的学习和生活中大多就用这个开发环境进行学习和编程。
第二章算法思想
系统需求分析
1、设计你的学校的校园平面图,所选的景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
2、为来往客人提供图中任意景点相关信息的查询。
3、为来往的客人提供图中任意景点的问路查询,即查询任意两个景点间的一条最短的简单路径。
根据以上分析和抽象可得到本系统的抽象数据类型如下:
ADT graph{
数据对象 R:V是校园中景点的集合,称为顶点集。
R={VR}
VR={
Creatgraph(&G,V,VR)
初始条件:V是图的顶点集,VR是图中边的集合。
操作结果:按V和VR的定义构造图G。
Output(G)
初始条件:图G已经存在。
操作结果:打印出图的信息
ShortestPath(G,v)
初始条件:图G已存在,v是图中的一个顶点。
操作结果:返回从v出发到图中任意顶点的最短的路径。
}ADT graph;
系统总体设计
2.2.1 系统设计目标
本文研究开发的校园导航系统用于支持来往校园参观的客人提供最省时的导航服务,有如下三个方面的目标:
1、为来往的客人提供校园的简介。
2、为来往的客人提供校园中各景点的简介,以及各景点的距离等情况。
3、为来往的客人提供到达目的地的最短的路线。
2.2.2 开发设计思想
基于以上系统设计目标,本文在开发校园导航系统时遵循了以下开发设计思想:
1、采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。
2、尽量达到操作过程中的直观、方便、实用、安全等要求。
3、系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。
2.2.3 系统功能模块设计
本系统分为四个模块:菜单模块、景点介绍模块、路径查询模块、最短路径模块。得到如图3-1所示的系统功能模块图。
图3-1系统功能模块图
算法思想描述
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、邻接矩阵建立有无向权图的算法思想:
用两个数组分别存储数据元素的信息和数据之间的关系的信息其形式描述如下:
#define Max 32767escription);
getchar();
getchar();
break;
case '2':
system("cls");
pingmu();
printf("\n\n\t\t\t请选择起点景点(1~10):");
scanf("%d",&v0);
printf("\t\t\t请选择终点景点(1~10):");
scanf("%d",&v1);
ShortestPath(v0); .\n");
getchar();
getchar();
break;
case '3':search();
break;
case'5':
PrintMGraph();
printf("\n\n\t\t\t\t请按回车键继续...\n");
getchar();
getchar();
break;
};
}while(ck!='e');
}
2.主菜单
char Menu() 校简介┃\n");
printf("\t\t┃ 2.查询景点路径┃\n");
printf("\t\t┃ 3.查询景点信息┃\n");
printf("\t\t┃ 5.查询各景点之间的距离┃\n");
printf("\t\t┃ e.退出┃\n");
printf("\t\t┃┃\n");
printf("\t\t┗━━━━━━━━━━━━━━━━━━━┛\n");
printf("\t\t\t\t请输入您的选择:");
scanf("%c",&c);
if(c=='1'||c=='2'||c=='3'||c=='5'||c=='e')
flag=0;
}while(flag);
return c;
}