校园导航系统课程设计报告
校园导航程序课程设计

校园导航程序课程设计一、课程目标知识目标:1. 学生能理解并掌握校园导航程序的基本原理和功能。
2. 学生能了解并运用编程语言(如Python)实现基本的地图展示、路径规划和信息查询功能。
3. 学生能掌握基础的地理信息系统(GIS)知识,并将其应用于校园导航程序设计。
技能目标:1. 学生能运用编程技能,设计并开发出一个简单的校园导航程序。
2. 学生能通过小组合作,进行需求分析、功能设计和程序测试,提高团队协作能力。
3. 学生能运用问题解决策略,解决在编程和调试过程中遇到的问题。
情感态度价值观目标:1. 学生能培养对编程和地理信息科学的兴趣,激发创新意识。
2. 学生能在课程学习过程中,体验编程带来的成就感,增强自信心。
3. 学生能认识到科技在现实生活中的应用,理解科技对人类生活的积极作用,培养社会责任感。
课程性质:本课程为信息技术与地理学科融合的实践性课程,旨在培养学生的编程能力、地理信息系统应用能力和团队协作能力。
学生特点:六年级学生具有一定的编程基础和地理知识,对新鲜事物充满好奇,喜欢动手实践,具备一定的自主学习能力。
教学要求:注重理论与实践相结合,关注学生个体差异,鼓励学生积极参与,充分调动学生的主观能动性。
将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. 校园导航系统概述:介绍校园导航系统的基本概念、功能和应用场景,让学生对课程内容有一个整体的认识。
相关教材章节:信息技术课本第五章第二节“地理信息系统及其应用”。
2. 编程语言基础:回顾Python编程基础知识,重点复习变量、条件语句、循环语句和函数等基本概念。
相关教材章节:信息技术课本第二章“Python编程基础”。
3. 地理信息系统(GIS)知识:讲解GIS的基本原理,介绍地图坐标系、空间数据结构等基础知识。
相关教材章节:地理课本第八章第三节“地理信息系统及其应用”。
4. 校园导航程序设计:a. 需求分析:组织学生进行小组讨论,明确校园导航程序的功能需求。
校园导航系统课程报告

数据结构课程设计报告题目:校园导航系统学生姓名:谌幼华学号: 09110806班级:091108指导教师:邹国华2011 年6 月3 日目录一、需求分析说明 (3)二、总体设计 (3)三、详细设计 (5)四、实现部分 (8)五、程序测试 (13)六、总结 (15)七、参考文献 (15)校园导航系统一、需求分析说明:(一)课程设计目的:本课程设计的目的就是要达到理论与实际应用相结合,使我们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。
(二)设计要求:设计一个校园导航系统,为来访的客人提供导航服务,具体要求:1. 设计学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
2. 为来访客人提供图中任意景点相关信息的查询。
3. 提供途中任意景点问路查询,即求任意两个景点间的一条最短的简单路径以及任意景点到其他所有景点的最短路径查询。
4.列出所有校内无重复排列的景点,将所有景点的距离以邻接矩阵的方式呈现给使用者,提供使用者选择功能界面,按照提示进行操作。
5.在邻接矩阵中MAX表示最大距离即两个景点之间是不可到达的。
用实际权值来表示两个景点之间的距离,并且是可达的。
二、总体设计:1.数据结构:用图(无向网)来描述学校n个景点之间的关系,顶点为单位代号,权值为两景点的距离。
本系统基于东华理工大学校园平面图为基准而设计,先将校园内15个具有代表性的顶点列出,然后绘制出其平面图,标出任意两顶点间是否有直达的边,同时在图上有直达边的两顶点边的权值,本系统中设计的东华理工大学校园平面图如下(景点前面所对应的代号为系统中无向网的顶点号):东华理工大学学校平面图2.系统功能图:三、详细设计:一、按所设想的功能,把程序化分为7个模块,各模块的名称和其数据类型如下表所示:各模块的说明如下:1.类模块:本系统中只涉及了一个Graph(无向网类)类,其数据成员为无向网的相关信息,例如图的邻接矩阵(程序中用数组arcs[n+1][n+1]存放有关邻接矩阵的相关信息)、原点到各定点的相关信息(存放在dist[n+1数组中])、最短路径上该顶点的前一顶点相关信息(存放在path[n+1]数组中)、以求得到的最短路径上的顶点的顶点号(存放在s[n+1]数组中),同时将求最小路径的实现函shortest_path()定义为其成员函数。
课程设计校园导航系统

