基于天气预报课程设计.docx
《基于天气预报课程设计.docx》由会员分享,可在线阅读,更多相关《基于天气预报课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
基于天气预报课程设计
教学单位计算机学院
学生学号9
Android课程设计
题目Android天气预报课程设计
学生姓名王能松
专业名称软件工程
指导教师祝攀
2016年11月15日
1绪论
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
Android操作系统最初由Andy Rubin开发,主要支持手机。
2005年8月由Google收购注资。
2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。
随后Google以Apache开源许可证的授权方式,发布了Android的源代码。
第一部Android智能手机发布于2008年10月。
Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。
2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。
2012年7月美国科技博客网站BusinessInsider评选出二十一世纪十款最重要电子产品,Android操作系统和iPhone等榜上有名。
2013年09月24日谷歌开发的操作系统Android在迎来5岁生日,全世界采用这款系统的设备数量已经达到10亿台。
2014第一季度Android平台已占所有移动广告流量来源的42.8%,首度超越iOS。
Android的Logo是由Ascender公司设计的,诞生于2010年,其设计灵感源于男女厕所门上的图形符号,于是布洛克绘制了一个简单的机器人,它的躯干就像锡罐的形状,头上还有两根天线,Android小机器人便诞生了。
Android是一个全身绿色的机器人,绿色也是Android的标志。
颜色采用了PMS 376C和RGB中十六进制的#A4C639来绘制,这是Android操作系统的品牌象徵。
有时候,它们还会使用纯文字的Logo。
2背景
天气信息和人们的日常生活息息相关,随着人们活动范围的扩大和出行需要,及时精确的获取天气信息显得越来越重要。
为此,本人设计了天气预报软件,它是一种非常实用的天气信息提供软件,使用方便且功能强大,能提供各方面天气相关信息和贴心的生活指数。
用户可以通过天气预报软件及时获得近期天气的状况和变化,及时做好各方面计划和防御措施
3研究课题
本次课程设计选择的课题是基于Android天气预报的程序设计,我们知道,现在越来越多的人喜欢出去旅游,而旅游一个重要的前提是有一个好天气,因此,能提前知道天气的变化以及做好准备是非常重要的,因此,开发一款好的天气软件是非常重要的,它能让用户随时随地查询天气信息及天气变化情况,让我们的生活变得更加美好,舒适!
4 研究目的和意义
天气软件是一种非常实用的信息服务,随着智能手机的不断普及,各种智能手机平台下都有各种各样的天气软件。
Android作为现在主流的智能手机之一,自然也需要这方面的软件。
天气关系到人们的日常生活,如告知温暖,方便出行等。
此外,对未来天气的预测还可以帮助人们进行农作物的浇灌、施肥、收割等工作。
基于Android平台的天气软件已经有很多,经过分析,用户第一眼往往是一个软件的外观,一个好看的界面才能让用户以一种爱美之心去尝试,才能进一步了解一个软件的好坏,所以吸引眼球的界面是争取用户的第一步。
因此,界面设计工作对应用程序来说非常重要,在界面上吸引了用户,才能进一步让用户体验应用程序中的功能,使用这个软件。
5开发平台和环境
开发应用环境如下:
(1)下载Androidstudio
AndroidStudio是一个Android集成开发工具,基于IntelliJIDEA.类似 Eclipse ADT,AndroidStudio提供了集成的Android开发工具用于开发和调试。
(2)JDK的安装及系统环境配置。
步骤1、安装JDK选择安装目录,安装过程中会出现两次安装提示。
第一次是安装jdk,第二次是安装jre。
建议两个都安装在同一个java文件夹中的不同文件夹中。
(不能都安装在java文件夹的根目录下,jdk和jre安装在同一文件夹会出错)。
步骤2、
(1)安装jdk随意选择目录只需把默认安装目录\java之前的目录修改即可。
(2)安装jre→更改→\java之前目录和安装jdk目录相同即可。
注:
若无安装目录要求,可全默认设置。
无需做任何修改,两次均直接点下一步。
步骤3、安装完JDK后配置环境变量计算机→属性→高级系统设置→高级→环境变量。
步骤4、系统变量→新建JAVA_HOME变量。
变量值填写jdk的安装目录(本人是E:
\Java\jdk1.8.0)。
步骤5、系统变量→寻找Path变量→编辑。
在变量值最后输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)。
步骤6、系统变量→新建CLASSPATH变量。
变量值填写.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)。
系统变量配置完毕。
步骤7、检验是否配置成功运行cmd输入java-version(java和-version之间有空格)。
6需求分析
1能够查询城市的天气情况
2能够进行城市地点切换
3能够系统的显示天气数据及变化信息
4系统数据必须有安全性,独立性和可靠性。
5在线天气数据解析
首先,我们从“XX车联网API官网”中获取key,这是我们能否使用XX提供的服务的关键,具体的步骤不详述。
通过这个API我们可以从浏览器端查看获取天气json格式的数据,如下所示:
实时天气:
1.city"北京"//城市
2.cityid"101010100"//城市编码
3.temp"17"//当前温度
4.WD"东风"//风向
5.WS"2级"//风力
6.SD"70%"//相对湿度
7.WSE"2"//风力
8.time"14:
20"//更新时间
9.isRadar"1"//是否有雷达图
1.XML接口这个是全国天气的根节点,列出所有的省,其中的pyName字段是各个省XML的文件名,比如北京的是beijing,那就意味着北京的XML地址为一个省的天气,其中列出该省各个市的数据,北京就列出各个区。
tmp1是最低温低,tmp2是最高温度,url非常重要,我们一会儿再说。
state1和state2是神马转神马,每个数代表一个天气现象。
天气现象非常多,我本想全部分析出来,后来直接放弃了这个想法。
因为我看到了一个城市的天气现象的编码是26...我现在知道的有0.晴1.多云2.阴6.雨夹雪7.小雨8.中雨13.阵雪14.小雪其中后来发现知道这个没用,这个数字的主要作用是检索图片的
2.图片接口这个图就是天气现象0(晴)的图片,其他天气现象的图片依此类推。
c打头的图片是20*20像素的,b打头的是50*46像素的,d打头的是反白的图标,29*20像素,n打头的是夜间反白图标,29*20像素,注意这里的文件名是两位数字!
也许还有更多的图标,等待大家发掘啦~
3.JSON接口真没想到~居然有JSON接口~JSON在iPhone上分析起来要比XML简单很多这个是北京的JSON数据,那个HTML的名字是根据上文XML中的url得到的。
这个JSON中包含了实时数据、7天天气预报、气象指数等丰富的数据
国家气象局提供的天气预报接口
接口地址:
对于第三个接口,返回信息比较全面,也是以json格式提供,格式如下
{"weatherinfo":
{
//基本信息;
"city":
"北京","city_en":
"beijing",
"date_y":
"2012年2月16日","date":
"","week":
"星期四","fchh":
"11","cityid":
"101010100",
//摄氏温度
"temp1":
"2℃~-7℃",
"temp2":
"1℃~-7℃",
"temp3":
"4℃~-7℃",
"temp4":
"7℃~-5℃",
"temp5":
"5℃~-3℃",
"temp6":
"5℃~-2℃",
//华氏温度;
"tempF1":
"35.6℉~19.4℉",
"tempF2":
"33.8℉~19.4℉",
"tempF3":
"39.2℉~19.4℉",
"tempF4":
"44.6℉~23℉",
"tempF5":
"41℉~26.6℉",
"tempF6":
"41℉~28.4℉",
//天气描述;
"weather1":
"晴",
"weather2":
"晴",
"weather3":
"晴",
"weather4":
"晴转多云",
"weather5":
"多云",
"weather6":
"多云转阴",
//天气描述图片序号
"img1":
"0",
"img2":
"99",
"img3":
"0",
"img4":
"99",
"img5":
"0",
"img6":
"99",
"img7":
"0",
"img8":
"1",
"img9":
"1",
"img10":
"99",
"img11":
"1",
"img12":
"2",
"img_single":
"0",
//图片名称;
"img_title1":
"晴",
"img_title2":
"晴",
"img_title3":
"晴",
"img_title4":
"晴",
"img_title5":
"晴",
"img_title6":
"晴",
"img_title7":
"晴",
"img_title8":
"多云",
"img_title9":
"多云",
"img_title10":
"多云",
"img_title11":
"多云",
"img_title12":
"阴",
"img_title_single":
"晴",
//风速描述
"wind1":
"北风3-4级转微风",
"wind2":
"微风",
"wind3":
"微风",
"wind4":
"微风",
"wind5":
"微风",
"wind6":
"微风",
//风速级别描述
"fx1":
"北风",
"fx2":
"微风",
"fl1":
"3-4级转小于3级",
"fl2":
"小于3级",
"fl3":
"小于3级",
"fl4":
"小于3级",
"fl5":
"小于3级",
"fl6":
"小于3级",
//今天穿衣指数;
"index":
"冷",
"index_d":
"天气冷,建议着棉衣、皮夹克加羊毛衫等冬季服装。
年老体弱者宜着厚棉衣或冬大衣。
",
//48小时穿衣指数
"index48":
"冷",
"index48_d":
"天气冷,建议着棉衣、皮夹克加羊毛衫等冬季服装。
年老体弱者宜着厚棉衣或冬大衣。
",
//紫外线及48小时紫外线
"index_uv":
"弱",
"index48_uv":
"弱",
//洗车
"index_xc":
"适宜",
//旅游
"index_tr":
"一般",
//舒适指数
"index_co":
"较不舒适",
"st1":
"1",
"st2":
"-8",
"st3":
"2",
"st4":
"-4",
"st5":
"5",
"st6":
"-5",
//晨练
"index_cl":
"较不宜",
//晾晒
"index_ls":
"基本适宜",
//过敏
"index_ag":
"极不易发"}}
{
"weatherinfo":
{
"city":
"北京",
"city_en":
"beijing",
"date_y":
"2013年1月17日",
"date":
"",
"week":
"星期四",
"fchh":
"11",
"cityid":
"101010100",
"temp1":
"3℃~-8℃",
"temp2":
"3℃~-5℃",
"temp3":
"3℃~-3℃",
"temp4":
"1℃~-5℃",
"temp5":
"3℃~-6℃",
"temp6":
"2℃~-5℃",
"tempF1":
"37.4℉~17.6℉",
"tempF2":
"37.4℉~23℉",
"tempF3":
"37.4℉~26.6℉",
"tempF4":
"33.8℉~23℉",
"tempF5":
"37.4℉~21.2℉",
"tempF6":
"35.6℉~23℉",
"weather1":
"晴",
"weather2":
"晴",
"weather3":
"多云转阴",
"weather4":
"阴转多云",
"weather5":
"多云转晴",
"weather6":
"晴转多云",
"img1":
"0",
"img2":
"99",
"img3":
"0",
"img4":
"99",
"img5":
"1",
"img6":
"2",
"img7":
"2",
"img8":
"1",
"img9":
"1",
"img10":
"0",
"img11":
"0",
"img12":
"1",
"img_single":
"0",
"img_title1":
"晴",
"img_title2":
"晴",
"img_title3":
"晴",
"img_title4":
"晴",
"img_title5":
"多云",
"img_title6":
"阴",
"img_title7":
"阴",
"img_title8":
"多云",
"img_title9":
"多云",
"img_title10":
"晴",
"img_title11":
"晴",
"img_title12":
"多云",
"img_title_single":
"晴",
"wind1":
"微风",
"wind2":
"微风",
"wind3":
"微风",
"wind4":
"微风",
"wind5":
"微风",
"wind6":
"微风",
"fx1":
"微风",
"fx2":
"微风",
"fl1":
"小于3级",
"fl2":
"小于3级",
"fl3":
"小于3级",
"fl4":
"小于3级",
"fl5":
"小于3级",
"fl6":
"小于3级",
"index":
"冷",
"index_d":
"天气冷,建议着棉衣、皮夹克加羊毛衫等冬季服装。
年老体弱者宜着厚棉衣或冬大衣。
",
"index48":
"冷",
"index48_d":
"天气冷,建议着棉衣、皮夹克加羊毛衫等冬季服装。
年老体弱者宜着厚棉衣或冬大衣。
",
"index_uv":
"弱",
"index48_uv":
"弱",
"index_xc":
"适宜",
"index_tr":
"较适宜",
"index_co":
"较不舒适",
"st1":
"2",
"st2":
"-6",
"st3":
"2",
"st4":
"-3",
"st5":
"3",
"st6":
"-4",
"index_cl":
"适宜",
"index_ls":
"基本适宜",
"index_ag":
"极不易发"
}
}
流程图如下
显示天气流程图
7功能分析
7.1模块划分
1)城市管理模块,提供城市的添加、删除和选择。
2)显示天气模块,提供当日天气信息和未来天气信息的显示,天气分享功能。
3)实景天气模块,提供实景图片的上传和查看。
4)用户管理模块,提供用户注册,登陆,修改和查看个人信息
5)设置界面模块此模块提供软件相关的用户反馈,检查更新和关于我们8.2系统
7.2具体功能实现
各模块主要功能如下:
1)城市管理模块:
此模块包含城市添加、删除和查找。
用户可以通过手动输入,自动定位和选择系统内置的热门城市等方式选择目标城市。
也可以在城市管理界面进行城市的长按删除。
通过对全国上千个县级市进行搜索查询,准确定位到每一个城市,然后在通过查询天气功能准确的显示每个城市的准确情况,如果要更换城市,点击修改,出现下拉别的城市,如果想删除别的城市,直接删除城市即可!
2)显示天气模块:
此模块主要完成显示所选城市相关天气信息,显示未来几天天气预览和一些必要的生活指数。
它显示指定城市三天内的天气状况,包括日期、城市名称、温度、风力与当日的建议,用户可通过按菜单键来显示菜单更新当前天气与设置天气显示的界面背景,以及跳转至设置预报城市界面来更换预报城市。
另外,用户还可以通过系统内置分享将天气信息分享到朋友圈,微信好友和QQ好友。
3)实景天气模块:
此模块中用户可以通过拍照和从图库选取两种方式选择实景天气图片并上传到服务器,还可从服务器下载实景天气图片并查看。
由自动设置预报城市与手动设置二部分组成,自动设置实现GPS定位功 能,自动确定当前用户所在地;而手动设置则通过可伸展性下拉列表单击选择系 统数据库中预存的城市来进行设置,同时为了方便用户查找,支持以输入框的形 式来过滤查询预报城市。
当单击选中城市时跳转至天气显示界面,来显示该城市 当三天内的天气状况;第一次运行时自动跳到该界面
4)用户管理模块:
此模块包含一整套的用户管理解决方案,主要功能包括:
注册,登录,找回密码,更改密码,查看和修改用户基本信息等功能。
此功能需要连接数据库,通过数据库接口来获取表中的数据,完成用户的注册和登录,包括用户的密码的更换!
5)设置界面模块,此模块提供软件相关的用户反馈,检查更新和关于我们。
我们会联网获取得到的用户信息,及时反馈给用户,包括一些版本的更新。
7.3 系统E-R图
8设计小结
本文首先对天气预报系统进行了详细分析,给出了功能需求分析、系统用例分析及总体设计。
着重介绍了系统各模块的设计与实现,用户通过本系统能够轻松便捷的获取全国各地城市的天气信息,通过实景天气直观了解天气的实际情况,对未来的天气信息了如指掌。
同时,系统管理员可以删除数据库中过时的实景天气,保证实景天气数据库随时处于最新状态
9 参考文献
[1] 教学资源网.
[2] Android官方.
[3] 道客巴巴.
[4] 维基百科.
[5]Android开发者网站.
[6][美]EdBurnette.Android基础教程:
北京人民邮电出版社,2010
[7]XX文库.
[8]墨迹天气.