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

合集下载

校园导航程序课程设计

校园导航程序课程设计

校园导航程序课程设计一、课程目标知识目标: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()定义为其成员函数。

数据结构校园导航系统课程设计报告

数据结构校园导航系统课程设计报告

《校园导航系统》课程设计报告姓名:蒋小文学号:110236100123 班级:1班专业:网络工程指导教师:唐轶媛蒋荣萍时间:2012年7月5日信息科学与工程学院目录摘要 (1)1.目的 (2)2.要求 (2)3.题目 (2)4.任务 (2)1).需求分析 (3)2).概要设计 (4)3).详细设计 (5)4).调试分析 (8)5.课设总结 (18)6.附录源代码 (19)1.目的数据结构是计算机专业的核心课程,是一门实践性很强的课程。

课程设计是加强学生实践能力的一个强有力手段,要求学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C (C++)程序并上机调试的基本方法,还要求学生在完成程序设计的同时能够写出比较规范的设计报告。

2.要求2.1 课程设计时间为2周;2.2 设计语言C(C++)不限;2.3 课余时间完成源程序和课程设计报告等文档书写工作,上机时间只能做调试工作。

上机时带上源程序、数据结构教材、C语言教材。

2.4 上机任务(1)选择并定义合适的数据结构;(2)根据程序所要完成的基本要求,设计出完整的算法;(3)设计出主程序(main函数),使其成为完整的程序。

2.5 上机时间:上午8:30--11:30,下午3:00--5:303.题目题目:校园导航系统设计一个校园导游程序,后台操作:3.1、操作员信息管理如修改密码等3.2、能根据学校的规模进行添加景点信息、修改景点信息等功能,3.3、若临时有交通管制,能进行交通管制的设置和撤销(如某某时间段那条路进行那个方向的交通管制等)3.4、前台为来访的客人提供各种信息查询服务:3.4.1、设计学校的校园平面图,所含景点不少于10个。

以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

3.4.2、为来访客人提供图中任意景点相关信息的查询。

3.4.3、提供途中任意景点问路查询,即求任意两个景点间的一条最短的简单路径。

课程设计校园导航系统

课程设计校园导航系统

课程设计校园导航系统一、课程目标知识目标: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)函数描述:主要将每个节点进行命名、每个顶点到其他所有定点的路径值用邻接矩阵进行存储。

数据结构课程设计—校园导航报告

数据结构课程设计—校园导航报告

课程设计报告学院、系:大学学院计算机科学与技术系专业:软件工程班级:2008级9班课程设计科目数据结构学生:04080904 喆指导教师:娄雅芳完成时间:2010年10月-12月校园导航系统设计报告一、设计任务与目标设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。

本系统是一个涉及大学学院相关景点和场所查询系统,是为了方便人们能够更快更准地获得学校各个景点和场所的详细信息。

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

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

校园导航查询系统的开发方法总结如下:(1) 调查,了解学校各个场所与场所或者是各个景点与景点之间的信息,路径和距离,从外来人员或者参观者和走访者的角度出发,该如何设计才能满足用户需求。

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

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

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

二、方案设计与论证校园旅游模型是由各个景点和景点以及场所和场所之间的路径组成的,所以这完全可以用数据结构中的图来模拟。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数据结构课程设计之校园导航系统

数据结构课程设计之校园导航系统

##大学数据结构课程设计报告题目:校园导航系统院(系):计算机工程学院学生姓名:班级:学号:起迄日期: 2011.6.19--6.30指导教师:指导教师评语:成绩:签名:年月日20XX—20XX年度第 2 学期一、需求分析1.问题描述:从理工大学的平面图中选取10个有代表性的景点,抽象成一个无向带权图。

以图中顶点表示景点,边上的权值表示两地之间的距离,求取任意两点间最短路径。

2.基本功能本程序主要实现的功能是为用户提供路径咨询。

根据用户指定的始点和终点输出相应路径(用到output()函数),或者根据用户指定的景点输出景点的信息(用到search()函数)。

3.输入输出本程序主要输入输出信息是景点编号和景点名称,以字符串的形式输入输出。

二、概要设计1.设计思路:本程序是校园导航系统,即求两点间的最短路径。

其主要算法是迪杰斯特拉算法,在此基础上再加上菜单函数输出函数造图函数查找函数即可。

