目 录
1 绪论 1
1.1课题研究背景及意义 1
1.2国内外研究动态 1
1.2.1国外发展现状 2
1.2.2国内发展现状 3
1.3论文研究的主要内容 3
1.4论文组织结构 4
2 系统关键技术研究 6
2.1 MVC模式 6
2.2 Android平台 7
2.2.1 Android特性 7
2.2.2 Android系统架构 8
2.2.3 Android的常用基本组件 9
2.3本章小结 11
3 系统需求分析 12
3.1系统设计目标 12
3.1.1设计目标 12
3.1.2设计原则 12
3.2系统需求分析 13
3.3性能分析 14
3.4本章小结 14
4 系统总体设计 15
4.1程序设计 15
4.1.1用户界面设计 15
4.1.2程序模块设计 16
4.1.3程序开发 18
4.2系统总体架构设计 19
4.2.1基于MVC的系统架构设计 19
4.2.2视图层设计 20
4.2.3模型层设计 21
4.2.4控制层设计 21
4.3本章小结 22
5 天气预报系统的实现 23
5.1系统开发环境以及设计思路 23
5.2系统关键技术实现 23
5.2.1数据存储 23
5.2.2 Files 24
5.3系统功能模块实现 28
5.4系统界面的实现与展示 29
5.5本章小结 36
6 系统性能测试与分析 37
6.1系统测试方法介绍 37
6.2系统部分功能模块测试 37
6.3系统部分性能测试 41
6.3.1指标定义 41
6.3.2测试结果记录 42
6.3.3测试结论 42
6.4本章小结 42
7 总结与展望 44
7.1总结 44
7.2未来展望 44
参考文献 46
1.3论文研究的主要内容
本文主要研究的是如何实现一个相对完整的,界面舒适的天气预报系统。该系统主要是基于Android Studio开发的,使用的是java编程语言。在参照市面上现有的天气预报系统的基础上,力争做到界面美观大方,功能简洁齐全。而研究的就是如何设计前端的界面,以及如何实现前端与后台的交互。而最重要的则是如何联网获取天气信息以及获取天气信息以后显示在界面上并根据天气信息给出相关的出行生活建议。综上所述便是我们认为的一个合格的天气预报系统。
课题主要的研究内容如下:
(1)首先是系统的需求分析,通过网络调查以及统计身边同学手机上是否需求天气预报这一App,来客观分析我们的系统在市场上有无需求,以及通过从互联网上搜集出来的现有的天气预报App的源代码拿来研究。研究其系统的复杂性来考虑是否能够实现。
(2)介绍并分析了天气预报系统的相关开发技术以及特性。最为主要研究的是系统开发中涉及到的必要技术,这包括基于Android Studio的开发模式和MVC模式,以及如何联网获取天气信息,主要需要获取的资源有温度、天气信息和出行建议等等。前端方面需要设计的几个Actively之间的联系和通信。通过分析和对比各种技术的特性及不足之处,基于笔者的掌握情况和系统的具体需求,明确了本系统的开发技术和工具选择,根据需求分析的结果,完成这样一个系统的总体设计。
(3)设计实现基于Android Studio的总体构架,数据库方面因为本系统主要是通过联网获取的,所以不需要数据库的支持。
(4)设计实现完成天气预报系统,实现系统的功能分析和模块划分,并对研发的产品进行全面的测试,根据测试结果反映的问题进行修复和优化处理。
1.4论文组织结构
本论文共计七章,组织结构安排内容如下:
第一章,绪论。着重介绍了课题研究背景及意义,国内外研究动态,以及论文研究的主要内容。
第二章,系统关键技术研究。这一章详细介绍了本次毕业设计所必须的技术,其中包括Android系统、Android的基本框架和组件、MVC框架以及Android Studio开发环境,介绍了如何构建一个合格的天气预报系统。目的是为了为以后的正式工作夯实基础,把每一个看似不重要的准备做好才能够在正式工作开始的时候游刃有余。
第三章,系统需求分析。本次设计的主要要求是要设计出一个天气预报系统,在正式设计之前必须要按照流程做出需求分析和可行性研究报告等。这些工作虽然繁琐却是在正式工作开始之前必备的,必须搞清楚本次设计的系统的市场需求。这一章明确了功能需求并将其总结成需求分析说明。
第四章,系统总体设计。本章在第二章的关键技术研究和第三章的需求分析的基础之上,对系统的整体架构设计进行了介绍,并阐释了系统的功能模块划分和数据库设计等,对微信营销管理系统的最终实现做出了必要的准备。
第五章,天气预报系统的实现。实现整个系统是本次课程设计的主要目标,本章主要介绍了本系统的开发环境和关键技术的实现,以及系统功能模块和系统界面的实现问题。本系统的实现需要的代码量很大,无法将代码全部写入文档中,因此本章只对核心模块重点叙述实现的方法和过程。
第六章,系统性能测试与分析。本章对系统的部分功能模块以及系统的性能进行了测试,详细分析了系统是否充分符合了需求,并给出了相关的修改意见。
第七章,总结与展望。本章对系统的实现过程进行总结和归纳,并针对系统的具体实现情况提出了系统有待改进之处,最后对后续工作进行了描述。

