基于高德导航的大作业

news2024/10/6 18:33:25
  1. 绪 论
    1. 课题的建设背景
      1. 移动互联网

如今手机的发展非常迅速,手机越来越成为人们不可缺少的东西。手机从最初功能简单的功能机,发展到如今几乎无所不能的智能机,满足了人们的日常需求,手机不再是简单的通讯工具,还可以通过手机上网、玩游戏、购物等,手机访问因特网的快捷是电脑端远远不能比的,手机的系统也有很多种,如今智能手机系统发展最为迅猛的是安卓系统。

Android系统是基于Linux内核的开放性的操作系统,Android可以分为四层架构,分别为:Linux内核层、系统运行层、应用框架层、应用层,这些架构为安卓系统提供了所需的驱动,并通过C/C++库为系统提供了特性支持等。

Android系统具有开放性、丰富的硬件选择、不受限制的开发商、无缝结合的Google应用等特点和优势,使得开发者可以自由的开发其所定制的应用并可以利用各种硬件来为系统提供更好的支持。

      1. 高德校内导航出行

高德地图作为国内首选的导航出行APP,能够达到日均处理近1000亿次的定位及路线规划请求,90%终端出行使用覆盖率,涵盖中国超过7000万的POI数据,并且提供了方便快捷的开发文档和对应SDK和API接口,将高德地图作为本课题的开发SDK是不二选择。

    1. 需求分析

现在的大学占地面积越来越大,建筑物越来越多,功能越来越多样,校内的道路也是纵横交错, 校园导航系统可以帮助学生用户更加快速的了解学校的道路,建筑布局(用户主要是新生、家长、在校教职工等)。在帮助用户了解学校道路、实现导航功能的基础上,根据当前用户所在位置给予不同类型的POI搜索分类,给与推荐的目的地,帮助学生查找附近美食,娱乐设施等目的地,并展示详情,让用户对目的地的情况进行更加深入的了解。

 

    1. 概要设计

本课题通过使用高德定位导航SDK实现一款基于安卓的校内服务软件。本课题分为四个模块,依次为:登录注册模块、首页地图、搜索POI列表,POI详情,路线规划和导航。

本课题客户端采用JAVA语言,通过Android studio作为开发工具,服务端采用JAVA语言,通过IDEA作为开发工具进行开发,数据库选用MySql。

    1. 数据库设计

本应用的后台搭载在服务端,具体的数据表分为以下几种:用户信息表

如下表所示为用户信息数据表:

用户信息表

属性

数据类型

说明

备注

id

Int

用户id

主键,不允许空

name

String

用户名

不允许为空

password

String

密码

不允许为空

  1. 系统的详细设计
    1. 系统的模块功能设计

各功能模块详细说明:

登录:作为系统的首页面,该界面实现用户的登录功能,用户名和密码输入正确后,可以进入APP主界面;

注册:在登录界面点击注册按钮可以进入注册界面,输入用户名和密码进行注册;

主界面:登录后,通过定位获取当前的位置信息,并在地图上展示出来,底部提供POI类型的快速导航搜索功能。

搜索界面:点击搜索栏,进入搜索界面,可以选择快速搜索分类,列表展示出该搜索类别,选择搜索结果,展示对应的搜索内容列表信息。

POI详情页:点击列表中的列表项,打开对应详情页,展示该POI。

路径规划:点击路线查询按钮,进入路线规划查询界面。

导航界面:点击导航后,进入导航界面。

    1. 系统界面设计

 

登陆界面

  1. 登陆界面主要采用相对布局来实现布局排版,通过相对布局对TextView,EditText和Button进行布局。
