旅行路线可视化研究与实现(Java+Android+Eclipse实现的旅游APP)

目 录
1 概论 1
1.1 研究现状 1
1.2 系统开发意义 1
1.3 系统开发背景 2
2 开发环境以及相关技术 5
2.1 Eclipse 5
2.2 Adroid 5
2.2.1 基本概念 5
2.2.2 简介 6
2.2.3 系统架构 6
2.2.4 四大组件 7
2.3 Java语言 7
2.4 SQLite 7
2.4.1 简介 7
2.4.2 架构 7
2.4.3 特点 8
2.5 FastJson 8
2.5.1 简介 8
2.5.2 FastJson解析JSON步骤 9
3 需求分析 13
3.1 可行性分析 13
3.1.1 技术可行性 13
3.1.2 经济可行性 13
3.1.3 社会可行性 13
3.2 功能需求分析 14
3.3 特性需求分析 14
4 概要设计 16
4.1 系统总体功能结构 16
4.2 系统总体架构 17
5 详细设计与实现 18
5.1 系统总体功能设计 18
5.1.1 服务器端说明 18
5.1.2 客户端说明 18
5.2 系统的实现 19
5.2.1 活动模块 19
5.2.2 游记模块 20
5.2.3 导航模块 23
5.2.4 我的模块 25
5.3 实现的技术点 26
5.3.1 界面布局的实现 26
5.3.2 代码中所用到的技术 31
6 软件测试 37
6.1 软件测试的重要性 37
6.2 测试实例的研究与选择 37
6.3 系统运行情况 38
6.4 系统评价 41
7 总结 43
参考文献 44
致 谢 45
外文原文 46
中文翻译 57
3 需求分析
系统分析的真正含义就是对系统,从技术可行性、经济可行性以及操作可行性来进行分析。
3.1 可行性分析
在这里就依次从技术的、经济的、社会的可行性三个方面来对本旅游导航APP进行深入的分析和研究。
3.1.1 技术可行性
该软件是基于Java语言、并以SQLite为后台数据库。硬件、软件的性能要求、环境条件等各项条件均良好。利用现有技术条件预计完全可以达到该软件的功能目标。时间安排相对比较充裕,预计完成没有问题。
由以上分析可以知道:本设计是具有技术可行性的。
3.1.2 经济可行性
本设计采用的开发软件都是开源的,不需用额外花费费用,这样削减很多的精力和资源,起到减少成本的作用,因此在经济上具有可行性。
由以上分析可以知道:本设计具有经济的可行性。
3.1.3 社会可行性
本设计的社会可行性主要需要从法律因素、用户使用可行性这两方面进行研究。
1.法律因素
本设计是根据80、90的青年人旅行的实际情况开发研制的,是通过大量的调研得出的,系统的软件设计是在独立的环境下完成的,无可供抄袭的软件产品。
2.用户使用可行性
本设计对用户的要求,除了需要具备移动设备以及第三方账号外,并不需要特别的技术能力。使用系统的管理员,需要具备对java语言及Android开发环境的使用能力,在投入使用前,无需对操作系统的人员进行培训。这样减少了投入成本简化了操作环节。
由以上分析可以知道:本设计完全具有社会的可行性。
3.2 功能需求分析
Android系统目前在市场上占有很大的份额,从2010前Android就已经呈现出很强劲的发展势头,而且到目前为止,还处于不断的上升阶段。无论你走在大街上、校园里、地铁上亦或是公交上,总能看到人们拿着智能手机专心致志的做自己的事情,而且不难发现,绝大多数都是Android手机,人们低头聚精会神的玩游戏、看小说、刷刷微博等等。手机中安装的各种App可以丰富并且满足人们对业余生活的要求以及期望,其中的游戏娱乐、在线购物也是极大的刺激着整个社会的消费水平。随着时代的不断发展,兼娱乐与通信功能的手机越发的流行,成为人们的一种新的追求。因而,这就更进一步的促进激发着手机软件App研发人员的热情与积极性。
综上,本设计是为了实现一个方便用户出行,并可以推荐旅游景点的目标。用户可以通过浏览驴友们在野外徒步旅行是的场景,全方位的了解自己想要去的景点。通过展示的信息,用户可以方便的了解一个景点的人文特色,最近是否有活动,是否拥有优惠价,以及根据时间分类,可以准确的推荐最近一段时间的旅游团动向,并附有旅游团的联系方式,方便用户直接用电话进行咨询,从而来确定是否参加本次活动;并且在此基础上,根据数据源的数据结构以及字段分析,把旅游的信息按地点进行一些分类,每个城市的旅游信息就可以直观的展现在用户的面前,并且将旅游的类型进行了汇总,冒险类、休闲类、娱乐类等丰富的信息以供用户选择,此外也考虑到了用户的经济承受能力,还实现了根据本次旅游的价格信息进行进一步的整合,可以让用户更加直观并且很快的找见适合自己经济承受能力的旅游景点。当然,光有这些信息是远远不够的,用户之间最好能够进行互动,互相交流旅游心得,欣赏了解对方去过的地方,还可以进行点赞,要想实现这个功能,当然是离不开第三方登陆的,微博、QQ可以任意选择,因而就要求用户必须要拥有一个属于自己的第三方的账号,在登陆成功后可以对个人信息进行查看。
3.3 特性需求分析
一个较好的软件应该具有以下特性:
1、易操作和功能简单明确。一个好的旅游导航系统应该功能明确,用户可以很快的熟悉使用流程,而不是看到界面不知道应该如何的操作,即操作要简单,界面友好易懂。
2、软件功能流畅。软件运行时候不会发生崩溃和卡顿等问题,整个界面操作起来快捷流畅。
3、软件易维护性。系统各个设计模块明确,核心代码要有必要的注释,方便软件的后期维护。

