资源描述
********学院毕业设计说明书(论文)
基于IOS的景点手机导游客户端
摘要:现在随着社会的发展,旅游越来越被人们所欢迎和喜欢。现在的旅游方式除了跟随旅游团旅游外,更多市民选择一人或者几人结伴出游。随着移动互联网的迅速发展,几乎人人都配有移动通信终端。网络进入了千家万户,单独出游的旅客在没有导游的情况下,或许就错过了游玩地点的精彩内容,或许会因为景区过大而迷失方向。那么地方景点手机导游客户端也就有了存在的必要。
本软件将旅游信息与iOS系统相结合,设计了一种基于iOS系统的景区智能旅游手机软件。本系统以Xcode为开发环境,设计景区旅游软件,实现景区相关信息介绍、电子地图导航和天气查询等功能。在景区信息模块下根据景区官网提供的信息经过动态处理和排版设计,完成景区信息和图片浏览功能。在天气模块下,使用天气Web接口,完成查询当地近七日天气情况功能和当天生活指数功能。在景区攻略模块下,使用iPhone手机自带的GPS定位系统以及腾讯地图API和google地图Web接口完成用户地图定位和导航功能等等。
系统测试结果表现,本系统实现了景区信息提供、电子地图导航、天气信息提供等等功能,并且界面友好、美观,操作简单,具有良好的维护性和可扩展性,适用于iOS6及以上。
关键词:GPS定位,腾讯地图API,iOS系统,Objective-C语言
目录
序言 1
第1章绪论 2
1.1选题背景及意义 2
1.1.1旅游业发展以及现状 2
1.1.2旅游网 3
1.1.3手机移动互联网 3
1.2开发目标 4
第2章开发工具与技术介绍 6
2.1iOS系统和SDK 6
2.2开发工具Xcode 7
2.3Objective-C语言 8
2.4iOS定位系统 8
2.5地图API和Google地图导航 9
2.5.1.腾讯地图API 9
2.5.2Google地图导航 9
第3章业务需求分析与系统架构设计 11
3.1技术可行性 11
3.2需求分析 11
3.3.1系统用例 11
3.3业务描述 13
3.3.1景区介绍业务 13
3.3.2天气相关业务 14
3.3.3游玩相关业务 14
3.3.4各个类的定义 15
3.4系统流程图 16
第4章系统概要设计 18
4.1总体设计 18
4.1.1软件系统整体规划 18
4.1.2软件系统总体模块图 18
4.2数据类设计 19
4.2.1概念结构设计 19
4.2.2逻辑结构设计 19
第5章系统详细设计与实现 24
5.1天气情况模块 25
5.2景区业务之景区介绍 26
5.2.1景区业务子模块之景区文化 27
5.2.2景区业务子模块之景区历史 28
5.2.3景区业务子模块之地方特产 29
5.2.4景区业务子模块之名人踪迹 29
5.2.5景区业务子模块之故事传说和周边景点 30
5.3景区攻略(地图导航) 30
5.3.1景区攻略模块之“行” 31
5.3.2景区攻略模块之“吃”“住” 32
5.3.3景区攻略模块之“娱” 33
5.3.4景区攻略模块之“购” 34
5.3.5景区攻略模块之“拍” 35
第6章系统测试 36
6.1运行环境 36
6.2测试原则 36
6.3测试方法 36
6.4测试计划 37
6.4.1黑盒测试 37
6.4.2手机系统版本兼容性测试 38
6.4.3iPhone手机屏幕适配测试 38
6.4.4内存泄露测试 39
结束语 41
参考文献 42
致谢 44
序言
近几年来,随着经济的飞速发展,大众对于精神生活的要求也越来越高,旅游已经成为大众休闲放松的最佳选择之一。
现在旅游业对信息的依赖性逐渐变大,信息的获取和传播对整个旅游业十分重要。信息的数字化给信息传递带来了便利,网络信息大爆炸,包罗万象。节假日准备出去旅游,但又不知道去哪里,哪里比较合适,于是景区的官网应时而生。在电脑上查阅景区相关信息,天气以及出行时间行程。但伴随着移动互联网的兴起,移动通信改变了人们的生活。越来越多的人使用手机上网,随时随地查找信息。现在的景区官网大多对应电脑网站,用手机打开相应网站时,速度慢,耗网速。这个缺点让所有手机用户大为困扰,因此手机导游是必需的。但是基于iOS系统的手机导游并不常见,所以我选择这个作为课题,进行开发设计。
在需求调研分析中,为了能够适iPhone手机特点的情况下,在景区信息模块对相关内容的布局和动态交互进行了处理,让其能为用户提供最详细的景区信息。天气模块的相关信息则通过Web接口从网络获取,然后转换为适应的手机界面并显示。电子地图中的周边商店提供依赖于腾讯地图API中的周边POI信息搜索接口,调用接口获取相关信息处理并显示在手机屏幕上;动态地图导航的实现依赖于GPS手机定位和google地图Web接口。
此毕业设计说明书(论文)其余部分分为六章,主要针对景区iOS手机导游软件的设计与实现展开全面的论述。其中,第1章绪论,介绍了系统开发的背景意义、目标和相关知识;第2章开发工具与技术介绍;第3章业务需要分析与系统架构设计,对软件的需求进行描述;第4章系统概要设计,着重对软件各个功能模块和软件的总体结构设计过程进行了阐述;第5章系统详细设计与实现,详细介绍界面的构建、程序的设计和实现的过程;第6章系统测试。
第 1 页 共 44 页
第1章绪论
1.1 选题背景及意义
1.1.1旅游业发展以及现状
旅游是人们为了休闲、娱乐、探亲访友或者商务目的而进行的定居性旅行和在浏览过程中所发生的一切关系和现象的总和。
随着生活水平的提高,越来越多的人喜欢在节假日出行游玩,这带动了旅游业的发展。据2014年1月29日第007版中国旅游报所报道的第三届中国旅游产业发展年会嘉宾访谈,刘平春表示,在经济转型的大背景下,中国旅游业正处在一个快速发展期。刚刚过去的2013年,旅游行业发展最大的特点是资本进入旅游业的热情空前高涨。刘平春认为,2014年对旅游行业是一个重要的年份,在十八届三中全会之后,经济转型升级,旅游行业的规模将得到进一步扩展[1]。
表1-2全国旅游业总收入
第 2 页 共 44 页
1.1.2旅游网
随着因物网的发展,计算机技术的不断成熟,旅游网站纷纷落户,促进旅游这个行业大力发展。“吃、住、行、游、购、娱”,这六个字这中国旅游业发展的根本,而旅游网基本提供了这些信息。
中国的旅游网在1996年就开始出现。旅游是大众趋势,互联网已经成为最大的传媒之一,因此旅游网发展速度非常快,每年都有成千上万家旅游网出现,截至2012年底具有一定旅游资讯能力的旅游网有5000多家,其中专业旅游网300余家[2]。
旅游网对于旅客来说,是为了提供旅游信息给旅客,旅客可以通过搜索得知旅行社-旅游路线-旅游价格等相关旅游信息。因为旅游景点的不同,还可以获取景点相关的基础设施信息和安全知识等等,有些还会提供景点的特色。现代人类的生活变化,传统的旅游已经不能满足人们的需要。越来越多的人选择自助旅行,或者组团出行的驴友也越来越多。旅客获取景点的相关信息,从旅游网了解是主要信息来源之一[2]。
2012年左右自助游基本进入成熟期,无论是选择传统的随团旅游或者自助旅游,总有照顾不到的地方,旅游公司和攻略总有不足之处。旅客在不经意间也许就错过了景区特色,而抱憾离开。
1.1.3手机移动互联网
移动互联网,就是将移动通信和互联网二者结合起来,成为一体[2]。
移动互联网(MobileInternet,简称MI)是一种通过智能移动终端,受用移动无线通信方式获取业务和服务的新兴业态,包含终端、软件和应用三个层面。终端层包括智能手机、平板电脑、电子书、MID等;软件包括操作系统、中间件、数据库和安全软件等。应用层包括休闲娱乐类、工具媒体类、商务财经类等不同应用与服务。随着技术和产业的发展,LTE(长期演进,4G通信技术标准之一)和NFC(近场通信,移动支付的支撑技术)等网络传输层关键技术也将被纳入移动互联网的范畴之内[2]。
随着宽带无线接入技术和移动终端技术的飞速发展,随时随地乃至在移动过
第 3 页 共 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。
最后本文根据软件工程的开发流程,对系统的功能需求和业务流程等等进行
第 4 页 共 44 页
了需求分析,并根据需求划分了软件系统的功能模块,对各个功能模块施行设计与实现。
现在很多的旅游网站适应的是电脑屏幕,用手机打开时需要足够的网速和流量,不符合我们中国大众的消费心理,所以手机版的景区导游势在必行。所以我用苹果专用语言Objective-C编写,设计了这款基于iOS系统的景区手机导航客户端。本软件实现了在iPhone手机上了解景区相关信息,获取无锡近七日的天气情况,以及景区用户定位与景点导航指路。
第 5 页 共 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的授权。同时,开
第6 页 共 44 页
发商在散发布已经由GPLv3授权的应用软件的同时必须提供由苹果公司提供的密匙以允许该软件修改版本的上载[2]。
2.2开发工具Xcode
Xcode是一个用来开发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]。
第7页 共 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的动态性来自三个方面:
1. 动态类型
可以在程序运行时判断对象的类型。
2. 动态绑定
在程序不在编译时判断需要调用什么方法,而是在运行时判断。和其他面向对象的语言一样,只有在消息发出时,方法调用和代码才真正的联结在一起。
3. 动态载入
可以在程序运行时添加代码模块以及其他资源,让应用可以根据需要加载一系列可以执行的代码和资源,不是在启动时就加载所有组件,提交程序性能。
2.4iOS定位系统
iOSSDK中提供了两个框架来实现GPS位置服务,这两个框架分别是CoreLocation.framework和MapKit.framwork。其中CoreLocation.framework主要
第8页 共 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。它允许开发者在不
第9页 共 44 页
必建立自己的地图服务器的情况下,将GoogleMaps地图数据嵌入到网站之中,从而实现嵌入GoogleMaps的地图服务器应用,并借助GoogleMaps的地图数据为用户提供位置服务[2]。
Google在电子地图方面优势最成熟,所以在路线导航部分我选用的Google地图导航。通过输入起始点位置的GPS和终点位置的GPS,能够快速地在界面的谷歌地图上画出到达指定地点的路线轨迹。
第 10 页 共 44 页
第3章业务需求分析与系统架构设计
3.1技术可行性
本软件系统主要涉及到Objective-C语言[11]、网络接口数据的上传与下载分析、Xcode软件等。
(1) Objective-C语言:Objective-C语言是在C的基础上,加入面向对象特性扩充而成的编程语言。目前,Objective-C主要应用于MacOSX和iOS这两个NeXTSTEP的衍生系统。Objective-C是iOS的开发语言。
(2) 网络接口数据的上传与下载分析:主要是利用JSON(JavaScriptObjectNotation),JSON简单说就是javascript中的对象和数组,通过这两种结构就可以表示各种复杂的结构。
①对象:对象在js中表示为“{}”扩起来的内容。
②数组:数组在js中是中括号“[]”扩起来的内容。
经过对象、数组2种结构就可以组合成复杂的数据结构了。
(3)Xcode软件:Xcode是Apple开发工具套件中的一个,是Apple工具套件的中心,它提供了基本的源代码开发环境,是一个集成开发环境IDE,它能够创建和管理开发iPhone项目的所有源代码,运行调试源代码,并编译源代码为可执行文件。
所以软件的实现在技术上可行的。
3.2需求分析
3.3.1系统用例
相较于手机应用来说,系统涉及到有角色永远只有用户这一种。如图3-1所示,系统用例图包括景区信息模块、天气信息模块、景区攻略(即游玩导航)三个主要部分。
第 11 页 共 44 页
3-1系统用例图
景区信息用例对应业务需求描述中景区信息相关介绍。用户能够根据自己的兴趣选择了解本系统提供的景区相关信息。
天气信息用例对应业务需求描述中的天气查询功能。用户可以通过连接网络得到未来几天内的天气信息,以及当天的天气生活指数。
3-2景区概况和天气情况用例图
第 12 页 共 44 页
景区攻略用例对应业务需求描述中的地图导航功能。用户可以通过导航到达系统所提供的景区景点以及景点的部分相关信息。
3-3景区攻略用例图
3.3业务描述
作为一个景区手机导游客户端,主要就是为旅客景区的各种信息。我以风景区作为试点,所以提供景区的各种信息。是横卧在太湖西北岸的一个半岛,的风光山清水秀,浑然天成,是太湖风景的精华所在,素有“太湖第一名胜”的称号。2012年10月26日,晋升为国家5A级风景区。该手机软件提供景区的相关分为三大模块:景点信息,天气信息,地图信息。
3.3.1景区介绍业务
这部分的信息资源来自官网提供,我通过界面处理和动态交互介绍景区文化、历史渊源、地方特产、名人踪迹、故事传说、周边景点这几个部分。
(1)景区文化:这部分主要对景区的介绍,名人王昆仑的介绍,
第 13 页 共 44 页
还有部分书画的展示。向旅客展示最具文化特色的两部分,并且对有个大致了解。
(2)历史渊源:这部分描述了景区的形成历史,以及相关的文化背景,提供了旅游咨询热线电话。旅客如果需要对软件提供的信息希望有更详尽的了解可以选择拨打旅游咨询热线电话,软件会帮你自动帮你接通电话咨询。
(3)地方特产:这部分为前来游玩的游客提供无锡的地方特产和地方美食,方便游客选择购买特产。通过自定义的列表,模拟JavaScript网页动态交互点击后显示每个单元格的更多内容。
(4)名人踪迹:这部分为一个照片展示区,主要展示前来观光旅游的名人和部分旅客的景区留念合影。通过一个照片播放器,播放预设的照片,支持后退和前进。
(5)故事传说:这部分提供了六个关于的故事传说,分别是无锡旅情石碑的由来;什么是“鼋”;太湖的形成;的三山传说;三宝的由来;以及月老祠月下老人的传说。
(6)周边景点:这部分介绍了附近的景点,比如蠡园、梅园、锡惠公园、三国水浒城、灵山胜境,提供相关的文字介绍和景点图片欣赏。
3.3.2天气相关业务
本模块利用2345天气王的web接口提供最近几日的天气情况和当天的生活指数,出行指数。
3.3.3游玩相关业务
本模块主要提供景区地图,GPS定位和目的地导航功能。
(1)行:本部分提供景区浏览路线推荐,公共设施分布,景区地图。旅客可以在这里了解到景区所拥有的全部公共设施,还有景区的简化地图和详细地图。
(2)住和吃:景区美食,景区内用餐地点的环境和位置,酒店,住宿点位置,提供景区的餐饮地点与住宿位置和游客位置的导航。这里提供景区的用餐地点和茶馆,使用云标签拟态,用户可以选择自己想去的地点点击就会进入地图导航,显示用户地点到目标地点的步行路线。
第 14 页 共 44 页
(3)娱:景区的门票介绍,快艇服务,观光车,游艇服务等等项目介绍,以及相关特色游推荐。旅客可以在这里看到景区所提供的全部娱乐项目。
(4)购:提供景区附近的所有商店和超市的坐标点,旅客可以选择自己感兴趣的商店进行定位导航。这边通过腾讯地图POI搜索出景区周边所有可以购物的地点,显示在在列表里。旅客可以选择自己想去的商店,点击后进入地图导航显示用户到目标商店的步行路线。
(5)拍:推荐景区各种合适摄影留念的地点,以及景点导航。旅客可以通过点击自己感兴趣的景色,在显示的电子地图上画出用户到可以看到相应景色的景点步行路线。
3.3.4各个类的定义
综合软件系统的需要,我定义了如下数据类的分析。图3-8为整体自定义类图shootClass(地方特产信息类),aroundSecClass(周边景点信息类),CloudButton(吃/住云标签按钮类),poiClass(吃/住/购/拍的兴趣点类),QPoiData(Poi搜索数据类),QPoiInfo(Poi搜索结果信息类)。
图3-8整体自定义类图
第 15 页 共 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接口信息,并显示,网络连接失败,则不显示天气信息。点击景区介绍,会出现一个下拉菜单,点击菜单选项就可以进入相应的小模块。点击地图导航也会出现一个下拉菜单,点击吃、住、购、拍,
第 16 页 共 44 页
会连接地API请求信息,比如吃,进入这个选项后,会进入个类似标签云的选择界面,点击标签会进入地图,地图上会画出用户当前位置到达目标地点的路线。如果网络连接失败,则跳出提示,并不显示地图。
图3-4软件系统活动图
第 17 页 共 44 页
第4章系统概要设计
4.1总体设计
系统总体设计是指手机软件在逻辑上实现的功能,用户可以通过iPhone手机随时随地的查看风景区的相关介绍,天气情况,以及景区的设施地图等等。为了实现这些功能,手机必须开启定位功能,并保证网络的连接,以便随时请求天气数据,地图数据与你的当前位置。通过参考景区的官方网站,体现移动互联的特性,完成最终的设计目标。
4.1.1软件系统整体规划
软件是由天气情况、景区介绍、景区攻略也就地图导航三大模块组成。
景区介绍又分成景区文化,历史渊源,地方特产,名人踪迹,故事传说,周边景点。
景区攻略又分成行、吃、住、娱、购、拍。
4.1.2软件系统总体模块图
软件系统总体模块图,如图4-1。
图4-1软件系统总体模块图
第 18 页 共 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,特产名称,特产介绍,特产图片);
第 19 页 共 44 页
表4-1地方特产类表:shootClass
字段名
字段类型
是否主键
是否非空
是否自增
字段描述
dataID
NSString
是
是
否
特产ID
nameStr
NSString
否
是
否
特产名称
dataStr
NSString
否
是
否
特产介绍
imageNum
UIImage
否
是
否
特产图片
图4-5为地方特产的单独类图,操作addDataAction()是这个类的加载操作。
图4-5地方特产类图
周边景点(景点ID,景点名称,景点简介,景点图片数组);
表4-2周边景点类表:aroundSecClass
字段名
字段类型
是否主键
是否非空
是否自增
字段描述
secID
NSString
是
是
否
景点ID
secName
NSString
否
是
否
景点名称
secData
NSString
否
是
否
景点简介
secImageList
NSMutableArray
否
是
否
景点图片数组
吃/住云标签(云标签ID,按钮顶点坐标,按钮左坐标,按钮右坐标);
表4-3吃/住云标签类表:CloudButton
字段名
字段类型
是否主键
是否非空
是否自增
字段描述
bottom
CGFloat
是
是
否
云标签ID
top
CGFloat
否
是
否
按钮顶点坐标
left
CGFloat
否
是
否
按钮左坐标
right
CGFloat
否
是
否
按钮右坐标
下图是说明的故事传说/周边景点与云标签类之间的关系图。CloudButton类
第 20 页 共 44 页
图中的操作animationUpdate()代表的是动态坐标数据的更新操作;操作LimitSpeedbettowinMINandMAX()代表的云标签运动超出屏幕边界进的操作;操作touchesBegan()代表云标签发生移动前进行的操作;操作touchesMoved()代表云标签发生移动进进行的操作;操作touchesEnded()代表云标签发生移动结束后进行的操作。
图4-6故事传说/周边景点与云标签类之间的关系图
吃(地点ID,用户位置经度,用户位置纬度,地点名称,地点位置经度,地点位置纬度)。
表4-3吃类表:poiClass
字段名
字段类型
是否主键
是否非空
是否自增
字段描述
addressID
NSString
是
是
否
地点ID
userLng
float
否
是
否
用户经度
userLat
float
否
是
否
用户纬度
addName
NSString
否
是
否
地点名称
addLng
float
否
是
否
地点经度
addLat
float
否
是
否
地点纬度
腾讯地图中的相关类
POI数据(本次POI搜索的总结果数,当前页的POI结果数,本次POI搜索的总页数,当前页的索引,POI数据信息列表);
表4-4POI数据类表:QPoiData
字段名
字段类型
是否主键
是否非空
是否自增
字段描述
totalPoiNum
NSInteger
是
是
否
POI总结果数
curPoiNum
NSInteger
否
是
否
POI当前页结果数
第 21 页 共 44 页
pageNum
NSInteger
否
是
否
POI本次搜索总页数
pageIndex
NSInteger
否
是
否
当前页的索引
poiInfoList
NSArray
否
是
否
POI列表
POI数据信息(POI的类型,POI的UID,POI的名称,POI的详细地址,POI的电话,POI的分类,POI的详细描述,POI的地理坐标)。
表4-5POI数据信息类表:QPoiInfo
字段名
字段类型
是否主键
是否非空
是否自增
字段描述
type
QPoiTye
是
是
否
POI的类型
uid
NSString
否
是
否
POI的UID
name
NSString
否
是
否
POI的名称
address
NSString
否
是
否
POI的详细地址
phone
NSString
否
是
否
POI的电话
classes
NSString
否
是
否
POI的分类
poiInfo
NSString
否
是
否
POI的详细描述
coordinate
CLLocationCoordinate2D
否
是
否
POI的地理坐标
下图是景区攻略中的子类与POI搜索数据类和POI搜索信息类的类关系图。
图4-7POI数据类相关类
下图为整体的类关系图。shootClass地方特产类属于单独的一个类,与其他类没有关系。aroundSecClass与CloudButton是一对一的类关系,一个云标签对
第 22 页 共 44 页
应一
展开阅读全文