<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">



    <ImageView

        android:id="@+id/top_icon"

        android:layout_width="64dp"

        android:layout_height="64dp"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="100dp"

        android:background="@drawable/app_icon"

        android:gravity="center" />

    <TextView

        android:id="@+id/name_tv"

        android:layout_width="wrap_content"

        android:layout_height="32dp"

        android:layout_below="@id/top_icon"

        android:layout_marginLeft="30dp"

        android:layout_marginTop="20dp"

        android:gravity="center_vertical"

        android:text="用户名:"

        android:textColor="#000000" />

    <EditText

        android:id="@+id/name_edit"

        android:layout_width="match_parent"

        android:layout_height="32dp"

        android:layout_alignTop="@id/name_tv"

        android:layout_marginRight="20dp"

        android:layout_toRightOf="@id/name_tv"

        android:background="@drawable/edit_bg" />

    <TextView

        android:id="@+id/edittext_no"

        android:layout_width="wrap_content"

        android:layout_height="32dp"

        android:layout_below="@id/name_tv"

        android:layout_alignLeft="@id/name_tv"

        android:layout_marginTop="20dp"

        android:gravity="center_vertical"

        android:text="密码:"

        android:textColor="#000000" />

    <EditText

        android:id="@+id/edittext_password"

        android:layout_width="match_parent"

        android:layout_height="32dp"

        android:layout_alignLeft="@id/name_edit"

        android:layout_alignTop="@id/edittext_no"

        android:inputType="textPassword"

        android:layout_marginRight="20dp"

        android:background="@drawable/edit_bg" />

    

    <Button

        android:id="@+id/btn_denglu"

        android:layout_width="match_parent"

        android:layout_height="40dp"

        android:layout_below="@id/radio_layout"

        android:layout_marginLeft="60dp"

        android:layout_marginTop="30dp"

        android:layout_marginRight="60dp"

        android:background="@drawable/btn_bg"

        android:gravity="center"

        android:text="登录"

        android:textColor="#ffffff"

        android:textSize="20sp" />



    <Button

        android:id="@+id/btn_zhuce"

        android:layout_width="match_parent"

        android:layout_height="40dp"

        android:layout_below="@id/btn_denglu"

        android:layout_marginLeft="60dp"

        android:layout_marginTop="10dp"

        android:layout_marginRight="60dp"

        android:background="@drawable/btn_bg"

        android:gravity="center"

        android:text="注册"

        android:textColor="#ffffff"

        android:textSize="20sp" />

  1. 主界面MainActivity采用Activity+mapView的形式实现地图展示,由于支持Android 6.0以上版本,所以需要对动态权限进行检查并进行申请。

@TargetApi(23)


private void checkPermissions(String... permissions) {
    try{
        if (Build.VERSION.SDK_INT >= 23 && getApplicationInfo().targetSdkVersion >= 23) {
            List<String> needRequestPermissonList = findDeniedPermissions(permissions);
            if (null != needRequestPermissonList
                    && needRequestPermissonList.size() > 0) {
                try {
                    String[] array = needRequestPermissonList.toArray(new String[needRequestPermissonList.size()]);
                    Method method = getClass().getMethod("requestPermissions", new Class[]{String[].class, int.class});
                    method.invoke(this, array, 0);
                } catch (Throwable e) {

                }
            }
        }

    }catch(Throwable e){
        e.printStackTrace();
    }
}
  1. 搜索界面采用ListView+ListAdapter的方式实现列表的展示,同时获取当前位置的周围POI数据,分别写入不同的列表Item中。

 

此处代码实现POI搜索功能。

 

  1. POI详情页头部如果有对应街景照片则显示照片,如果无照片则隐藏ImageView,同时加载网络图片通过Glide框架进行加载。同时加载POI详情的其他信息并展示出来,PoiItem由于是实现Parcelable接口,所以通过Intent传递给POI详情页,解析出其中的内容展示出来。

 

  1. 点击线路按钮实现线路规划,点击导航,进入导航模式

         

 

  1. 系统分析设计
    1. 系统分析原则

为了保证软件能够长期、安全、稳定、可靠、高效地在Android设备上运行,本系统应该满足以下原则。

      1. 实用性原则

充分利用手机的4G和WIFI网络,为本软件提供信息支持,充分考虑用户获取信息的心理需求,在简洁实用的基础上对软件界面层级进行布局。

      1. 可扩展性与可维护性原则

为适应将来的发展,软件应该具有良好的可扩展性和可维护性。系统设计尽可能模块化、组件化,由于Android设备分辨率的各不相同,使软件可灵活配置,适应不同的的Android终端设备。系统的可扩展性应包括能接纳已有的系统和在今后系统软硬件扩展时,能有效地保护已有的资源建设。当用户的需求有所改变时,可以对其快速的配置改变,以应对用户的需求,有一个较好的应用平台——Android设备,能容易地安装和卸载。系统易于扩充升级,既能满足当前业务的需求,将来的需求改变升级也被考虑在内。

      1. 安全可靠性原则

本软件是基于手机设备使用的,其安全性与其他的应用软件是一样的,本软件不会残留用户任何的隐私信息。

      1. 用户界面美观原则

界面经过对用户心理的调研和统计后。并参考时下流行的软件风格进行设计,在此基础上,加入了对用户具有诱导性的按键设计,使得用户在初次使用的时候就会使用,而不需要在使用的时候进行特别的学习和指导。

      1. 准确性与原则性原则

软件的准确性是成败的关键,本软件最核心的技术便是通过SOAP技术与互联网上提供的接口进行交互,本软件采用特殊处理来保证数据获取的准确性和及时性,从软件的布局还是数据呈现方面,都是经过对用户心理的研究和与其他数据对比的来的。

      1. 易用性原则

