




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
********学院毕业设计说明书(论文)基于IOS的景点手机导游客户端摘要:现在随着社会的发展,旅游越来越被人们所欢迎和喜欢。现在的旅游方式除了跟随旅游团旅游外,更多市民选择一人或者几人结伴出游。随着移动互联网的迅速发展,几乎人人都配有移动通信终端。网络进入了千家万户,单独出游的旅客在没有导游的情况下,或许就错过了游玩地点的精彩内容,或许会因为景区过大而迷失方向。那么地方景点手机导游客户端也就有了存在的必要。本软件将旅游信息与iOS系统相结合,设计了一种基于iOS系统的景区智能旅游手机软件。本系统以Xcode为开发环境,设计景区旅游软件,实现景区相关信息介绍、电子地图导航和天气查询等功能。在景区信息模块下根据景区官网提供的信息经过动态处理和排版设计,完成景区信息和图片浏览功能。在天气模块下,使用天气Web接口,完成查询当地近七日天气情况功能和当天生活指数功能。在景区攻略模块下,使用iPhone手机自带的GPS定位系统以及腾讯地图API和google地图Web接口完成用户地图定位和导航功能等等。系统测试结果表现,本系统实现了景区信息提供、电子地图导航、天气信息提供等等功能,并且界面友好、美观,操作简单,具有良好的维护性和可扩展性,适用于iOS6及以上。关键词:GPS定位,腾讯地图API,iOS系统,Objective-C语言目录TOC\o"1-3"\h\u29389序言 19563第1章绪论 216631.1选题背景及意义 2244751.1.1旅游业发展以及现状 2271021.1.2旅游网 3104381.1.3手机移动互联网 3142491.2开发目标 414877第2章开发工具与技术介绍 6121852.1iOS系统和SDK 6301402.2开发工具Xcode 778122.3Objective-C语言 878122.4iOS定位系统 825012.5地图API和Google地图导航 9111722.5.1.腾讯地图API 925012.5.2Google地图导航 97637第3章业务需求分析与系统架构设计 11306663.1技术可行性 11288023.2需求分析 11271413.3.1系统用例 11113063.3业务描述 1332273.3.1景区介绍业务 1373893.3.2天气相关业务 14266893.3.3游玩相关业务 14191283.3.4各个类的定义 15152573.4系统流程图 1611673第4章系统概要设计 1885454.1总体设计 18249894.1.1软件系统整体规划 1890544.1.2软件系统总体模块图 1859304.2数据类设计 1939114.2.1概念结构设计 19287704.2.2逻辑结构设计 1925843第5章系统详细设计与实现 2489695.1天气情况模块 25110335.2景区业务之景区介绍 26191675.2.1景区业务子模块之景区文化 2717545.2.2景区业务子模块之景区历史 28305845.2.3景区业务子模块之地方特产 2952805.2.4景区业务子模块之名人踪迹 2966755.2.5景区业务子模块之故事传说和周边景点 30136085.3景区攻略(地图导航) 30233065.3.1景区攻略模块之“行” 31224495.3.2景区攻略模块之“吃”“住” 32234955.3.3景区攻略模块之“娱” 33211435.3.4景区攻略模块之“购” 34208375.3.5景区攻略模块之“拍” 359708第6章系统测试 3613906.1运行环境 3681506.2测试原则 36300236.3测试方法 36226986.4测试计划 37200486.4.1黑盒测试 37132556.4.2手机系统版本兼容性测试 38202726.4.3iPhone手机屏幕适配测试 38258316.4.4内存泄露测试 392588结束语 4119678参考文献 4232041致谢 44第1页共44页第1页共44页序言近几年来,随着经济的飞速发展,大众对于精神生活的要求也越来越高,旅游已经成为大众休闲放松的最佳选择之一。现在旅游业对信息的依赖性逐渐变大,信息的获取和传播对整个旅游业十分重要。信息的数字化给信息传递带来了便利,网络信息大爆炸,包罗万象。节假日准备出去旅游,但又不知道去哪里,哪里比较合适,于是景区的官网应时而生。在电脑上查阅景区相关信息,天气以及出行时间行程。但伴随着移动互联网的兴起,移动通信改变了人们的生活。越来越多的人使用手机上网,随时随地查找信息。现在的景区官网大多对应电脑网站,用手机打开相应网站时,速度慢,耗网速。这个缺点让所有手机用户大为困扰,因此手机导游是必需的。但是基于iOS系统的手机导游并不常见,所以我选择这个作为课题,进行开发设计。在需求调研分析中,为了能够适iPhone手机特点的情况下,在景区信息模块对相关内容的布局和动态交互进行了处理,让其能为用户提供最详细的景区信息。天气模块的相关信息则通过Web接口从网络获取,然后转换为适应的手机界面并显示。电子地图中的周边商店提供依赖于腾讯地图API中的周边POI信息搜索接口,调用接口获取相关信息处理并显示在手机屏幕上;动态地图导航的实现依赖于GPS手机定位和google地图Web接口。此毕业设计说明书(论文)其余部分分为六章,主要针对景区iOS手机导游软件的设计与实现展开全面的论述。其中,第1章绪论,介绍了系统开发的背景意义、目标和相关知识;第2章开发工具与技术介绍;第3章业务需要分析与系统架构设计,对软件的需求进行描述;第4章系统概要设计,着重对软件各个功能模块和软件的总体结构设计过程进行了阐述;第5章系统详细设计与实现,详细介绍界面的构建、程序的设计和实现的过程;第6章系统测试。第2页共44页第2页共44页第1章绪论选题背景及意义1.1.1旅游业发展以及现状旅游是人们为了休闲、娱乐、探亲访友或者商务目的而进行的定居性旅行和在浏览过程中所发生的一切关系和现象的总和。随着生活水平的提高,越来越多的人喜欢在节假日出行游玩,这带动了旅游业的发展。据2014年1月29日第007版中国旅游报所报道的第三届中国旅游产业发展年会嘉宾访谈,刘平春表示,在经济转型的大背景下,中国旅游业正处在一个快速发展期。刚刚过去的2013年,旅游行业发展最大的特点是资本进入旅游业的热情空前高涨。刘平春认为,2014年对旅游行业是一个重要的年份,在十八届三中全会之后,经济转型升级,旅游行业的规模将得到进一步扩展[1]。表1-2全国旅游业总收入第3页共44页第3页共44页1.1.2旅游网随着因物网的发展,计算机技术的不断成熟,旅游网站纷纷落户,促进旅游这个行业大力发展。“吃、住、行、游、购、娱”,这六个字这中国旅游业发展的根本,而旅游网基本提供了这些信息。中国的旅游网在1996年就开始出现。旅游是大众趋势,互联网已经成为最大的传媒之一,因此旅游网发展速度非常快,每年都有成千上万家旅游网出现,截至2012年底具有一定旅游资讯能力的旅游网有5000多家,其中专业旅游网300余家[2]。旅游网对于旅客来说,是为了提供旅游信息给旅客,旅客可以通过搜索得知旅行社-旅游路线-旅游价格等相关旅游信息。因为旅游景点的不同,还可以获取景点相关的基础设施信息和安全知识等等,有些还会提供景点的特色。现代人类的生活变化,传统的旅游已经不能满足人们的需要。越来越多的人选择自助旅行,或者组团出行的驴友也越来越多。旅客获取景点的相关信息,从旅游网了解是主要信息来源之一[2]。2012年左右自助游基本进入成熟期,无论是选择传统的随团旅游或者自助旅游,总有照顾不到的地方,旅游公司和攻略总有不足之处。旅客在不经意间也许就错过了景区特色,而抱憾离开。1.1.3手机移动互联网移动互联网,就是将移动通信和互联网二者结合起来,成为一体[2]。移动互联网(MobileInternet,简称MI)是一种通过智能移动终端,受用移动无线通信方式获取业务和服务的新兴业态,包含终端、软件和应用三个层面。终端层包括智能手机、平板电脑、电子书、MID等;软件包括操作系统、中间件、数据库和安全软件等。应用层包括休闲娱乐类、工具媒体类、商务财经类等不同应用与服务。随着技术和产业的发展,LTE(长期演进,4G通信技术标准之一)和NFC(近场通信,移动支付的支撑技术)等网络传输层关键技术也将被纳入移动互联网的范畴之内[2]。随着宽带无线接入技术和移动终端技术的飞速发展,随时随地乃至在移动过 第4页共44页 第4页共44页 程中都能方便地从互联网获取信息和服务已经不在是想象[2]。从20世纪80年代中期第一代模拟移动通信系统商用开始至今,短短十几年间移动通信从原来的2G发展到3G再到现在传的沸沸扬扬的4G,足以证明移动通信的发展速度势不可挡。4G也称为beyond3G(超3G),是多种无线技术的综合系统。它融合了现有3G的增强型技术,集3G网络技术和无线LAN系统为一体。4G包含很多目前正在使用以及今后即将使用的无线技术[4]。4G技术支持100Mbps~150Mbps的下行网络带宽,也就是4G意味着用户可以体验到最大12.5MB/s~18.75MB/s的下行速度。这是当前国内主流中国移动3G(TD-SCDMA)2.8Mbps的35倍,中国联通3G(WCDMA)的25倍。此时覆盖全球的3G网络已经基本建成,全球25%以上人口使用第三代移动通信系统,第三代技术仍然在缓慢地进入市场,到那时整个行业正在消化吸收第三代技术,对于第四代移动通信系统的接受还需要一个逐步过渡的过程[8]。可以随时查阅景区相关信息,对于出行在外,寻找心中所爱的旅客是一个福音。于大多中国人的消费心理,无论是4G还是3G上网流量消耗比较大。现有旅游网大多适应台式电脑屏幕,打开时需要足够的网速和流量。于是手机版的旅游客户端应时产生,为旅客们在旅行时随时随地上网查阅景区信息提供便利。1.2开发目标随着3G网的全球覆盖,我们从网络互联时代步入移动互联时代。手机用为主要的移动终端之一,又广受人们的喜爱,这也给移动互联打下了坚实的基础。本文是基于iOS的风景区介绍以及地图导航应用。首先,本文对我开发的项目的意义进行了分析,阐述了网络对旅游业产生的影响。其次,手机导游也是基于移动互联,只要有网络信号,无论是wifi还是3G、4G网络,就可以查阅到景区的信息。再者,本文对开发所需要的关键技术进行了介绍与分析,其中包括iOS系统开发框架、集成开发环境Xcode与其使用的面向对象编程设计语言Objiective-C。最后本文根据软件工程的开发流程,对系统的功能需求和业务流程等等进行 第5页共44页 第5页共44页 了需求分析,并根据需求划分了软件系统的功能模块,对各个功能模块施行设计与实现。现在很多的旅游网站适应的是电脑屏幕,用手机打开时需要足够的网速和流量,不符合我们中国大众的消费心理,所以手机版的景区导游势在必行。所以我用苹果专用语言Objective-C编写,设计了这款基于iOS系统的景区手机导航客户端。本软件实现了在iPhone手机上了解景区相关信息,获取无锡近七日的天气情况,以及景区用户定位与景点导航指路。 第6页共44页 第6页共44页 第2章开发工具与技术介绍2.1iOS系统和SDK苹果iOS是由苹果公司开发的移动操作系统。iOS是iPad、iPhone、iPodtouch和AppleTV的操作系统。iOS具有简单易用的界面、令人惊叹的功能,以及超强的稳定性,已经成为iPhone、iPad和iPodtouch的强大基础。尽管其他竞争对手一直努力地追赶,iOS内置的众多技术和功能让Apple设备始终保持着遥遥领先的地位[2]。现在的移动终端大多使用安卓或者iOS系统,市场上现在已经推出了好些安卓系统的手机导游客户端,但是iOS系统的客户端相对较少[2]。2007年10月17日,********在一封张贴于苹果公司网页上的公开信上宣布软件开发工具包。它将在2008年2月提供给第三方开发商。软件开发工具包于2008年3月6日发布,并允许开发人员开发iPhone和iPodtouch的应用程序,并对其进行测试,名为“iPhone手机模拟器”。然而,只有在付出了iPhone手机开发计划的费用后,应用程序才能发布。自从Xcode3.1发布以后,Xcode就成为了iPhone软件开发工具包的开发环境。第一个Beta版本是iPhoneSDK1.2b1(build5A147p)它在发布后立即就能够使用了[2]。由于iOS是从于MacOSX核心演变而来,因此开发工具也是基于Xcode。该SDK需要拥有英特尔处理器且运行MacOSXLeopard系统的Mac才能使用。其他的操作系统,包括微软的Windows操作系统和旧版本的MacOSX都不支持[2]。SDK本身是可以免费下载的,但为了发布软件,开发人员必须加入iPhone开发者计划,其中有一步需要付款以获得苹果的批准。加入了之后,开发人员们将会得到一个牌照,他们可以用这个牌照将他们编写的软件发布到苹果的AppStore。发布软件一共有三种方法:通过AppStore,通过企业配置仅在企业内部员工间应用,也可通过基于"Ad-hoc"而上载至多达100部iPhones[2]。这个发布iPhone软件的形式的出现使人们不能根据GPLv3的授权代码发布软件。任何根据GPLv3任何代码的开发者也必须得到GPLv3的授权。同时,开 第7页共44页 第7页共44页 发商在散发布已经由GPLv3授权的应用软件的同时必须提供由苹果公司提供的密匙以允许该软件修改版本的上载[2]。2.2开发工具XcodeXcode是一个用来开发Mac和iOS应用程序的集成开发环境。Xcode提供了几个编辑器来编码和设计界面,例如源码编辑器、UserInterface界面编辑器等。Xcode支持代码的自动提示、语法着色显示、编辑、编译、调试及运行于一体的集成开发环境[3]。在iOS开发中界面设计是其中最重要的部分,好的界面设计会让用户眼前一亮。Xcode中提供了一个叫做InterfaceBuilder是一个可视化界面,最终生成一个XML格式的配置文件,该配置文件很少直接编辑。绝大部分操作是通过界面完成的。例如组件大小、对齐方式等。结合助手编辑器,还可以根据界面上的组件自动生成代码,例如组件属性、事件方法等。可以将编辑器视图切换到助手编辑器,按住control键,并选中要生成的组件,拖曳到编辑区,即可自动生成代码[3]。Xcode的主要优势1:Xcode将赋予你创建诸如计算和渲染引擎应用程序的能力,这些应用程序使用64位内存定址。这非常适合数据集中的应用程序,其通过访问内存中的数据运行速度更快,远胜于磁盘访问。Xcode将为你提供工具来建立并调试适合InterlCorei5,i7和MacOSXLion的32位或64位应用程序,还可以让你创建包含32位和64位执行能力的FatBinaries[3]。Xcode的主要优势2:因为Xcode支持CodeWarrior风格相关项目参考,所以可以保证把CodeWarrior项目文件快速方便地转移到Xcode。苹果电脑公司的MacOSX综合开发环境Xcode为各种类型的MacOSX软件项目提供项目编辑、搜索和浏览,文件编辑,项目构建和调试设备等功能[3]。Xcode的主要优势3:Xcode可用来辅助开发应用程序、工具、架构、数据库、嵌入包、核心扩展和设备驱动程序。Xcode支持开发人员使用C、C++、Object-C、AppleScript和Java[3]。 第8页共44页 第8页共44页 2.3Objective-C语言Objective-C是我这次设计所使用的语言。Objective-C中类的定义分为两个部分:声明部分和实现部分,并且一般分为两个文件,分别是.h文件和.m文件[3]。在类中定义的变量可以分为实例变量、类变量和局部变量。每个对象的实例变量都是不同的,例如,我的姓名和你的姓名是不同的。类变量是所有对象共享的。局部变量在方法中声明或者是函数的参数[3]。在类中定义的方法分为类方法和实例方法。类方法以“+”号开始,实例方法以“-”号打头。类方法无须实例化,通过类名称可以直接调用。实例方法必须实例化类后才能调用[3]。类的实例化是由类创建对象的过程,由一个类可以创建若干个对象。实例化一个类可以使用NSObject的new关键字,也可以使用NSObject的alloc和init。使用new方法实例化对象几乎很少用到;而alloc表示分配内存区域,init表示初始化,例如,给实例变量赋值。关于Object-C中方法的调用和其他编程语言有所不同,Object-C中方法的调用使用[]语法格式。Objective-C的主要优势是它的动态性。这种动态性可以让应用在运行时判断,瑞不是在编译构建时就固定下来。Objective-C的动态性来自三个方面:动态类型可以在程序运行时判断对象的类型。动态绑定在程序不在编译时判断需要调用什么方法,而是在运行时判断。和其他面向对象的语言一样,只有在消息发出时,方法调用和代码才真正的联结在一起。动态载入可以在程序运行时添加代码模块以及其他资源,让应用可以根据需要加载一系列可以执行的代码和资源,不是在启动时就加载所有组件,提交程序性能。2.4iOS定位系统iOSSDK中提供了两个框架来实现GPS位置服务,这两个框架分别是CoreLocation.framework和MapKit.framwork。其中CoreLocation.framework主要 第9页共44页 第9页共44页 提供了获得设备位置信息的API,例如,经纬度信息;而MapKit.framework主要提供了展示地图的API。这两个框架中的核心类是CLLocationManager类和MKMapView提供了展示地图的功能。我们可以使用CLGeoCoder类来实现位置描述和经纬度之间的转换。因为使用腾讯地图定位总有偏差,所以使用iOS自带的定位系统,减少偏差。2.5地图API和Google地图导航2.5.1.腾讯地图API腾讯地图定义:腾讯地图开放API是由腾讯公司旗下的地图网站(包括但不限于)为第三方开发者提供的应用程序接口,开发者通过调用接口可以搭建与地图相关的应用程序[4]。腾讯地图API(IOS)是一套基于iOS4.0及以上设备的应用程序接口,通过该接口,您可以轻松访问腾讯地图服务和数据,构建功能丰富、交互性强的地图应用程序。腾讯地图API不仅包含构建地图的基本接口,还提供了诸如地图定位、地址编码,实时路况,POI搜索,周边搜索,公交路线搜索,驾车路线搜索,公交线搜索等数据服务。支持iOS4.0以上系统,腾讯地图API接口与iOS内置的MapKit包兼容,开发者只需要很小的改动即可完成从MapKit到腾讯地图API的切换。并且迁移到腾讯地图API之后很多MapKit中有iOS4.0以上版本才能使用的特性接口也可以正常使用[4]。在我的设计中,我使用腾讯地图中的POI搜索功能和周边搜索功能,完成周边兴趣点的定位,然后获取其GPS坐标。2.5.2.Google地图导航Google地图API是WebAPI。WebAPI是通过开放的Internet传输协议,以标准方式定义并提示可被其他应用调用的服务内容。它通过API调用将内容进行整合。目前架构在Web平台上,以HPPT为基础的WebAPI的普及,也降低了应用服务整合的门槛[2]。GoogleMapsAPI是Google为开发者提供Maps编程API。它允许开发者在不第10页共44页第10页共44页必建立自己的地图服务器的情况下,将GoogleMaps地图数据嵌入到网站之中,从而实现嵌入GoogleMaps的地图服务器应用,并借助GoogleMaps的地图数据为用户提供位置服务[2]。Google在电子地图方面优势最成熟,所以在路线导航部分我选用的Google地图导航。通过输入起始点位置的GPS和终点位置的GPS,能够快速地在界面的谷歌地图上画出到达指定地点的路线轨迹。第11页共44页第11页共44页第3章业务需求分析与系统架构设计3.1技术可行性本软件系统主要涉及到Objective-C语言[11]、网络接口数据的上传与下载分析、Xcode软件等。Objective-C语言:Objective-C语言是在C的基础上,加入面向对象特性扩充而成的编程语言。目前,Objective-C主要应用于MacOSX和iOS这两个NeXTSTEP的衍生系统。Objective-C是iOS的开发语言。网络接口数据的上传与下载分析:主要是利用JSON(JavaScriptObjectNotation),JSON简单说就是javascript中的对象和数组,通过这两种结构就可以表示各种复杂的结构。①对象:对象在js中表示为“{}”扩起来的内容。②数组:数组在js中是中括号“[]”扩起来的内容。经过对象、数组2种结构就可以组合成复杂的数据结构了。(3)Xcode软件:Xcode是Apple开发工具套件中的一个,是Apple工具套件的中心,它提供了基本的源代码开发环境,是一个集成开发环境IDE,它能够创建和管理开发iPhone项目的所有源代码,运行调试源代码,并编译源代码为可执行文件。所以软件的实现在技术上可行的。3.2需求分析3.3.1系统用例相较于手机应用来说,系统涉及到有角色永远只有用户这一种。如图3-1所示,系统用例图包括景区信息模块、天气信息模块、景区攻略(即游玩导航)三个主要部分。第12页共44页第12页共44页3-1系统用例图景区信息用例对应业务需求描述中景区信息相关介绍。用户能够根据自己的兴趣选择了解本系统提供的景区相关信息。天气信息用例对应业务需求描述中的天气查询功能。用户可以通过连接网络得到未来几天内的天气信息,以及当天的天气生活指数。3-2景区概况和天气情况用例图第13页共44页第13页共44页景区攻略用例对应业务需求描述中的地图导航功能。用户可以通过导航到达系统所提供的景区景点以及景点的部分相关信息。3-3景区攻略用例图3.3业务描述作为一个景区手机导游客户端,主要就是为旅客景区的各种信息。我以风景区作为试点,所以提供景区的各种信息。是横卧在太湖西北岸的一个半岛,的风光山清水秀,浑然天成,是太湖风景的精华所在,素有“太湖第一名胜”的称号。2012年10月26日,晋升为国家5A级风景区。该手机软件提供景区的相关分为三大模块:景点信息,天气信息,地图信息。3.3.1景区介绍业务这部分的信息资源来自官网提供,我通过界面处理和动态交互介绍景区文化、历史渊源、地方特产、名人踪迹、故事传说、周边景点这几个部分。(1)景区文化:这部分主要对景区的介绍,名人王昆仑的介绍,第14页共44页第14页共44页还有部分书画的展示。向旅客展示最具文化特色的两部分,并且对有个大致了解。(2)历史渊源:这部分描述了景区的形成历史,以及相关的文化背景,提供了旅游咨询热线电话。旅客如果需要对软件提供的信息希望有更详尽的了解可以选择拨打旅游咨询热线电话,软件会帮你自动帮你接通电话咨询。(3)地方特产:这部分为前来游玩的游客提供无锡的地方特产和地方美食,方便游客选择购买特产。通过自定义的列表,模拟JavaScript网页动态交互点击后显示每个单元格的更多内容。(4)名人踪迹:这部分为一个照片展示区,主要展示前来观光旅游的名人和部分旅客的景区留念合影。通过一个照片播放器,播放预设的照片,支持后退和前进。(5)故事传说:这部分提供了六个关于的故事传说,分别是无锡旅情石碑的由来;什么是“鼋”;太湖的形成;的三山传说;三宝的由来;以及月老祠月下老人的传说。(6)周边景点:这部分介绍了附近的景点,比如蠡园、梅园、锡惠公园、三国水浒城、灵山胜境,提供相关的文字介绍和景点图片欣赏。3.3.2天气相关业务本模块利用2345天气王的web接口提供最近几日的天气情况和当天的生活指数,出行指数。3.3.3游玩相关业务本模块主要提供景区地图,GPS定位和目的地导航功能。(1)行:本部分提供景区浏览路线推荐,公共设施分布,景区地图。旅客可以在这里了解到景区所拥有的全部公共设施,还有景区的简化地图和详细地图。(2)住和吃:景区美食,景区内用餐地点的环境和位置,酒店,住宿点位置,提供景区的餐饮地点与住宿位置和游客位置的导航。这里提供景区的用餐地点和茶馆,使用云标签拟态,用户可以选择自己想去的地点点击就会进入地图导航,显示用户地点到目标地点的步行路线。第15页共44页第15页共44页(3)娱:景区的门票介绍,快艇服务,观光车,游艇服务等等项目介绍,以及相关特色游推荐。旅客可以在这里看到景区所提供的全部娱乐项目。(4)购:提供景区附近的所有商店和超市的坐标点,旅客可以选择自己感兴趣的商店进行定位导航。这边通过腾讯地图POI搜索出景区周边所有可以购物的地点,显示在在列表里。旅客可以选择自己想去的商店,点击后进入地图导航显示用户到目标商店的步行路线。(5)拍:推荐景区各种合适摄影留念的地点,以及景点导航。旅客可以通过点击自己感兴趣的景色,在显示的电子地图上画出用户到可以看到相应景色的景点步行路线。3.3.4各个类的定义综合软件系统的需要,我定义了如下数据类的分析。图3-8为整体自定义类图shootClass(地方特产信息类),aroundSecClass(周边景点信息类),CloudButton(吃/住云标签按钮类),poiClass(吃/住/购/拍的兴趣点类),QPoiData(Poi搜索数据类),QPoiInfo(Poi搜索结果信息类)。图3-8整体自定义类图第16页共44页第16页共44页(1)景区介绍中的地方特产中的类,因为地方特产使用了自定的动态列表加载显示,所以它需要单独定义一个数据类。地方特产:属性有特产名称,特产介绍,特产ID,特产图片。其中特产ID是关键,相当于数据类表中的主键。(2)景区介绍中的周边景点中的类。周边景点:景点名称,景点简介,景点图片数组,景点ID。其中景点ID是关键。(3)地图导航中吃、住云标签按钮类。吃/住云标签按钮:云标签ID,按钮顶点坐标,按钮左坐标点,按钮右坐标点。其中去标签ID是关键。(4)地图导航中的吃、住、购、拍中的信息类。吃/住/购/拍:用户位置经度,用户位置纬度,目标地点名称,目标地点ID,目标地点经度,目标地点纬度。其中目标地点ID是关键。以上是我自己设计定义的类别,下面是我被使用到的腾讯地图API中的相关类。(1)POI搜索结果类(QPoiData):本次POI搜索的总结果数,当前页的POI结果数,本次POI搜索的总页数,当前页的索引,POI列表(成员是POI信息类)。(2)POI信息类(QPoiInfo):POI的类型,POI的UID,POI的名称,POI的详细地址,POI的电话,POI的分类,POI的详细描述,POI的地理坐标。3.4系统流程图本软件分成三大模块,下面是本软件的系统流程图,如图3-4。本软件需要连网使用,打开软件后,首先出现加载界面,然后是欢迎界面,在欢迎界面会获取你的当前位置,连接腾讯地图并上传你的位置信息。同时后台有个字体加载程序,连网加载字体。再次点击欢迎界面就会来到主菜单,主菜单上有三个按钮菜单,分别是:天气情况,景区介绍,和地图导航。点击天气情况会就自动连接网络,获取2345天气王的web接口信息,并显示,网络连接失败,则不显示天气信息。点击景区介绍,会出现一个下拉菜单,点击菜单选项就可以进入相应的小模块。点击地图导航也会出现一个下拉菜单,点击吃、住、购、拍,第17页共44页第17页共44页会连接地API请求信息,比如吃,进入这个选项后,会进入个类似标签云的选择界面,点击标签会进入地图,地图上会画出用户当前位置到达目标地点的路线。如果网络连接失败,则跳出提示,并不显示地图。图3-4软件系统活动图第18页共44页第18页共44页第4章系统概要设计4.1总体设计系统总体设计是指手机软件在逻辑上实现的功能,用户可以通过iPhone手机随时随地的查看风景区的相关介绍,天气情况,以及景区的设施地图等等。为了实现这些功能,手机必须开启定位功能,并保证网络的连接,以便随时请求天气数据,地图数据与你的当前位置。通过参考景区的官方网站,体现移动互联的特性,完成最终的设计目标。4.1.1软件系统整体规划软件是由天气情况、景区介绍、景区攻略也就地图导航三大模块组成。景区介绍又分成景区文化,历史渊源,地方特产,名人踪迹,故事传说,周边景点。景区攻略又分成行、吃、住、娱、购、拍。4.1.2软件系统总体模块图软件系统总体模块图,如图4-1。图4-1软件系统总体模块图第19页共44页第19页共44页4.2数据类设计在软件系统总体设计阶段,数据的下载和使用,需要自定义数据的类别。在iOS系统的软件开发过程中,或许用不到数据库,但是自定义类却一定是必须的。因为系统提供的类往往不能满足开发者设计需求,所以自定义类在iOS的开发中至关重要的一部分。4.2.1概念结构设计通过需求分析定义相关类后,我根据自己所设计的每个类的成员不同,进行相应的概念结构设计。概念结构设计主要采用了E-R方法。具体如下图:图4-2地方特产E-R图图4-3周边景点E-R图图4-4吃/住云标签E-R图图4-4吃(地图导航以吃为样例)E-R图4.2.2逻辑结构设计根据概念结构设计得到局部的E-R图,因为我所设计的软件系统没有相应后台,所有的数据都是连接网络上的API接口请求相关数据,再进行分析、分类,所以根据现有的E-R模型图进行逻辑结构设计,向关系模型转换,依照规则得到如下结果:地方特产(特产ID,特产名称,特产介绍,特产图片);第20页共44页第20页共44页表4-1地方特产类表:shootClass字段名字段类型是否主键是否非空是否自增字段描述dataIDNSString是是否特产IDnameStrNSString否是否特产名称dataStrNSString否是否特产介绍imageNumUIImage否是否特产图片图4-5为地方特产的单独类图,操作addDataAction()是这个类的加载操作。图4-5地方特产类图周边景点(景点ID,景点名称,景点简介,景点图片数组);表4-2周边景点类表:aroundSecClass字段名字段类型是否主键是否非空是否自增字段描述secIDNSString是是否景点IDsecNameNSString否是否景点名称secDataNSString否是否景点简介secImageListNSMutableArray否是否景点图片数组吃/住云标签(云标签ID,按钮顶点坐标,按钮左坐标,按钮右坐标);表4-3吃/住云标签类表:CloudButton字段名字段类型是否主键是否非空是否自增字段描述bottomCGFloat是是否云标签IDtopCGFloat否是否按钮顶点坐标leftCGFloat否是否按钮左坐标rightCGFloat否是否按钮右坐标下图是说明的故事传说/周边景点与云标签类之间的关系图。CloudButton类第21页共44页第21页共44页图中的操作animationUpdate()代表的是动态坐标数据的更新操作;操作LimitSpeedbettowinMINandMAX()代表的云标签运动超出屏幕边界进的操作;操作touchesBegan()代表云标签发生移动前进行的操作;操作touchesMoved()代表云标签发生移动进进行的操作;操作touchesEnded()代表云标签发生移动结束后进行的操作。图4-6故事传说/周边景点与云标签类之间的关系图吃(地点ID,用户位置经度,用户位置纬度,地点名称,地点位置经度,地点位置纬度)。表4-3吃类表:poiClass字段名字段类型是否主键是否非空是否自增字段描述addressIDNSString是是否地点IDuserLngfloat否是否用户经度userLatfloat否是否用户纬度addNameNSString否是否地点名称addLngfloat否是否地点经度addLatfloat否是否地点纬度腾讯地图中的相关类POI数据(本次POI搜索的总结果数,当前页的POI结果数,本次POI搜索的总页数,当前页的索引,POI数据信息列表);表4-4POI数据类表:QPoiData字段名字段类型是否主键是否非空是否自增字段描述totalPoiNumNSInteger是是否POI总结果数curPoiNumNSInteger否是否POI当前页结果数第22页共44页第22页共44页pageNumNSInteger否是否POI本次搜索总页数pageIndexNSInteger否是否当前页的索引poiInfoListNSArray否是否POI列表POI数据信息(POI的类型,POI的UID,POI的名称,POI的详细地址,POI的电话,POI的分类,POI的详细描述,POI的地理坐标)。表4-5POI数据信息类表:QPoiInfo字段名字段类型是否主键是否非空是否自增字段描述typeQPoiTye是是否POI的类型uidNSString否是否POI的UIDnameNSString否是否POI的名称addressNSString否是否POI的详细地址phoneNSString否是否POI的电话classesNSString否是否POI的分类poiInfoNSString否是否POI的详细描述coordinateCLLocationCoordinate2D否是否POI的地理坐标下图是景区攻略中的子类与POI搜索数据类和POI搜索信息类的类关系图。图4-7POI数据类相关类下图为整体的类关系图。shootClass地方特产类属于单独的一个类,与其他类没有关系。aroundSecClass与CloudButton是一对一的类关系,一个云标签对第23页共44页第23页共44页应一个景点。QPoiInfo是QPoiData类的包含类,这是腾讯API自带的类。poiClass是我自定义的类,组成为获取的用户当前经纬坐标和坐标地点ID以前从QPoiInfo中获取的目标地点的经纬坐标和坐标地点ID。图4-8全部类关系图第24页共44页第24页共44页第5章系统详细设计与实现本软件有三个模块组成:天气模块,景区介绍模块,景点攻略(地图导航)模块。由于软件大多依赖于网络公开的API接口,大多数实现的功能需要连接网络才能获取数据。软件以天蓝色为主背景,缀以动态的樱花。进入欢迎界面后就是主菜单界面,点击主菜单中的天气选项,就会进入天气界面;点击景区介绍和景区攻略选项就有出现一个下拉列表,菜单选择的处理时序图如图5-1。图5-1菜单选择的处理时序图打开软件,首先判断设备屏幕的大小,在.h的文件中定义宏函数:#defineiPhone5([UIScreeninstancesRespondToSelector:@selector(currentMode)]?CGSizeEqualToSize(CGSizeMake(640,1136),[[UIScreenmainScreen]currentMode].size):NO),判断设备屏尺寸时,只需要在-(void)viewDidLoad{}中加上判断语句if(iPhone5){}然后设定控件在4英寸屏幕下的位置就可以。然后连接腾讯地图API,请求代码如下:第25页共44页第25页共44页QAppKeyCheck*check=[[QAppKeyCheckalloc]init];[checkstart:@"fd623b8aa3239773b1ad27e74f758c93"withDelegate:self];self.appKeyCheck=check;通过函数-(void)notifyAppKeyCheckResult:(QErrorCode)errCode{},得到返回值,然后判断是否已经连接到地图API。大部分用户的苹果手机只有系统字体,但是现在苹果官网也提供了多种中文字体,我参考官方提供的数据,编写了一个动态下载字体并使用到程序,让其美化的界面。核心代码如下:UIFont*aFont=[UIFontfontWithName:fontNamesize:12.];NSMutableDictionary*attrs=[NSMutableDictionarydictionaryWithObjectsAndKeys:fontName,kCTFontNameAttribute,nil];CTFontDescriptorRefdesc=CTFontDescriptorCreateWithAttributes((__bridgeCFDictionaryRef)attrs);*descs=[NSMutableArrayarrayWithCapacity:0];[descsaddObject:(__bridgeid)desc];CFRelease(desc);CTFontDescriptorMatchFontDescriptorsWithProgressHandler((__bridgeCFArrayRef)descs,NULL,^(CTFontDescriptorMatchingStatestate,CFDictionaryRefprogressParameter){ doubleprogressValue=[[(__bridgeNSDictionary*)progressParameterobjectForKey:(id)kCTFontDescriptorMatchingPercentage]doubleValue]; if(state==kCTFontDescriptorMatchingDidBegin){ ...}return(bool)YES;});}使用已经下的字体美化界面,只需要在控件的属性设定字体的格式和大小就可以了,比如:textView.font=[UIFontfontWithName:@"STXingkai-SC-Light"size:15.];5.1天气情况模块本模块的核心是UIWebView,在天气情况界面的.h文件里引入UIWebViewDelegate。进入此页面时请求网络连接,依据已经编写好的web接口,第26页共44页第26页共44页请求相应的数据,并显示在界面的UIWebView上。天气数据主要有:最近日的气温,出行指数,和需要注意东西。图5-2天气情况时序图网络请求加载和加载失败,则通过UIWebViewDelegate中的函数处理相应情况。网络请求加载中的函数如下:-(void)webViewDidStartLoad:(UIWebView*)webView{}网络请求失败的函数如下:-(void)webView:(UIWebView*)webViewdidFailLoadWithError:(NSError*)error{}5.2景区业务之景区介绍景区介绍主要是根据风景区官网提供的各种资源进行筛选,为用户提供最官方最真实的景区资料。第27页共44页第27页共44页图5-3景区业务模块时序图5.2.1景区业务子模块之景区文化进入景区文化这个子模块,首先让人记住的就是那枝动态的樱花。风景区中,樱花是最十分重要的元素。作为“世界三大赏樱胜地”之一,已种植有30000余株各类樱花,共有67个品种,是我国规模最大,品种最全的樱花种植基地,有“中华第一赏樱胜地”的美誉[16]。iOS系统不支持flash动画,所以动画的实现只能过自定义图片数组,然后改变UIImageView的属性,让图片动起来。这部分的核心代码如下:第28页共44页第28页共44页NSArray*gifArray=[NSArrayarrayWithObjects:[UIImageimageNamed:@"f1"],…,nil];flowerImageV.animationImages=gifArray;//动画图片数组flowerImageV.animationDuration=5;//执行一次完整动画所需的时长flowerImageV.animationRepeatCount=999;//动画重复次数[flowerImageVstartAnimating];在景区文化中,还分有三个子模板:介绍,王昆仑故居,书画展示。这三个子模板主要是对iOS中的UILabel,UIButton,UIScrollView等等这几个控件的灵活使用,通过各种属性参数的修改,让他变成自己想要的显示状态。介绍是官网上对于的描述,主要通过UIScrollView和UILabel来实现;王昆仑故居主要介绍的是从72峰山馆走出去的王昆仑先生的生平;书画展示,是部分存放在风景区的书画欣赏。具体如图5-3:图5-4景区文化界面截图5.2.2景区业务子模块之景区历史景区历史讲述的是在岁月深处形成的过程,以及的樱花展示。的历史这个部分同样使用了下载的字体美化界面,iOS系统中关于UIScrollView的动态处理的非常棒,让用户有完美的阅读体验。通过点击樱花两字,切换到樱花展示的界面。点击旅游热线图片,可以拨打热线咨询景区旅游的相关信息。通过[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"tel://051096889688"]];就可以调用电话拨号界面,拨打电话。第29页共44页第29页共44页图5-5历史渊源界面截图5.2.3景区业务子模块之地方特产在本部分,我自定义了显示列表,通过获取的特产信息,然后显示在界面上。通过在函数-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{}中使用自定义的Cell和数据类,让获取到的特产信息,显示在列表中。在列表单元格点击事件函数-(void)tableView:(UITableView*)tableViewdidSelectRowAtIndexPath:(NSIndexPath*)indexPath{}中,处理点击事件时,同时传递被点击的单元的位置,让进入详细页面的动态更加完美。界面如图5-5右图,列表点击跳转的动态核心代码如下:[UIViewanimateWithDuration:0.4fdelay:0options:UIViewAnimationOptionCurveEaseInOutanimations:^(void){self.labelForPlace.frame=CGRectMake(35,200,self.labelForPlace.frame.size.width,self.labelForPlace.frame.size.height);self.labelForCountry.frame=CGRectMake(35,250,self.labelForCountry.frame.size.width,self.labelForCountry.frame.size.height);...}completion:NULL];5.2.4景区业务子模块之名人踪迹名人踪迹这部分界面主要使用的是一个图片播放器,它可以自动播放图片,有淡入淡出的效果,也可以通过点击和滑动进行图片翻页。这个图片播放器重写了UIScrollView,通过自定义,实现了图片播放功能,核心代码为:第30页共44页第30页共44页[arrOfImagesrelease];arrOfImages=[arrretain];pageControl=[[UIPageControlalloc]init];pageControl.frame=CGRectMake((98/[[UIScreenmainScreen]bounds].size.width)*self.frame.size.width,(400/[[UIScreenmainScreen]bounds].size.height)*self.frame.size.height,122,36);pageControl.numberOfPages=arrOfImages.count;pageControl.currentPage=0;scrollview=[[UIScrollViewalloc]initWithFrame:self.frame];scrollview.contentSize=CGSizeMake(scrollview.frame.size.width*arrOfImages.count,scrollview.frame.size.height);[scrollviewsetDelegate:self];scrollview.showsVerticalScrollIndicator=NO;scrollview.showsHorizontalScrollIndicator=NO;scrollview.pagingEnabled=YES;for(inti=0;i<arrOfImages.count;i++){...}[pageControladdTarget:selfaction:@selector(pgCntlChanged:)forControlEvents:UIControlEventValueChanged];[selfperformSelector:@selector(startAnimatingScrl)withObject:nilafterDelay:3.0];[selfaddSubview:scrollview];[selfaddSubview:pageControl];5.2.5景区业务子模块之故事传说和周边景点故事传说和周边景点都使用了花式按钮,六个花瓣按键呈环型排列,中心有个较大的花瓣按钮。点击自己感兴趣的按钮,那个按钮就会自动转到最上方,并且中心按钮也会变成那个被点击的按钮。通过点击中心按钮,跳转到自己感兴趣的部分。动态花式按钮的实现主要依赖于CircularLayOutView以及XYPoint这两个自定义的类。CircularLayOutView定义的是动态按钮,XYPoint定义的是动态按钮的位置。点击中心按钮就会根据你所选择的按钮ID匹配相应的故事ID或者景点ID,读取相关数据信息并显示在界面上。这个详细信息界面主要是对于所选故事传说或者景点的基本介绍,还有相关图片资料的展示。图片资料展示同样使用了名人踪迹中图片播放器。5.3景区攻略(地图导航)这个模块主要是对于地图API的应用,通过手机定位系统获取用户的当前位置,上传到地图API应用中。然后通过解析你上传的请求目标,返回你所需要信息数据。手机端接收到相关信息并进行处理、分类,然后显示到界面上。第31页共44页第31页共44页图5-5景区攻略时序图5.3.1景区攻略模块之“行”这个子模块是唯一一个没有用到地图API的。在这个模块中首先描述了进入公园的游览经过,“游人进园先至“太湖佳绝处”牌坊,过“间津”、“利涉”门后,渐行至长春桥边。这里初春时樱花破绽怒放,排红粉白,一树树,一片片,像彩云,似晨雾,灿烂眩目。”这是进入景区的第一印象。在界面右上角有两个按钮,分别提供了景区甚而设施一览表和景区地图。景区设施一览表是根据官方网站上提供的信息,然后将他归类成适用于手机界面的图表。景区地图分别提供了景点简化地图和景区全貌地图两份。通过重写UIScrollView实现图片的全屏显示。重写的类名为MRZoomScrollView,通过使第32页共44页第32页共44页用感应屏幕的手势,实现翻页功能显示实现代码为:for(inti=0;i<4;i++){_zoomScrollView=[[MRZoomScrollViewalloc]init];CGRectframe=self.scrollView.frame;frame.origin.x=frame.size.width*i;frame.origin.y=0;_zoomScrollView.frame=frame;_zoomScrollView.imageView.image=[UIImageimageNamed:[NSStringstringWithFormat:@"L%d.png",i+1]];[self.scrollViewaddSubview:_zoomScrollView];[_zoomScrollViewrelease];}5.3.2景区攻略模块之“吃”“住”吃和住这两个子模块中提供的就餐地点与住宿地点都是根据官网上提供的消息编写出的。这两个界面采用了标签云的显示方法,具体如图5-6。标签云的实例化核心代码如下:CloudView*cloud=[[CloudViewalloc]initWithFrame:self.view.boundsandNodeCount:100];cloud.delegate=self;[self.viewaddSubview:cloud];[cloudrelease];图5-6景区攻略子模块之吃云标签显示截图划动屏幕,标签云还会缓缓移动,形成云动态。标签云的移动效果需要依靠坐标点的变化来实现。划动屏,触发屏幕触摸事件,通过这三个函数来响应:-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{}-(void)touchesMoved:(NSSet*)toucheswithEvent:(UIEvent*)event{}-(void)touchesEnded:(NSSet*)toucheswithEvent:(UIEvent*)event{}为了触发事件,将云标签的UILable替换成UIButton。点击云标签,就会进第33页共44页第33页共44页入地图导航界面。在得到云标签的ID后,查找对应ID的地点经纬坐标,传输到地图显示界面。同时应用获取用户的当前位置经纬坐标与目标地点经纬坐标一起上传到gooogle地图web接口,然后在地图显示界面生成路线动画。因为地图API提供的相应经纬坐标在地图的显示转换上存在误差,所以导航的精准度有待提高。对于这部分gps坐标的获取和地图显示的流程图如图5-7。图5-7gps坐标的获取和地图显示的流程图5.3.3景区攻略模块之“娱”娱这个子模块提供的是官方提供的景区游玩项目资料,并没有应用到地图API。若是有相关问题,可以点击旅游热线按钮,拨打热线咨询相关信息。这部分包括景区门票信息和收费标准、快艇服务项目信息、景区观光旅游车的行驶路线和景区的公交信息、游船项目服务中的游玩套餐推荐这几部分组成。比如景区观光车与公交信息如下:“景区观光游览车从充山大门出发,途径犊山大门,终点站为游览中心。游客凭票免费往返乘坐游览车。犊山大门出口处有87路公交车始发站,充山大门出口处有1路公交车始发站。终点均可以到达火车站。”第34页共44页第34页共44页5.3.4景区攻略模块之“购”这个模块主要使用了腾讯地图的poi搜索功能。因为在风景区提供的商品购物比较片面,大多数是部分地方特产、食物和普通的饮料等等。对于第一次来无锡旅游的旅客,可以满足带纪念品的需要。但是景区的食品和饮料总是会比景区外提供的高上一点,这样对于明明只需要买个水解渴,却了大价钱的普通游客可能会觉得肉疼。腾讯地图的poi搜索功能提供的是以景区为中心,通过这条命令:[self.searchroundSearch:cityNamelocation:CLLocationCoordinate2DMake(lati,longi)inRadius:800withKey:@"shop"pageIndex:0];以“shop”为关键字,搜索方圆800米内所有可以购物的商店名称。通过函数-(void)notifyPoiSearchResult:(QPoiSearchResult*)poiSearchResult{}分析从地图api接口返回的数据,并将数据压入UITableView的显示数组中,然后再经过UITableView的显示加载分析,逐行将店名显示在UITableView的列表中。因为我的POI关键字是“shop”,所以会出现英文的店名和名字中带有shop这个词的其他poi目标。这是本模块搜索需要改进的地方,我所得到的数据依赖于腾讯地图的api接口,在处理数据方面做的工作还需要多加学习。具体界面如图5-8:图5-8景区业务子模块之购对象列表显示界面截图点击UITableView列表的单元格,就会跳转到用户到目标地点的地图导航界面上去。在跳转过程中获取用户当前位置的经纬坐标,并使用poi搜索得到的目标点的经纬坐标点,显示两点之间的的路线图。具体界面与图第35页共44页第35页共44页5.3.5景区攻略模块之“拍”进入这个模块,展示的就是官网上提供数据总结的几个景色的最佳拍摄地点和拍摄时间。列表为自定义的Cell,让景色的拍摄时间,地点一目了然,并且提供参考作品,让用户对每个景点都有一个大致了解,具体显示如图5-9所示。图5-9景区攻略业务子模块之拍界面显示截图当然,风景区四季有花,处处入画。可以根据各位游客的审美,感觉差异,配经四季的变换,时间回转,拍摄自己喜欢的作品。而且风景区每年举办“太湖之春樱花节”摄影比赛活动,游客可积极参与和交流。点击UITableView的列表单元格,进入对应景色的拍摄地区的地图导航。因为路线导航是一对一的,所以我选择了几个拍摄点中的一个作为导航目的地。显示用户到此个拍摄点的路线导航。图5-10杏花楼到景点芦湾消夏景点的地图导航截图第36页共44页第36页共44页第6章系统测试系统的测试是软件开发过程中必不可少的部分。系统测试是一个发现问题并解决存在问题的过程。目的在于查找系统中存在的错误和缺陷,并解决所发现的问题。6.1运行环境1、硬件环境:苹果电脑CPU主频不低于2.5GHz,内存不低于4GB,屏幕分辨率在1440*990以上,硬盘容量大于200GB。2、软件环境:(1)操作系统:MACOSX10.7以上(2)开发工具:Xcode4.6,iPhone6.1Simulator6.2测试原则基于系统测试的过程,系统测试符合遵循以下的几个基本原则:1、所有的测试都应该以用户需求出发;2、设计测试方案时,应该包括系统预期的测试结果;3、Pareto原则:测试发现的80%的错误很可能来自于20%的程序;4、测试从“局部”逐步过渡到“整体”;5、完全测试是不可能的,测试需要终止;6.3测试方法软件测试方法可分为黑盒测试和白盒测试等。一般软件测试以黑盒测试为主,白盒为辅。其中黑盒测试的优点有:测试简单,测试人员不需要了解应用程序的细节,包括特定的编程语言。测试的视角不同,很容易被理解和接受。第37页共44页第37页共44页对于较大的代码单元来说,黑盒测试比白盒测试效率较高。有助于暴露与任务规格不一致或者有歧义的地方。黑盒测试的缺点:对测试人员要求较高,需要使用合理的测试用例。测试的只有一小部分,无法提供直观测试覆盖率。不能直接对特定程序段进行测试。结果的准确性取决于测试用例的设计。6.4测试计划根据iOS软件开发的特点,一般测试分为:黑盒测试、手机系统版本兼容性测试、iPhone手机屏幕适配测试和内存泄露测试四个部分。6.4.1黑盒测试黑盒测试主要为了测试整个软件是否出现闪退、功能完整性检查和加载提示。(1)闪退:闪退指手机客户端在运行的过程中,应用由于运气出现错误突然关闭的现象。一般经常打断点测试,确定出错点,并反复调试修改。(2)功能完整性检查:主要测试一些前期需求书中说明需要实现的功能是否实现,这个只需在代码中完成即可。(3)加载提示:主要是某些页面需要请求网络,加载是否成功。如图6-1所示。图6-1加载提示第38页共44页第38页共44页6.4.2手机系统版本兼容性测试iOS系统是一个不断升级的系统,但是在升级的过程中会出现部分代码的兼容性问题。某些官方提供的函数方法只出现在较新的系统版本中,也有可能某些函数方法在版本迭代中被取消了。由于用户的手机系统版本较新,也有可能某些用户一直未升级仍在使用老系统。在这种情况下会出现无法识别程序中的某些方法而导致问题的出现。但是开发的过程中使用的函数方法比较多,不可能一一检查是否适用于所有版本的系统,这就必须在后期测试发现和解决了。测试时需要把本软件运行各种iOS的系统版本,看是否能正常运行。就在软件运行时先获取用户手机系统的版本,根据版本的不同,匹配相对的代码,解决因系统版本不同而导致的问题。6.4.3iPhone手机屏幕适配测试iPhone系列手机在iPhone5手机出现之前使用的手机屏幕大小全部采用的是3.5寸的屏幕。2012年发布的新款的iPhone5手机中,苹果公司采用了更大的4.0寸的屏幕。4.0的屏幕相较于3.5的屏幕,宽度相同,但是高度更高。这样,我们在开发的过程中就需要考虑iPhone5与之前版本的iPhone手机屏幕尺寸的问题。需要在开发过程中做好屏幕尺寸的兼容,防止出现界面显示混乱的情况。如图6-2A图“故事传说”在3.5寸屏幕运行的界面效果;如图6-2B图所示,在4寸屏幕上运行的未适配的界面效果,底部图片出现上移的问题,严重影响界面的整体布局和用户感观。在适配了4寸屏幕的界面效果,如图6-2C图所示,界面美观程度明显的得到了提升。图6-2故事传说A图故事传说B图故事传说C图第39页共44页第39页共44页6.4.4内存泄露测试iOS在添加了线程后,可以像Java那样能够自动释放内存,但是因为我只是初学者,最好选择手动释放。在开发过程中,无论思考的多全面都会有可能造成内存的泄露。苹果为我们提供的Instrunment测试工具,能够方便地快捷地监测出程序中的内存泄露。在MAC的Spotlignt中输入Instrunment后,能够快速地打开Instrunment工具,其中Leaks就是我们用来检测内存泄露的工具,如图5-5所示。Instrunment用于动态跟踪与分析MacOSX、iPhone和iPad应用程序的性能。借助于Instrunment,可以:追查难以重现的代码中的问题程序性能分析自动化测试代码应用程序的压力测试部分执行一般的系统级故障诊断获得更深入的了解你的代码是如何工作的其中,程序性能分析非常重要。内存泄漏是程序性能的指标之一,是指当应用程序被分配(alloc、new和copy)一块内存,在程序块生命周期结束时,程序却没有释放这部分的内存,导致这部分内存不能被再次使用。如果这种情况存在很多,那么程序可用的内存就会变得越来越少,影响程序的运行以及用户的体验。图6-5Leaks进入Leaks选择需要跟踪的程序,点击“Record”按钮后,Leaks会自动启动对应的应用程序,并开始记录程序的运行状态。它会每10秒记录一下泄漏状态,当第40页共44页第40页共44页然这些都是可以更改的,还可以手动检查内存泄漏,如图5-6所示。图6-6程序运行状态根据以上的测试,我们可以发现应用程序潜在的绝大部分问题,使得整个程序出现问题的概率降低,从而大大提高程序的性能和用户使用的效果。第42页共44页第42页共44页结束语经过四个月,毕业设计终于完成。本次毕业设计全部都由本人设计与开发。本系统包括了三大部分:景区信息、天气信息和景区导航。景区信息介绍了景区的基本信息和附近的景区推荐,天气信息罗列了近几日的天气情况和出行指数,景区导航提供了景区的详细地图和手机地图导航功能。此次软件的开发,让我对手机应用的开发过程有了更多的了解,为将来工作和学习积累了宝贵的经验。我的日常工作是iPhone手机客户端的设计与开发,从来没有如此全面地参与到软件的策划、设计和测试等工作。这个毕业设计,是我对大学四年学习内容和培训的总结归纳。这次的毕业设计需要了解软件的整个策划和开发过程,在这期间遇到过很多的问题。但是,在老师和同学的大力帮助下,最终都解决了。自己顺利地完成整个毕业设计,是对我工作能力的一种提升,同时,自己也学到了一些怎样解决产生问题的方法和经验。此次毕业设计,不仅只是我对于大学四年所学知识的总结,也是自己正式步入社会前打的第一场战役。同时,我通过它培养了自己的独立思考、实践创新、团队协作能力,为以后的工作学习打下了有力的基础。
参考文献[1]徐成佳.第三届中国旅游产业发展年会嘉宾访谈[J].中国旅游报,2014,(01):29-007.[2]Stanford.DevelopingApplicationsforiOSFall2010.2010.9.[3]江凯生.面对第四代移动通信的思考[J].科技信息(科学教研).2007(29).[4]李明峰,冯宝红,刘三枝.GPS定位技术及其应用[M].北京:国防工业出版社,2006.2.[5]王云.IOS平台客户端应用开发规范化的研究[M].北京:北京邮电大学,2013.[6]郭宏志.iOS应用开发详解[M].北京:电子工业出版社,2013,7.[7]杨娟,颜彪,陈
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB32/T 4668-2024循环再利用聚酯纤维(PET)织物通用技术规范
- 城市交通流量预测:2025年智慧交通系统技术应用与出行服务报告
- 【课件】Unit+6+A+day+in+the+life++Section+A+2a-2e说课课件人教版(2024)七年级英语上册++
- 高速列车能耗管理系统企业制定与实施新质生产力项目商业计划书
- 学校校园消防安全与疏散措施
- 土地出让合同协议书范文
- 房地产行业购房者权益维护计划
- 地下停车场设施的加固措施
- 急诊科病历书写与审核流程
- 技工学校教务处技能培训计划
- 智能教育技术驱动的个性化学习路径优化研究
- 基层治理现代化视角下“枫桥经验”的实践路径与创新研究
- 通信光缆租用协议合同书
- 2024-2025部编版小学道德与法治一年级下册期末考试卷及答案(三套)
- 帝国的兴衰:修昔底德战争史学习通超星期末考试答案章节答案2024年
- 16J914-1 公用建筑卫生间
- 内痔并出血+外痔病历模板
- 学生社会劳动实践表
- TSG11-2020 锅炉安全技术规程
- 【45精品】新苏教版四年级音乐下册教案全册
- 测井工考试(高级)测井工题库(930题)
评论
0/150
提交评论