基于iOS的天气预报查询系统的设计与实现.docx
- 文档编号:9494756
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:44
- 大小:2.08MB
基于iOS的天气预报查询系统的设计与实现.docx
《基于iOS的天气预报查询系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于iOS的天气预报查询系统的设计与实现.docx(44页珍藏版)》请在冰豆网上搜索。
基于iOS的天气预报查询系统的设计与实现
基于iOS的天气预报查询系统的设计与实现
[摘要]随着科学技术的发展,移动终端逐渐走进人们的视线,相关应用越来越广泛,并在人们的日常生活中扮演着越来越重要的角色。
本课题研究的是基于iOS平台下的天气软件,目的是帮助用户随时随地查询天气信息及天气变化情况,让生活更加舒适方便。
本文详细讲述了iOS平台下天气软件的界面设计及数据处理部分,主要包括界面的实现、控件的使用、界面的布局和数据的处理等内容,结合WEB服务网的气象数据,将准确的天气情况以友好的方式呈现给用户,使用户可以更加愉快地体验本软件的服务。
[关键词]iOS界面查询天气预报
DesignAndImplementationOfWeatherQuerySystemBasedOniOS
[Abstract]Withthedevelopmentofscienceandtechnology,themobileterminalgraduallyintothepeople'sattention,relatedtomorewidely,andplayanincreasinglyimportantroleinpeople'sdailylives.ThestudyofthistopicistheweatherforecastsoftwarebasedontheiOSplatform,anddesignedtohelptheusertoqueryweatherinformationandweatherchangesanytime,anywhere,tomakelifemorecomfortableandconvenient.ThispaperdescribesthesoftwareinterfacedesignoftheiOSplatformundertheweatheranddatahandlingpart,includingthecontentsoftheinterfaceimplementation,theuseofcontrols,thelayoutoftheinterface,anddatahandlingandsoon,combinedwithweatherdataoftheWebService,willbeaccurateweatherconditionspresentedtotheuser-friendlyway,allowstheusertoexperiencemoreenjoyabletheserviceofthissoftware.
[Keywords]iOSinterfacequeryweatherorecast
1引言
1.1项目开发背景
苹果iOS是由苹果公司开发的手持设备操作系统。
苹果公司最早于2007年1月9日的Macworld大会上公布这个系统。
iOS与苹果的MacOSX操作系统一样,它也是以Darwin为基础的,因此同样属于类Unix的商业操作系统。
原本这个系统名为iPhoneOS,直到2010年6月7日WWDC大会上宣布改名为iOS。
截止至2011年11月,根据Canalys的数据显示,iOS已经占据了全球智能手机系统市场份额的30%,在美的国市场占有率为43%。
iPhone将基于OSX的移动计算与创新的多点触摸屏幕、位置感知、板载加速计等结合在一起。
苹果公司于2008年3月首次发布iPhoneSDKbeta时,开发人员蜂拥而至,一度造成服务器瘫痪。
不到一周,iphoneSDK的下载量就超过10万[1]。
天气软件是一种非常实用的信息服务,随着智能手机的不断普及,各种智能手机平台下都有各种各样的天气软件。
iOS作为现在主流的智能手机之一,自然也需要这方面的软件。
天气关系到人们的日常生活,如告知温暖,方便出行等。
此外,对未来天气的预测还可以帮助人们进行农作物的浇灌、施肥、收割等工作。
基于iOS平台的天气软件已经有很多,经过分析,用户第一眼往往是一个软件的外观,一个好看的界面才能让用户以一种爱美之心去尝试,才能进一步了解一个软件的好坏,所以吸引眼球的界面是争取用户的第一步。
因此,界面设计工作对应用程序来说非常重要,在界面上吸引了用户,才能进一步让用户体验应用程序中的功能,使用这个软件。
1.2国内外相关领域研究现状
随着iOS蓬勃的发展,涌入了大量的iOS开发人员,同时华丽的iOS产品也层出不穷。
虽然iOS的发展达到了前所未有的高度,但是在国内关于天气预报的软件也紧紧只有19款,所以开发出用户体验好并且实用的软件越来越重要。
下面介绍一下国内外最流行的三款iOS系统天气软件并做个简单的对比,他们分别是墨迹天气、涂鸦天气和蜜蜂天气。
(1)墨迹天气
天气显示面板:
墨迹天气算是国内最有名的天气查询软件,用户比较最多,界面显示也比较美观、华丽,并且可以添加多个城市。
默认显示四天的天气情况,并且左右滑动可以切换城市管理-天气-温度趋势图三个界面。
温度趋势图可以显示未来五天的气温变化情况和日夜天气情况。
设置以及其他功能:
墨迹天气的软件设置只包括更新间隔等设置,除了天气信息外不提供其它更多的相关资讯,是一款相对来说比较单纯的软件。
CPU内存占用:
在软件开启的情况下,实时CPU占用率在50%-70%,运行过程中一直居高不下。
内存占用大概为10M左右。
(2)涂鸦天气
天气显示面板:
国外的一款小软件,特色在其涂鸦的天气显示方式,非常生动,就像掌中的一个小剧场。
左下角的按钮可以切换“显示”和“隐藏”详细信息,天气预报也不是国人习惯的非晴即雨,预报的天气带有问号,给出下雨的几率百分比。
其他功能:
软件还有的功能就是分享模块,可以分享到Twitter和Facebook。
CPU内存占用:
软件比较小,运行过程中CPU占用14%左右,内存占用也很低,不到5M。
(3)蜜蜂天气
天气显示面板:
蜜蜂天气虽然没有墨迹天气老牌,但是蜜蜂系列是无线多媒体软件的大家族,还包括蜜蜂读书、蜜蜂新闻、蜜蜂音乐、蜜蜂视频和蜜蜂股票等,所以在新闻资讯方面比较强。
天气界面同样走的简洁精致路线。
并且该软件支持未来五天天气预报和所在城市的每小时的准点详细温度走势、风向等。
其他功能:
系统的设置和信息按钮出现在所有天气面板的左、右下角,用户交互上非常方便。
CPU内存占用:
该软件再CPU和内存占用上控制的还算不错。
软件在没有进行操作时,CPU占用控制在5%,进行刷新天气等操作时CPU占用27%,软件内存占用20M左右。
1.3论文研究的内容
要做一个用户体验好并且实用的天气查询软件,要做到一下几点,同时也是本论文的主要内容:
(1)实现可旋转的菜单界面。
(2)运用ASIHttpRequest获取并解析数据XML。
(3)运用iOS的frame框架显示解析后的数据。
(4)运用iOS的画图框架QuartzCore画出未来5天内的天气趋势。
(5)实现调用系统的照相机并拍照。
(6)实现用Jsonkit工具解析Json数据。
(7)实现调用本地相册并将图片和文字发送到新浪微博平台上。
1.4论文研究的意义
天气软件是一种非常实用的信息服务,随着智能手机的不断普及,各种智能手机平台下都有各种各样的天气软件。
用天气预报软件可以在第一时间掌握天气情况,以便提前预防,把气象灾害造成的损失降到最低。
同时也可以强化气象公共服务的职能,完善公共服务体系、改善公共服务手段、增加公共服务产品、提高公共服务质量,更好地发挥了气象事业对经济社会发展的现实性作用。
iOS作为现在主流的智能手机之一,自然也需要这方面的软件。
我们需要额外注意怎么样设计用户界面(UI)。
当我们需要设计自定义的UI元件时,这些元件用以直接支持我们设计的应用程序的交互需要,这个时候我们需要尊重原生的AppleiOS控件的习惯用法[2]。
因此,界面设计工作对应用程序来说非常重要,在界面上吸引了用户,才能进一步让用户体验应用程序中的功能,使用这个软件。
1.5论文内容的安排
本文将在以后5章节中介绍本系统的设计与实现。
我们将在第2章分析一下整个系统,包括使用的技术、开发平台、以及项目部署的环境。
第3章,总体介绍一下系统的设计思路,包括架构的选择,模块的划分,模块之间如何协同工作等。
第4章,将详细介绍各个模块的实现。
第5章,将介绍一下系统的测试,包括测试的方法,测试的结果,以及使用的工具等。
2系统解决方案
2.1需求分析
为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。
对软件需求的深入理解是软件开发工作获得成功的前提条件,不论人们把设计和编码工作做得如何出色,不能真正的满足用户需求的程序只会令用户失望,给开发者带来麻烦。
在本节,我们将对基于iOS的天气预报查询系统的设计与实现提出完整、准确、清晰、具体的需求分析,并使用UML2.0用例图直观的表示系统各角色所具备的功能。
2.1.1功能需求
基于iOS的天气预报查询系统的主要用途是为可以在第一时间掌握天气情况以及未来5天内的天气情况,可以通过折线图更直观的了解到未来5天内气温的趋势,并且可以用手机拍下当时的人、物、风景等,再通过本软件将手机相册内的图片以及自己写下的文字分享到新浪微博平台上。
用例图(UseCaseDiagram)是由软件需求分析到最终实现的第一步,它描述人们希望如何使用一个系统。
(1)系统用例图如图2-1所示。
图2-1系统用例图
(2)天气查询用例图如图2-2所示。
图2-2天气查询用例图
(3)分享图片和文字用例图如图2-3所示。
图2-3分享图片和文字到新浪微博平台用例图
(4)天气预报业务流程图如图2-4所示。
图2-4天气预报业务流程图
(5)分享图片和文字业务流程图如图2-3所示。
图2-5分享图片和文字业务流程图
下面就是本系统的具体功能需求:
(1)登录管理
用户不需要账号即可进入本系统。
(2)地点查询管理
用户能分省、市、县三级地级区域进行查询;
用户能查询2400个以上中国城市。
(3)天气查询管理
数据每2.5小时更新一次,准确可靠;
用户能查询包括当日及未来5天的天气情况;
用户能查看到包括当日及未来5天的天气气温趋势图。
(4)拍摄相片照管理
用户可以用iPhone手机自带的相机拍摄;
拍摄下的照片会自动保存到iPhone手机相册。
(5)微博分享管理
用户能在iPhone手机相册选取将要分享的图片;
用户能编写想要分享的文字。
(6)退出
用户点击Home键即可退出程序。
2.1.2可靠性和可用性需求
可靠性需求指定系统必须满足的可靠性,可用性与可靠性密切相关,它量化了用户可以使用系统的程度。
基于iOS的天气预报查询系统的设计与实现的所有数据都需要从网上即时更新以便获取到最新的天气数据,为确保用户可以随时都能查到即时的天气情况以及未来5天内的天气情况,所以在可靠性上必须确保。
此系统可靠性应达到以下几点:
(1)本系统应达只要有网络就可以访问提供数据的网站;
(2)一个月内系统局部不能出现2次以上故障;
(3)每次故障解决时间不得超过24小时;
(4)确保数据的准确性;
(5)拍摄后的照片一定要存到本地相册;
(6)分享的信息一定要分享在新浪微博平台上。
可用性应达到以下几点:
(1)在任何时候iPhone或者iTouch至少有一个该软件;
(2)在一个月内任何一部iPhone或者iTouch上该软件在运行期间不能崩溃2次以上。
2.1.3系统内容需求
系统开发初期,根据用户提出的要求,详细了解和分析了用户需求,确定了系统具有天气查询管理和分享管理。
天气查询管理包括地理查询、即时天气查询、未来5天内天气查询和未来5天内气温的趋势图;分享管理包括可以进行拍摄照片、分享文字和本地相册的图片等。
根据初期的设计思想进行分析,从内容上对该系统做如下划分:
(1)菜单:
由四个Button键组成并实现一个类似转盘电话中拨号转盘的旋转菜单效果,并用精美的图片做背景;
(2)地点查询:
将2400多个城市精确的分为省、市、县三级,并显示在列表上;
(3)天气查询:
当选择自己想要查看的城市后点击并进入天气查询,包括即时的天气情况和未来5天内的天气情况,内容带有文字和图片并显示在列表上,并将详细信息显示在单独的view里的lable上;
(4)天气趋势:
将未来5天内的最高气温和最低气温分两条不同颜色的折线显示在画板上,使用户更直观的了解到未来5天内的天气变化;
(5)实景拍摄:
点击Button键后可以调用手机自带的相机并进行拍照,并将拍摄后的照片保存到本地相册里;
(6)分享:
从本地选取喜欢的照片并在textfield上进行文字编辑,编辑好后将文字和图片分享到国内最流行的新浪微博平台上,与亲朋好友分享自己的照片和心情。
2.2技术架构
2.2.1Foundation框架简介
为所有程序开发奠定基础的框架称为Foundation框架。
它允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组、字典和集合。
其他功能包括处理日期和事件、自动化的内存管理、处理基础文件系统、存储(或归档)对象、处理几何数据结构(如点和长方形)[3]。
Foundation框架是用Object-C对CoreFoundation框架里许多特性的封装。
使用Foundation可以:
(1)创建和管理集合,比如数组和字典。
(2)访问存储在应用程序里的图片和其它资源。
(3)创建和管理字符串。
(4)提交和接收通知。
(5)创建日期和时间对象。
(6)自动发现IP网络上的设备。
(7)操作URL流。
(8)执行异步代码。
2.2.3UIKit框架简介
UIKit框架是iPhone应用程序开发中最基本的框架,也是用得最多、最重要的框架[4]。
所有的iOS应用程序都基于UIKit,绝对不能使应用程序脱离这个框架。
UIKit提供了在屏幕上绘制的机制,捕获事件,和创建通用用户界面元素。
UIKit也通过管理显示在屏幕上的组件来组织复杂的项目。
使用UIKit可以:
(1)构建和管理用户界面。
(2)捕获触摸和基于移动的事件。
(3)呈现文字和web内容。
(4)优化多任务程序。
(5)创建定制的用户界面元素。
2.2.3ASIHTTPRequest类库简介
使用iOSSDK中的HTTP网络请求API,相当的复杂,调用很繁琐。
ASIHTTPRequest就是一个对CFNetworkAPI进行了封装,并且使用起来非常简单的一套API,它用Objective-C编写,可以很好的应用在MacOSX系统和iOS平台的应用程序中。
ASIHTTPRequest适用于如下基本的HTTP请求:
[5]
(1)支持通过代理发起Http请求。
(2)通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作。
(3)支持基本、摘要和NTLM身份认证,在同一会话中授权凭证会自动维持,并且可以存储在Keychain(Mac和iOS操作系统的密码管理系统)中。
(4)ASIWebPageRequest–可以下载完整的网页,包括包含的网页、样式表、脚本等资源文件,并显示在UIWebView/WebView中。
任意大小的页面都可以无限期缓存,这样即使没有网络也可以离线浏览
(5)支持带宽限制。
在iOS平台,可以根据当前网络情况来自动决定是否限制带宽,例如当使用WWAN(GPRS/Edge/3G)网络时限制,而当使用WIFI时不做任何限制。
(6)支持断点续传。
(7)支持同步和异步请求
2.2.4JSONkit类库简介
JSONKit是ObjectiveC平台上比较常用的JSON数据访问工具。
JSONKit功能很强大,主要特色如下:
(1)JSONKit能在运行的情况下与libz.dylib自动连接而无须人工连接。
(2)在解析期间,如果检测到有gzip文件,JSONKit能自动解压。
(3)速度超快,支持之前的iOS版本(但要注意一点,从iOS5开始,iOS就已经有本地JSON解析工具了)。
(4)JSONKit的性能远优于JSON-Framework(即SBJSON),JSONKit使用起来也非常简单,表现性能比苹果iOS5.0中的NSJSONSerialization还要好,速度比NSJSONSerialization快上25%到40%,已经是非常大的一个差距了。
2.2.5MVC设计模式简介
MVC设计模式是在20世纪80年代发明的一种软件设计模式,至今已被广泛使用。
MVC本身并不是最基本的设计模式,它包含了若干更加基本的设计模式。
在MVC中基本设计模式相互配合,确定了各功能之间的协作,这是MVC应用程序的特性[6]。
其中MVC是Model-View-Control的简称,即模型-视图-控制器。
(1)模型(Model):
“数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。
“模型”有对数据直接访问的权力,例如对数据库的访问。
“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。
但是模型中数据的变化一般会通过一种刷新机制被公布。
为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。
(2)视图(View):
视图层能够实现数据有目的的显示(理论上,这不是必需的)。
在视图中一般没有程序上的逻辑。
为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。
(3)控制器(Controller):
控制器起到不同层面间的组织作用,用于控制应用程序的流程。
它处理事件并作出响应。
“事件”包括用户的行为和数据模型上的改变。
2.3开发平台
2.3.1iOS开发基本背景简介
iOS介绍:
iOS是由苹果公司为iPhone等移动设备开发的操作系统。
它主要是给iPhone、iPad和iPodtouch使用。
就像其基于的MacOSX操作系统一样,它也是以Darwin为基础的。
iPhoneOS的系统架构分为四个层次:
核心操作系统层(theCoreOSlayer),核心服务层(theCoreServiceslayer),媒体层(theMedialayer),可轻触层(theCocoaTouchlayer)。
应用程序由Objective-C开发。
(1)开发工具介绍:
Xcode:
开发iOS应用,需要在MacOSX运行Xcode开发工具。
Xcode是Apple的开发工具套件,支持项目管理、编辑代码、构建可执行程序、代码级调试、代码的版本管理、性能调优等等。
这个套件的核心是Xcode应用本身,它提供了基本的源代码开发环境。
InterfaceBuilder:
利用InterfaceBuilder,可以通过拖拽组件在程序窗口上进行装配。
布置好界面时,将内容保存在nib文件中。
无论为哪种平台编程,都需要在InterfaceBuilder中花费大量的时间[7]。
模拟器:
iPhone模拟器可以在Mac中调试iOS应用程序,它的外观和真实的iPhone/iPad设备一模一样。
使用它调试程序,比在真实设备中更方便快捷[8]。
模拟器不支持GPS定位、摄像头、指南针等与硬件关联较大的功能。
(2)开发语言介绍:
Objective-C是一门面向对象的编程语言,是开发iPhone和iPad应用的编程语言,也是开发基于Mac操作系统的应用程序的编程语言[9]。
Objective-C从标准的ANSIC语言扩展而来,并提供了定义类、方法和属性的语法,还有其它结构来促进类的动态扩展。
2.3.2iOS开发平台搭建
(1)iOS开发环境:
Xcode是Apple自己开发的,只运行在MacOSX平台下的IDE。
使用Xcode来设计程序的逻辑,使用InterfaceBuilder。
来设计程序的界面。
运行Xcode3.0或以上的版本需要MacOS10.5及以上的系统版本。
(2)iOS软件开发者证书介绍:
苹果的开发工具是免费的,但是开发出来的程序需要在真机上运行或者发布到AppStore上(越狱的除外),需要购买苹果的授权。
开发者证书工具就是Mac开发者计划成员申请和下载Mac应用程序签名证书的工具。
购买费用是99美元。
它涉及到苹果同意的条款和条件,并要签署和返回合同。
只有注册后才能在iPhone上测试你的程序,而不是在屏幕上的模拟器。
(3)运行程序:
当你做好准备调试你的application,你首先是通过Xcode的Build来构建你的系统,如果Build没有错误的话,你有两种方式可以运行你的Application:
iPhoneSimulator和DeviceiPhone。
3系统总体设计
3.1系统模块划分
根据初期的设计思想和需求分析的结果,根据本平台要达到的功能要求,本系统大致可以抽象为菜单模块、天气查询模块和分享模块。
3.1.1菜单模块
菜单模块需要实现的是一个类似经典的转盘电话中拨号转盘的旋转菜单效果。
滑动菜单,菜单进行转动,转动的过程中,处于最前面的按钮按钮慢慢变大,处于后端的按钮变小。
同样,点击转盘菜单上某个按钮,被点击的按钮会慢慢被转到最前面。
由于转动的过程中,按钮会由大变小或者由小变大,所以这个动画有3D的效果。
菜单模块效果图如图3-1所示。
图3-1菜单模块效果图
3.1.2天气查询模块
天气查询模块是本系统的重点,该模块需要实现地理位置查询、天气查询以及折线图。
此模块主要负责用Post方法向服务器发送请求并将获取到的Xml数据进行解析,将解析到的数据加载到创建好的列表上。
折线图则是利用iOS中比较复杂的画板显示,通过获取到的未来5天内的气温变化以折线形式显示在画板上,可以方便用户更直观的了解到未来的天气变化。
此模块采用POST方法获取数据而不是采用GET方法是因为GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
再进一步了解下他们两个的区别:
(1)GET使用URL或Cookie传参。
而POST将数据放在BODY中。
(2)GET的URL会有长度上的限制,则POST的数据则可以非常大。
(3)POST比GET安全,因为数据在地址栏上不可见。
3.1.3分享模块
分享模块是本系统的一个吸引用户的亮点,因为该模块选用了新浪微博平台。
众所周知随着互联网的迅猛发展,微博客已经形成信息传播的主流,在国外最流行的微博客Twitter,而在国内新浪微博率先进入了市场,并取得了非常大的成功,而在用户量上也早已经突破3亿。
虽然目前腾讯微博也在迅猛的发展并抢占市场,但在微博客的世界中新浪依然占据老大的位置,无可撼动。
下面分析下本系统使用新浪微博的好处。
(1)能够快速大范围的传播信息。
不用长篇大论节省时间,内容可以是现场记录,最新曝料,发感慨,晒心情,还可以分享自己的照片。
(2)用户可以通过手机随时随地发布相关消息,可以即写即发,即拍即发。
(3)新浪微博平台的用户基数比较大,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 iOS 天气预报 查询 系统 设计 实现