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

合集下载

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

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

校园导航数据结构课程设计一、课程目标知识目标:1. 理解并掌握数据结构中图的基本概念,包括节点、边、路径等;2. 学习并掌握图的表示方法,如邻接矩阵和邻接表;3. 了解并掌握图的遍历算法,如深度优先搜索(DFS)和广度优先搜索(BFS);4. 学会运用图的相关算法解决校园导航问题。

技能目标:1. 能够运用所学知识构建校园导航系统的数据结构模型;2. 培养学生的编程能力,使其能够独立编写实现图的遍历算法的程序;3. 提高学生解决实际问题的能力,使其能够将图论知识应用于校园导航问题。

情感态度价值观目标:1. 培养学生对数据结构学科的兴趣,激发其学习热情;2. 培养学生的团队协作意识,使其在合作中共同解决问题;3. 引导学生关注校园环境,提高其社会责任感。

课程性质:本课程为高中年级数据结构课程的一部分,侧重于图论知识在实际问题中的应用。

学生特点:高中年级的学生已经具备了一定的编程基础和数学逻辑思维能力,对于解决实际问题的兴趣较为浓厚。

教学要求:结合学生特点,通过讲解、实践和讨论等方式,使学生掌握图论知识,并能够将其应用于解决校园导航问题。

同时,注重培养学生的团队协作能力和实际操作能力,提高其综合运用知识解决问题的能力。

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

二、教学内容1. 图的基本概念- 节点、边、路径、连通图、有向图等基本概念介绍- 图的应用场景,以校园导航为例2. 图的表示方法- 邻接矩阵及其性质- 邻接表及其实现3. 图的遍历算法- 深度优先搜索(DFS)算法原理与实现- 广度优先搜索(BFS)算法原理与实现4. 校园导航问题解决方案- 基于图的校园导航系统设计- 最短路径算法,如迪杰斯特拉(Dijkstra)算法介绍5. 教学实践- 编程实现图的遍历算法- 团队合作,设计并实现校园导航系统教学内容安排和进度:第一课时:图的的基本概念及表示方法第二课时:图的遍历算法原理与实现第三课时:最短路径算法介绍第四课时:教学实践,团队合作完成校园导航系统设计教材章节关联:本教学内容与教材中关于图论知识的章节相关,主要包括图的基本概念、图的表示方法、图的遍历算法等部分。

校园导航系统 数据结构课程设计 C++开发

校园导航系统 数据结构课程设计  C++开发

分类号编号华北***大学North China Institute of Water Conservancy andHydroelectric Power课程设计题目校园导航院系信息工程学院专业计算机科学与技术姓名******学号201117000指导教师*****2012年7月6 日目录1.需求分析 (1)1.1问题描述 (1)1.2课程设计目的 (1)1.3设计要求 (1)2.概要设计 (2)2.1任务定义 (2)2.2数据结构 (2)2.3 校园平面图展示 (2)2.4系统功能图 (4)3.详细设计 (4)3.1各个模块名称和功能 (4)3.2具体函数模块详解 (5)3.2.1校园平面图展示 (5)3.2.2任意两点的所有路径 (5)3.2.3校园基础设施介绍 (6)3.2.4指定两点间最短路径 (6)3.2.5单点到其他左右顶点间最短路径 (6)3.2.6华北水利水电学院简介 (7)3.2.7访客留言 (7)3.2.8浏览访客留言 (7)3.3 主要算法思想描述 (7)3.4各函数之间的调用关系示意图 (7)4.测试与分析 (8)4.1测试显示 (8)4.2调试分析 (12)4.2.1调试过程中遇到的问题与解决方案 (12)4.2.2算法的时空复杂度分析 (12)5.用户使用说明 (12)6.实验总结 (14)7.参考文献 (14)8.附件 (15)校园导航系统1.需求分析1.1问题描述我们熟悉一个地方的地形情况通常是借助于一张地图,通常的地图包含的信息十分的有限,而且具体到某一个建筑物,你不能了解到它的进一步的详细的情况。

因此,导航系统就应运而生了。

具体到本系统,作为用户浏览校园时,只拿着学校的地图是能够游遍全校,但是各建筑内部的情况就必须实地考察才能了解,既费时又费力。

有了我们的校园的导航系统,用户可以根据自己的需要,迅速找到所关心的地点,并且可以看到它的详细的信息。