软件是Android平台上的软件,自然保留了Android软件的应用性原则,平易近人,不需要额外学习,看到任何一个界面都不会不知所措,会有不同含义的图标进行提示下一步操作,保证用户使用时不会迷路。

  1.  系统测试与维护

一个系统的设计以及实现当然离不开测试与维护,那么本章节介绍的就是系统测试与维护,由系统测试概念里的测试目的、测试方法以及单元实例测试、测试结果分析来详细地阐述。

    1. 系统测试概念

无论多么优秀的程序员在设计一个程序的时候,都避免不了出一些错误。系统测试的目的就是为了验证该系统是否满足了开题报告书中的要求,要做的就是找出BUG,定位出错的位置,分析出错因等待改正。

    1. 测试的目的

软件测试要尽可能多的查找系统中存在的错误,使用适合该软件的测试方案是有助于发现从未出现过的错误。客户订单管理系统测试的目的不是证明系统已经毫无错误,而是为了发现错误,使系统更加稳定,满足客户的需求。

    1. 测试的方法

软件测试分为黑盒测试和白盒测试。黑盒测试其实是功能测试,用来检测系统的某个模块功能是否达到了需求。本次客户订单管理系统的测试用各个功能模块的测试,就能基本达到测试的目的。故采用黑盒测试方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/442147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring请求与响应——请求

Spring请求与响应——请求 请求映射路径RequestMapping() 请求参数GetGet发请求参数接收Get请求参数 POSTPOST发送参数 参数种类POJO类型参数数组类型类型参数集合类型参数时间参数演示 JSON数据传输参数发送请求接收请求集合参数与pojo参数演示 RequestBody与RequestParam区别…

手机信号不好?真不是套餐原因!4招教你搞定!

不少小伙伴跟搜卡之家小编抱怨手机信号突然不好&#xff0c;比如&#xff1a; 打着电话突然听不见对方的声音! 手机玩着玩着刷不出来页面和图片&#xff01; 手机信号满格但上不了网&#xff01; 这手机是不是坏了&#xff01; 其实这样的情况大部分都是因为手机信号的问题…

【Arduino】舵机的连线和基本操作

&#x1f38a;专栏【Arduino】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【勋章】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 目录 &#x1f6a5;舵机图片 &#x1f6a5;舵机连接方式 &#x1…

字典树(Trie/前缀树)详解

目录 字典树的概念 字典树的逻辑 字典树的实现 字典树小结 例题强化 字典树的概念 字典树&#xff08;Trie&#xff09;是一种空间换时间的数据结构&#xff0c;是一棵关于“字典”的树&#xff0c;主要用于统计、排序和保存大量的字符串。字典树是通过利用字符串的公共前…

【unity实战】随机地下城生成2——绘制地图Tilemap的使用及一些技巧的使用(含源码)

绘制房间 修改素材配置 切割图片 绘制瓦片地图 先新建我们的调色盘,保存好位置 拖入我们刚才切片好的素材 在房间预设体创建我们的瓦片地图 绘制地图的小技巧 点选移动适合的瓦片移动到位置上绘画 框选复制已经绘制好的地图,快捷键i

【C# .NET】chapter 13 使用多任务改进性能和可扩展性

目录 一、物理内存和虚拟内存使用&#xff08;Recorder 类&#xff09; 二、 对比 string的“”操作与stringbuilder 操作 的处理效率&#xff0c;内存消耗情况&#xff0c; 三、异步运行任务、三种启动任务方法、将上一任务方法处理结果作为参数传给下一任务方法 四、嵌套…

妙记多 Mojidoc |构建企业和个人专属知识库

虽然市面上有很多项目管理工具&#xff0c;但对于小公司或初创企业来说&#xff0c;它们要么年费太贵&#xff0c;要么流程和操作太复杂&#xff0c;无法满足小团队的需求。 如果您有基本需求并希望使用低成本的文档工具&#xff0c;作为团队共享知识库和工作流程管理的工具&a…

【GIS学习笔记】快速上手GeoServer,并发布 Shapefile /PostGis / PostgreSQL

文章目录 安装配置1、下载2、配置环境 快速上手 &#xff08;Shapfile文件发布&#xff09;1、登录2、图层预览 Layer Preview3、发布Shapefile4、创建工作空间Workspace5、创建一个 Store&#xff08;数据存储&#xff09;6、创建图层报错解决 7、发布图层 快速上手&#xff0…

一款表现不佳的游戏,如何能爆火出圈?

