【实训大作业】应用无向网表现学校的校园景点平面图

前言

该作业为学校创新实践基础实训的大作业,因为当时安排在了考试周时间紧张,所以做的比较简陋,基本功能全部实现了,还有一个小bug没改,最后因为里面算法写的不错被打了优秀,放出来给学弟学妹们借鉴了。
搭建平台:Android studio
代码在:https://github.com/13-pieces-teen/schoolTourGuide

一、项目介绍

设计要求:

(1)建图
      以图中顶点表示主要景点,并存放景点的编号、名称、简介等信息;
      图中的边表示景点间的道路,存放路径长度等信息。  
(2)查询
      该系统可以查询景点的信息:
			查询图中任意两个景点间的最短路径; 
			查询图中任意两个景点间的所有路径。
(3)更新
      可以进行景点的更新,如去除、增添景点和路径,
      可以随时对景点间路径长度的更新。

界面要求:

要考虑界面的友好性,让用户操作使用起来非常方便
【实训大作业】应用无向网表现学校的校园景点平面图_第1张图片

二、 项目需求分析

(1)校园地图建模

选择一张具有代表性的校园地图,并通过调用百度地图api手段获取路径长度以及大致地点。
选取其中十个具有代表性的南工地标(南苑,体育馆,行政办公室,浦江图书馆,镜湖长廊,亚青村,仁智同和教学区,学府苑,地坤天工试验区,体育馆),设定地图中坐标先行写入app数据库中。
【实训大作业】应用无向网表现学校的校园景点平面图_第2张图片

(2)系统功能分析与设计

  1. 数据库设计——建图及增加路径(景点类,道路类)
    【实训大作业】应用无向网表现学校的校园景点平面图_第3张图片
    【实训大作业】应用无向网表现学校的校园景点平面图_第4张图片
  2. 查询路径算法——全部路径及最优路径
    (1)DFS(深度优先遍历算法)
    算法原理:DFS算法,一种用于遍历树或图的算法,它会沿着树的深度遍历树的节点,当访问到不满足条件的时候,就会进行回溯,然后重复执行该操作,直到所有节点都被遍历完。
    实现基础代码:
    【实训大作业】应用无向网表现学校的校园景点平面图_第5张图片
    (2)Dijkstra(求解单源最短路径的经典算法)
    算法原理:Dijkstra算法设置一个集合 记录已求得的最短路径的顶点,初始时把源点 放入 ,集合 每并入一个新顶点 ,都要修改源点 到集合 中顶点当前的最短路径长度值。
    实现基础代码:
    【实训大作业】应用无向网表现学校的校园景点平面图_第6张图片
    算法比较:
    【实训大作业】应用无向网表现学校的校园景点平面图_第7张图片
    根据对比可以看出,Djikstra算法在时间和空间上都是优于Floyd算法和Bellman-Ford算法的。不足之处就是DijKkstra算法不能处理含负权边的图。但根据本app的实际情况,地图中的道路长度一定为正数最短行驶时间也一定为正数.所以对于本系统来说.DjKkstra算法的这个缺陷可以忽略不计。因此,本app选用DjKksta算法来计算导航功能中的最短路径问题。

(3) 界面UI分析与设计

  1. Fragment运用
    两个可滑动fragment,分别对应地图以及设定两个界面
  2. 主地图设计
    选取本校具有代表性的一张地图,并在程序内建立如下的带权值无向网图。
    【实训大作业】应用无向网表现学校的校园景点平面图_第8张图片
  3. 功能模块设计
    【实训大作业】应用无向网表现学校的校园景点平面图_第9张图片

三、 具体设计

  1. 数据库模块搭建
    本app基于android自带的数据库sqlite进行增删改查功能的编写。
    (1)建表
    【实训大作业】应用无向网表现学校的校园景点平面图_第10张图片
    (2)增加
    【实训大作业】应用无向网表现学校的校园景点平面图_第11张图片
    (3)更新
    【实训大作业】应用无向网表现学校的校园景点平面图_第12张图片
    (4)查询
    【实训大作业】应用无向网表现学校的校园景点平面图_第13张图片
  2. 算法与数据库和界面的连接
    通过编写的Graph接口,如下:
    【实训大作业】应用无向网表现学校的校园景点平面图_第14张图片
    连接至算法 ,通过java的list数组对编号在数据库中查询,从而建立了带权值的无向网。其中findShortestRoad()函数用来查询最短路径,findAllRoads()函数用来找到两点间所有路径。再通过安卓的notification功能对用户进行告示。
    【实训大作业】应用无向网表现学校的校园景点平面图_第15张图片
  3. 地图按钮的实现
    其中给各个按钮设置一个点击事件与一个长按事件,并用AlertDialog对用户进行通知。
    【实训大作业】应用无向网表现学校的校园景点平面图_第16张图片

四、 项目环境配置以及结构

  1. 运行软件环境及语言
    框架:Android Studio 语言:java
  2. 项目框架(main以及res)
    【实训大作业】应用无向网表现学校的校园景点平面图_第17张图片
    【实训大作业】应用无向网表现学校的校园景点平面图_第18张图片
  3. 功能分布
    【实训大作业】应用无向网表现学校的校园景点平面图_第19张图片
    【实训大作业】应用无向网表现学校的校园景点平面图_第20张图片

五、 项目运行展示

  1. 用户运行流程
    先添加景点,再添加路径,单击标点即可查询景点的基本信息,长按标点即可进行快捷的景点删除。地图旁四个按钮,分别对应不同操作(路径的增删改查与景点的增改)。
    【实训大作业】应用无向网表现学校的校园景点平面图_第21张图片
    【实训大作业】应用无向网表现学校的校园景点平面图_第22张图片
    【实训大作业】应用无向网表现学校的校园景点平面图_第23张图片

代码分享

https://github.com/13-pieces-teen/schoolTourGuide

你可能感兴趣的:(学业课程,算法,android,studio,android,java)