校园导航系统---算法与分析课程设计

合集下载

校园导航程序课程设计

校园导航程序课程设计

校园导航程序课程设计一、课程目标知识目标:1. 学生能理解并掌握校园导航程序的基本原理和功能。

2. 学生能了解并运用编程语言(如Python)实现基本的地图展示、路径规划和信息查询功能。

3. 学生能掌握基础的地理信息系统(GIS)知识,并将其应用于校园导航程序设计。

技能目标:1. 学生能运用编程技能,设计并开发出一个简单的校园导航程序。

2. 学生能通过小组合作,进行需求分析、功能设计和程序测试,提高团队协作能力。

3. 学生能运用问题解决策略,解决在编程和调试过程中遇到的问题。

情感态度价值观目标:1. 学生能培养对编程和地理信息科学的兴趣,激发创新意识。

2. 学生能在课程学习过程中,体验编程带来的成就感,增强自信心。

3. 学生能认识到科技在现实生活中的应用,理解科技对人类生活的积极作用,培养社会责任感。

课程性质:本课程为信息技术与地理学科融合的实践性课程,旨在培养学生的编程能力、地理信息系统应用能力和团队协作能力。

学生特点:六年级学生具有一定的编程基础和地理知识,对新鲜事物充满好奇,喜欢动手实践,具备一定的自主学习能力。

教学要求:注重理论与实践相结合,关注学生个体差异,鼓励学生积极参与,充分调动学生的主观能动性。

将课程目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容1. 校园导航系统概述:介绍校园导航系统的基本概念、功能和应用场景,让学生对课程内容有一个整体的认识。

相关教材章节:信息技术课本第五章第二节“地理信息系统及其应用”。

2. 编程语言基础:回顾Python编程基础知识,重点复习变量、条件语句、循环语句和函数等基本概念。

相关教材章节:信息技术课本第二章“Python编程基础”。

3. 地理信息系统(GIS)知识:讲解GIS的基本原理,介绍地图坐标系、空间数据结构等基础知识。

相关教材章节:地理课本第八章第三节“地理信息系统及其应用”。

4. 校园导航程序设计:a. 需求分析:组织学生进行小组讨论,明确校园导航程序的功能需求。

校园导览课程设计方案模板

校园导览课程设计方案模板

一、课程名称校园导览系统设计与开发二、课程背景随着现代校园的不断扩大和建筑物的增多,校园内部导航成为一大难题。

为了提高学生和教职工的出行效率,减少时间浪费,本课程旨在设计并开发一款校园导览系统,为用户提供便捷、直观的导航服务。

三、课程目标1. 理解校园导览系统的基本概念和功能。

2. 掌握校园导览系统的设计与开发流程。

3. 学会使用相关技术实现校园导览系统的主要功能。

4. 提高学生的团队协作能力和项目实战经验。

四、课程内容1. 课程概述- 校园导览系统的定义和作用- 校园导览系统的功能模块2. 系统需求分析- 用户需求分析- 系统功能需求分析- 系统性能需求分析3. 系统设计- 系统架构设计- 数据库设计- 界面设计4. 技术实现- 硬件设备选型- 软件平台选型- 开发工具与环境5. 系统开发- 系统前端开发- 系统后端开发- 系统测试与优化6. 系统部署与维护- 系统部署- 系统运行监控- 系统维护与更新五、教学方法与考核方式1. 教学方法- 讲授法:系统讲解课程内容,使学生掌握基本概念和技能。

- 案例分析法:通过实际案例,引导学生分析问题、解决问题。

- 实践操作法:学生分组进行项目实践,提高实际操作能力。

- 讨论法:组织学生进行课堂讨论,激发思维,培养团队协作能力。

2. 考核方式- 平时成绩(30%):课堂表现、作业完成情况等。

- 项目实践(40%):项目完成情况、团队合作表现等。

- 期末考试(30%):笔试,考察学生对课程内容的掌握程度。

六、课程安排1. 课时分配:总课时为40学时,其中理论课20学时,实践课20学时。