2.数据结构设计:抽象数据类型图的定义如下:ADT Graph{数据对象V:V是具有相同特性的数据元素的集合,称为顶点集。

数据关系R:R={VR}VR={(v,w)|v,w V,(v,w)表示v和w之间存在路径}基本操作p:CreatGraph(&G,V,VR)初始条件:V是图的顶点集,VR是图中边的集合。

操作结构:按V和VR的定义构造图G。

DestroyGraph(&G)初始条件:图G存在。

操作结果:销毁图G。

LocateVex(G,u)初始条件:图G存在,u和G中顶点有相同特征。

操作结果:若G中存在顶点u,则返回该顶点在图中位置;否则返回其他信息。

GetVex(G,v)初始条件:图G存在,v是G中某个顶点。

操作结果:返回v的信息。

FirstEdge(G,v)初始条件:图G存在,v是G中某个顶点。

操作结果:返回依附于v的第一条边。

若该顶点在G中没有邻接点,则返回“空”。

NextEdge(G,v,w)初始条件:图G存在,v是G中某个顶点,w是v的邻接顶点。

课程设计校园导航

课程设计校园导航

课程设计校园导航一、教学目标本课程旨在通过校园导航的学习,让学生掌握校园地图的阅读和使用方法,培养学生独立寻找目的地和规划路线的能力。

具体目标如下:1.了解地图的基本要素,如比例尺、图例、方向等。

2.掌握如何阅读校园地图,理解地图上的符号和标注。

3.能够使用校园地图找到指定的地点。

4.学会根据目的地和起始位置规划合理的路线。

5.能够运用地图信息进行简单的方向判断和距离估算。

情感态度价值观目标:1.培养学生对校园环境的认知和热爱,增强校园归属感。

2.培养学生独立思考和解决问题的能力,提高自信心。

二、教学内容本课程的教学内容主要包括校园地图的阅读方法和路线规划技巧。

具体安排如下:第一课时:校园地图的基本知识1.介绍地图的基本要素,如比例尺、图例、方向等。

2.学习如何阅读校园地图,理解地图上的符号和标注。

第二课时:校园地图的使用技巧1.学习如何找到指定的地点,认识校园地图上的重要建筑物和设施。

2.学会根据目的地和起始位置规划合理的路线,考虑交通方式和时间成本。

第三课时:校园地图的实际应用1.进行校园实地考察,运用地图找到指定的地点。

2.小组合作,根据目的地和起始位置规划并执行路线。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法等。

1.讲授法:教师通过讲解地图的基本知识和使用技巧,为学生提供理论支持。

2.讨论法:学生分组讨论实际案例,分享自己的理解和经验,互相学习。

3.案例分析法:通过分析具体的校园导航案例,引导学生思考和解决问题。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用适合学生年龄特点和认知水平的校园导航教材,提供系统的知识框架。

2.参考书:提供相关的参考书籍,供学生拓展阅读和学习。

3.多媒体资料:制作课件和教学视频,以图文并茂的形式展示教学内容。

4.实验设备:准备地图和导航工具,如指南针、测距仪等,让学生进行实际操作和实验。

校园导航问题课程设计

校园导航问题课程设计

校园导航问题课程设计一、课程目标知识目标:1. 学生能理解并掌握校园导航问题的基本概念,包括坐标系、方向、距离等。

2. 学生能够运用所学的数学知识,如几何、代数等,解决校园导航中的实际问题。

3. 学生能够通过分析校园地图,识别并描述校园内的主要建筑、道路和地标。

技能目标:1. 学生能够运用地图阅读技巧,准确地找到校园内任意两点之间的路径。

2. 学生能够运用计算工具或手工计算,估算路径的长度和所需时间。

3. 学生能够运用问题解决策略,如比较、分类、推理等,解决复杂的校园导航问题。

情感态度价值观目标:1. 学生能够培养对数学学习的兴趣,认识到数学在生活中的广泛应用。

2. 学生能够培养合作精神,与同学一起探讨和解决校园导航问题。

3. 学生能够培养空间观念和方向感,提高在校园环境中的适应能力和自主能力。

分析课程性质、学生特点和教学要求:本课程为数学学科,结合校园导航问题,旨在让学生在实际情境中运用所学知识。

考虑到学生所在年级的特点,课程设计注重培养学生的空间观念和问题解决能力。

在教学过程中,注重启发式教学,引导学生主动探究,提高学生的实践操作能力和创新思维。

二、教学内容1. 校园坐标系建立:介绍坐标系的定义,通过校园地图建立平面直角坐标系,使学生理解坐标与实际位置的关系。

2. 方向与距离测量:讲解方向的概念,学习使用量角器、直尺等工具测量地图上的方向和距离。

3. 路径规划:结合实际校园路径,运用最短路径算法(如Dijkstra算法)进行路径规划,分析并优化行走路线。

4. 时间与速度计算:运用速度公式,根据路径长度计算行走时间,培养学生运用数学知识解决实际问题的能力。

5. 校园导航应用:结合现代导航技术,介绍GPS定位、电子地图等导航工具的使用方法,使学生了解科技在导航中的应用。

教学内容安排和进度:第一课时:校园坐标系建立与方向距离测量。

第二课时:路径规划与时间速度计算。

第三课时:校园导航应用与实践操作。

校园导航系统的课程设计

校园导航系统的课程设计

校园导航系统的课程设计一、课程目标知识目标:1. 学生能理解并掌握校园导航系统的基本概念和原理;2. 学生能掌握使用校园导航系统所需的相关地图知识,如地图阅读、方向识别等;3. 学生能了解并描述校园导航系统中的定位技术、路径规划算法等关键技术。

技能目标:1. 学生能够运用所学知识,独立操作校园导航系统,完成校园内的定位和路径规划;2. 学生能够分析并解决在使用校园导航系统过程中遇到的问题,提高问题解决能力;3. 学生能够通过小组合作,共同设计与完善校园导航系统,提高团队协作能力。

情感态度价值观目标:1. 学生通过学习校园导航系统,培养对地理信息科学和现代信息技术的兴趣和热情;2. 学生在学习过程中,增强对团队合作、互助互爱的认识,培养良好的团队精神和沟通能力;3. 学生能够认识到科技在现实生活中的应用,提高社会责任感和创新意识。

本课程针对初中年级学生设计,结合学生年龄特点,注重培养学生的学习兴趣和实际操作能力。

课程性质以实践性、综合性为主,通过讲授、实践、小组合作等多种教学方式,使学生掌握校园导航系统的相关知识,提高学生的实际问题解决能力和团队协作能力。

在教学过程中,注重分层教学,关注学生的个体差异,确保课程目标的实现。

课程目标的具体分解,便于教师在教学设计和评估中,有针对性地提高教学质量,实现学生的全面发展。

二、教学内容本章节教学内容主要包括以下几部分:1. 校园导航系统基础知识:- 地图的基本概念与类型;- 方向识别与地图阅读技巧;- 常见导航系统的功能与原理。

2. 定位技术与路径规划算法:- GPS定位原理及其在校园导航中的应用;- 路径规划算法的基本原理与分类;- 校园路径规划的实际应用案例分析。

3. 校园导航系统的操作与应用:- 系统注册、登录及基本设置;- 校园地图浏览与搜索功能;- 实地操作:使用校园导航系统完成指定路线的导航。

4. 小组合作设计与完善校园导航系统:- 分析现有校园导航系统的优缺点;- 小组讨论、设计并完善校园导航系统功能;- 展示与评价:展示各组设计成果,进行评价与交流。

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

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

题目石铁大校园导航系统学院信息科学与技术学院专业计算机科学与技术学号 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()四.详细设计实现概要设计中定义的所有的数据类型,对每个操作给出伪代码,对主程序和其他模块也都需要写出伪代码算法。

毕业论文校园导航系统数据结构课程设计报告书

毕业论文校园导航系统数据结构课程设计报告书

毕业论⽂校园导航系统数据结构课程设计报告书课程设计报告书课程名称数据结构设计题⽬校园导航系统专业班级计算机11-4 班⽬录1.设计时间 (2)2.设计⽬的 (2)3.设计任务 (2)4.设计内容 (2)4.1需求分析 (2)4.2总体设计 (3)4.3详细设计 (4)4.4测试与分析 (12)4.4.1测试 (12)4.4.2分析 (13)4.5 附录 (14)5 总结与展望 (20)6.参考⽂献 (21)7.成绩评定 (21)1 设计时间2013年12⽉3⽇2 设计⽬的1.加深对《数据结构》这⼀课程所学内容的进⼀步理解与巩固2.通过完成课程设计,逐渐培养⾃⼰的编程能⼒;3.培养给出题⽬后,构建框架,⽤计算机解决的能⼒;4.通过调试程序积累调试C程序设计的经验;3设计任务给出校园各主要建筑的名称信息及有线路联通的建筑之间的距离,利⽤校园导航系统计算出给定的起点到终点之间的最近距离及线路。

4 设计内容4.1需求分析1.程序所能达到的功能:(1) map——输出⼭东科技⼤学平⾯图。

(2) init()——按相应编号输⼊各个节点内容,对相应路径赋值的函数。

(3) floyd()-- --弗洛伊德求最短路径(4) information()——输出简介的函数(5) Path()——最短路径的输出函数(6) shortestpath()——调⽤弗洛伊德和最短路径输出的函数(7) main()——主函数2.输⼊的形式和输⼊值的范围:输⼊数字和字母:字母:以s查询最短路径;以i查询信息;以e退出程序。

数字:从1到9输⼊。

3.输出的形式:从A到B得最短路径为:A-到-C-到-D-到-B最短距离为:xxx⽶。

4.测试数据包括在正确的输⼊及输出结果及含有错误的输⼊及输出结果:Input:sOutput:Please enter the number two to query : 1 7Output:The shortest path from Area C dormitory building to library is: Area C dormitory building--Area C restaurant--library; The shortest distance is:150meters.Input:iOutput:Please enter the number of query site: 3Output:@name: Area B dormitory building@introduction:Area B student rest areainput:eoutput:Thank you for you use4.2总体设计1.抽象数据类型定义typedef struct{char name[100] ;int number;char introduce[100];}Vertex;2.主程序模块的整体流程1、进⼊主函数,调⽤init(),map()。

校园导航课程设计

校园导航课程设计

校园导航课程设计一、课程目标知识目标:1. 学生能理解并掌握校园平面图的基本要素,如比例尺、方向、图例等。

2. 学生能通过校园导航课程,学习并运用地理知识,如定位、方向判断和路线规划。

3. 学生能了解并描述学校的历史、文化及各个设施的用途。

技能目标:1. 学生能够运用地图和导航工具,进行实地定位和方向判断。

2. 学生能够独立规划从一点到另一点的校园内最优路线。

3. 学生通过小组合作,提高问题解决能力和团队协作能力。

情感态度价值观目标:1. 学生培养对校园环境的热爱,增强校园荣誉感和归属感。

2. 学生在课程中培养勇于探索和实践的精神,提高自信心。

3. 学生通过学习校园导航,培养尊重规则、关爱他人的品质,增强社会责任感。

课程性质:本课程以实践性、互动性为主,结合地理知识,培养学生实际运用能力。

学生特点:六年级学生具备一定的地理知识基础,好奇心强,喜欢探索和实践活动。

教学要求:教师应注重引导学生将理论知识与实际操作相结合,鼓励学生积极参与,培养实际问题的解决能力。

同时,关注学生的情感态度价值观的培养,使学生在掌握知识技能的同时,形成良好的品质。

通过对课程目标的分解和实现,为学生提供明确的学习成果,便于教学设计和评估。

二、教学内容1. 校园平面图的认识:- 比例尺的理解与应用- 方向的判断与识别- 图例的解读与使用2. 实地导航技巧:- 定位的实践与应用- 路线规划的步骤与方法- 方向定位仪器的操作与使用3. 校园文化与历史:- 学校历史简介- 校园主要设施的介绍与了解- 校园特色文化的传承与发扬4. 小组合作与问题解决:- 小组分工与合作方法- 问题的发现与提出- 解决方案的设计与实施教学大纲安排:第一课时:校园平面图的认识与解读第二课时:实地导航技巧的实践与应用第三课时:校园文化与历史的了解与传承第四课时:小组合作与问题解决能力的培养教学内容关联教材:《小学地理》六年级上册第三章“地图的识别与应用”;《小学社会》六年级上册第二章“我们的学校”;《小学综合实践活动》六年级上册“校园探秘”主题。

校园导航系统设计

校园导航系统设计

指导教师(签字):教研室主任(签字):年月日课程名称:计算机软件技术基础课程设计设计题目:校园导航系统设计使用班级:电信101-2 指导教师:杨红娟、张君捧一、设计要求1.根据已知设计要求分析校园导航系统的设计功能,确定实现校园导航系统设计的方法,画出流程图,编写实现程序,并进行调试,完成系统软件设计。

2.基本教学要求:每人一台计算机,计算机安装VC、visio等软件。

二、设计步骤1.理论依据根据设计要求分析校园导航系统的设计要求,掌握设计中所涉及到的无向网的建立、遍历、求最短路径等基本算法,阐明设计原理。

2.方案设计根据设计要求确定校园导航系统中建立学校的平面图的图形数据结构,查询给定建筑信息、找出任意起始点与终点的最佳路径等基本功能实现的方案,画出流程图,并对各部分功能进行说明。

建议使用Visio等软件绘制框图。

3.程序设计根据设计要求及系统流程图,进行程序设计,编写实现程序,使用Matlab 等软件。

4.程序调试对编写的软件程序,进行调试,根据结果,完善程序功能。

三、设计成果及要求本课程设计成果为设计说明书(正文约3000~4000字),一般包括:(1)封面。

按照给定的统一格式。

(2)目录。

目录中的标题应与文中的标题一致,附录也应依次列入目录。

(3)摘要。

单独一页全文摘要。

(4)正文①设计目的和要求(简述本设计的任务和要求,可参照任务书和指导书);②设计原理(简述设计过程中涉及到的基本理论知识);③设计内容(按设计步骤详细介绍设计过程,即任务书和指导书中指定的各项任务)正文内容要分成若干章,如果章内还要划分小节,小节编号应采用分级阿拉伯数字链接式编号方法,第一级为“1”、“2”、“3”等,第二级为“1.1”、“1.2”、“1.3”等。

插图必须精心制作,线条粗细要合适,图面要整洁美观。

每幅插图应有图序和图题,图序和图题应写在图下方居中处,图序后空一格书写图题,图题应简明,后不加标点,每个图在正文中都要有“如图××所示”等字样提到。

校园导航地系统课程设计

校园导航地系统课程设计

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

2. 学生能描述地图坐标系、定位技术和路径规划算法的基本原理。

3. 学生了解地理信息系统(GIS)在校园导航中的应用。

技能目标:1. 学生能运用所学知识,使用校园导航地系统进行定位和路径规划。

2. 学生能通过实际操作,掌握地图坐标系转换和距离、角度测量方法。

3. 学生具备分析问题、解决问题的能力,能够针对校园导航中的实际问题提出解决方案。

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

2. 学生认识到校园导航地系统在生活中的重要性,增强学以致用的意识。

3. 学生通过合作学习,培养团队协作能力和沟通能力,提高人际交往能力。

课程性质:本课程为实践性较强的信息技术课程,结合地理、数学等学科知识,旨在培养学生的实际操作能力和问题解决能力。

学生特点:六年级学生具有一定的信息技术基础和地理知识,对新鲜事物充满好奇心,喜欢动手操作,但注意力集中时间有限。

教学要求:结合学生特点,课程设计应注重实践操作,以任务驱动法引导学生主动探究,充分调动学生的积极性。

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

二、教学内容1. 导航地系统基础知识:- 校园地图的基本构成要素- 地图坐标系及其转换方法- 定位技术原理及其在校园导航中的应用2. 地理信息系统(GIS)应用:- GIS的基本概念与功能- 校园导航中GIS的应用实例- GIS软件的基本操作与使用方法3. 路径规划与导航:- 路径规划算法原理- 校园路径规划的实际操作- 导航系统界面设计与使用4. 实践操作与案例分析:- 使用GIS软件绘制校园地图- 基于定位技术的校园导航应用- 分析校园导航中的实际问题,并提出解决方案教学内容安排与进度:第一课时:导航地系统基础知识,地图坐标系及其转换方法第二课时:定位技术原理及其在校园导航中的应用第三课时:GIS的基本概念与功能,校园导航中GIS的应用实例第四课时:路径规划算法原理,校园路径规划的实际操作第五课时:导航系统界面设计与使用,实践操作与案例分析教材章节及内容:《信息技术》六年级上册:第二章 地理信息系统与导航2.1 导航地系统基础知识2.2 GIS的基本概念与功能2.3 路径规划与导航2.4 实践操作与案例分析教学内容紧密结合课程目标,确保科学性和系统性,通过实践操作与案例分析,帮助学生将理论知识应用于实际情境中。

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

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

题目石铁大校园导航系统学院信息科学与技术学院专业计算机科学与技术学号********学生姓名刘铸辉指导教师姓名陈娜日期: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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《校园导航系统》课程设计报告姓名:学号:班级:网络专业:网络工程指导教师:时间: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(); 游客菜单,判断是否非法输入,不会死循环。

void Map(); 输出民大地图,由于时间关系,没有画出。

void ViewAsk(); 游客查询景点函数,让游客选择要查询的景点,判断是否非法输入,不会死循环。

void PathAsk(); 问路函数,根据游客的起点和终点给出最短路径,判断是否非法输入,不会死循环。

void Dijkstra(MGraph G,int v,int i); 迪杰斯特拉函数求最短路径void Ppath(MGraph G,int path[],int i,int v); 输出最短路径中的景点void Dispath(MGraph G,int dist[],int path[],int s[],int n,int v,int i); 查找最短路径。

void AdminMenu(); 管理员菜单,判断是否非法输入,不会死循环。

void Password(); 密码函数,管理员需输入密码才能进入后台,输入一次后无需再输入。

void AdminAlter(); 修改密码,需要再次输入密码。

void ViewAdd(); 增加景点,列出已有景点,判断新景点信息是和与已有景点的冲突,如冲突需重新输入,判断是否非法输入,不会死循环。

void ViewAlter(); 修改景点信息,由于时间关系,没有判断新修改的景点信息是否与已有景点信息冲突。

若要做次判断,应与增加景点的判断算法一致。

void ControlMenu(); 交通管制菜单,判断是否非法输入,不会死循环。

void PathControl(); 路径管理,可增加路径和修改路径,列出已有路径,根据用户的输入进行管理,判断是否非法输入,不会死循环。

但路径长度为整型,没有判断,若输入非整型,则进入死循环,一个大大的BUG ,能力有限。

void PathDel(); 删除路径,列出已有路径,用户根据提示进行删除。

判断是否非法输入,不会死循环。

void Read(MGraph &G); 读取文件。

void White(MGraph &G); 保存文件。

2.3操作界面 程序一开始登录主界面:游客菜单:管理员界面管理员界面管理员操作界面查询景点查询最短路径修改密码增加景点修改景点信息交通管制界面删除路径管理路径3 调试分析:当进入操作界面进行功能的选择,但非法输入时,应该提示错误并可以让用户重新选择,我使用的接收选择的是字符串,判断字符串长度是否等于1,如果不等于则是错误的,等于1后用switch 判断第一个字符,与case比较,调用相应的函数。

用whlie(1),使之一直循环,直到与case中相同,使用标志和break;让他跳出相应的循环层。

在这里经常会出错,所以要很小心的判断每个标志跳出的相应的循环,使他不会跳出不该跳出的循环。

另一个问题是最短路径。

在新增一个景点后,我选择不添加相邻的路径时(矩阵的行等于列始终为0,表示同一个景点到同一个景点的路径为0),再次查询最短路径时,起点为新增的路径,终点为任何一个景点都无法运行;但是起点为除新增景点外的景点,而终点为新增景点时,可正确输出:没有路径。

由于时间原因来不及调试了。

参考文献[1]严蔚敏、吴为民.数据结构(C语言版).北京:清华大学出版社.2007[2]林小茶.C语言程序设计(第二版).中国铁道出版社.2010[3]杜茂康、李昌兵等.C++面向对象程序设计(第2版).北京:电子工业出版社.2011附录源程序<All.h>:头文件详细代码#include<iostream.h>#include<iomanip.h>#include<fstream.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<stdio.h>#define MAXV 100#define INF 10000typedef struct{char code[10];char name[20];char instruction[100];}ViewPoint;typedef struct{int edges[MAXV][MAXV];int number;ViewPoint V[MAXV];}MGraph;void MainMenu();void UserMenu();void Map();void ViewAsk();void PathAsk();void Dijkstra(MGraph G,int v,int i);void Ppath(MGraph G,int path[],int i,int v);void Dispath(MGraph G,int dist[],int path[],int s[],int n,int v,int i); void AdminMenu();void Password();void AdminAlter();void ViewAdd();void ViewAlter();void ControlMenu();void PathControl();void PathDel();void Read(MGraph &G);void White(MGraph &G);<Main.cpp>:主函数#include"All.h"main(){int pass;char name[10],password[10];ifstream indata("Password.txt");indata>>pass>>name>>password;indata.close();pass=0;ofstream outdata("Password.txt");outdata<<pass<<endl<<name<<endl<<password;outdata.close();MainMenu();}<Menu.cpp>:菜单功能#include"All.h"void MainMenu(){system("cls");char choose[1];cout<<"\n\n\n"<<setw(56)<<"欢迎光临广西民族大学,祝您旅途愉快!"<<endl;cout<<setw(55)<<"广西民族大学校园导航系统为您服务!"<<endl;cout<<endl<<setw(45)<<"1.进入导航系统"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(45)<<"2.登录操作系统"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(37)<<"3.退出"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<endl<<setw(46)<<"请输入您的选择:";cin>>choose;if(strlen(choose)==1){switch(choose[0]){case '1':UserMenu();break;case '2':Password();break;case '3':exit(0);default:system("cls");cout<<"\n\n\n"<<endl<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(52)<<"按任意键返回主菜单重新选择!";cout<<endl;getch();MainMenu();break;}}else{system("cls");cout<<"\n\n\n"<<endl<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(52)<<"按任意键返回主菜单重新选择!";cout<<endl;getch();MainMenu();}}void UserMenu(){system("cls");char choose[1];int flag=0;cout<<"\n\n\n"<<setw(45)<<"校园导航系统!"<<endl;cout<<endl<<setw(45)<<"1.查看校园地图"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(45)<<"2.景点信息查询"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(45)<<"3.景点问路查询"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(43)<<"4.返回主菜单"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(37)<<"5.退出"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<endl<<setw(46)<<"请输入您的选择:";cin>>choose;if(strlen(choose)==1){switch(choose[0]){case '1':Map();break;case '2':ViewAsk();break;case '3':PathAsk();break;case '4':MainMenu();break;case '5':exit(0);default:system("cls");cout<<"\n\n\n"<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(49)<<"按任意键返回重新选择!";cout<<endl;getch();UserMenu();}}else{system("cls");cout<<"\n\n\n"<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(49)<<"按任意键返回重新选择!";cout<<endl;getch();UserMenu();}}void Password(){system("cls");char name[10],password[10];char entername[10],enterpassword[10];char choose[1];int pass,flag=0,flag1=0;ifstream indata("Password.txt");indata>>pass>>name>>password;indata.close();if(pass)AdminMenu();else{cout<<"\n\n\n"<<setw(40)<<"用户名:";cin>>entername;cout<<endl<<setw(40)<<"密码:";cin>>enterpassword;if(strcmp(name,entername)==0&&strcmp(password,enterpassword)==0) {pass=1;ofstream outdata("Password.txt");outdata<<pass<<endl<<name<<endl<<password;outdata.close();AdminMenu();}else{system("cls");cout<<"\n\n\n";cout<<setw(47)<<"用户名或密码错误!"<<endl;while(1){if(flag1){system("cls");cout<<"\n\n\n";}cout<<endl<<setw(45)<<"1.重新输入密码"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(43)<<"2.返回主菜单"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(37)<<"3.退出"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<endl<<setw(46)<<"请输入您的选择:";cin>>choose;if(strlen(choose)==1){switch(choose[0]){case '1':flag=1;Password();break;case '2':flag=1;MainMenu();break;case '3':exit(0);default:flag1=1;system("cls");cout<<"\n\n\n"<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(49)<<"按任意键返回重新选择!";cout<<endl;getch();}if(flag)break;}else{flag1=1;system("cls");cout<<"\n\n\n"<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(49)<<"按任意键返回重新选择!";cout<<endl;getch();}}}}}void AdminMenu(){system("cls");char choose[1];int flag=0;cout<<"\n\n\n"<<setw(45)<<"后台操作系统!"<<endl;cout<<endl<<setw(46)<<"1.操作员信息管理"<<endl;cout<<setw(46)<<"────────"<<endl;cout<<setw(44)<<"2.增加景点信息"<<endl;cout<<setw(46)<<"────────"<<endl;cout<<setw(44)<<"3.修改景点信息"<<endl;cout<<setw(46)<<"────────"<<endl;cout<<setw(44)<<"4.道路交通管制"<<endl;cout<<setw(46)<<"────────"<<endl;cout<<setw(42)<<"5.返回主菜单"<<endl;cout<<setw(46)<<"────────"<<endl;cout<<setw(36)<<"6.退出"<<endl;cout<<setw(46)<<"────────"<<endl;cout<<endl<<setw(46)<<"请输入您的选择:";cin>>choose;if(strlen(choose)==1){switch(choose[0]){case '1':AdminAlter();break;case '2':ViewAdd();break;case '3':ViewAlter();break;case '4':ControlMenu();break;case '5':MainMenu();break;case '6':exit(0);default:system("cls");cout<<"\n\n\n"<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(49)<<"按任意键返回重新选择!";cout<<endl;getch();AdminMenu();}}else{system("cls");cout<<"\n\n\n"<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(49)<<"按任意键返回重新选择!";cout<<endl;getch();AdminMenu();}}void ControlMenu(){system("cls");char choose[1];cout<<"\n\n\n"<<setw(45)<<"道路交通管制!"<<endl;cout<<endl<<setw(41)<<"1.管理路径"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(41)<<"2.删除路径"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(45)<<"3.返回上级菜单"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(37)<<"4.退出"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<endl<<setw(46)<<"请输入您的选择:";cin>>choose;if(strlen(choose)==1){switch(choose[0]){case '1':PathControl();break;case '2':PathDel();break;case '3':AdminMenu();break;case '4':exit(0);default:system("cls");cout<<"\n\n\n"<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(49)<<"按任意键返回重新选择!";cout<<endl;getch();ControlMenu();}}else{system("cls");cout<<"\n\n\n"<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(49)<<"按任意键返回重新选择!";cout<<endl;getch();ControlMenu();}}<User.cpp>:包涵游客用的函数#include"All.h"void Map(){system("cls");cout<<"\n\n\n"<<setw(42)<<"map!"<<endl;cout<<endl<<setw(47)<<"按任意键继续...";cout<<endl;getch();UserMenu();}void ViewAsk(){system("cls");MGraph G;char viewpoint[20];char choose[1];int i,flag=0,flag1=1,flag2=0;Read(G);cout<<"\n\n\n"<<setw(44)<<"民大景点:"<<endl<<endl;for(i=0;i<G.number;i++)cout<<setw(34)<<"("<<G.V[i].code<<")"<<G.V[i].name<<endl;while(1){cout<<endl<<setw(55)<<"请输入要查询的景点代码或名称:";cin>>viewpoint;for(i=0;i<G.number;i++){flag1=1;flag2=0;if(strcmp(G.V[i].code,viewpoint)==0||strcmp(G.V[i].name,viewpoint)==0){flag1=0;cout<<"\n\n"<<setw(37)<<"代码"<<":"<<G.V[i].code<<endl;cout<<setw(37)<<"名称"<<":"<<G.V[i].name<<endl;cout<<setw(37)<<"简介"<<":"<<G.V[i].instruction<<endl<<endl;while(1){cout<<setw(48)<<"是否继续查询(Y/N):";cin>>choose;if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0){flag2=1;break;}else if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag=1;UserMenu();break;}elsecout<<endl<<setw(43)<<"选择错误!"<<endl;}//while}//ifif(flag2||flag)break;}//forif(flag1){cout<<endl<<setw(46)<<"没有要查询的景点!"<<endl;while(1){cout<<setw(48)<<"是否继续查询(Y/N):";cin>>choose;if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0){break;}else if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){UserMenu();break;}elsecout<<endl<<setw(43)<<"选择错误!"<<endl;}//while}}}void PathAsk(){system("cls");MGraph G;char choose[1];char start[10],end[10];int i,j,flag=0,flag1=1,flag2=0,flag3=1;Read(G);cout<<"\n\n\n"<<setw(43)<<"民大景点:"<<endl<<endl;for(i=0;i<G.number;i++)cout<<setw(34)<<"("<<G.V[i].code<<")"<<G.V[i].name<<endl;cout<<endl<<setw(45)<<"请输入景点代码!"<<endl;while(1){flag=0,flag1=1,flag2=0,flag3=1;cout<<endl<<setw(40)<<"起点:";cin>>start;for(i=0;i<G.number;i++){if(strcmp(G.V[i].code,start)==0){flag1=0;cout<<setw(40)<<"终点:";cin>>end;for(j=0;j<G.number;j++){if(strcmp(G.V[j].code,end)==0){flag3=0;Dijkstra(G,i,j);while(1){cout<<setw(48)<<"是否继续查询(Y/N):";cin>>choose;if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0){flag2=1;break;}else if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag=1;UserMenu();break;}elsecout<<endl<<setw(43)<<"选择错误!"<<endl;}//whileif(flag||flag2)break;}if(flag||flag2)break;}//forif(flag3){cout<<endl<<setw(44)<<"没有该终点!"<<endl;while(1){cout<<setw(48)<<"是否继续查询(Y/N):";cin>>choose;if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0){flag2=1;break;}else if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag=1;UserMenu();break;}elsecout<<endl<<setw(43)<<"选择错误!"<<endl;}//while}if(flag2||flag)break;}if(flag||flag2)break;}//forif(flag1){cout<<endl<<setw(44)<<"没有该起点!"<<endl;while(1){cout<<setw(48)<<"是否继续查询(Y/N):";cin>>choose;if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0){flag2=1;break;}else if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag=1;UserMenu();break;}elsecout<<endl<<setw(43)<<"选择错误!"<<endl;}//while}//if}//while}void Dijkstra(MGraph G,int v,int i2) //v为出发顶点{int dist[MAXV],path[MAXV];int s[MAXV];int mindis,i,j,u;for(i=0;i<G.number;i++){dist[i]=G.edges[v][i]; //赋值s[i]=0;if(G.edges[v][i]<INF)path[i]=v;elsepath[i]=-1;}s[v]=1;path[v]=0;for(i=0;i<G.number;i++){mindis=INF;for(j=0;j<G.number;j++)if(s[j]==0&&dist[j]<mindis){u=j;mindis=dist[j];}s[u]=1;for(j=0;j<G.number;j++)if(s[j]==0)if(G.edges[u][j]<INF&&dist[u]+G.edges[u][j]<dist[j]){dist[j]=dist[u]+G.edges[u][j];path[j]=u;}}Dispath(G,dist,path,s,G.number,v,i2);}void Ppath(MGraph G,int path[],int i,int v){int k;k=path[i];if(k==v)return;Ppath(G,path,k,v);cout<<G.V[k].name<<"→";}void Dispath(MGraph G,int dist[],int path[],int s[],int n,int v,int i){if(dist[i]!=0){if(s[i]==1){cout<<endl<<setw(24)<<"从"<<G.V[v].name<<"到"<<G.V[i].name<<"的最短路径长度为:"<<dist[i]<<endl;cout<<setw(30)<<"路径为:"<<G.V[v].name<<"→";Ppath(G,path,i,v);cout<<G.V[i].name<<"\n\n";}elsecout<<endl<<setw(29)<<"从"<<G.V[v].name<<"到"<<G.V[i].name<<"不存在路径!\n";}else{cout<<endl<<setw(24)<<"从"<<G.V[v].name<<"到"<<G.V[i].name<<"的最短路径长度为:"<<dist[i]<<endl;cout<<setw(30)<<"路径为:"<<G.V[v].name<<"→"<<G.V[i].name<<"\n\n";}}<Admin.cpp>:包涵操作员使用到的函数#include"All.h"void AdminAlter(){system("cls");char newname[10];char enterpassword[10],newpassword[10],repassword[10];char name[10],password[10];char choose[1];int pass,flag=0,flag1;ifstream indata("Password.txt");indata>>pass>>name>>password;indata.close();cout<<"\n\n\n"<<setw(45)<<"请输入密码:";cin>>enterpassword;if(strcmp(password,enterpassword)==0){while(1){system("cls");cout<<"\n\n\n"<<setw(45)<<"设置新的用户名:";cin>>newname;cout<<endl<<setw(45)<<"设置新的密码:";cin>>newpassword;cout<<endl<<setw(45)<<"重复新的密码:";cin>>repassword;if(strcmp(newpassword,repassword)==0){ofstream outdata("Password.txt");outdata<<pass<<endl<<newname<<endl<<newpassword;outdata.close();system("cls");cout<<"\n\n\n"<<setw(45)<<"修改成功!"<<endl;cout<<endl<<setw(48)<<"按任意键继续...";cout<<endl;getch();AdminMenu();break;}else{system("cls");cout<<"\n\n\n"<<setw(49)<<"两次输入的密码不一致!"<<endl;flag1=0;while(1){if(flag1){system("cls");cout<<"\n\n";}cout<<endl<<setw(41)<<"1.重新设置"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(45)<<"2.返回上级菜单"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(37)<<"3.退出"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<endl<<setw(46)<<"请输入您的选择:";cin>>choose;if(strlen(choose)==1){switch(choose[0]){case '1':flag=1;break;case '2':flag=1;AdminMenu();break;case '3':exit(0);default:flag1=1;system("cls");cout<<"\n\n\n"<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(49)<<"按任意键返回重新选择!";cout<<endl;getch();}if(flag)break;}else{flag1=1;system("cls");cout<<"\n\n\n"<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(49)<<"按任意键返回重新选择!";cout<<endl;getch();}}}}}else{system("cls");cout<<"\n\n\n"<<setw(44)<<"密码不正确!"<<endl<<endl;flag1=0;while(1){if(flag1){system("cls");cout<<"\n\n\n";}cout<<setw(45)<<"1.重新输入密码"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(45)<<"2.返回上级菜单"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<setw(37)<<"3.退出"<<endl;cout<<setw(45)<<"───────"<<endl;cout<<endl<<setw(46)<<"请输入您的选择:";cin>>choose;if(strlen(choose)==1){switch(choose[0]){case '1':flag=1;AdminAlter();break;case '2':flag=1;AdminMenu();break;case '3':exit(0);default:flag1=1;system("cls");cout<<"\n\n\n"<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(49)<<"按任意键返回重新选择!";cout<<endl;getch();}if(flag)break;}else{flag1=1;system("cls");cout<<"\n\n\n"<<setw(43)<<"选择错误!"<<endl;cout<<endl<<setw(49)<<"按任意键返回重新选择!";cout<<endl;getch();}}}}void ViewAdd(){system("cls");MGraph G;char adjcode[10];char choose[1];int i,k=0,flag=0,flag1=1,flag2=0,flag3=1,length;Read(G);cout<<"\n\n\n"<<setw(43)<<"已有景点:"<<endl<<endl;for(i=0;i<G.number;i++)cout<<setw(34)<<"("<<G.V[i].code<<")"<<G.V[i].name<<endl;cout<<endl;while(1){flag1=1;flag2=0;cout<<endl<<setw(46)<<"新增景点代码:";cin>>G.V[G.number].code;for(i=0;i<G.number;i++){if(strcmp(G.V[i].code,G.V[G.number].code)==0){flag1=0;cout<<endl<<setw(52)<<"新景点代码与已有代码冲突!"<<endl;cout<<setw(44)<<"请重新输入!"<<endl<<endl;break;}}if(flag1){cout<<setw(46)<<"新增景点名称:";cin>>G.V[G.number].name;for(i=0;i<G.number;i++){flag1=1;if(strcmp(G.V[i].name,G.V[G.number].name)==0){flag1=0;cout<<endl<<setw(52)<<"新景点名称与已有名称冲突!"<<endl;cout<<setw(44)<<"请重新输入!"<<endl<<endl;break;}}if(flag1){cout<<setw(46)<<"新增景点简介:";cin>>G.V[G.number].instruction;cout<<endl;for(k=0;k<=G.number;k++){if(k==G.number)G.edges[G.number][k]=0;elseG.edges[G.number][k]=G.edges[k][G.number]=10000;}while(1){cout<<setw(49)<<"是否增加路径(Y/N):";cin>>choose;if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0){cout<<endl;while(1){cout<<setw(46)<<"相邻的景点代码:";cin>>adjcode;for(k=0;k<G.number;k++){if(strcmp(G.V[k].code,adjcode)==0){flag3=0;cout<<setw(46)<<"两景点间的距离:";cin>>length;G.edges[G.number][k]=G.edges[k][G.number]=length;}}if(flag3)cout<<endl<<setw(44)<<"没有该景点!";while(1){cout<<endl<<setw(50)<<"是否继续增加路径(Y/N):";cin>>choose;cout<<endl;if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0)break;else if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag2=1;break;}elsecout<<endl<<setw(43)<<"选择错误!"<<endl;}if(flag2)break;}break;}else if(strcmp(choose,"N")==0||strcmp(choose,"n")==0)break;elsecout<<endl<<setw(43)<<"选择错误!"<<endl;}G.number++;cout<<endl;while(1){cout<<setw(45)<<"增加景点成功!"<<endl;White(G);cout<<setw(50)<<"是否继续增加景点(Y/N):";cin>>choose;if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0){ViewAdd();break;}else if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag=1;cout<<"\n\n\n"<<setw(44)<<"保存成功!"<<endl;cout<<endl<<setw(47)<<"按任意键继续...";cout<<endl;getch();break;}elsecout<<endl<<setw(43)<<"选择错误!"<<endl;}//whileif(flag)break;}}//if}//whileAdminMenu();}void ViewAlter(){system("cls");MGraph G;char viewpoint[20];char newcode[10],newname[20],newinstruction[100];char choose[1];int i,k=0,flag=0,flag1=1,flag2=0;Read(G);cout<<"\n\n\n"<<setw(44)<<"已有景点:"<<endl<<endl;for(i=0;i<G.number;i++)cout<<setw(34)<<"("<<G.V[i].code<<")"<<G.V[i].name<<endl;while(1){cout<<endl<<setw(55)<<"请输入要修改的景点代码或名称:";cin>>viewpoint;for(i=0;i<G.number;i++){flag1=1;flag2=0;if(strcmp(G.V[i].code,viewpoint)==0||strcmp(G.V[i].name,viewpoint)==0){flag1=0;cout<<"\n\n"<<setw(37)<<"代码"<<":"<<G.V[i].code<<endl;cout<<setw(37)<<"名称"<<":"<<G.V[i].name<<endl;cout<<setw(37)<<"简介"<<":"<<G.V[i].instruction<<endl<<endl;cout<<setw(48)<<"无需修改按回n跳过"<<endl;cout<<setw(39)<<"新代码:";cin>>newcode;if(strcmp(newcode,"n")!=0&&strcmp(newcode,"N")!=0)strcpy(G.V[i].code,newcode);cout<<setw(39)<<"新名称:";cin>>newname;if(strcmp(newname,"n")!=0&&strcmp(newname,"N")!=0)strcpy(G.V[i].name,newname);cout<<setw(39)<<"新简介:";cin>>newinstruction;cout<<endl;if(strcmp(newinstruction,"n")!=0&&strcmp(newinstruction,"N")!=0) strcpy(G.V[i].instruction,newinstruction);White(G);while(1){cout<<setw(50)<<"是否继续修改(Y/N):";cin>>choose;if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0){flag2=1;break;}else if(strcmp(choose,"N")==0||strcmp(choose,"n")==0)。

相关文档
最新文档