课程设计校园导航系统一、课程目标知识目标:1. 学生能理解校园导航系统的基本概念,掌握其构成要素和应用场景。
2. 学生能描述校园导航系统中常用的定位技术和路径规划算法。
3. 学生了解地理信息系统(GIS)在校园导航系统中的作用,并掌握基本操作方法。
技能目标:1. 学生能够运用所学知识,设计并实现一个简单的校园导航系统。
2. 学生能够运用GIS软件进行地图数据处理、分析和可视化。
3. 学生能够通过小组合作,解决实际校园导航中的问题,提高团队协作能力。
情感态度价值观目标:1. 学生对校园导航系统产生兴趣,认识到科技在生活中的重要作用。
2. 学生在探究过程中,培养勇于尝试、不断优化的科学精神。
3. 学生通过解决实际问题,增强对学校环境的责任感,提高爱护公共设施的意识。
本课程针对初中年级学生,结合信息技术和地理学科,以实用性为导向,培养学生运用科技手段解决实际问题的能力。
课程设计注重理论与实践相结合,充分考虑学生的年龄特点和认知水平,通过小组合作、动手实践等方式,激发学生兴趣,提高学生的综合素养。
在教学过程中,教师需关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
二、教学内容本章节教学内容主要包括以下几部分:1. 校园导航系统概述:介绍校园导航系统的基本概念、构成要素和应用场景,对应教材中“地理信息系统及其应用”章节。
2. 定位技术:讲解全球定位系统(GPS)、无线局域网(WLAN)等定位技术在校园导航系统中的应用,结合教材中“定位技术及其发展”章节。
3. 路径规划算法:介绍Dijkstra、A*等路径规划算法,分析其在校园导航系统中的作用,对应教材中“路径规划与优化”章节。
4. 地理信息系统(GIS)操作:学习GIS软件的基本操作,包括地图数据处理、分析和可视化,结合教材中“GIS软件与应用”章节。
5. 实践项目:设计并实现一个简单的校园导航系统,包括地图数据采集、路径规划、导航功能等,分阶段完成,对应教材中“实践项目与应用”章节。
数据结构课程设计_校园导航系统 _课程设计报告

南京工程学院课程设计说明书(论文)题目校园导航系统课程名称数据结构院系通信工程学院专业信息工程班级学生姓名学号设计地点指导教师设计起止时间:2008 年12月29 日至年月日目录1.课程设计题目 (1)2.软件功能描述 (1)3.软件总体设计 (1)3.1数据结构描述与定义 (1)3.2模块设计 (3)4.测试结果与分析 (4)5.课程设计总结 (5)附录:源程序清单 (6)1.课程设计题目校园导航系统2.软件功能描述在近一个星期的努力下,我编写的校园导航系统软件终于能够成功完成。
采用工程思想,将系统共分一下几个模块:数据结构定义模块、导航图建立模块、求最短路径模块、主菜单;下面是具体各功能简单的实际应用:➢数据结构定义模块:模块定义了导航图中各个节点的基本结构类型,主要采用邻接矩阵的存储结构来真实反映各节点到其他所有节点的路径长度(权值大小)。
➢导航图建立模块:采用上述结构体类型对导航图中每个节点进行赋值。
包括:各定点的名称(地点名),各个节点到其他所有节点的真实路径长度(赋权值)。
➢求最短路径模块:本模块的基本思想是采用迪杰斯特拉算法求最短路径。
次模块是本校园导航系统的核心模块,求两点间的最短路径与求一点到其他所有点最短路径两个子功能均是在最短路径算法模块的基础上进行调用,进而实现导航功能。
➢主菜单:主菜单中主要是显示导航图中的所有导航节点,能够快速方便的对各个地点进行导航。
以上程序的几个模块,构成了校园导航系统的基本组成部分,程序运行良好,达到了课程设计的基本要求。
由于所学知识有限,功能各个方面还有欠妥之处,希望得到指出与改正。
3.软件总体设计3.1数据结构描述与定义1.节点数据结构类型:#define MAX_V 30 //最大顶点个数typedef struct{char* vexs[MAX_V]; //顶点向量int arcs[MAX_V][MAX_V];//邻接矩阵int vexnum,arcnum;//图的当前顶点数和弧数}MGraph;2.创建导航图函数:int CreateUDN(MGraph &G)函数描述:主要将每个节点进行命名、每个顶点到其他所有定点的路径值用邻接矩阵进行存储。
校园导航系统课程设计报告

