校园导航系统
- 格式:doc
- 大小:166.00 KB
- 文档页数:24
《校园导航系统》课程设计报告姓名:学号:班级:网络专业:网络工程指导教师:时间:2目录摘要 (1)1.题目 (1)2.概要设计 (1)3.调试分析 (15)4.参考文献 (15)1.题目校园导航系统设计一个校园导游程序,后台操作:1、操作员信息管理如修改密码等2、能根据学校的规模进行添加景点信息、修改景点信息等功能,3、若临时有交通管制,能进行交通管制的设置和撤销(如某某时间段那条路进行那个方向的交通管制等)前台为来访的客人提供各种信息查询服务:1、设计学校的校园平面图,所含景点不少于10个。
以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
2、为来访客人提供图中任意景点相关信息的查询。
3、提供途中任意景点问路查询,即求任意两个景点间的一条最短的简单路径。
1.1 需求分析设计一个校园导航系统,导航系统又分为游客和管理员。
要进行管理操作还是游客操作由用户自己选择管理员的操作:修改景点信息、增加景点信息、交通管制等。
游客的操作:查看景点信息和查最短路径。
2.概要设计景点的信息由一维数组存放,景点关系由二维数据来存放景点的信息和关系从文件读取,进而初始化typedef struct //保存单个景点信息的结构体{char code[10]; //存放景点代码char name[20]; //存放景点名称char instruction[100]; //存放景点简介}ViewPoint;typedef struct //存放景点关系的二维数组{int edges[MAXV][MAXV]; //两景点间的距离int number; //景点的数量ViewPoint V[MAXV]; //保存景点信息的结构体数组}MGraph;2.1 流程图↓↓↓↓↓↓↓2.2详细设计void MainMenu(); 主菜单,写界面操作的函数。
void UserMenu(); 游客菜单,判断是否非法输入,不会死循环。
面向智慧校园的室内定位与个性化导航系统设计室内定位与个性化导航系统是在智慧校园背景下的一项创新技术,旨在为用户提供精准的室内定位和个性化导航服务。
随着智能手机和移动互联网的普及,越来越多的人开始关注室内定位技术的应用,尤其是在大型建筑物和复杂的室内环境中。
本文将探讨面向智慧校园的室内定位与个性化导航系统的设计。
首先,室内定位技术是实现室内导航的基础。
传统的室内定位技术主要包括无线局域网(Wi-Fi)定位、蓝牙定位、超声波定位等。
在设计面向智慧校园的室内定位系统时,需要综合考虑多种定位技术的优缺点,并根据实际情况选择最适合的定位方案。
例如,Wi-Fi定位技术在校园环境中通常具备稳定性和较高的定位精度,因此可以作为室内定位系统的主要技术手段之一。
其次,个性化导航是实现室内定位与导航系统的一个重要功能。
传统的导航系统通常只能提供最短路径或最快路径的导航服务,而个性化导航则是根据用户的个人喜好和需求,提供符合用户习惯的导航路线。
面向智慧校园的室内个性化导航系统设计中,可以通过用户的历史定位数据、个人兴趣标签、社交网络等多种方式获取用户的个性化偏好,并根据这些信息为用户推荐个性化的导航路线。
例如,对于喜欢慢跑的用户,系统可以推荐室内跑道,并提供相应的导航服务。
另外,室内定位与个性化导航系统应该具备实时性和可扩展性。
在大型的智慧校园中,学生和教职员工的位置和需求可能会频繁发生变化,因此系统需要能够实时获取用户的位置信息,并根据实时数据进行导航计算和路线规划。
同时,系统应该具备良好的可扩展性,可以适应不同规模的校园环境,支持多个用户同时使用。
为了实现这一目标,可以采用云计算和分布式计算等技术,利用大规模的数据存储和处理能力来支持系统的实时性和可扩展性。
此外,室内定位与个性化导航系统还应该具备友好的用户界面和人机交互方式。
在设计系统界面时,需要考虑用户的使用习惯和操作便捷性。
一种常见的方式是采用地图和标识的形式展示导航路线,同时提供语音导航和振动提示等多种方式来引导用户。
课程设计校园导航系统一、课程目标知识目标:1. 学生能理解校园导航系统的基本概念,掌握其构成要素和应用场景。
2. 学生能描述校园导航系统中常用的定位技术和路径规划算法。
3. 学生了解地理信息系统(GIS)在校园导航系统中的作用,并掌握基本操作方法。
技能目标:1. 学生能够运用所学知识,设计并实现一个简单的校园导航系统。
2. 学生能够运用GIS软件进行地图数据处理、分析和可视化。
3. 学生能够通过小组合作,解决实际校园导航中的问题,提高团队协作能力。
情感态度价值观目标:1. 学生对校园导航系统产生兴趣,认识到科技在生活中的重要作用。
2. 学生在探究过程中,培养勇于尝试、不断优化的科学精神。
3. 学生通过解决实际问题,增强对学校环境的责任感,提高爱护公共设施的意识。
本课程针对初中年级学生,结合信息技术和地理学科,以实用性为导向,培养学生运用科技手段解决实际问题的能力。
课程设计注重理论与实践相结合,充分考虑学生的年龄特点和认知水平,通过小组合作、动手实践等方式,激发学生兴趣,提高学生的综合素养。
在教学过程中,教师需关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
二、教学内容本章节教学内容主要包括以下几部分:1. 校园导航系统概述:介绍校园导航系统的基本概念、构成要素和应用场景,对应教材中“地理信息系统及其应用”章节。
2. 定位技术:讲解全球定位系统(GPS)、无线局域网(WLAN)等定位技术在校园导航系统中的应用,结合教材中“定位技术及其发展”章节。
3. 路径规划算法:介绍Dijkstra、A*等路径规划算法,分析其在校园导航系统中的作用,对应教材中“路径规划与优化”章节。
4. 地理信息系统(GIS)操作:学习GIS软件的基本操作,包括地图数据处理、分析和可视化,结合教材中“GIS软件与应用”章节。
5. 实践项目:设计并实现一个简单的校园导航系统,包括地图数据采集、路径规划、导航功能等,分阶段完成,对应教材中“实践项目与应用”章节。
校园导航系统的经验与体会
该程序实用性很强,也很富有创意,地图制作的很不错。
但其中也有些不足之处:(1)打开界面时,地点图片为空,影响美观,建议设置默认图片。
(2)查询下一地点时,仍保留了之前查询的路径,建议先清除,再显示本次查询的路径。
(3)建议在查询的同时增加一些对地点的介绍,可增进外校人员对学校的了解。
(4)可适量增加代码,实现地图的放大功能。
袁雪:经过了对校园导航系统的使用,觉得有一些意见……优点是便于操作,功能强大,导航能力也能很好的帮助人指出路线。
缺点是界面不够美化.
杨霏:首先感觉校园导航很棒,能将学过的算法真正的实现,并且能够使用。
在选择地点的时候,也很人性化的将地点的图片展示出现,我觉得这点事很不错的。
当然也有些小瑕疵,比如说在对路线的描述中,加入方向会更好一些。
在对路线的绘制结果中,有些地方有些欠缺,不是很准确。
总体来说,是很不错的,希望继续努力。
南京农业大学校园导航系统系统介绍本系统主要实现的功能是将工学院的具体建筑物和路线结合二维和三维虚拟场景形象、直观的展现在校园导航系统中,以便迅速找到目的地。
通过系统提供的功能按钮可以进行放大、缩小、旋转,两地距离查询,定容性查询(如50米,100米内查找相应范围内的对象),最佳路径选择,基础设施选址分析等等。
用户可以简单快捷的获取所需要的地理信息,实现校园基本建筑物查询(教学楼、学生公寓、食堂、浴室、超市、实验楼等基本地物)等功能。
在二维地图的基础上采用了三维建模的方法,使该电子导航地图既具有二维的地图的全面性,又具备了三维的直观仿真效果,使用者可以在“二维”、“三维”两种地图模式任意切换。
融入的三维地图打破了传统的平面地图加文字的地图模式,使系统更具直观性和开放性。
本地信息与人性化的查询功能的结合也使整个校园导航系统活跃起来。
系统主界面系统功能介绍基本操作:通过系统工具栏提供的功能按钮,例如空选、放大、缩小、自由缩放、漫游、全副显示、刷新等,用户可以便捷的操作地图并获得需求的地理信息。
地图工具:包括了距离测量、面积测量、地图输出,以及打印窗口。
地图查询:该模块包括查询定位和周边查询。
通过查询定位功能可以实现对校园具体地物在地图上的定位。
通过周边查询功能可以实现对某一地物周边设定的范围内其它设施的查询,查询后的信息会直观的显示在地图窗口中和系统底部的查询显示窗口中。
地图分析:该模块包括路径分析和基础设施选址分析。
在路径分析功能中提供了2种选择分析地点的方法(列表选择和鼠标点选),能够在地图窗口中显示最优行程路线。
基础设施选址分析是为用户在校园中新建设施选址提供的分析工具,用户在地图上点选地址并设置设施点的服务半径,即可为用户分析显示所选择的设施点的覆盖面。
三维操作:提供了常用的三维操作,包括空操作、三维放大、三维缩小、三维平移和三维环游等功能,通过三维地图的操作可以直观的将校园环境展现给用户。
管理信息:提供了用户信息管理的功能,通过此功能可以增加、删除用户,确保了系统使用的安全。
Tips:这个系统是学校《⼤数据应⽤开发语⾔》的⼤作业,本身想直接在⽹上copy⼀下,结果发现校园导航系统的c/java等版本很多很多,⽽python版本⾮常之少,于是只能⾃⼰写⼀个简单版本的了。
包含三个模块:查询学校地图模块、查询两点最短路径、查询多路径信息。
@TOC前⾔随着社会经济的发展,政府对教育建设的投资越来越⼤。
众多⾼校开始扩建⼯程,校园占地⾯积⼤,楼宇种类多。
体现出国家对教育的重视程度逐年上升,科教兴国战略时⾸当其冲。
⾯对越来越⼤的学校,“迷路”成为众多⾼校新⽣不得⾯临的话题,这便需要校园导航系统来解决师⽣如何查询楼宇、如何快速到达⽬的地问题。
本系统采取基于Floyd算法来完成查询两点最短路径、查询多路径信息等问题。
⼀、题⽬功能描述:设计你的学校的校园景点,所含景点不少于10个.有景点名称,代号,简介等信息; 为来访客⼈提供图中任意景点相关信息的查询.测试数据:由读者根据实际情况指定.⼆、需求分析1.要求(1)⽤Python语⾔实现程序设计;(2)进⾏相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求⽤函数的形式实现;(5)界⾯友好(良好的⼈机互交),程序要有注释。
2.运⾏环境(1)MacOS Big Sur 11.6.2系统(2)PyCharm CE 20213.开发语⾔⼤数据开发语⾔(Python)三、概要设计1.系统流程图2.函数流程图四、详细设计1.类的分析与设计定义⼀个Attractions 类来实现输⼊和存放景点编号、名称。
定义⼀个Campus 类来存放校园⽆向图的边和节点,并给各结点定义名称。
定义⼀个Passing 类来存放路径栈、路径数、栈顶数class Attractions : num = 0 #景点编号 name = '' #景点名称class Campus :att = ["","南⼤⻔","⾏政楼","三号楼","四号楼","图书馆","⻄⼤⻔","7号楼","⼋号楼","九号楼","操场","体育馆","⼤操场"] #景点 edges = [[INF ] * M ] * M #边 Nodes_Num = 0edges_Num = 0 #总结点数,总边数class passing():pathStack= [[0]*M] ##路径栈top=0count=0 #栈顶位置,路径数visited= [[False]*M] #判断是否已经经过定义⼀个DIS类来存放path路径和distence⽬的地。
校园导航问题【问题描述】以我校为例,设计一个校园导航系统,主要为来访的客人提供信息查询。
系统有两类登陆账号,一类是游客,使用该系统方便校内路线查询;一类是管理员,可以使用该系统查询校内路线,可对校园景点路线可编辑。
【需求分析】设计学校的平面图,至少包括10个以上景点(场所),每两个景点间可以有不同道路,且路长也可能不同,找出在游人所在景点到其他景点的最短路径,或游人输入的任意两个景点的最短路径。
要求:(1)以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,路径权重为路径长度。
(2)为游人提供任意景点相关信息查询。
(3)为游人提供任意景点的问路查询,即任意两个景点之间的最短路径。
实现提示:一般情况下,校园道路是双向通行的,可设计校园平面图是一个无向图。
顶点和边均含有相关信息。
选做内容:(1)提供图的编辑功能:增删景点;增删道路;修改已有信息等。
(2)校园导游图的仿真界面。
【概要设计】1. 抽象数据类型定义:(1)景点顶点名称代号顶点信息简介Typedef struct{Int num;Char name[100];Char features[200];} VertexType;(2)图的存储结构:Typedef int EdgeType;Typedef struct{VertexType vexs[MaxVertexNum];EdgeType edges[MaxVertexNum][MaxVertexNum];Int n, e;} MGraph;2 主要功能模块(1)创建图的邻接矩阵存储结构void create( Graph *G );(2)浏览图中任一景点介绍VertexType GetVex(Graph *G, int v);(3)修改景点信息void PutVertex(Grahp *G, int v);(4)增加景点信息void InsertVertex(Graph*G, VertexType v);(5)删除景点信息void DeleteVertex(Graph *G, VertexType v);(6)增加道路void InsertArc(Graph *G,int v, int w);(7)删除道路void DeleteArc(Graph*G ,int v,int w);(8)查找某一景点到其他景点的最短路径void ShortestPath(Graph *G, int P[ ], int D[ ]); (9)查找任一两个景点之间的最短路径。
校园导航定位系统课程设计一、课程目标知识目标:1. 理解并掌握校园导航定位系统的基本原理与功能;2. 学习并运用相关的地理信息系统(GIS)知识,进行校园地图的解读与分析;3. 了解全球定位系统(GPS)及其在校园导航中的应用。
技能目标:1. 能够运用校园导航定位系统,进行校园内位置信息的查找与路径规划;2. 培养学生团队协作能力,通过小组讨论、分享,共同解决校园导航中遇到的问题;3. 提高学生的实际操作能力,学会使用相关设备和技术进行定位与导航。
情感态度价值观目标:1. 培养学生对地理信息科学的兴趣,激发学生探索未知、勇于创新的精神;2. 强化学生的环保意识,倡导绿色出行,提高学生对校园环境的保护意识;3. 培养学生热爱学校、关爱他人的情感,提高学生社会责任感。
本课程针对中学生设计,结合学科特点,以实用性为导向,充分考虑学生年龄特点和认知水平。
通过本课程的学习,使学生能够将所学知识应用于实际生活,提高解决问题的能力,同时培养良好的情感态度价值观。
课程目标具体、可衡量,为后续教学设计和评估提供明确方向。
二、教学内容1. 校园导航定位系统原理介绍- 导航定位技术的发展背景与现状- 校园导航定位系统的组成与工作原理2. 地理信息系统(GIS)知识- 校园地图的基本要素与解读- GIS在校园导航中的应用3. 全球定位系统(GPS)应用- GPS的原理与功能- GPS在校园导航中的实际应用4. 实践操作与案例分析- 校园导航定位设备的认识与使用- 实际操作:校园内路径规划与导航- 案例分析:解决校园导航中遇到的问题5. 团队协作与讨论分享- 小组讨论:探讨校园导航定位系统的优缺点- 分享经验:介绍个人在校园导航中的实用技巧教学内容依据课程目标,结合教材章节,确保科学性和系统性。
教学大纲明确,教学内容安排合理,注重理论与实践相结合,充分调动学生的积极性与参与度。
通过本章节的学习,使学生深入理解校园导航定位系统的相关知识,提高实际操作能力。
如何设计一个方便的校园网站导航系统校园网站导航系统在现代高校生活中起着至关重要的作用,它不仅能够为师生提供方便快捷的网络服务,还能提升整个校园信息化管理系统的效率。
然而,设计一个方便的校园网站导航系统并非易事,需要综合考虑用户需求、信息分类和页面布局等因素。
本文将从这些方面展开讨论,以指导校园网站导航系统的设计。
一、用户需求分析在设计校园网站导航系统时,首先要了解和分析用户的需求,以便提供个性化的服务。
校园网站导航的用户主要是师生,他们的需求可以从以下几个方面考虑:1.1. 信息检索快捷性:用户可以通过导航系统迅速找到所需信息。
1.2. 界面友好性:导航系统的界面应简洁明了,布局合理,操作便捷,用户易于上手。
1.3. 个性化定制:用户可以根据自身需求设置个性化导航页面,将常用功能和网站链接添加到导航菜单中。
1.4. 多端适配性:导航系统应同时适配PC端和移动端,确保在不同设备上都有良好的用户体验。
二、信息分类和组织校园网站涵盖的信息繁多,需要进行合理的分类和组织,以便用户能够快速准确地找到所需信息。
以下是一些常见的信息分类:2.1. 教务信息类:包括课程安排、考试通知、成绩查询等。
2.2. 学生生活类:包括学生社团、校园活动、校内新闻等。
2.3. 学术研究类:包括学术期刊、科研成果、项目申报等。
2.4. 教职工服务类:包括办公系统、教务管理、人事流程等。
在设计导航页面时,可以采用多级分类菜单的方式,将相关的信息分类整合到相应的菜单中,使用户可以通过简单的点击实现信息访问。
三、页面布局和导航方式页面布局和导航方式是设计一个方便的校园网站导航系统的关键因素之一。
下面列举几种常见的页面布局和导航方式:3.1. 顶部导航栏:在网页顶部固定导航栏,横向展示主要模块和功能分类,方便用户在不同页面之间的切换。
3.2. 侧边导航栏:将主要模块和功能分类以垂直方式展示在网页侧边栏中,方便用户在当前页面内的导航操作。
目录摘要 (2)正文 (3)1设计目的及要求 (3)2 设计原理 (3)2.1 C/C++语言简介 (3)2.2 开发环境 (3)2.3系统模块分析 (4)3设计内容 (4)3.1方案设计与论证 (4)3.2数据结构描述与定义 (5)3.3主要函数的说明 (6)3.4设计结果验证 (11)总结与致谢 (14)参考文献 (15)附录 (16)摘要与传统的地图相比较,地理信息系统有着不可比拟的优势,信息量大,切换方便,可扩展性强。
校园导航问题是基于校园中的不同的景点,从陌生人的角度,为来往的客人提供校园景点相关信息的查询以及为来往的客人提供校园中任意景点的问路查询,以便客人能用最短的时间从某一地点到达想要去的地方。
大大节约了旅客参观校园的时间。
本文是采用C++作为开发语言,又最大程度上用了C语言的有关的语法。
以visual c++6.0为开发工具。
旨在实现校园导航系统中,学校的简介,景点的介绍,路线查询等基本的问题。
为来往客人参观校园提供方便。
关键字:visual c++6.0 ;校园导航系统;正文1设计目的及要求1. 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3. 独立完成,提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
5. 设计学校平面图,至少包括10个以上场所,校园导航系统能自动找出校园平面图中任意起始点与终点的最佳路径(最短路径)。
求并输出路径及路径长度。
2 设计原理2.1 C/C++语言简介C语言是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它由美国贝尔研究所的D.M.Ritchie于1972年推出。
1978后,C语言已先后被移植到大、中、小及微型机上。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。
具体应用比如单片机以及嵌入式系统开发。
C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。
它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。
2.2 开发环境随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。
采用计算机进行校园导航已成为衡量校园数字化的重要标志。
校园导航效率的好坏对于来校参观的客人和学校管理者来说都至关重要,在很大程度上影响着校园的数字化建设和学校的影响力。
因此,本文所研究的校园导航系统具有一定的使用价值和现实意义。
2.3系统模块分析采用工程思想,将系统共分一下几个模块:数据结构定义模块、导航图建立模块、求最短路径模块、主菜单;下面是具体各功能简单的实际应用:➢数据结构定义模块:模块定义了导航图中各个节点的基本结构类型,主要采用邻接矩阵的存储结构来真实反映各节点到其他所有节点的路径长度(权值大小)。
➢导航图建立模块:采用上述结构体类型对导航图中每个节点进行赋值。
包括:各定点的名称(地点名),各个节点到其他所有节点的真实路径长度(赋权值)。
➢求最短路径模块:本模块的基本思想是采用迪杰斯特拉算法求最短路径。
次模块是本校园导航系统的核心模块,求两点间的最短路径与求一点到其他所有点最短路径两个子功能均是在最短路径算法模块的基础上进行调用,进而实现导航功能。
➢主菜单:主菜单中主要是显示导航图中的所有导航节点,能够快速方便的对各个地点进行导航。
以上程序的几个模块,构成了校园导航系统的基本组成部分,程序运行良好,达到了课程设计的基本要求。
3设计内容3.1方案设计与论证校园旅游模型是由各个景点和景点以及场所和场所之间的路径组成的,所以这完全可以用数据结构中的图来模拟。
用图的结点代表景点或场所,用图的边代表景点或场所之间的路径。
所以首先应创建图的存储结构。
结点值代表景点信息,边的权值代表景点间的距离。
结点值及边的权值采用图存储。
本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。
计算路径长度,最短路线和最佳路径时可分别用迪杰斯特拉(Dijkastra)算法和哈密而顿回路算法实现。
最后用switch选择语句选择执行浏览景点信息或查询最短路径和距离。
图1:山东建筑大学重要平面图3.2数据结构描述与定义1、结构体的定义:typedef struct VertexType{int number;char *sight;}VertexType;typedef struct{VertexType vex[NUM];int arcs[NUM][NUM];int vexnum;2、常量的定义:#define Max 32767#define NUM 13、各个函数的定义:void CreateMGraph(int v) //创建图的函数,其中v表示图中的顶点数void Map() //地图展示函数,用于输出山东建筑大学的平面简略图char Menu() //主菜单显示于操作界面void Info() //资料介绍函数,用于当用户选择查询地点资料时输出地点的资料信息void Dijkstra(int num) //迪杰斯特拉函数void Display(int sight1,int sight2) //地图展示函数void main() //主函数的定义3.3主要函数的说明图:主函数对各个函数的调用#define Max 32767 //用Max来表示权值为此时的两点间直接不可达#define NUM 15 //选取了学校的十七个地点用数组存储,其中数组第一个元素不存储地点以方便操作typedef struct VertexType{int number;char *sight;}VertexType; //定义顶点的结构体类型,number表示顶点编号,字符数组表示顶点的名称typedef struct{VertexType vex[NUM];int arcs[NUM][NUM];int vexnum;}MGraph; //定义图的结构体类型,vex[NUM]数组存储顶点,arcsp[NUM][NUM]矩阵存储边的权值,vexnum表示顶点的个数MGraph G;{生成G表示结构体变量MGraph}int P[NUM][NUM]; //定义全局变量P[NUM][NUM]存储点之间的最短路径long int D[NUM]; //定义全局变量D[NUM]存储点之间最短路径的权值void Dijkstra(int num) //通过迪杰斯特拉算法求num点到其余点的最短路径,并将最短路径保存在数组P[NUM][NUM]中,将最短路径的权值保存在数组D[NUM]中{int v,w,i,t;int final[NUM];int min;for(v=1;v<NUM;v++){final[v]=0; //置空最短路径终点集D[v]=G.arcs[num][v]; //置初始的最短路径长度for(w=1;w<NUM;w++)P[v][w]=0; //置空最短路径if(D[v]<32767){P[v][num]=1;P[v][v]=1;}}D[num]=0;final[num]=1; //初始化num顶点属于S集for(i=1;i<NUM;++i) //开始循环,每次求得num到某个顶点的最短路径,并添加到S 集{min=Max; //min为当前所知的num到顶点的最短距离for(w=1;w<NUM;++w)if(!final[w]) //w顶点在V-S集中if(D[w]<min){v=w;min=D[w];}final[v]=1; //与num相距最近的顶点并入S集for(w=1;w<NUM;++w) //更新最短路径if(!final[w]&&((min+G.arcs[v][w])<D[w])) //修改D[w]和P[w],w在V-S集中{D[w]=min+G.arcs[v][w];for(t=0;t<NUM;t++)P[w][t]=P[v][t];P[w][w]=1;}}}char Menu() //主菜单显示于操作界面从而让用户选择查询路径功能或者查询地点信息功能char c;int flag; //定义标志flag确定循环条件do{flag=1;Map();printf("\t\t 1.查询地点路径 \n");printf("\t\t 2.地点信息简介\n");printf("\t\t e.退出 \n");printf("\t *************山东建筑大学*****\n");printf("\t\t\t请输入您的选择:");scanf("%c",&c);if(c=='1'||c=='2'||c=='e')flag=0;}while(flag);return c;}void Display(int sight1,int sight2) //输出函数用于通过数组P[NUM][NUM]提取出从点sight1到点sight2的最短路径,从D[NUM]中输出点sight1到点sight2的最短路径的权值{int a,b,c,d,q=0;a=sight2;if(a!=sight1){printf("\n\t从%s到%s的最短路径是",G.vex[sight1].sight,G.vex[sight2].sight);printf("\t(最短距离为 %dm.)\n\n\t",D[a]); //从D[NUM]中提取出sight1到sight2的最短距离的权值输出printf("\t%s",G.vex[sight1].sight);d=sight1;for(c=0;c<NUM;++c){P[a][sight1]=0;for(b=0;b<NUM;b++){if(G.arcs[d][b]<32767&&P[a][b]){printf("-->%s",G.vex[b].sight); //通过P[NUM][NUM]确定sight1到sight2的最短路径q=q+1;P[a][b]=0;d=b;if(q%8==0) printf("\n");}}}}}void main() //主函数{int v0,v1;char e;char ck;CreateMGraph(NUM);Do //用do while循环确保循环至少进行一次{system("cls"); //用system("cls")清屏使屏幕简洁ck=Menu();switch(ck) //用switch语句确定用户选择功能{case '1':gate: //门函数使程序退回到gate位置system("cls");Map();do{printf("\n\n\t\t\t请选择出发地序号(1~14):");scanf("%d",&v0);if(v0<1||v0>17)printf("\n\n\t\t\t\t输入错误!\n");}while(v0<1||v0>17);do{printf("\t\t\t请选择目的地序号(1~14):");scanf("%d",&v1);if(v1<1||v1>14||v1==v0)printf("\n\n\t\t\t\t输入错误!\n");}while(v1<1||v1>14||v1==v0);Dijkstra(v0);Display(v0,v1);printf("\n\n\t\t\t\t请按任意键继续,按e退回首页\n");getchar();scanf("%c",&e);if(e=='e'){当标识符e等于e时跳出语句}break;goto gate;case'2':system("cls");Info();printf("\n\n\t\t\t\t请按回车键退回首页...\n");getchar();getchar();break;};}while(ck!='e'); //当标识符ck不等于e时继续循环}3.4设计结果验证图2 山东建筑大学导航系统首页图3 选择2后的山建景点介绍图4选择1后查询4到7的最短路径结果总结与致谢随着计算机软硬件的不断发展,导航系统在客户需求中的应用已成必然。