根据《2022年中国游戏产业报告》&#xff0c;2022年中国游戏市场实际销售收入2658.84亿元&#xff0c;同比下降10.33%。游戏用户规模6.64亿&#xff0c;同比下降0.33%。继2021年规模增长明显放缓之后&#xff0c;又出现过去八年来的首次下降&#xff0c;表明产业发展已进入存量…

使用Dom元素的animate实现无限滚动列表

一、需求 实现一个内容重复滚动的列表&#xff0c;鼠标hover时滚动停止&#xff0c;鼠标移走&#xff0c;继续滚动 二、实现逻辑与代码 这个需求用到了一个dom API&#xff08;animate&#xff09;&#xff0c;这个方法可以用来做过渡动画、关键帧动画&#xff0c;接收两个参…

全景丨0基础学习VR全景制作,平台篇第八章:全局功能-说一说管理

一、功能说明 蛙色VR的全景能够允许用户发布说一说&#xff0c;这些说一说的信息会同步呈现在全景中。 鼓励用户参与到内容中来&#xff0c;增强了全景的互动性&#xff0c;体验感更好&#xff0c;也更容易引导用户分享。 此外&#xff0c;后台系统可以对说一说进行必要的审核…

C++数据结构:二叉搜索树的结构、模拟实现及应用

目录 一. 二叉搜索树的结构 二. 二叉搜索树的模拟实现 2.1 二叉搜索树的节点及类的成员变量 2.2 数据插入操作Insert的实现 2.3 数据删除操作Erase的实现 2.4 数据查找操作Find的实现 2.5 中序遍历InOrder的实现 2.6 构造函数的实现 2.7 析构函数的实现 三. 二叉搜…

第三方软件测试公司与开发人员在进行测试时有什么不一样?

随着科技信息的发展&#xff0c;软件企业要想在市场上站住脚&#xff0c;就必须在产品质量上下功夫。高质量的软件也是开发、测试、质量保证等相关人员共同追求的目标&#xff0c;用户往往会选择体验性、服务性以及安全性较强的软件产品。软件测试可以很好的检测出软件质量&…

基于web的小型餐厅餐饮饭馆供货订货系统asp.net+sqlserver

本研究课题重点主要包括了下面几大模块&#xff1a;用户登录&#xff0c;管理员信息管理&#xff0c;类别信息管理&#xff0c;商家信息管理&#xff0c;商品信息管理&#xff0c;订单信息管理&#xff0c;损耗信息管理&#xff0c;退货信息管理&#xff0c;修改密码等功能。。…

2023-热门ChatGPT解析及使用方法

什么是Chat GPT&#xff1f;我们能用它来干什么&#xff1f; Chat GPT是一款基于人工智能技术的自然语言处理模型&#xff0c;由OpenAI团队开发。它能够通过机器学习技术从海量文本数据中学习语言知识&#xff0c;实现自然语言生成、对话生成和语言理解等功能&#xff0c;使得…

144. 二叉树的前序遍历【78】

难度等级&#xff1a;容易 上一篇算法&#xff1a; 102. 二叉树的层序遍历【206】 力扣此题地址&#xff1a; 144. 二叉树的前序遍历 - 力扣&#xff08;Leetcode&#xff09; 1.题目&#xff1a;144. 二叉树的前序遍历 给你二叉树的根节点 root &#xff0c;返回它节点值的 前…

电源常识-PCB材质防火等级焊锡工艺

1、目前主流的PCB材质分类主要有以下几种,如图1&#xff0c;图2&#xff0c;图3。FR-4材质比CEM-1好&#xff0c;CEM-1比FR-1好。 按结构分为单面板&#xff0c;双面板&#xff0c;多层板。单面板就是单面铺铜走线&#xff0c;双面板就是上下两面都可以铺铜走线&#xff0c;多层…

JavaWeb综合案例

综合案例 1 查询所有 1.1 后端实现 1.1.1 dao方法实现 在 com.itheima.mapper.BrandMapper 接口中定义抽象方法&#xff0c;并使用 Select 注解编写 sql 语句 /*** 查询所有* return*/ Select("select * from tb_brand") List<Brand> selectAll();由于表中…

leetcode 376. 摆动序列

思路没想到就很难&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;看了题解就觉得&#xff0c;还可以 加个图吧&#xff0c;贪心这玩意。。 我之前的困惑就在于&#xff1a; 不知道如何判断 正负规律&#xff0c;发现我双指针的思想用错了。 我一开…

react-7 组件库 Ant Design

1.安装组件库 npm install --save antd-mobile 常用组件 tabbar 底部导航 Swiper 轮播图&#xff08;走马灯&#xff09; NavBar&#xff08;顶部返回累&#xff09; 配合 Dialog&#xff0c;Toast InfiniteScroll 无限滚动&#xff08;实现下拉刷新&#xff09; Skeleto…