2. 课程进度安排:- 第一周:课程概述、系统需求分析- 第二周:系统设计、技术实现- 第三周:系统开发(前端)- 第四周:系统开发(后端)- 第五周:系统测试与优化- 第六周:系统部署与维护- 第七周:课程总结、答辩七、预期成果通过本课程的学习,学生能够掌握校园导览系统的设计与开发技能,为我国校园导航事业贡献自己的力量。

数据结构-算法实验报告——校园导航系统

数据结构-算法实验报告——校园导航系统

数据结构与算法分析课程设计报告设计题目:校园导航咨询系统专业学号姓名2013 年3 月3 日一、问题描述设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)(参考课本P186-P192)。

二、需求分析本程序分为五个模块,分别是显示校园全景、查询景点信息、问路查询系统、查看游览路线和退出系统。

(1)显示校园全景展示校园概貌图和各景点编号、名称。

(2)查询景点信息输入要查询的景点编号,显示景点的编号、名称和景点的简单介绍。

(3)问路查询系统输入要参观的两个景点的编号(按从大到小输入),显示两个景点间的最短路径游览方式和最短路径长。

(4)查看游览路线查询某个景点到其他景点的所有路径,并显示其长度。

(5)退出系统查询完毕关闭窗口,显示退出系统的界面三、概要设计1、主要函数:void main() 主函数,程序入口csinfo() 初始化景点信息csroad() 初始化道路信息showpath() 显示校园全景search() 查询景点信息floyd() 弗洛伊德函数,查询两个景点之间的最短路径所要经过的中间节点print(int i,int j) 打印两个景点的路径及最短距离shortpath() 问路查询,求最短路径ShortestPath_DIJ(Maph * M) 利用Dijkstra算法来计算出起点到各个顶点之间的最短路径,以v0为起点menu() 显示菜单选项2、主要变量:ps[MaxPointNum] 定义主要景点信息,存放景点的编号、名称、简要介绍等信息char name[20] 景点名称char number[15] 景点编号char info[100] 景点简介信息MaxPointNum 最大景点个数INFINITY 近似无穷大,表示两景点不可达Maph M 全局变量,定义M为Maph类型int shortest[MaxPointNum][MaxPointNum] 定义全局变量存贮最短路径int path[MaxPointNum][MaxPointNum] 定义存贮路径3、存储结构:3.1 图的类型定义typedef struct{char name[20]; //景点名称char number[15]; //景点代号char info[100]; //景点信息}Elemtype; //景点类型3.2 定义景点typedef struct{int num; //顶点编号Elemtype data; //顶点信息}Point; //定义顶点3.3定义全局变量typedef struct{Point ps[MaxPointNum]; //存放顶点的一维数组int road[MaxPointNum][MaxPointNum];//存放路径的长度(邻接矩阵)int poinum,arcnum; //顶点数,边数}Maph;4、求解算法:迪杰斯特拉算法求解无向图的最短路径四、详细设计详细参见C语言源程序1.调试分析运行程序进行调试:1.进入主界面,出现校园导航咨询系统主菜单。

课程设计校园导航问题

课程设计校园导航问题

课程设计校园导航问题一、教学目标本课程旨在通过校园导航问题的学习,让学生掌握校园地图的阅读和理解能力,培养学生独立思考和解决问题的能力。

具体目标如下:知识目标:使学生了解和掌握校园地图的基本要素,如道路、建筑、景观等,以及地图的阅读和理解方法。

技能目标:培养学生运用地理信息系统(GIS)软件制作和编辑校园地图的能力,同时提高学生利用地图解决实际问题的能力。

情感态度价值观目标:通过校园导航问题的探究,培养学生对地理学科的兴趣和热爱,增强学生对校园环境的认知和责任感。

二、教学内容本课程的教学内容主要包括校园地图的阅读与理解、地图制作软件的使用以及校园导航问题的解决。

具体安排如下:第1课时:校园地图的基本要素及阅读方法第2课时:地理信息系统(GIS)软件的基本操作第3课时:校园地图的制作与编辑第4课时:校园导航问题的解决方法三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。

具体方法如下:1.讲授法:教师讲解校园地图的基本要素、阅读方法以及地图制作软件的使用技巧。

2.讨论法:学生分组讨论校园导航问题,分享解决方法,互相学习。

3.案例分析法:教师提供实际案例,引导学生分析并解决校园导航问题。

4.实验法:学生动手操作地图制作软件,实践校园地图的制作与编辑。

四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:选用《校园导航》教材,为学生提供系统性的知识学习。

2.参考书:推荐《地图学》等参考书籍,丰富学生的地图知识。

3.多媒体资料:利用网络资源,下载相关地图制作软件的教程和案例视频,以便进行教学演示和引导学生自主学习。

4.实验设备:准备计算机、投影仪等设备,以便进行地图制作软件的演示和操作。

五、教学评估为了全面、客观地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:通过观察学生在课堂上的参与度、提问回答等情况,评估学生的学习态度和理解程度。

2.作业:布置相关的地图阅读、制作等作业,要求学生在规定时间内完成,以检验学生的学习效果。

c语言课程设计校园导航

c语言课程设计校园导航

c语言课程设计校园导航一、教学目标本课程的目标是使学生掌握C语言编程的基本知识和技能,能够运用C语言进行简单的校园导航系统开发。

通过本课程的学习,学生将能够理解C语言的基本语法、数据类型、运算符、控制结构等,并能够运用这些知识编写简单的程序。

同时,学生将能够通过实践,提高问题解决能力和团队合作能力。

二、教学内容教学内容将按照C语言的基本语法和编程技巧进行。

首先,将介绍C语言的基本概念和环境配置,然后逐步深入到数据类型、运算符、控制结构等核心内容。

接下来,将讲解函数、数组和指针等高级概念,最后通过实例讲解面向对象编程的基本思想。

三、教学方法为了提高学生的学习兴趣和主动性,将采用多种教学方法。

首先,通过讲授法,为学生提供C语言的基本概念和理论知识。

然后,通过讨论法,引导学生主动思考和探索问题。

接下来,通过案例分析法,让学生通过分析实际案例,掌握C语言的编程技巧。

最后,通过实验法,让学生通过动手实践,巩固所学知识。

四、教学资源为了支持教学内容和教学方法的实施,将选择和准备适当的教学资源。

教材方面,将选择经典的C语言教材,如《C程序设计语言》。

参考书方面,将推荐学生阅读一些优秀的C语言编程书籍,如《C Primer Plus》。

多媒体资料方面,将制作一些教学视频和演示文稿,以帮助学生更好地理解C语言的编程原理。

实验设备方面,将准备计算机和网络设施,以供学生进行编程实验和实践。

五、教学评估本课程的评估方式将包括平时表现、作业和考试三个部分。

平时表现将根据学生在课堂上的参与度、提问和回答问题的积极性等进行评估。

作业将根据学生的编程实践能力和解决问题的能力进行评估。

考试将包括笔试和上机考试两部分,笔试主要测试学生对C语言理论知识的理解和掌握,上机考试主要测试学生的编程能力和实际操作能力。

六、教学安排本课程的教学进度将按照教材的章节进行安排,每个章节将安排2-3次的课堂讲授和实践操作。

教学时间将安排在每周的周二和周四下午,每次课2小时。

课程设计校园导航系统

课程设计校园导航系统

课程设计校园导航系统一、课程目标知识目标:1. 学生能理解校园导航系统的基本概念,掌握其构成要素和应用场景。

2. 学生能描述校园导航系统中常用的定位技术和路径规划算法。

3. 学生了解地理信息系统(GIS)在校园导航系统中的作用,并掌握基本操作方法。

技能目标:1. 学生能够运用所学知识,设计并实现一个简单的校园导航系统。

2. 学生能够运用GIS软件进行地图数据处理、分析和可视化。

3. 学生能够通过小组合作,解决实际校园导航中的问题,提高团队协作能力。

情感态度价值观目标:1. 学生对校园导航系统产生兴趣,认识到科技在生活中的重要作用。

2. 学生在探究过程中,培养勇于尝试、不断优化的科学精神。

3. 学生通过解决实际问题,增强对学校环境的责任感,提高爱护公共设施的意识。

本课程针对初中年级学生,结合信息技术和地理学科,以实用性为导向,培养学生运用科技手段解决实际问题的能力。

课程设计注重理论与实践相结合,充分考虑学生的年龄特点和认知水平,通过小组合作、动手实践等方式,激发学生兴趣,提高学生的综合素养。

在教学过程中,教师需关注学生的学习进度,及时调整教学策略,确保课程目标的实现。

二、教学内容本章节教学内容主要包括以下几部分:1. 校园导航系统概述:介绍校园导航系统的基本概念、构成要素和应用场景,对应教材中“地理信息系统及其应用”章节。

2. 定位技术:讲解全球定位系统(GPS)、无线局域网(WLAN)等定位技术在校园导航系统中的应用,结合教材中“定位技术及其发展”章节。

3. 路径规划算法:介绍Dijkstra、A*等路径规划算法,分析其在校园导航系统中的作用,对应教材中“路径规划与优化”章节。

4. 地理信息系统(GIS)操作:学习GIS软件的基本操作,包括地图数据处理、分析和可视化,结合教材中“GIS软件与应用”章节。

5. 实践项目:设计并实现一个简单的校园导航系统,包括地图数据采集、路径规划、导航功能等,分阶段完成,对应教材中“实践项目与应用”章节。

算法课程设计—校园导航问题

算法课程设计—校园导航问题

}VertexType;
(2)邻接矩阵的结构体定义:
typedef struct{
VertexType vex[NUM]; //顶点序号
int arcs[NUM][NUM]; //邻接矩阵
int vexnum;
//图的当前顶点数
}MGraph;
2、节点图函数的描述代码
void CreateMGraph(int v)//建立节点图的函数 {
各函数之间的调用关系设计如下:
图 3:函数调用关系图
三、流程图及主要源程序 主程序流程图如下所示:
图 4:主程序流程图
1、节点数据类型的描述与定义
(1)顶点信息的结构体定义:
typedef struct VertexType{
int number; char *sight;
//顶点数字 //顶点向量
P[v][w]=0; if(D[v]<Max) {
P[v][num]=1; P[v][v]=1; } } D[num]=0;
final[num]=1; for(i=1;i<NUM;++i) {
min=Max; for(w=1;w<NUM;++w)
if(!final[w]) if(D[w]<min) { v=w; min=D[w]; } final[v]=1; for(w=1;w<NUM;++w) if(!final[w]&&((min+G.arcs[v][w])<D[w])) { D[w]=min+G.arcs[v][w]; for(t=0;t<NUM;t++) P[w][t]=P[v][t]; P[w][w]=1; }

校园导航定位系统课程设计

校园导航定位系统课程设计

校园导航定位系统课程设计一、课程目标知识目标:1. 理解并掌握校园导航定位系统的基本原理与功能;2. 学习并运用相关的地理信息系统(GIS)知识,进行校园地图的解读与分析;3. 了解全球定位系统(GPS)及其在校园导航中的应用。

技能目标:1. 能够运用校园导航定位系统,进行校园内位置信息的查找与路径规划;2. 培养学生团队协作能力,通过小组讨论、分享,共同解决校园导航中遇到的问题;3. 提高学生的实际操作能力,学会使用相关设备和技术进行定位与导航。

情感态度价值观目标:1. 培养学生对地理信息科学的兴趣,激发学生探索未知、勇于创新的精神;2. 强化学生的环保意识,倡导绿色出行,提高学生对校园环境的保护意识;3. 培养学生热爱学校、关爱他人的情感,提高学生社会责任感。

本课程针对中学生设计,结合学科特点,以实用性为导向,充分考虑学生年龄特点和认知水平。

通过本课程的学习,使学生能够将所学知识应用于实际生活,提高解决问题的能力,同时培养良好的情感态度价值观。

课程目标具体、可衡量,为后续教学设计和评估提供明确方向。

二、教学内容1. 校园导航定位系统原理介绍- 导航定位技术的发展背景与现状- 校园导航定位系统的组成与工作原理2. 地理信息系统(GIS)知识- 校园地图的基本要素与解读- GIS在校园导航中的应用3. 全球定位系统(GPS)应用- GPS的原理与功能- GPS在校园导航中的实际应用4. 实践操作与案例分析- 校园导航定位设备的认识与使用- 实际操作:校园内路径规划与导航- 案例分析:解决校园导航中遇到的问题5. 团队协作与讨论分享- 小组讨论:探讨校园导航定位系统的优缺点- 分享经验:介绍个人在校园导航中的实用技巧教学内容依据课程目标,结合教材章节,确保科学性和系统性。

教学大纲明确,教学内容安排合理,注重理论与实践相结合,充分调动学生的积极性与参与度。

通过本章节的学习,使学生深入理解校园导航定位系统的相关知识,提高实际操作能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法设计与分析课程设计题目:校园导航问题文档:物联网工程学院物联网工程专业学号学生姓名班级物联网1101二〇一三年十二月设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路(最短路径)。

本系统为用户提供以下功能:(一)、查询了解学校概况,为导游参观者提供关于学校的相关信息。

(二)、查询校园各个场所和景点信息;(三)、为导游者或外来人员参观人员提供校园交通信息,方便用户走访学校。

完成需要操作时,退出系统校园导航查询系统的开发方法总结如下:(1) 需求分析,了解学校各个场所与场所或者是各个景点与景点之间的信息,路径和距离,考虑该如何设计才能满足用户需求。

(2) 概要设计,对调查得到的数据进行分析,根据其要求实现的功能分析系统结构和界面将实现的基本功能。

(3) 详细设计,设计系统界面并编辑实现其各个功能的代码。

(4) 调试分析,在设计完成后,调试系统运行的状况,修改完善系统,然后进行测试。

一、需求分析1学校以及各景点介绍模块采用一维数组将学校景点依次排放好编号G.vex[i].number=i 在选择校园介绍的时候,弹出G.vex[0]校园简介。

在选择各景点信息的时候,可按编号查询2查询最短路径(主要)查出出发地到想要到达的景点的最短路径,初步构想采用最经典的迪杰斯特拉算法最短路径函数3查询各点距离将所有景点的距离显示出来。

4主菜单页面显示提供使用者选择功能界面,按照提示进行操作。

5退出完成需要操作时,退出系统校园导航系统模式图二、概要设计2.1算法设计说明校园导航模型是由各个景点和景点以及场所和场所之间的路径组成的,所以这完全可以用数据结构中的图来模拟。

用图的结点代表景点或场所,用图的边代表景点或场所之间的路径。

所以首先应创建图的存储结构。

结点值代表景点信息,边的权值代表景点间的距离。

结点值及边的权值采用图存储。

本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。

计算路径长度,最短路线和最佳路径时可分别用迪杰斯特拉(Dijkastra )算法和哈密而顿回路算法实现。

最后switch 选择语句选择执行浏览景点信息或查询最短路径和距离。

2.1.1学校以及各景点介绍模块采用了图的邻接矩阵存储结构,首先初始化每一个景点名称(一维数组)fo r(i=1;i<G .vexnum;++i) G .vex[i].number=i ……校园导航系统 校园介绍,各景点介绍查询校园所有景点路径 最短路径查询 查询各景点距离 输入起点与终点 输出最短路径SearchMenu子菜单输入景点编号编号值=iI<num输出景点介绍输出“错误”结束景点介绍功能流程图2.1.2查询最短路径(主要)算法的主要思想是按路径长度递增的次序产生最短路径的算法。

中心思想是假设s为已求得最短路径的终点的集合,则下一条最短路径或者是弧(v,x)或者是中间经过s中是顶点而最后到达顶点x的路径。

(1)arcs表示弧上的权值。

若不存在,则置arcs为∞。

S为已找到从v出发的最短路径的终点的集合,初始状态为空集。

那么,从v出发到图上其余各顶点vi可能达到的最短路径长度的初值为D=arcs[Locate Vex(G,v),i] vi∈V (2)选择vj,使得D[j]=Min{D | vi∈V-S}(3修改从v出发到集合V-S上任一顶点vk可达的最短路径长度路径查询流程图2.1.3查询各点距离由于图的结构比较复杂,任意两个点之间都可能存在联系。

因此无法以数据元素在存储区中的物理位置来表示元素之间的关系,但是却可以借助数组的数据类型表示元素之间的关系。

2.1.4主函数循环体用开关语句,该语句的条件值ck是当用户选择菜单通过调用主菜单函数得到,返回值整数作开关语句的条件。

根据该值调用相应的各功能函数,同时设置一个退出程序点,执行完用户的某项功能后继续显示菜单,当返回值为e 时函数结束程序,以免造成死循环。

2.2数据结构与函数考虑2.2.1数据结构定义结构体类型,将多个相关的变量包装成为一个整体使用。

#define Max 32767#define NUM 20自定义顶点的类型typedef struct VertexType{int number; // 景点编号char *sight;// 景点名称}VertexType;自定义图的类型typedef struct{VertexType vex[NUM]; // 图中的顶点,即为景点int arcs[NUM][NUM]; // 图中的边,即为景点间的距离int vexnum; // 顶点数}MGraph;把图定义为全局变量MGraph G;int P[NUM][NUM]; 辅助变量存储最短路径长度long int D[NUM];2.2.2使用的系统头文件#include "stdio.h" /*I/O 函数*/#include "stdlib.h" /*使用system()exit()atoi()malloc()free()函*/ #include "string.h" /*字符串函数,strcpy()strlen()strcmp()*/三、主程序#include <stdio.h>#include <string.h>#include <stdlib.h>#define Max 32767#define NUM 20typedef struct VertexType{int number;char *sight;}VertexType;typedef struct{VertexType vex[NUM];int arcs[NUM][NUM];int vexnum;}MGraph;MGraph G;int P[NUM][NUM];long int D[NUM];void CreateMGraph(int v)//创建图的函数,v是函数入口{int i,j;G.vexnum=v;for(i=1;i<G.vexnum;++i)G.vex[i].number=i;G.vex[0].sight="各个地点名字";G.vex[1].sight="江南大学校北门";G.vex[2].sight="第一食堂";G.vex[3].sight="江南大学东偏门";G.vex[4].sight="设计学院";G.vex[5].sight="体育中心";G.vex[6].sight="物联网工程学院";G.vex[7].sight="图书馆";G.vex[8].sight="江南大学东门";G.vex[9].sight="国家重点实验室";G.vex[10].sight="第二教学楼"; G.vex[11].sight="第四食堂"; G.vex[13].sight="臻善楼";G.vex[12].sight="江南大学南门"; for(i=1;i<G.vexnum;++i){for(j=1;j<G.vexnum;++j)G.arcs[i][j]=Max;}G.arcs[1][2]=G.arcs[2][1]=200;G.arcs[1][3]=G.arcs[3][1]=210; G.arcs[1][5]=G.arcs[5][1]=521; G.arcs[2][4]=G.arcs[4][2]=299; G.arcs[2][5]=G.arcs[5][2]=450; G.arcs[2][3]=G.arcs[3][2]=869; G.arcs[3][5]=G.arcs[5][3]=620;G.arcs[3][8]=G.arcs[8][3]=756;G.arcs[4][5]=G.arcs[5][4]=355;G.arcs[4][6]=G.arcs[6][4]=221;G.arcs[5][7]=G.arcs[7][5]=225;G.arcs[5][8]=G.arcs[8][5]=900;G.arcs[6][7]=G.arcs[7][6]=280;G.arcs[6][9]=G.arcs[9][6]=241;G.arcs[7][8]=G.arcs[8][7]=440;G.arcs[7][10]=G.arcs[10][7]=350;G.arcs[8][10]=G.arcs[10][8]=570;G.arcs[9][10]=G.arcs[10][9]=1300;G.arcs[9][11]=G.arcs[11][9]=998;G.arcs[9][12]=G.arcs[12][9]=1200;G.arcs[10][11]=G.arcs[11][10]=639;G.arcs[10][12]=G.arcs[12][10]=805;G.arcs[11][12]=G.arcs[12][11]=283;G.arcs[12][13]=G.arcs[13][12]=296;}void Map()//地图展示函数{printf("\t ************************江南大学大学地图导航系统******************* \n");printf(" ━━━━━━━━━━━━━━━1 江南大学北大门━━━━━━━━━━\n");printf(" ┃┃┃\n");printf(" ┃┃┃\n");printf(" 2第一食堂━━━━━━━━━━━━━━━━━━━━━━━━━ 3江南大学东偏门\n");printf(" ┃┃┃\n");printf(" ┃┃┃\n");printf(" 4设计学院━━━━━━━━━━━━5体育中心━━━━━━━━━━━━┃\n");printf(" ┃┃┃\n");printf(" ┃┃┃\n");printf(" ┃┃┃\n");printf(" 6物联网工程学院━━━━━━━━━7图书馆━━━━━━━━━ 8江南大学东门\n");printf(" ┃┃┃\n");printf(" ┃┃┃\n");printf(" ┃┃┃\n");printf(" 9国家重点实验室10第二教学楼━━━━━━━━━━┃\n");printf(" ┃┃┃\n");printf(" ┃┃┃\n");printf(" ━━━━━━━━━━━━━━━━┃━━━━━━━━━━┃\n");printf(" ┃┃\n");printf(" ┃━━━11第四食堂\n");printf(" ┃\n");printf(" 13臻善楼━━━━━━━━━━━━━12江南大学南门\n");}void Info()//资料介绍函数{printf("1 江南大学校北大门:这是江南大学最有名的大门,是一座充满历史感的高大的牌坊,正上面写着“江南大学”四个大字,背面写着“江南第一学府”六个字\n");printf("2 江南大学第一食堂\n");printf("3 江南大学东偏门:\n");printf("4 设计学院:\n");printf("5 体育中心:\n");printf("6 物联网工程学院:\n");printf("7 图书馆:高达15层的雄伟的图书馆\n");printf("8 江南大学东门:\n");printf("9 国家重点实验室:\n");printf("10 第二教学楼:\n");printf("11 第四食堂: \n");printf("13 臻善楼: \n");printf("12 江南大学南门: \n");}void ShortestPath(int num) // 迪杰斯特拉算法最短路径函数num为入口点的编号{int v,w,i,t; // i、w和v为计数变量int final[NUM];int min;for(v=1;v<NUM;v++){final[v]=0; // 假设从顶点num到顶点v没有最短路径D[v]=G.arcs[num][v];// 将与之相关的权值放入D中存放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集合// 开始主循环,每一次求得num到某个顶点的最短路径,并将其加入到S集合for(i=1;i<NUM;++i) //其余G.vexnum-1个顶点{min=Max; // 当前所知离顶点num的最近距离for(w=1;w<NUM;++w)if(!final[w]) // w顶点在v-s中if(D[w]<min) // w顶点离num顶点更近{v=w;min=D[w];} // 更新当前最短路径极其距离final[v]=1; // 离num顶点更近的v加入到s集合for(w=1;w<NUM;++w)if(!final[w]&&((min+G.arcs[v][w])<D[w])) // 不在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;do{system("cls");flag=1;Map();printf("\t\t欢迎使用江南大学导航图系统\n");printf("\t\t 1.查询地点之间最短路径\n");printf("\t\t 2.江南大学景点介绍\n");printf("\t\t e.退出\n");printf("\t\t\t请输入您的选择:");scanf("%c",&c);if(c=='1'||c=='2'||c=='e')//如果输入为1,2,E中的一个,则返回Cflag=0;}while(flag);return c;void Display(int sight1,int 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(最短距离为%d.m)\n\n\t",D[a]);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]<Max&&P[a][b]){printf("-->%s",G.vex[b].sight);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{system("cls");ck=Menu();switch(ck){case '1': gate:system("cls");Map();do{printf("\n\n\t\t\t请选择出发地序号(1~13):");scanf("%d",&v0);if(v0<1||v0>13)printf("\n\n\t\t\t\t输入错误!\n");}while(v0<1||v0>13);do{printf("\t\t\t请选择目的地序号(1~13):");scanf("%d",&v1);if(v1<1||v1>13||v1==v0)printf("\n\n\t\t\t\t输入错误!\n");}while(v1<1||v1>13||v1==v0);ShortestPath(v0);Display(v0,v1);printf("\n\n\t\t\t\t按回车键继续,按e退回首页\n");getchar();scanf("%c",&e);if(e=='e')break;goto gate;case'2':system("cls");Info();printf("\n\n\t\t\t\t按回车键返回首页...\n");getchar();getchar();break;};}while(ck!='e');}四、程序调试及运行结果贴图五、总结通过这次设计,是我得以更好的掌握C语言的编程,对一些算法思想和实现方法有了更深的了解。

相关文档
最新文档