/** Copyright (c) 2013. wyouflf (wyouflf@gmail.com)** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**      http://www.apache.org/licenses/LICENSE-2.0* Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package com.lidroid.xutils;import android.app.Activity;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceGroup;
import android.view.View;
import com.lidroid.xutils.util.LogUtils;
import com.lidroid.xutils.view.EventListenerManager;
import com.lidroid.xutils.view.ResLoader;
import com.lidroid.xutils.view.ViewFinder;
import com.lidroid.xutils.view.ViewInjectInfo;
import com.lidroid.xutils.view.annotation.ContentView;
import com.lidroid.xutils.view.annotation.PreferenceInject;
import com.lidroid.xutils.view.annotation.ResInject;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.EventBase;import java.lang.annotation.Annotation;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Method;public class ViewUtils {private ViewUtils() {}public static void inject(View view) {injectObject(view, new ViewFinder(view));}public static void inject(Activity activity) {injectObject(activity, new ViewFinder(activity));}public static void inject(PreferenceActivity preferenceActivity) {injectObject(preferenceActivity, new ViewFinder(preferenceActivity));}public static void inject(Object handler, View view) {injectObject(handler, new ViewFinder(view));}public static void inject(Object handler, Activity activity) {injectObject(handler, new ViewFinder(activity));}public static void inject(Object handler, PreferenceGroup preferenceGroup) {injectObject(handler, new ViewFinder(preferenceGroup));}public static void inject(Object handler, PreferenceActivity preferenceActivity) {injectObject(handler, new ViewFinder(preferenceActivity));}private static void injectObject(Object handler, ViewFinder finder) {Class<?> handlerType = handler.getClass();// inject ContentViewContentView contentView = handlerType.getAnnotation(ContentView.class);if (contentView != null) {try {Method setContentViewMethod = handlerType.getMethod("setContentView", int.class);setContentViewMethod.invoke(handler, contentView.value());} catch (Throwable e) {LogUtils.e(e.getMessage(), e);}}// inject viewField[] fields = handlerType.getDeclaredFields();if (fields != null && fields.length > 0) {for (Field field : fields) {ViewInject viewInject = field.getAnnotation(ViewInject.class);if (viewInject != null) {try {View view = finder.findViewById(viewInject.value(), viewInject.parentId());if (view != null) {field.setAccessible(true);field.set(handler, view);}} catch (Throwable e) {LogUtils.e(e.getMessage(), e);}} else {ResInject resInject = field.getAnnotation(ResInject.class);if (resInject != null) {try {Object res = ResLoader.loadRes(resInject.type(), finder.getContext(), resInject.id());if (res != null) {field.setAccessible(true);field.set(handler, res);}} catch (Throwable e) {LogUtils.e(e.getMessage(), e);}} else {PreferenceInject preferenceInject = field.getAnnotation(PreferenceInject.class);if (preferenceInject != null) {try {Preference preference = finder.findPreference(preferenceInject.value());if (preference != null) {field.setAccessible(true);field.set(handler, preference);}} catch (Throwable e) {LogUtils.e(e.getMessage(), e);}}}}}}// inject eventMethod[] methods = handlerType.getDeclaredMethods();if (methods != null && methods.length > 0) {for (Method method : methods) {Annotation[] annotations = method.getDeclaredAnnotations();if (annotations != null && annotations.length > 0) {for (Annotation annotation : annotations) {Class<?> annType = annotation.annotationType();if (annType.getAnnotation(EventBase.class) != null) {method.setAccessible(true);try {// ProGuard:-keep class * extends java.lang.annotation.Annotation { *; }Method valueMethod = annType.getDeclaredMethod("value");Method parentIdMethod = null;try {parentIdMethod = annType.getDeclaredMethod("parentId");} catch (Throwable e) {}Object values = valueMethod.invoke(annotation);Object parentIds = parentIdMethod == null ? null : parentIdMethod.invoke(annotation);int parentIdsLen = parentIds == null ? 0 : Array.getLength(parentIds);int len = Array.getLength(values);for (int i = 0; i < len; i++) {ViewInjectInfo info = new ViewInjectInfo();info.value = Array.get(values, i);info.parentId = parentIdsLen > i ? (Integer) Array.get(parentIds, i) : 0;EventListenerManager.addEventMethod(finder, info, annotation, handler, method);}} catch (Throwable e) {LogUtils.e(e.getMessage(), e);}}}}}}}}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

旅游景区管理系统(一 )旅游路线导航(MFC实现)

旅游景区管理系统 1.旅游景区导航 2.搜索最短路径 3.prim铺设电路 4.代码介绍和展示 旅游路线导航 本系列为武汉某大学课设&#xff0c;只是学习之用 功能要求&#xff1a; 算法解释&#xff1a; 使用了改进版的深度优先搜索算法&#xff0c; 改进点如下&#xff1a; 1.通…

分析万篇途牛旅游游记为你挑选最佳旅游景点

分析万篇途牛旅游游记为你挑选最佳旅游景点 数据采集分析主页面分析子页面爬虫设计主页面数据采集子页面数据采集 合并数据集 数据分析及可视化旅游热门地点TOP10驴友出行特点出行季节热门地区出行时间 随着经济发展&#xff0c;人们收入越来越高&#xff0c;可支配的资金和时间…

旅游规划(Dijkstra)

输入样例: 4 5 0 3 0 1 1 20 1 3 2 30 0 3 4 10 0 2 2 20 2 3 1 20 结尾无空行输出样例: 3 40 结尾无空行代码 #include<iostream> #define INFINITY 65535 using namespace std; int edges[505][505]; int price[505][505]; int N; void Dijkstra(int begin,int end)…

旅游路线问题 线性规划网络流

旅游路线问题 #include <iostream>在这里插入图片描述#include <cstring> #include <map> #include <queue> using namespace std; using std::cout; const int INF 1000000; //正无穷 const int NODESIZE 100; //结点最大个数 const int EDGES…

旅游APP大数据分析:带你找到最佳旅游路线

如今&#xff0c;旅游App已经成为了现代旅游的必备工具&#xff0c;而在这个数字化的时代&#xff0c;大数据的应用已经成为了旅游App的重要手段。本文将介绍旅游App大数据分析的应用&#xff0c;带你找到最佳旅游路线。 一、大数据在旅游App中的应用 随着互联网的发展和普及&…

旅游管理系统(包含旅游最短路径规划算法等,包含系统分析的各种uml图和界面图)

1.1问题定义 本次课程的设计题目是设计一个大型景区的管理系统&#xff0c;此系统是为了便于景区的管理以及提升游客的旅游体验&#xff0c;更好的适应现如今日益发展的旅游业。 1.2问题分析 现有某景区需要开发一个景区信息管理系统&#xff0c;具体需求有&#xff1a;建立一…

精确又优雅,Azure AI 多能力融合(一)

点击上方蓝字 关注我们 &#xff08;本文阅读时间&#xff1a;6分钟&#xff09; 微软MVP实验室研究员 王豫翔&#xff0c;Leo 微软圈内人称王公子。微软10年MVP&#xff0c;大龄程序员。目前核心工作是使用微软 AI 技术设计可以落地的解决方案&#xff0c;也就是写 PPT。虽然热…

免费的AIGC3.5网站分享,同时支持4、3.5-16K、AI绘图

背景 AIGC作为一种基于人工智能技术的自然语言处理工具&#xff0c;近期的热度直接沸腾&#x1f30b;。 作为一个AI爱好者&#xff0c;翻遍了各大AIGC的网站&#xff0c;终于找到一个免费&#xff01;手机电脑通用&#xff01;可直接对话的AIGC&#xff0c;也有各种提供工作效…

chatgpt赋能python:Python取值:了解基础知识和应用方法

Python取值&#xff1a;了解基础知识和应用方法 什么是Python取值&#xff1f; Python取值是指从一个对象中获取信息或者值。对象可以包括列表、字典、元组、变量等。Python提供了多种方法来取值&#xff0c;包括基础的索引和切片操作&#xff0c;以及高级的列表推导式、字典…

AI智能在线问答——AI创作家

这是一个强大的在线工具&#xff0c;通过使用人工智能技术来创作文本内容&#xff0c;能够模拟人类的写作风格和语言习惯&#xff0c;让生成的文本内容更加自然流畅。能够大大提高用户的工作效率和创作能力。&#xff08;传送门&#xff1a;AI创作家 - AI写作 - 智能AI聊天对话…

云米科技市值再创新低:基本面不稳,业绩接连下滑,或将继续下探

12月3日&#xff0c;纳斯达克上市公司云米科技&#xff08;简称“云米”&#xff0c;NASDAQ:VIOT&#xff09;再跌7个百分点&#xff0c;盘中一度报2.88美元/股&#xff0c;再度创造历史新低。截至收盘&#xff0c;云米的股价收报2.91美元/股&#xff0c;单日跌幅为7.03%。 贝…

基于STM32的照片查看器课程报告

注&#xff1a;资料借鉴正点原子正点精英板STM32F1开发指南&#xff08;库函数版&#xff09;&#xff1b;程序是正点精英板STM32F1实验四十三章图片显示实验。 程序地址&#xff1a;实验38图片显示实验.7z-嵌入式文档类资源-CSDN下载 目录 1绪论 1.1选题的背景 1.2选题的目…

物联网家电第一股,想离开小米的云米现在有多少实力?

作者|星影 来源|智能相对论 Are you ok&#xff1f;你甚至不用哼唱&#xff0c;这句英文就能马上让人想起雷军与小米。但对于小米生态链中的另一家企业——云米科技&#xff0c;大多数人却搞不清两家公司之间的关系。 云米科技成立于2014年5月&#xff0c;主营业务是智能家电…

云米科技财报预测:财务业绩有望恢复,销售额和市场份额将下降

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 业务和财务概况 云米科技&#xff08;VIOT&#xff09;成立于2014年&#xff0c;其首款产品是2015年推出的小米&#xff08;01810&#xff09;品牌下的净水器。在接下来的几年里&#xff0c;该公司迅速发展&#xff0c;目前…

安波副教授:分布式人工智能进展与趋势

2020-12-31 09:43:19 2020年11月20日&#xff0c;由中国科学技术协会主办&#xff0c;中国国际科技交流中心、中国人工智能学会、新加坡通商中国承办的“中新数字经济与人工智能高峰论坛”云端召开。主题报告环节&#xff0c;新加坡南洋理工大学人工智能研究院联席院长校长委员…

李立军副总裁:后疫情时代服务机器人产业的发展机会

2021-01-23 21:27:31 2020年11月14日至15日&#xff0c;由中国人工智能学会、嘉兴市人民政府主办&#xff0c;嘉兴市南湖区人民政府、嘉兴科技城管理委员会、浙江未来技术研究院&#xff08;嘉兴&#xff09;共同承办的2020第十届中国智能产业高峰论坛&#xff08;CIIS 2020&a…

需求推送变革!陈小平教授深度剖析机器人因何由精确性转向灵巧性

陈小平教授从精确性和灵巧性两个方面深入分析了机器人过去取得的成就&#xff0c;及将来面临的挑战。以下是陈教授的演讲实录&#xff08;为使文章简介规范&#xff0c;略有改动&#xff09;&#xff1a; 讲座内容 机器人灵巧性&#xff1a;需求推动的技术变革 机器人从精确性向…

云米科技的变与不变:毛利率连降3年,核心高管仅剩陈小平一人

近期&#xff0c;纳斯达克上市公司云米全屋互联网家电有限公司&#xff08;NASDAQ:VIOT&#xff0c;下称“云米”或“云米科技”&#xff09;发布截至2020年12月31日的2020年第四季度及全年财报。财报显示&#xff0c;云米多项指标出现下滑。 具体来看&#xff0c;云米2020年第…

云米美国上市雷军系持股40% 陈小平:重新定义家的未来

雷帝网 雷建平 9月25日报道 小米净水器生产商云米今日在美国纳斯达克上市&#xff0c;发行价为9美元&#xff0c;以发行价计算&#xff0c;市值超过7亿美元。云米上市也宣告中国“家庭物联网第一股”的诞生。 云米CEO陈小平在上市现场的致辞中感谢了两个人&#xff0c;分别是小…

演讲实录丨中科大陈小平教授《从封闭性到非封闭性:2020到2035年智能机器的机遇和挑战》...

来源&#xff1a;中国人工智能学会 陈小平 中国科学技术大学机器人实验室主任、教授 以下是陈小平教授的演讲实录&#xff1a; 非常高兴有这个机会进行中、新学术交流。本报告包括四方面内容。第一&#xff0c;关于人工智能&#xff08;简称AI&#xff09;的两种类型&#xff0…