题目石铁大校园导航系统学院信息科学与技术学院专业计算机科学与技术学号********学生姓名刘铸辉指导教师姓名陈娜日期:2013-8-31一.题目与要求实习一校园导游程序[ 问题描述]用无向网表示学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
游客通过终端可询问:(1 )从某一景点到另一景点的最短路径。
(2 )游客从公园进入,选取一条最佳路线。
(3 )使游客可以不重复地浏览各景点,最后回到出口(出口就在入口旁边)。
[ 基本要求](1 )将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离.为此图选择适当的数据结构。
(2 )把各种路径都显示给游客,由游客自己选择浏览路线。
(3 )画出景点分布图于屏幕上。
[ 实现提示](1 )构造一个无向图G 并用邻接矩阵来存储。
(2 )利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][]来记录,最短路径长度就用一维数组d[i] 存放;i 的范围:0 ~20 。
(3 )一维数组have[] 是用来记录最短路径出现顶点的顺序。
(4 )根据起点和终点输出最短路径和路径长度。
二.需求分析本校园导航系统由C语言编写,主要掌握最短路径的实现方法,以及构造无向图G并用邻接矩阵来存储,掌握迪杰斯特拉算法来算最短路径。
1.输入的形式和输出的范围:2.输出的形式:3.程序所能到达的功能:A.图中任意景点的相关信息查询B.任意两个景点间的最短路径C.任意两个景点间的所有路径D.增加有关景点和道路的信息E.删除更新有关景点和道路的信息F.更新有关景点和道路的信息G.显示全景H.退出该系统三.概要设计(1)本程序包含了10个函数①主函数main()②显示操作菜单函数menu()③景点名称及其简介设置函数picture(void)④图中任意景点相关信息查询函数checkscene(algraph g)⑤图中任意两个景点间的最短路径Dijkstra(algraph g)⑥任意两个景点间的全部路径alldistance(algraph g)⑦增加有关景点和道路的信息addscene(algraph g)⑧删除有关景点和道路的信息delscene(algraph g)⑨更新有关景点和道路的信息change(algraph g)⑩显示全景chang()(2)各函数之间的关系menu()picture(void)checkscene(algraph g)Dijkstra(algraph g)main() alldistance(algraph g)addscene(algraph g)delscene(algraph g)change(algraph g)chang()四.详细设计实现概要设计中定义的所有的数据类型,对每个操作给出伪代码,对主程序和其他模块也都需要写出伪代码算法。
数据结构课程设计—校园导航报告

课程设计报告学院、系:大学学院计算机科学与技术系专业:软件工程班级:2008级9班课程设计科目数据结构学生:04080904 喆指导教师:娄雅芳完成时间:2010年10月-12月校园导航系统设计报告一、设计任务与目标设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
本系统是一个涉及大学学院相关景点和场所查询系统,是为了方便人们能够更快更准地获得学校各个景点和场所的详细信息。
本系统为用户提供以下功能:(一)、查询了解学校概况,为导游参观者提供关于学校的相关信息。
(二)、查询校园各个场所和景点信息;(三)、为导游者或外来人员参观人员提供校园交通信息,方便用户走访学校。
校园导航查询系统的开发方法总结如下:(1) 调查,了解学校各个场所与场所或者是各个景点与景点之间的信息,路径和距离,从外来人员或者参观者和走访者的角度出发,该如何设计才能满足用户需求。
(2) 分析,对调查得到的数据进行分析,根据其要求实现的功能分析系统结构和界面将实现的基本功能。
(3) 设计与开发,设计系统界面并编辑实现其各个功能的代码。
(4) 调试,在设计完成后,调试系统运行的状况,修改完善系统,然后进行测试。
二、方案设计与论证校园旅游模型是由各个景点和景点以及场所和场所之间的路径组成的,所以这完全可以用数据结构中的图来模拟。
用图的结点代表景点或场所,用图的边代表景点或场所之间的路径。
所以首先应创建图的存储结构。
结点值代表景点信息,边的权值代表景点间的距离。
结点值及边的权值采用图存储。
本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。
计算路径长度,最短路线和最佳路径时可分别用迪杰斯特拉(Dijkastra)算法和哈密而顿回路算法实现。
最后用switch选择语句选择执行浏览景点信息或查询最短路径和距离。
《校园导航系统》课程设计报告