4 系统总体设计
4.1程序设计
4.1.1用户界面设计
根据需求分析可以知道,应用程序应包含四个主要的用户界面,以及几个辅助页面,这里需要进一步分析每个用户界面中应该包括哪些显示内容。根据项目的需求,当程序启动时,会进行判断用户的设置情况,然后将根据判断的结果从数据库读取相对应的数据,反馈回用户操作界面。由这些基本需求,我们可以知道要构成用户的操作界面主要有两个,一个是天气信息显示的主界面,本文转载自http://www.biyezuopin.vip/onews.asp?id=13813以及用户设置地理位置的设置界面。
在城市天气页面,如图4-1,分为上中下三个部分,上面部分显示用户设定的首要城市的城市名、当日温度区间、天气情况、风力大小、湿度、紫外线强度,实时温度及实时天气的图标。中间是三个自定义View,显示未来三天的天气情况,每个View中都包括日期、星期、天气图标、最高温度、最低温度。底部显示了当前天气的更新时间,及手动更新天气的按钮。

图4-1 城市天气
生活指数页面,如图4-2,生活指数页面,通过下拉列表选择不同的生活指数种类,显示各种生活指数,包括:空气质量,PM指数,生活建议,舒适度,洗车指数,运行建议等。

图4-2 生活指数
4.1.2程序模块设计
从功能需求上分析可以看出,整个应用程序应划分为3个模块,分别是用户界面模块、后台控制模块和基础功能模块。后台控制模块更具用户界面的需求调用基础功能模块的各项功能得到用户界面需要的数据并返回到用户界面。基础工具模块提供天气查询、网络状况检查、数据存取、数据处理4个功能模块;后台控制模块分为城市管理、dialog调用两个部分;用户界面模块包括,城市天气、城市管理、生活指数、城市简介、操作提示几个部分组成。如图4-3所示,我们理想的情况下用户界面中应该包含如下几个模块,即城市天气,城市设定,生活指数,城市简介以及添加城市等等。当然这是参考市面上做的最为复杂的天气预报系统所制定的程序设计模块。我们的系统以简洁明了为特点。力求代码的复用性高,获取数据的方式简单,只要能将天气信息显示在用户的面前,准确地把实时天气信息反馈给用户。