1.2课程设计目的本课程设计的目的就是要达到理论与实际应用相结合,使我们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,培养程序设计技能如下:(1)了解并掌握数据结构算法的设计方法,具备初步的独立分析和设计能力;(2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(3) 独立完成,提高运用所学的理论知识和方法独立分析和解决问题的能力;1.3设计要求设计一个校园导航系统,为来访的客人提供导航服务,具体要求:(1) 设计学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。

数据结构课程设计导航图

数据结构课程设计导航图

西安邮电大学
(计算机学院)
数据结构设计报告
题目:导航图
专业名称:软件工程
班级:班
学生姓名:
学号(8位):
指导教师:
设计起止时间:2014年12月15日—2014年12月26日
一. 设计目的
1.数据结构课程设计是让学生综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发
2. 通过课程设计,使学生通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。

3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力
二. 设计内容
我设计的是旅游查询系统,是用于校园的,任何景区都可以用。

对于游客来说,游客可以查询要游览的景点,可以显示出该景点的相关信息,景点等级。

也可以输入起点和终点,找到一条最短路径,或者这两点之间所有路径。

或者输入起点,自动生成一个全程最短的游览路线。

当然游客也可以查看校园的平面图。

对于管理员来说,管理员可以增,删,改景点和道路信息。

三.概要设计
1.功能模块图;
2.各个模块详细的功能描述。

1.浏览全景
显示校园的平面图,让游客大概的了解校园的形貌,以及各个景点的位置。

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

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

数据结构与算法分析课程设计报告设计题目:校园导航咨询系统专业学号姓名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.进入主界面,出现校园导航咨询系统主菜单。

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

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

《校园导航系统》课程设计报告姓名:蒋小文学号: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. 学生能够了解导航地图的数据来源和更新方式,认识到地图数据的准确性和时效性。

技能目标:1. 学生能够运用导航地图系统进行定位和路径规划,解决实际出行问题。

2. 学生能够操作导航设备,进行地图浏览、搜索地点和获取路线信息等基本操作。

3. 学生能够分析导航地图系统中的误差来源,并提出改进措施,提高导航准确度。

情感态度价值观目标:1. 学生培养对导航地图系统的兴趣,认识到其在日常生活和国民经济发展中的重要性。

2. 学生能够关注导航地图系统的技术发展,积极了解新兴导航技术及其应用。

3. 学生在合作学习过程中,培养团队精神和沟通能力,提高解决问题的自信心。

课程性质:本课程为信息技术与地理学科相结合的综合性课程,旨在培养学生的地理信息素养和实际应用能力。

学生特点:六年级学生具备一定的地理知识和计算机操作技能,对新兴技术和实际应用有较高的兴趣。

教学要求:注重理论与实践相结合,鼓励学生动手实践和合作探究,提高学生的实际操作能力和创新思维。

将课程目标分解为具体的学习成果,为后续教学设计和评估提供依据。

二、教学内容1. 导航地图系统概述- 了解导航地图系统的定义、发展历程和未来发展趋势。

- 掌握导航地图系统的基本功能,如定位、路径规划、交通信息查询等。

2. 坐标系与地图投影- 学习地球坐标系、平面坐标系等常用坐标系及其转换方法。

- 掌握地图投影的基本原理,了解墨卡托投影、高斯-克吕格投影等常用地图投影方法。

3. 导航地图数据- 介绍导航地图数据来源、采集方法、更新周期及准确性。

- 分析导航地图数据在实际应用中的重要性,如实时交通信息、地点详细信息等。

4. 导航设备与操作- 学习导航设备的种类、功能及使用方法,如智能手机、车载导航仪等。

数据结构 图应用与导航系统

数据结构 图应用与导航系统

孝感学院计算机与信息科学学院09级数据结构课程设计报告题目:GPS导航系统简洁版班级:0917142学号:091714208姓名:付园园指导老师:李志敏首页GPS导航系统简洁版课题:《GPS导航系统与图的应用》设计:计科学院软件工程091714208 付园园指导老师:李志敏运用原理:图的存储与寻最短路径描述语言:c程序设计语言实现功能:详见功能介绍目录:目的与要求 (4)设计及实现要点 (5)程序设计的基本结构: (5)功能介绍: (8)改进创新: (8)期间遇到的问题,解决方案,总结: (8)漏洞发现与解决txt: (9)源程序: (9)功能测试与调试: (25)功能测试1 (25)功能测试2 (27)功能测试3 (27)功能测试3 (28)功能测试4 (29)功能测试5: (29)功能测试6: (30)功能测试7: (31)功能测试8: (32)功能测试9 (33)功能测试10 (34)功能测试11 (35)功能测试12 (36)功能测试13 (37)功能测试14 (38)结后语 (44)目的与要求目的:1:掌握图结构的存储运用Floyd算法的实现寻最短路径;2:理解运用图结构解决问题的思想;3:运用功能函数实现寻找最短路径的方法;要求(1)基本要求:○1.利用C语言面向过程的编程思想来完成系统的设计;○2. 突出C语言的函数特征,以多个函数实现每一个子功能;○3.画出功能模块图;○4.进行简单界面设计,能够实现友好的交互;○5. 具有清晰的程序流程图和数据结构的详细定义;设计及实现要点程序设计的基本结构:数据结构设计#define GRAPHMAX 20#define MAX 100#define FALSE 0#define TRUE 1#define QueueSize 30typedef struct{char name[MAX];}arcell;typedef struct{arcell vexs[GRAPHMAX];int edges[GRAPHMAX][GRAPHMAX];int edgestime[GRAPHMAX][GRAPHMAX]; int edgescost[GRAPHMAX][GRAPHMAX]; int n,e;}MGraph;int shortest[GRAPHMAX][GRAPHMAX]; int cost[GRAPHMAX][GRAPHMAX];int path[GRAPHMAX][GRAPHMAX];int visited[10];主体函数及说明:void biaotu(MGraph *G)…….显示表格以便用户选择使用;void CreateMGraph(MGraph *G)……创建图的邻接矩阵存储;int display( MGraph *G,int i,int j)……显示最短路径所经的站点void floyed(MGraph *G) ……Floyd算法实现void juzhengvision(MGraph* G)…….矩阵存储,以便调试查看void leastcost(MGraph *G)…….寻最少花费的路径void leasttime(MGraph *G)…….寻最短时间的路径void locatetosave1(MGraph *G,int i,int j)…….进行矩阵准确定位以便存储void locatetosave2(MGraph *G,int i,int j) …….进行矩阵准确定位以便存储void locatetosave3(MGraph *G,int i,int j) …….进行矩阵准确定位以便存储void pathvision(MGraph *G)……路径展示void shortestdistance(MGraph *G )………核心算法与功能功能介绍:图的存储和遍历1------更新邻接矩阵2------深度优先遍历0------返回上一界面printf("\n *********************************")【查询最短路线(1号键)】用户端【查询最短时间(2号键)】【查询最少花费(3号键)】【退出系统(0号键) 】printf("\n *********************************")printf("\t*新建(1号键) 查看(2号键)**\n");管理员端printf("\t*删除(3号键) 修改(4号键)**\n");printf("\t* 退出(0号键) **\n"); 改进创新:期间遇到的问题,解决方案,总结:漏洞发现与解决txt:针对以上遇到的问题或者功能的不完善,在后期的强化过程中都得到决,虽然不是超级完美但依旧是一种进步;经历这么一个过程后,对语言确实有了新的认识和提高!!!源程序:# include <stdio.h># include <stdlib.h># include <string.h># include <iostream.h>#define GRAPHMAX 20#define MAX 100#define FALSE 0#define TRUE 1#define QueueSize 30typedef struct{char name[MAX];}arcell;typedef struct{arcell vexs[GRAPHMAX];int edges[GRAPHMAX][GRAPHMAX];int edgestime[GRAPHMAX][GRAPHMAX];int edgescost[GRAPHMAX][GRAPHMAX];int n,e;}MGraph;int shortest[GRAPHMAX][GRAPHMAX];int cost[GRAPHMAX][GRAPHMAX];int path[GRAPHMAX][GRAPHMAX];int visited[10];void locatetosave1(MGraph *G,int i,int j)//.....准确定位存储距离{int m=0,n=0;for(m=1;m<=G->n;m++){if(m==i){for(n=1;n<=G->n;n++)if(n==j){scanf("%d",&G->edges[m][n]);}}}}void locatetosave2(MGraph *G,int i,int j)//....准确定位存储时间{int m=0,n=0;for(m=1;m<=G->n;m++){if(m==i){for(n=1;n<=G->n;n++)if(n==j){scanf("%d",&G->edgestime[m][n]);}}}}void locatetosave3(MGraph *G,int i,int j)//......准确定位存储花费{int m=0,n=0;for(m=1;m<=G->n;m++){if(m==i){for(n=1;n<=G->n;n++)if(n==j){scanf("%d",&G->edgescost[m][n]);} } }}void CreateMGraph(MGraph *G){int i=0,j=0,k;printf("\n 【请输入模拟导航图的城市数并按回车:】");scanf("%d",&(G->n));printf("\n 【请输入模拟导航图的边数并按回车:】");scanf("%d",&(G->e));//输入定点数,边数for(i=1;i<=G->n;i++){system("cls");//输入顶点printf("\n\t\t请输入第%d个城市名称并按回车:",i);scanf("%s",&(G->vexs[i].name));}for(i=1;i<=G->n;i++)for(j=1;j<=G->n;j++){G->edgestime[i][j]=MAX;G->edgescost[i][j]=MAX;G->edges[i][j]=MAX;}for(k=1;k<=G->e;k++){printf("\n请输入第%d 条边的城市代号( 格式如:1 ,3 ):",k);printf("\n请输入起点城市代号(1---%d 内) ",G->n);scanf("%d",&i);//连用要在一起....if(i<1||i>G->n){printf("请重新输入:\n");scanf("%d",&i);}printf("\n请输入终点城市代号(1---%d 内) ",G->n);scanf("%d",&j);if(j<1||j>G->n){printf("请重新输入:\n");scanf("%d",&j);}printf("\n请输入第%d 条边%d--->%d 之间距离: ",k,i,j);locatetosave1(G,i,j);// 需要一个定位函数。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数据结构课程设计--校园导航图

数据结构课程设计--校园导航图
extern void Dispath(int dist[],int path[],int s[],int v,int i);
extern void Ppath(int path[],int i,int v);
void Point(MGraph p)
{
int x,y;
printf("请输入您所在的位置及目的地\n");
{8,32767,32767,8,32767,32767,6,32767,32767}};
p.n=M;p.e=N;
int i,j;
for(i=1;i<=M;i++)
for(j=1;j<=M;j++)
p.edges[i][j]=a[i][j];
for(i=1;i<=M;i++)
p.vexs[i].no=i;
typedef struct mgraph
{ int edges[MAXV][MAXV];
int n,e;//元素总个数边数
VertexType vexs[MAXV];
}MGraph;
extern void Check();
extern void Order(MGraph);
extern void Point(MGraph);
extern void Out(int x);
void Order(MGraph p)
{
int a[M+1][M+1];
a[M+1][M+1]={{0,1,2,3,4,5,6,7,8},
{1,0,5,32767,32767,32767,32767,32767,32767},
{2,5,0,10,8,32767,32767,32767,32767},

导航地图系统课程设计

导航地图系统课程设计

导航地图系统课程设计一、教学目标本课程旨在通过导航地图系统的学习,让学生掌握地图的基本知识和使用技巧,培养学生的空间思维能力和实际操作能力。

具体目标如下:知识目标:了解地图的种类、制作方法和发展历程;掌握地图的阅读和运用技巧;了解导航地图系统的原理和应用。

技能目标:能够熟练使用各类地图和导航设备;能够进行简单的地图制作和路线规划;能够分析和解决实际导航过程中的问题。

情感态度价值观目标:培养学生对地图和导航地图系统的兴趣和好奇心;培养学生爱护地图资源、遵守交通规则的良好习惯;培养学生的团队协作能力和责任感。

二、教学内容本课程的教学内容主要包括地图的基本知识、导航地图系统的原理和应用、地图的制作和路线规划等。

具体安排如下:第1-2课时:地图的种类和制作方法;第3-4课时:地图的阅读和运用技巧;第5-6课时:导航地图系统的原理和应用;第7-8课时:地图的制作和路线规划;第9-10课时:实际导航操作练习。

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

具体方法如下:第1-2课时:采用讲授法,向学生介绍地图的种类和制作方法;第3-4课时:采用讨论法,引导学生探讨地图的阅读和运用技巧;第5-6课时:采用案例分析法,分析导航地图系统的原理和应用;第7-8课时:采用实验法,让学生进行地图的制作和路线规划;第9-10课时:采用讨论法,让学生分享实际导航操作的体验和心得。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:教材、参考书、多媒体资料、实验设备等。

具体资源如下:教材:选用《地图学》作为主讲教材;参考书:推荐《导航地图系统》等相关书籍;多媒体资料:制作PPT、视频等资料,用于辅助讲解和展示;实验设备:准备地图制作工具、导航设备等,供学生实际操作。

五、教学评估本课程的评估方式包括平时表现、作业和考试等,以全面客观地反映学生的学习成果。

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

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

打造一流校园导航系统
现代化的大学校园中,校园导航系统已成为学生、教职工和游客
出行的必要工具。

然而若要打造一流的校园导航系统,需要合适的数
据结构程序设计。

以下为必要的步骤:
1.数据采集
首先,需要采集校园内的各种信息,例如校园建筑的地理位置、
各车站位置及时刻表、校内活动及其地理位置等。

收集这些信息需要
精准的测量和标注。

一旦数据整理完毕,它们会被组织成一张校园地图,数据需严谨而准确。

2.程序设计及程序优化
接下来,需要开发正确的算法,和高性能和精度的数据结构。


序设计和优化是至关重要的,因为程序设计不好可能会形成数据出错。

优化程序可在保持数据精度的同时,提高数据速度和准确性。

程序应
拥有简洁、准确、可扩展和可维护的代码,以便后期能够进行 push
和更新。

3.用户体验
数据采集和程序设计完成后,将会合并并制作出校园导航系统。

系统需要对不同用户群体进行分类,例如提供不同的搜索机制、路线
规划、景点推荐等。

校园导航系统还应该提供简介、操作手册或者介
绍视频等,以方便新用户在较短时间内学会使用系统。

打造一流校园导航系统需要不断地完善和改进。

有了精准可信的数据、程序设计和优化的算法以及良好的用户体验,校园导航系统才会成为一流的高质量校园导航器。

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

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

南京工程学院课程设计说明书(论文)题目校园导航系统课程名称数据结构院系通信工程学院专业信息工程班级学生姓名学号设计地点指导教师设计起止时间: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)函数描述:主要将每个节点进行命名、每个顶点到其他所有定点的路径值用邻接矩阵进行存储。

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

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

##大学数据结构课程设计报告题目:校园导航系统院(系):计算机工程学院学生姓名:班级:学号:起迄日期: 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)输入的形式和输入值的范围:本系统主要数据类型为字符型char及整形int,char型主要包括单位编号,单位名称,单位简介,功能编号;输入功能编号与单位编号进行操作。

(2) 输出的形式:输出则通过已有的信息数据,通过相关的操作输出相应信息。

(3) 程序所能达到的功能:本程序可供任何人使用,主要功能:1.浏览各单位及简介;2.选择出发点和目的地求出最佳路径;3.退出。

(4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。

三概要设计1.本程序包含三个模块:(1)主函数模块:void main( ){进入系统主菜单函数,根据用户的选择可分别进入:1.浏览各城市及简介;2.选择出发点和目的地求出最佳路径;3.退出系统。

}(2)显示模块:显示各城市简介以及主要景点;(3)求最短路径模块:弗洛伊德算法求城市间最短路径;2.抽象数据类型定义:MGraph InitGraph(void);操作结果:初始化无向网,给定名称,编号以及简介和路径长度;void Menu(void);操作结果:显示菜单;void Browser(MGraph *G);G是无向网,操作结果:将无向网数据传送给该函数;void Floyd(MGraph *G);G是无向网,操作结果:将无向网数据传送给该函数;四详细设计(1)类型定义#define INFINITY 10000 /*无穷大*/#define MAX_VERTEX_NUM 50 //存储数组的最大大小#include <iomanip> //I/O流控制头文件typedef struct ArCell{int adj; //路径长度}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//拥有路径长度存储单元的二维数组用于存储城市距离typedef struct {char name[15];//图中顶点表示主要城市名称int num;//存放城市的编号char introduction[100];//简介}infotype;typedef struct{infotype vexs[MAX_VERTEX_NUM];//用于存储城市信息AdjMatrix arcs; //矩阵用于存储路径长度int vexnum,arcnum;//存储城市数以及邻接城市}MGraph;MGraph b;(2)弗洛伊德的算法:void Floyd(MGraph *G){for(v=0;v<G->vexnum;v++) //各节点之间初始已知路径及距离for(w=0;w<G->vexnum;w++){D[v][w]=G->arcs[v][w].adj; //带权长度D[v][w]for(u=0;u<G->vexnum;u++)p[v][w][u]=0; // 若p[v][w][u]=1,u为V到W当前求的最短路径上的顶点if(D[v][w]<INFINITY) //从V到W有直接路径{p[v][w][v]=1;p[v][w][w]=1;//当V到W的路径上存在长度小于无穷大,既有实际路径时,则标记其顶点,赋为真 }}for(u=0;u<G->vexnum;u++)//循环语句查找最短路径for(v=0;v<G->vexnum;v++)for(w=0;w<G->vexnum;w++)if(D[v][u]+D[u][w]<D[v][w]) //从V经U到W的一条路径更短{D[v][w]=D[v][u]+D[u][w];//更新当前各点间的最短路径for(i=0;i<G->vexnum;i++)p[v][w][i]=p[v][u][i]||p[u][w][i]; //在拥有更近路径的城市里,更新之间的顶点,刷新纪录,以便输出}(3)主程序流程图:五调试分析(1)在程序设计中遇到了输出景点信息的表不整齐,用setw()解决了;默认的界面太小,不能完整的看到输出信息,用了system("mode con: cols=100 lines=40")命令语句设置了行数和列数。

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

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

毕业论⽂校园导航系统数据结构课程设计报告书课程设计报告书课程名称数据结构设计题⽬校园导航系统专业班级计算机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()。

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

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

数据结构课程设计说明书校园导航问题学院(部):计算机科学与工程学院专业班级:XXX学号:2011302873学生姓名:XXX指导教师:XXX2012 年12 月27 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院2012年 11 月 20 日安徽理工大学课程设计(论文)成绩评定表目录1 需求分析 (1)2 总体设计 (2)2.1总体内容图解 (2)2.2功能详解 (3)3 详细设计 (3)3.1主程序流程图 (4)3.2 十三个单位的图 (5)4总结 (5)参考文献 (6)1 需求分析本次实验设计的任务是实现一个简易的安徽理工大学的校园导航平面图。

设计要包括下列要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。

本课题实现校园多个场所(至少10个)的最短路径求解。

(1)输入的形式和输入值的范围:本系统主要数据类型为字符型char及整形int,char型主要包括单位编号,单位名称,单位简介,功能编号;输入功能编号与单位编号进行操作。

(2 ) 输出的形式:输出则通过已有的信息数据,通过相关的操作输出相应信息。

(3) 程序所能达到的功能:本程序可供任何人使用,主要功能 1.学校简介;2.查寻景点路径;3.查询景点信息;4.查看参观路线;5.查询各景点之间的距离。

(4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。

a.首先看到的是校园导航系统的菜单:图1:校园导航系统菜单b.查看浏览路线等待输入起始景点:图2:输入起始景点C.选择出发点与目的地等待输入起始景点与目的地编号:图3:查询两点间的最短路径d.参看景点信息等待输入景点编号:图4:选择查询景点的方式2 总体设计2.1总体内容图解图5:程序主要流程2.2功能详解本系统包含一个文件。

设计分有菜单,显示信息,弗洛伊德算法,迪杰斯特拉算法,查找景点信息等程序段。

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

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

数据结构课程设计—校园导航报告
校园导航作为一种常用的地图应用,其设计并不复杂,但在功能实现中涉及到多种常
见数据结构,如图、树结构等。

本报告对校园导航的数据结构设计进行详细说明,主要可
以分为三个部分:
1、数据输入。

在实现校园导航功能之前,需要输入校园数据,各个元素需要形成节点并构建图,比
如楼宇、地点以及相连的路径等,用户可以输入各个节点的属性,然后形成节点、构建图、标记属性等。

2、数据结构设计
对于校园地图来说,一般采用有向图和无向图这两种图形结构。

有向图表示有方向性
的连接关系,一般用于实现单程导航;无向图表示无方向性的连接关系,一般用于实现多
程导航,比如从一个地点到达另一个地点的最短路径。

另外,在校园地图中也会遇到对节点进行索引的情况,一般采用哈希表来构造索引,
哈希表存储不同的数据结构的元素,以及这些元素的信息,从而实现快速查找功能。

3、搜索算法设计
如许多搜索应用,校园导航中也有搜索功能,搜索过程中,会在图和哈希表中寻找符
合条件的结果。

有关搜索算法,常用的有深度优先搜索算法和广度优先搜索算法。

深度优先搜索算法通过沿着关系网的深度来搜索,即每次搜索一条路径直至无路可走;而广度优先搜索算法通过沿着关系网的广度来搜索,即每次从多条路径中选择最佳路径进
行搜索,并将其标记,直到找到最终结果
总体来看,校园导航数据结构设计包含了输入、构建图、节点索引以及搜索等多种操作,可以利用图、树、哈希表等数据结构设计实现各项功能,以最优的性能完成地图搜索
工作。

数据结构在导航系统中的应用与案例分析

数据结构在导航系统中的应用与案例分析

数据结构在导航系统中的应用与案例分析导航系统已经成为我们日常生活中不可或缺的工具之一。

它为我们提供了准确的地图信息,并帮助我们规划最优的路径。

然而,你是否想过导航系统背后的工作原理和算法呢?这就要涉及到数据结构在导航系统中的应用了。

本文将讨论数据结构在导航系统中的应用,并通过案例分析来深入了解其工作原理。

一、数据结构在导航系统中的应用在导航系统中,数据结构起着至关重要的作用。

它们帮助存储和组织大量的地理数据,并提供高效的路径规划和导航功能。

以下是几种常见的数据结构在导航系统中的应用:1. 图(Graph):图是导航系统中最常用的数据结构之一。

它由节点和边组成,节点表示地点,边表示地点之间的关系。

导航系统通过构建地理图来表示道路网络,并使用图算法来解决路径规划问题。

例如,Dijkstra算法和A*算法是常用的图算法,它们可以快速找到最短路径和最优路径。

2. 哈希表(Hash Table):哈希表在导航系统中用于高效地存储和查找地理数据。

它通过将地点的名称映射到唯一的索引值来实现快速访问。

哈希表的使用可以大大提高导航系统的搜索速度,减少用户等待时间。

3. 二叉搜索树(Binary Search Tree):二叉搜索树在导航系统中用于存储和排序地理数据。

它具有快速的查找和插入操作,并且可以按照特定的排序规则对地点进行排序。

导航系统可以利用二叉搜索树来实现按照距离或名称排序的功能。

4. 队列(Queue)和栈(Stack):队列和栈在导航系统中用于存储和管理用户的请求。

导航系统中可能有多个用户同时发起请求,队列和栈可以确保请求的顺序和处理优先级。

例如,最早发起的请求可以排在队列的前面,优先处理。

二、案例分析:谷歌地图导航系统以谷歌地图为例,我们来分析数据结构在导航系统中的应用。

谷歌地图是一款广泛使用的导航应用程序,它提供准确的地图和导航功能。

谷歌地图利用图数据结构来表示道路网络,并使用Dijkstra算法来计算最短路径。

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

数据结构课程设计——导航系统一、课程设计内容描述1.问题描述交通网络中常常提出这样的问题:从甲地到乙地之间是否有公路连通?在有多条通路的情况下,哪一条路最短?导航系统便可以解决这样的问题。

与此同时,城市的扩建,新地点的添加,新道路的修建,需要导航系统具备添加新地点,添加新路线的功能。

而受一些生态工程的实施,例如退耕还林还草,和自然条件的影响,本来存在的一些地点或道路需要删除或更改,此时导航图还应该及时的更新,以适应新的查找两点间最短路径的需要。

除此之外,用户的查找应是极为方便的,对于最短路线,新添加的地点和路径以及删除的地点和路径的感知应是直观的,这样才能真正的给使用导航系统的人们提供方便。

2.需求分析导航系统的基本功能是:1、输入:要查找最短路径的起点和终点(已知交通图);2、输出:起点至终点的最短路径;3.、添加,删除地点,更新交通图;4.、友好的界面交互;5、对此导航系统功能的扩展。

二、实现思想,算法描述使用语言:JA V A编译环境:Eclispe SDK 3.0.21.概要设计导航系统的实现功能:1、用户输入需要查找的最短路线的起点城市名和终点城市名输入有两种方式:1.在指定文本框输入城市名称,2.在交通图中点击起点和终点确认后,输出最短短路径并在交通图上标示;2、添加新地点并在交通图上显示;3、添加新路线并在交通图上显示;4、删除某地点并在交通图上显示;6、删除某路线并在交通图上显示;与用户交互过程大致如图2.1程序的大体构架,主要模块如图2.2在做添加地点,添加路线,删除地点,删除路线的时候,存储所有点的List,存储交通图路径长的Graph,画图类DrawPanel,分别做相应变化,显示统一的结果。

2.主要函数设计思想及伪代码1)函数shortestPaths(int s, double[] d, int[] p)所用数据结构: 二维数组链表(java.util.LinkedList)思想:利用Dijkstra 算法可以是新解决最短路径的问题,它通过分步方法求出最短路径。

每一步产生一个到达新的目的地的顶点的最短路径。

下一步所能达到的目的顶点通过如下贪婪准则选取:在还未产生最短路径的顶点中,选择路径长度最短的目的顶点,也就是说,Dijkstra 的方法按路径长度顺序产生最短路径。

简单来说,就是从源点出发,按照长度不减得次序依次找出到达其他各顶点的最短路径及长度。

伪代码:public void shortestPaths(int s, double[] d, int[] p){//获取顶点s到其它顶点的最短路径,d为路径长度,p为前继顶点初始化d[i] = a [s][i]对于邻接于s的所有顶点j,置p[i] = 0;对于p[i] = 0的所有顶点建立链表L;while(L不为空){寻找L中d最小的顶点v从L中删除顶点v;I = v;对于所有的顶点jif(j与i邻接&&还未到达顶点j)更新d[j] 值为min{ d[j] , d[i] + a[i][j]} 更新d[j] 值为min{ d[j] , d[i] + a[i][j]}if(d[j]发生了变化&&j还未在链表L中){设置p[j] = L;并把j加入链表L}}}时间复杂性分析:该程序的时间复杂性为O(n²)。

任何最短路径算法必须至少对每条边检查一次,因为任何一条边度有可能在最短路径中。

因此这种算法的最小可能时间为O(e)。

由于使用耗费邻接矩阵来描述交通图,仅决定哪条边在有向图中就需要O(n²)的时间,因此,采用这种描述方法的算法需花费O(n²)的时间。

2)函数deletePoint(int i)所用数据结构: 二维数组思想:在交通图中删除某个地点,不仅需要对点本身删除,还需要把包含该点的路径全部删除,我采用将该点下方及右方的所有的顶点包括边前移,这样虽然会耗费一定的时间,但是却会给存储交通图的二维数组空出一定的空间供新的顶点插入,这样如果再添加城市,就在一定程度上避免了resize()函数的调用,节省了添加顶点的时间。

同时又因为这种添加顶点,删除顶点的操作在实际情况下不会频繁发生,这种移动还是可行的。

伪代码://删除指定顶点vpublic Graph deletePoint(int v) {for (int i=v ;i<n ;i++)所有的边权值向上平移一行for (int j=v ; j<n ; j++)所有的边权值向左平移一列空出的位置设为初始值NoEdge顶点数减一;return this;}时间复杂性分析:该程序的时间复杂性为O(n²)。

具体的时间复杂性与要删除的顶点在加权无向图中的具体对应编号有关,具体的时间复杂性为O( (n-v+1)²),当要删除顶点的编号为1时,时间复杂性便为O(n²).。

3)函数Paint(Graphics g)所用数据结构: 列表(java.util.ArrayList)思想:该函数是类DrawPanel 最主要函数,用于画交通图,交通图的面板本质上一个画图板,只是所画的点和线根据交通图的实际变化而变化。

在这个方法中用到了多个ArrayList的结构,为交通图的实现提供了基础。

伪代码:Graphics2D g2d;private ArrayList<Point> a ;//存储图中所有顶点坐标private ArrayList<Point> b ;//存储图中所有路线的起始点坐标private ArrayList<Point> c ;//存储图中所有路线的终止点坐标private ArrayList<Point> d = new ArrayList<Point>();//依次存储最短路径途径点坐标private ArrayList<Point> e = new ArrayList<Point>();//存储添加的新顶点,做取消操作时取消添加的顶点ArrayList<Point> f = new ArrayList<Point>();//用于存储鼠标点击获得的查询最短路径的两点坐标ArrayList<String> w = new ArrayList<String>();//用于存储各条路径的长度private ArrayList<String> name = new ArrayList<String>();//用于存储个地点名称public void paint (Graphics g){调用父类的paint方法;做背景色等相关设置;g2d = (Graphics2D) g;设置画笔颜色为黑for(int i=0;i<b.size();i++){以b中点作为起始点,c中对应的点作为终点,画路径;在路径的中间位置写入weight中的对应的路径长度}设置画笔颜色为蓝for(int i=0; i<a.size() ;i++)以a中的点作为圆心画小实心圆作为地点for (int i=0 ; i<name.size();i++)以name中的字符串在顶点对应的位置写地点名称for (int i=0 ;i<e.size();i++){设置画笔颜色为面板背景色取消添加的顶点}for(int i=0 ;i<d.size()-1;i++){设置画笔颜色为红,标识最短路径for(int i=0; i<f.size() ;i++){设置画笔颜色为红,标示查询时的起点和终点}}4)函数public void mouseClicked(MouseEvent e)思想:该函数是响应鼠标单击,鼠标点击有两种情况1.查询最短路径时起点终点的选择;2.添加新地点时新地点位置的选择。

若是鼠标点击的位置位于已有顶点的周边的某个小的圆形范围内,则视为查询最短路径;否则视为添加新的地点。

伪代码://鼠标单击响应,添加新地点或添加查询最短路径的端点public void mouseClicked (MouseEvent e) {xPos=e.getX();//获得该点x轴坐标yPos=e.getY();//获得该点y轴坐标if(若点击位置是原有地点的位置)f.add(该定点);//标识该点if(该点并不在原有地点列表中)在地点列表中添加该点;repaint();}三、使用说明1.导航系统界面展示(如图3.1)用户通过地图显示区可直观看到当前最新的地图,可执行查询最短路径,添加,删除地点,添加删除路线的操作。

菜单栏设有帮助及斯通,可通过快捷键来实现。

2.查询最短路径用户可通过两种方式输入:1.在文本框中输入要查询的起点和终点的名称,如图3.2所示;2.在图中先后点击起点和终点,图中显示成红色,如图3.3所示;按确定键确定,在图中红色的路线就是最短路径,最短路径的文本区输出最短路径及最短路径的长度。

如图3.4所示。

3.添加地点用户需要在地图中用鼠标点击添加该城市的相对位置,然后在相应文本区内输入该城市的名称点击添加,如图3.5所示,地图中就显示出新添加的城市及其名称,如图3.6所示,点击取消可取消本次添加。

图3.54.添加路线用户在相应文本区内输入要添加路径的起点,终点及路径长度,例如添加路线f->c , 路长为6.6 km 如图3.7所示,按添加路线确定添加,地图中就显示出新添加的路线及其长度,如图3.8所示.5.删除地点 用户在相应文本区内输入要删除城市的名称,例如删除城市b, 则在删除地点的文本框中输入地点名b ,如图3.9所示,按删除键确定删除,地图中就显示出删除该城市后的模样,城市b 及其所有与他相连的路径都删除,如图3.10所示.(删除前的地图为图3.1中的地图)6.删除路线用户在相应文本区内输入要删除路线的起点和终点的名称,例如删除路线f->a, 则在删除地点的文本框中输入起始f,终止a,如图3.11所示,按删除路线键确定删除,地图中就显示出删除该路线后的模样,如图3.13所示.(删除前的地图为图3.12中的地图)7.获得帮助用户点击菜单栏中的帮助(ALT+H ),可获得相应的使用说明。

如图3.14,3.15所示。

图3.157.获得当前时间用户点击菜单栏中的系统(ALT+S )——系统时间,可获得当前时间。

如图3.16所示。

四、调试分析问题一:现象:添加新的地点时,数组出现越界问题。

原因: 在添加操作过程中,有可能调用resize ()函数来扩充数组的容量,在max 的关系为max = n + 1 ;而max 的关系为max = n ;for 循环时都循环了一次,所以出现了数组越界的问题,统一上下的参数关系后,该问题就解决了。

相关文档
最新文档