《校园导航系统》课程设计报告姓名:郭璇学号:110263100129 班级:10网络专业:网络工程指导教师:唐轶媛蒋荣萍时间:2012/6/25-2012/7/6信息科学与工程学院目录摘要 (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(); 主菜单,写界面操作的函数。
校园导航定位系统课程设计

校园导航定位系统课程设计一、课程目标知识目标:1. 理解并掌握校园导航定位系统的基本原理与功能;2. 学习并运用相关的地理信息系统(GIS)知识,进行校园地图的解读与分析;3. 了解全球定位系统(GPS)及其在校园导航中的应用。
技能目标:1. 能够运用校园导航定位系统,进行校园内位置信息的查找与路径规划;2. 培养学生团队协作能力,通过小组讨论、分享,共同解决校园导航中遇到的问题;3. 提高学生的实际操作能力,学会使用相关设备和技术进行定位与导航。
情感态度价值观目标:1. 培养学生对地理信息科学的兴趣,激发学生探索未知、勇于创新的精神;2. 强化学生的环保意识,倡导绿色出行,提高学生对校园环境的保护意识;3. 培养学生热爱学校、关爱他人的情感,提高学生社会责任感。
本课程针对中学生设计,结合学科特点,以实用性为导向,充分考虑学生年龄特点和认知水平。
通过本课程的学习,使学生能够将所学知识应用于实际生活,提高解决问题的能力,同时培养良好的情感态度价值观。
课程目标具体、可衡量,为后续教学设计和评估提供明确方向。
二、教学内容1. 校园导航定位系统原理介绍- 导航定位技术的发展背景与现状- 校园导航定位系统的组成与工作原理2. 地理信息系统(GIS)知识- 校园地图的基本要素与解读- GIS在校园导航中的应用3. 全球定位系统(GPS)应用- GPS的原理与功能- GPS在校园导航中的实际应用4. 实践操作与案例分析- 校园导航定位设备的认识与使用- 实际操作:校园内路径规划与导航- 案例分析:解决校园导航中遇到的问题5. 团队协作与讨论分享- 小组讨论:探讨校园导航定位系统的优缺点- 分享经验:介绍个人在校园导航中的实用技巧教学内容依据课程目标,结合教材章节,确保科学性和系统性。
教学大纲明确,教学内容安排合理,注重理论与实践相结合,充分调动学生的积极性与参与度。
通过本章节的学习,使学生深入理解校园导航定位系统的相关知识,提高实际操作能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目石铁大校园导航系统学院信息科学与技术学院专业计算机科学与技术学号 20112840 学生姓名刘铸辉指导教师姓名陈娜日期:2013-8-31一.题目与要求实习一校园导游程序[ 问题描述]用无向网表示学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
游客通过终端可询问:(1 )从某一景点到另一景点的最短路径。
(2 )游客从公园进入,选取一条最佳路线。
(3 )使游客可以不重复地浏览各景点,最后回到出口(出口就在入口旁边)。
[ 基本要求](1 )将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离.为此图选择适当的数据结构。
(2 )把各种路径都显示给游客,由游客自己选择浏览路线。
(3 )画出景点分布图于屏幕上。
[ 实现提示](1 )构造一个无向图G 并用邻接矩阵来存储。
(2 )利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][]来记录,最短路径长度就用一维数组d[i] 存放;i 的范围:0 ~20 。
(3 )一维数组have[] 是用来记录最短路径出现顶点的顺序。
(4 )根据起点和终点输出最短路径和路径长度。
二.需求分析本校园导航系统由C语言编写,主要掌握最短路径的实现方法,以及构造无向图G并用邻接矩阵来存储,掌握迪杰斯特拉算法来算最短路径。
1.输入的形式和输出的范围:2.输出的形式:3.程序所能到达的功能:A.图中任意景点的相关信息查询B.任意两个景点间的最短路径C.任意两个景点间的所有路径D.增加有关景点和道路的信息E.删除更新有关景点和道路的信息F.更新有关景点和道路的信息G.显示全景H.退出该系统三.概要设计(1)本程序包含了10个函数①主函数main()②显示操作菜单函数 menu()③景点名称及其简介设置函数 picture(void)④图中任意景点相关信息查询函数 checkscene(algraph g)⑤图中任意两个景点间的最短路径 Dijkstra(algraph g)⑥任意两个景点间的全部路径 alldistance(algraph g)⑦增加有关景点和道路的信息 addscene(algraph g)⑧删除有关景点和道路的信息 delscene(algraph g)⑨更新有关景点和道路的信息 change(algraph g)⑩显示全景 chang()(2)各函数之间的关系menu()picture(void)checkscene(algraph g)Dijkstra(algraph g)main() alldistance(algraph g)addscene(algraph g)delscene(algraph g)change(algraph g)chang()四.详细设计实现概要设计中定义的所有的数据类型,对每个操作给出伪代码,对主程序和其他模块也都需要写出伪代码算法。
(1)结点类型和指针类型typedef struct {int adj;int *info;}sceneinfo;typedef struct adjlist{int num;char *sight;char *description;}adjlist;typedef struct algraph{adjlist ver[MAXNUM];sceneinfo arcs[MAXNUM][MAXNUM];int vexnum,arcnum;} algraph;(2)图的基本操作①主菜单//主菜单int menu(void){ int i;printf("\n-------------------------欢迎来到莱震德瑞hui 校园导航系统!!-----------------------------------------------------\n");printf("1.图中任意景点的相关信息查寻\n");printf("2.任意两个景点间的最短路径\n");printf("3.任意两个景点间的所有路径\n");printf("4.增加有关景点和道路的信息\n");printf("5.删除更新有关景点和道路的信息\n");printf("6.更新有关景点和道路的信息\n");printf("7.显示全景\n ");printf("8.退出该系统\n ");printf("---------------------------让辉哥带大家在石家庄铁道大学翱翔吧!!------------------------------------------------------\n");printf("请输入你要进行的操作:");scanf("%d",&i);return(i);}②景点名称及其简介void picture(void){ int i,j;m.vexnum=11;m.arcnum=16;for(i=0;i<m.vexnum;i++)m.ver[i].num=i;m.ver[0].sight="xiaomen";m.ver[1].sight="学校大门,一教";m.ver[2].sight="图书馆";m.ver[3].sight="操场";m.ver[4].sight="体育馆";m.ver[5].sight="青春苑";m.ver[6].sight="办公楼";m.ver[7].sight="第一实验楼";m.ver[8].sight="第九实验楼";m.ver[9].sight="第九宿舍楼";m.ver[10].sight="家属院";m.ver[1].description="进入学校大门就可以看见一教,一教西面是二教和三教";m.ver[2].description="自习和阅读的心灵家园,后身是第二实验楼";m.ver[3].description="跑道和足球场";m.ver[4].description="室内篮球场和游泳场";m.ver[5].description="学生活动中心和综合餐厅";m.ver[6].description="办公中心,包括开元楼和春晖楼";m.ver[7].description="挨着医院和综合教学楼,物理实验";m.ver[8].description="计算机和电工实验,西邻机械学院";m.ver[9].description="生活区中心,西邻超市水房澡堂,东临一,二三食堂";m.ver[10].description="教职工住处,在学校最北面";for(i=0;i<m.vexnum;++i)for(j=0;j<m.vexnum;++j)m.arcs[i][j].adj=INF;m.arcs[1][2].adj=m.arcs[2][1].adj=100;m.arcs[1][3].adj=m.arcs[3][1].adj=300;m.arcs[2][6].adj=m.arcs[6][2].adj=500;m.arcs[3][5].adj=m.arcs[5][3].adj=600;m.arcs[1][4].adj=m.arcs[4][1].adj=220;m.arcs[4][5].adj=m.arcs[5][4].adj=600;m.arcs[4][9].adj=m.arcs[9][4].adj=450;m.arcs[4][6].adj=m.arcs[6][4].adj=650;m.arcs[5][7].adj=m.arcs[7][5].adj=300;m.arcs[6][8].adj=m.arcs[8][6].adj=600;m.arcs[10][9].adj=m.arcs[9][10].adj=100;m.arcs[7][10].adj=m.arcs[10][7].adj=250;m.arcs[7][9].adj=m.arcs[9][7].adj=280;m.arcs[8][9].adj=m.arcs[9][8].adj=400;m.arcs[8][4].adj=m.arcs[4][8].adj=100;}③图中任意景点相关信息查询void checkscene(algraph g){ int i,j;char ch;while(1){ sceneplace();printf("请输入你要查询的景点的编号:");scanf("%d",&i);if(i>p || i<0)printf("输入错误!!\n");else{for(j=0;j<=p;j++){ if(i==j){ printf("你要查询的景点的相关信息如下:\n");printf("%d\t\t%s\n",g.ver[i].num,g.ver[i].sight);printf("%s\n",g.ver[i].description);}}}printf("是否继续查询?(y|n):");scanf("%s",&ch);if(ch=='N'||ch=='n')break;}}④图中任意两个景点间的最短路径void Dijkstra(algraph g){ char ch;int path1[MAXNUM];int dist[MAXNUM];int s[MAXNUM];int mindis,i,j,u,n=p;int l,k;int v0,po;while(1){sceneplace();printf("请输入出发景点的序号:");scanf("%d",&v0);printf("请输入目的景点的序号:");scanf("%d",&po);for(i=0;i<n;i++){ dist[i]=g.arcs[v0][i].adj;s[i]=0;if(g.arcs[v0][i].adj!=INF)path1[i]=v0;elsepath1[i]=-1;}s[v0]=1;path1[v0]=0;for(i=0;i<n;i++){ mindis=INF;u=-1;for(j=0;j<n;j++)if(s[j]==0 && dist[j] < INF){ u=j;mindis=dist[j];}s[u]=1;for(j=0;j<n;j++)if(s[j]==0)if(g.arcs[u][j].adj < INF&& dist[u]+g.arcs[u][j].adj<dist[j]){ dist[j]=dist[u]+g.arcs[u][j].adj;path1[j]=u;}}dispath(g,dist,path1,s,n,v0,po);printf("\n是否继续查询?(y|n):");scanf("%s",&ch);if(ch=='N'||ch=='n')break;}}⑤任意两个景点间的全部路径void path(algraph g,int i,int j,int k){int s,ko;if(r[k]==j){a++;printf("第%d条:",a);for(s=0;s<=k-1;s++){ printf("%s",g.ver[r[s]].sight);printf("-->");}printf("%s\n",g.ver[r[s]].sight);}s=0;while(s<g.vexnum){if(s!=i){ ko=r[k];if(g.arcs[ko][s].adj != INF && visited[s]==0) { visited[s]=1;r[k+1]=s;path(g,i,j,k+1);visited[s]=0;}}s++;}}void alldistance(algraph g){ int i,j,k,l;char sh;while(1){ sceneplace();printf("\n请选择出发景点的序号:");scanf("%d",&i);printf("\n请选择目地景点的序号:");scanf("%d",&j);for(k=0;k<g.vexnum;k++)if(i==g.ver[k].num) i=k;for( l=0;l<g.vexnum;l++)if(j==g.ver[l].num) j=l;printf("从%s到%s的所有游览路径有:\n",g.ver[i].sight,g.ver[j].sight); r[0]=i;for(k=0;k<1;k++){ visited[i]=0;a=0;path(g,i,j,0);}printf("继续查询?(y|n):");scanf("%s",&sh);if(sh=='N'||sh=='n')break;}}⑥增加有关景点和道路的信息void addscene(algraph g){int j,i,b;char yi,mon[10],moh[100];while(1){ sceneplace();g.ver[p].num=p;printf("请输入新景点的名称:");scanf("%s",mon);m.ver[p].sight=(char*)malloc(10);strcpy(m.ver[p].sight,mon);printf("\n请输入新景点的相关简介:");scanf("%s",moh);m.ver[p].description=(char*)malloc(100);strcpy(m.ver[p].description,moh);g.vexnum=g.vexnum+1;for(j=0;j<p;++j){ m.arcs[p][j].adj=INF;m.arcs[j][p].adj=INF;}printf("\n请问有几个景点与该景点直接相通:");scanf("%d",&i);printf("\n请输入与该景点相通的景点的序号及它们之间的距离:");for(j=0;j<i;j++){ printf("\n请输入第%d个景点的序号:",j+1);scanf("%d",&b);printf("\n请输入该两个景点之间的距离:");scanf("%d",&g.arcs[p][b].adj);g.arcs[b][p].adj=g.arcs[p][b].adj;m.arcs[b][p].adj=g.arcs[p][b].adj;m.arcs[p][b].adj=m.arcs[b][p].adj;}printf("你输入的景点信息是:\n");printf("%d \t%s \t %s\n\n ", g.ver[p].num,m.ver[p].sight,m.ver[p].description);g.arcnum=g.arcnum+i;p=p+1;m.vexnum=p;sceneplace();printf("是否继续添加?(y|n):");scanf("%s",&yi);if(yi=='N'||yi=='n')break;}}⑦删除有关景点和道路的信息void delscene(algraph g){ int i,j,k,l;char sh;while(1){sceneplace();printf("\n请输入你将要删除的景点序号:");scanf("%d",&i);for(k=0;k<g.vexnum;k++)if(i==g.ver[k].num) j=k;m.ver[j].sight=NULL;for(l=1;l<m.vexnum;++l){ m.arcs[l][j].adj=INF;m.arcs[j][l].adj=INF;}m.vexnum=m.vexnum-1;sceneplace();printf("删除继续?(y|n):");scanf("%s",&sh);if(sh=='N'||sh=='n')break;}}⑧更新有关景点和道路的信息void change(algraph g){ int i,b,j,th,fh,k;char sh,mon[10],moh[100];while(1){sceneplace();printf("请输入你将要修改信息的景点序号:");scanf("%d",&i);for(k=0;k<g.vexnum;k++)if(i==g.ver[k].num) j=k;printf("-----------------------------------------\n"); printf("1.景点名称\t2.景点简介\t3.道路消息\n");printf("-----------------------------------------\n"); printf("请输入你要进行的操作的序号:");scanf("%d",&th);switch(th){ case 1:printf("请输入新景点名称:");scanf("%s",mon);g.ver[j].sight=mon;m.ver[j].sight=g.ver[j].sight;break;case 2:printf("请输入新景点简介:");scanf("%s",moh);m.ver[j].description=(char*)malloc(100);strcpy(m.ver[j].description,moh);break;case 3:printf("请输入要修改的与该景点相通的景点的距离的序号个数:");scanf("%d\n",&fh);for(k=0;k<fh;k++){ printf("请输入要修改的第%d个景点的序号:",j+1);scanf("%d\n",&b);printf("请重新输入该两个景点之间的距离:");scanf("%d",&m.arcs[j][b].adj);m.arcs[b][j].adj=m.arcs[j][b].adj;}}sceneplace();printf("继续修改?(y|n):");scanf("%s",&sh);if(sh=='N'||sh=='n')break;}⑨显示全景略⑩主函数int main(){picture();printf("\n------------------------------校园导航系统----------------------------------------------\n");sceneplace();for(;;){switch(menu()){ case 1:checkscene(m);break;case 2:Dijkstra(m);break;case 3:alldistance(m);break;case 4:addscene(m);break;case 5:delscene(m);break;case 6:change(m);break;case 7:chang(m);break;case 8:printf("感谢你使用辉哥校园导航系统!!辉哥又一次带大家拯救了世界!!再见!!\n");exit(0);default:printf("输入错误!!请重新输入你要进行的操作!!\n");}}}五.调试分析在调试删除修改功能过程中,删除的总是不正确,删除的结果显示,没有将要删除的景点删掉,最后发现删除的结点不正确,删除应该与输入的值和头结点next比较,而不是头结点。