package com.free.freeweather.util;import android.text.TextUtils;import com.free.freeweather.db.City;
import com.free.freeweather.db.County;
import com.free.freeweather.db.Province;
import com.free.freeweather.gson.Weather;
import com.google.gson.Gson;import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;public class Utility {/**  解析和处理服务器发回的省级数据*/public static boolean handleProvinceResponse(String response){if (!TextUtils.isEmpty(response)){try {JSONArray allProvinces = new JSONArray(response);for (int i = 0; i < allProvinces.length(); i++){JSONObject provinceObject = allProvinces.getJSONObject(i);Province province = new Province();province.setProvinceName(provinceObject.getString("name"));province.setProvinceCode(provinceObject.getInt("id"));province.save();}return true;} catch (JSONException e) {e.printStackTrace();}}return false;}/**  解析和处理服务器返回的市级数据*/public static boolean handleCityResponse(String response, int proviinceId){if (!TextUtils.isEmpty(response)){try {JSONArray allCities = new JSONArray(response);for (int i = 0; i < allCities.length(); i++){JSONObject cityObject = allCities.getJSONObject(i);City city = new City();city.setCityName(cityObject.getString("name"));city.setCityCode(cityObject.getInt("id"));city.setProvinceId(proviinceId);city.save();}return true;} catch (JSONException e) {e.printStackTrace();}}return false;}/**  解析和处理服务器返回的县级数据*/public static boolean handleCountyResponse(String response, int cityId){if (!TextUtils.isEmpty(response)){try {JSONArray allCounties = new JSONArray(response);for (int i = 0; i < allCounties.length(); i++){JSONObject countyObject = allCounties.getJSONObject(i);County county = new County();county.setCountyName(countyObject.getString("name"));county.setWeatherId(countyObject.getString("weather_id"));county.setCityId(cityId);county.save();}return true;} catch (JSONException e) {e.printStackTrace();}}return false;}//将返回的JSON数据解析成Weather实体类public static Weather handleWeatherResponse(String response){try {JSONObject jsonObject = new JSONObject(response);JSONArray jsonArray = jsonObject.getJSONArray("HeWeather");String weatherContent = jsonArray.getJSONObject(0).toString();return new Gson().fromJson(weatherContent, Weather.class);} catch (JSONException e) {e.printStackTrace();}return null;}}




















基于Android的天气预报系统的设计与实现相关推荐

  1. 基于android的视频采集系统的设计与实现,基于Android的视频通话系统的设计与实现.docx...

    基于Android的视频通话系统的设计与实现 基于Android的视频通话系统的设计与实现摘 要近年来,智能手机操作系统发展迅速,尤其是Android系统的迅猛发展已经将全球智能手机市场引领到了非常火 ...

  2. 基于Android的理财app开发,基于Android的个人理财系统的设计与实现.doc

    毕业论文(设计)题目: 基于Android的个人理财系统 ---设计与实现 学生姓名: 学 号: 专业班级: 计算机科学与技术092班 指导教师: 职称 副教授 指导教师: 职称 起止时间: 目 录 ...

  3. 基于android的个人理财的论文,基于Android的个人理财系统的设计与实现毕业论文.doc...

    毕业论文(设计)题目: 基于Android的个人理财系统 ---设计与实现 目 录 诚 信 声 明3 本科毕业论文(设计)选题审批表4 本科毕业论文(设计)任务书5 本科毕业论文(设计)开题报告7 本 ...

  4. 基于Android公交查询系统的设计与实现(论文+程序设计源码+数据库文件)

    [摘 要]随着互联网的技术的不断更新发展,人们生活节奏也在不断的加快,对于网络的依赖也越来越紧密,尤其是在等公交,经常会错过班次,但又不知道,下次班次几点发车,这样会导致乘客花掉大把时间在等待,如果可 ...

  5. android 个人理财系统,基于Android的个人理财系统的设计与实现

    摘要: 在当今,全球经济的蓬勃发展带来了金融理财领域的巨大变革和创新,新的金融理财工具和理财观点层出不穷.对个人而言,从认识钱到管理钱(个人理财)是每个人的必修课.在Android系统应用如此火热的情 ...

  6. android 智能家居开发,基于Android智能家居系统的设计与实现

    摘要: 近年来,移动互联网技术的进步和智能终端设备的普及促进了智能家居产业的发展.同时,伴随着Android系统在手机.平板中广泛应用,人们通过一个Android设备远程控制家电设备,将与生活密切相关 ...

  7. 基于android的理财软件技术,基于Android的个人理财系统的设计与实现

    摘要: 在当今,全球经济的蓬勃发展带来了金融理财领域的巨大变革和创新,新的金融理财工具和理财观点层出不穷.对个人而言,从认识钱到管理钱(个人理财)是每个人的必修课.在Android系统应用如此火热的情 ...

  8. 基于android手机选课系统的设计与实现

    一.选题目的及意义 移动端APP的使用弥补了计算机的不可移动性及系统本身繁琐的登录认证.查询操作使系统使用带来不方便.学生可随时利用无线网络进行在线选课.课表查询.查看校园网信息,为学生提供方便.可移 ...

  9. android教务系统框架,基于Android的教务系统的设计与开发

    摘要: 随着我国高等教育的不断发展,高校教学与教务管理要实现科学管理,必须注重以人为本的理念.正是考虑到此,就应该建设基于移动网络的高校教务管理系统,以满足高校师生的现实需求.本文分析了C/S和B/S ...

最新文章

  1. C#中使用Monitor类、Lock和Mutex类来同步多线程的执行(转)
  2. linux php oracle 乱码,Linux下Oraclesqlplus中文显示乱码的问题的解决
  3. 解决url请求参数带中文时后台获取出现乱码问题
  4. Linux 中执行命令
  5. MFC文档、视图类的基本功能和二者基本关系
  6. python面向对象中的类
  7. Java面向对象编程篇1——类与对象
  8. 编程之美 set 8 区间重合判断
  9. matlab 可视化(specifier)
  10. Android项目重构之路:界面篇
  11. 最新浅析java源代码转换为机器码的编译执行过程
  12. 组合逻辑与时序逻辑的区别
  13. html文本框颜色填充颜色设置,Excel2007中设置文本框填充方案 文本框填充颜色
  14. 计算apk包的安装之后占用空间以及运行时占用内存
  15. mern技术栈好处?_如何开始使用MERN堆栈
  16. 今天听得好多老的电影的配乐啊
  17. 金蝶开发中根据实体查找bostype,再根据bostype规则,生成对应的id
  18. ECMAScript 2015 ES6
  19. 牛奶可乐经济学之Q1:为什么牛奶装在方盒子里卖,可乐却装在圆瓶子里卖?
  20. 基于多模态数据挖掘算法matlab,多模态生物数据分析与挖掘研究

热门文章

  1. 西门子300PLC系列(1):常用的西门子PLC分类有哪些?
  2. 执行nginx重启命令时,报找不到nginx.pid的解决方法
  3. {“msg“:“success“,“code“:0,“data“:[]}
  4. (ROYOLE)全球首款柔性屏开发套件,柔宇RoKit终于来了!
  5. i7-10710U和i7-8665U 哪个好
  6. vue图片裁剪组件_使用Vue-Rx的Vue.js图像裁剪组件
  7. Switch版初音 mega39去渲染 获得PS4版初音街机效果说明
  8. 浏览器广告拦截_如何阻止广告拦截器
  9. 创建订单实现幂等的一点思考
  10. Nao机器人B-human安装1