版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8/8基于IOS开发的手机旅游客户端-旅游管理论文
中图分类号:TN929文献标识码:A文章编号:1009-3044(2023)06-0223-04
时代在进步,科技在发展,手机的作用已经不仅仅是打电话,发短信,其担任的更重要的角色是人们信息的提供者,所以手机应用行业逐渐成为热门行业,现如今移动应用的开发产业充斥着人们的生活,现在主要的几大移动平台有如下几个:iOS平台、Android平台、mobileweb(WAP/XHTML/CSS/Javascript)。其中安卓(Android)具有开放性,多任务,画面流畅,硬件设备性能优良等优点,占据了智能机市场的绝大部分。但是安卓产品的兼容性较差,有些产品华而不实,用户体验较差。就目前而言,其他平台的市场占有率正在呈下降趋势,而近iOS产品的市场占有率正在上升。
随着苹果产品的不断更新,相应的各类应用的开发也越来越火爆。就目前而言,iOS在智能手机的应用软件中的下载量占了33%,另外,iOS平板电脑应用的下载量占据75%,所以,iOS的相关应用软件有着庞大的消费群体。由于iOS的应用够创意,够实用,用户群体庞大,iOS软件发展形势乐观,致使许多开发者投身其中。随着人们生活品质的提高,生活节奏的加快,更加注重诗句感官的效果。基于这种现状,开发一款旅游类的手机应用,为用户提供详细的出行信息,旅游信息的介绍,满足用户足不出户就可以右边全世界的需求是十分符合市场规律的。整个项目使用基于Foundation框架下得Objective-C?Z言编写的,使用基于UIKit框架下的UI设计搭建的用户界面来与用户交流,通过使用每个类之间的接口文件关联多个类,使用MapKit框架和CoreLocation框架下来实现地图定位功能,使用讯飞语音实现了语音录入功能,使用本地数据库SQLite存储用户信息以及收藏的景点信息,除此之外还使用Quartz框架,SystemConfiguration框架,CoreFoundation框架等辅助完成本项目。
本应用程序的设计目标是开发一款具有界面友好的,注重安全性的,用户体验良好的,易于扩展和维护的手机APP。
1界面设计
1)推荐界面。分为火热推荐以及趣季推荐两个部分。该界面整体是一个表视图,首页默认显示北京热门地点推荐,用户点击其他城市跳转到相应界面。界面要做到功能齐全,简介不冗余并且简单易于用户操作。
2)目的地界面。该界面是总体介绍世界各地的界面,分为国内城市、热门城市、港澳台、欧洲国家、亚洲国家以及美洲和大洋洲这几大模块,点击每个模块时候跳转到相应的详情介绍界面。
3)主题游界面。该界面整体是一个表视图,展示不同的游玩的主题,点击跳转到详细界面。
4)景点界面。首页默认显示三亚的相关景点列表,在此界面可以直接搜索想要去的景点,也可以选择想要去的城市并展示相应城市的景点列表。
5)我的界面。在此界面显示该项目的一些信息,可以在此界面登录注册、查看收藏信息,清除缓存等。
6)登录界面。登录时需要填写用户名和密码,与数据库中存储的用户信息进行匹配,保证了用户安全。
2系统模块
整个系统共分为5个打的模块:推荐模块、目的地模块、主题游模块、景点模块、我的模块。每个模块实现的功能介绍如下:
1)推荐模块。本模块要实现的功能是为用推荐几个热门城市的旅游地点以及户外的旅游信息,首页默认显示北京热门地点推荐,用户点击其他城市跳转到相应界面。在显示户外信息的界面用户可以根据自己的意愿选择想要查看的城市的户外信息。
2)目的地模块。界面中将世界分为几大模块,每一个模块中包括相应的城市,点击相应的城市之后机会跳转到该城市的景点列表界面,在此界面有地图定位功能,可以查看该景点的周边信息。
3)主题游模块。该模块为用户提供旅游的主题,每个主题中包含相应的景点信息。
4)景点模块。该模块是总体介绍世界各地的景点,可以根据自己的意愿进行搜索,搜索时有语音识别功能,说出想要查询的景点即可,方便用户使用。
5)我的界面。在此界面有登录注册功能,查看收藏信息功能,清除缓存等功能。
通过对项目进行功能需求分析,可以初步确定该项目所需的基本数据。各模块的具体数据需求如下:
1)推荐模块。该模块的数据持久化使用相对应的plist文件实现,此文件中共有8个字典,每一个字典存储一个热门城市的数据,其中url这一个键对应的值就是我们进行网络请求是的链接,同时也是该模块的数据来源。
2)目的地模块。该模块的数据持久化使用DestinationCityList.plist文件实现,此文件中共有8个字典,每一个字典存储一个小模块的数据,其中url这一个键对应的值就是我们进行网络请求时的链接,同时也是该模块的数据来源,由此得到相应模块的城市列表。在城市列表中点击得到的详情页数数据来源于一个公共链接,在此链接中有关数据的字段是我们点击的地点的名称,由此得到相对应的景点信息。3)主题游模块。
4)景点模块。该模块首页默认显示三亚的景点信息,每个城市都有自己对应的城市ID号,解析根据此ID得到的不同链接从而得到相应的数据,点击城市列表时根据一个城市列表的链接进行数据请求和数据解析得到城市列表的Model类,然后将其中的id属性通过代理回调回传给上个链接的城市id,从而获取不同城市的景点信息。
5)我的模块。使用SQLite本地数据库存储注册的用户信息,以及用户收藏的景点和目的地信息,用户查看时从数据库中调取相应数据。
应用程序致力于为用户提供详细的旅游信息,方便用户出行,围绕这一中心任务,该应用程序用户分为两种:注册用户和游客。
已经注册的用户在使用该应用程序时可以先进行登录操作,然后可以收藏目的地和景点信息,并对其进行修改。注册并已经登录的用户用例图如图1所示:
游客指的是还没有注册的用户,这些用户只能对本应用程序中的信息进行浏览不可以进行收藏操作,可以进行注册登录操作。游客用户用例图如图2所示:
3系统关键技术
3.1Objective-C语言
Objective-C,通常写作ObjC和Obj-C,是扩充C的面向对象编程语言。它主要使用于MacOSX和GNUstep这两个使用OpenStep标准的系统。Objective-c在运行时可以允许根据字符串名字来访问方法和类,还可以动态链接和添加类[1]。
3.2Foundation框架和UIKit框架
Objective-C中的Foundation框架与Java中的SDK类库相似,是框架的基础,与界面无关,它提供了许多基本的各种基本数据类型、集合、操作系统服务的对象的类,包含了大量的API。
UIKit框架提供一系列的class来建立和管理iOS应用程序的用户界面接口、应用程序对象、事件控制、绘图模型、窗口、视图和用于控制触摸屏的接口等,是基础的UI类库,与Foundation框架是Cocoa框架中的两个比较重要的框架[2]。
3.3SQLite数据库
SQLite是一款无数据类型的轻量级的嵌入式数据库,具备了基本数据库特性的数据库文件,与其他引擎响应式数据库不同的是SQLite是程序驱动。SQLite包含在一个相对小的C库中,SQLite引擎不是个程序与之通信额独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用[3]。
该项目共有5个模块:推荐模块、目的地模块、主题游模块、景点模块和我的模块。项目总体结构图如下图3所示:
3.4系统总体流程图
当用户作为游客即未注册用户使用本应用程序时,可以对APP的各个模块进行浏览,当要进行收藏操作时,就会跳到登录或注册界面,完成此项操作后方可进行收藏操作。具体流程图如下图4所示:
3.5APP的结构设计
3.6数据请求代码
本应用程序的数据均来自于网络数据,是通过数据链接直接从网上获取的,并非是提前在数据库中写好的固定的数据。网络请求使用GET方式进行请求,然后使用系统提供的JSON方式进行数据解析,主要代码如下:
-(void)setData{
if([_appinternetReachableOrNot]){
if(self.url==nil){
self.url=@"http:///index2.php?a=sList2&page=1&city_id=1001&type=2";
}
NSURL*urlSrting=[NSURLURLWithString:self.url];
self.allDataArray=[NSMutableArraynew];
for(NSDictionary*dictinmodelDict[@"result"]){
BJModel*bjModel=[BJModelnew];
[bjModelsetValuesForKeysWithDictionary:dict];
[self.allDataArrayaddObject:bjModel];
dispatch_async(dispatch_get_main_queue(),^{
[self.tableView.headerendRefreshing];
[self.indicatorstopAnimating];
[self.tableViewreloadData];
});
}
}];
[dataTaskresume];
}else{
[self.tableView.headerendRefreshing];
[selfalertController];
}
}
首先判?嗤?络是否连接,只有在有网的状态下才会进行数据请求,self.url就是用于数据请求的连接,进行数据请求的步骤是:创建URL对象――>根据URL创建请求对象――>获取当前会话(网络请求的主体内容)――>创建数据请求任务――>启动任务。在数据请求任务中有一个block块,在这里面进行数据解析操作。
需要注意的是block块语法在执行数据请求操作的时候是异步操作(不影响主线程的执行),也就是说程序在执行到block块的时候会同时执行block内部和外部的代码,如果此时在外部要使用block内部请求的数据,数据可能为空,解决这一问题的方法就是在完成数据解析操作之后使用dispatch_async(dispatch_get_main_queue(),^{})这一方法使程序回到主线程刷新数据,这样就可以正常运行了。3.7分享功能
分享使用的是友盟第三方分享,可以将本应用程序的内容分享到新浪微博、豆瓣、人人等交流平台。首先使用CocoPods导入友盟SDK,然后添加相应的依赖库,在需要分享的类中导入头文件#import以及#import,分享实现的主要代码如下:
NSString*shareString=[NSStringstringWithFormat:@"【%@,%@!】%@错落的时光里,纷繁的生活中,#时遗#带你体验简单的美好!",self.detailsModel.title,self.detailsModel.viceTitle,self.detailsModel.shareUrl];
[[UMSocialDatadefaultData].urlResourcesetResourceType:UMSocialUrlResourceTypeImageurl:self.detailsModel.iconUrl];
[UMSocialSnsServicepresentSnsIconSheetView:selfappKey:@"5732cc6b67e58ecfef0010be"shareText:shareStringshareImage:nilshareToSnsNames:[NSArrayarrayWithObjects:UMShareToSina,UMShareToRenren,UMShareToTencent,UMShareToDouban,nil]delegate:nil];
}
-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity*)response
{
if(response.responseCode==UMSResponseCodeSuccess)
{
NSLog(@"sharetosnsnameis%@",[[response.dataallKeys]objectAtIndex:0]);
}else{
NSLog(@"%d",response.responseCode);
}
提前设置好需要分享的内容,然后UMSociaSnsService调用presentSnsIconSheetView:appKey:shareText:shareImage:shareToSnsNames:方法将需要分享的文字、图片分享到各个平台。
3.8语音功能
本应用程序提供语音识别功能,需要使用CocoPods导入iflyMSC框架,然后在Appdelegate类中注册初始化语音通讯,在需要使用语音识别的类中导入头文件#import"iflyMSC/IFlyRecognizerViewDelegate.h"、#import"iflyMSC/IFlyRecognizerView.h"以及#import"iflyMSC/IFlySpeechConstant.h",然后需要遵循IFlyRecognizerViewDelegate协议,点击语音按钮之后会调用按钮的触发方法-(void)voiceAction:(UIButton*)button,开始语音识别,然后调用相应的协议方法-(void)onResult:(NSArray*)resultArrayisLast:(BOOL)isLast;获取所说的话并将其赋值给搜索文本框,主要实现代码如下:
-(void)voiceAction:(UIButton*)button{
[self.iflyRecognizerViewstart];
}
-(void)onResult:(NSArray*)resultArr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沈阳理工大学《笔译实践》2023-2024学年第一学期期末试卷
- 合同 假期规定
- 2024年高考地理一轮复习课时练3宇宙中的地球太阳对地球的影响和地球的圈层结构含解析中图版
- 2024工程施工合同管理的意义及工作要点
- 行星科学(天文学教程)
- 2024视讯服务系统合作经营合同模板
- 2024房地产开发全总包合同范例
- 2024车辆买卖合同样本
- 2024行车采购合同范本
- 深圳大学《运动技能学习与控制》2022-2023学年期末试卷
- 晕厥护理查房(与“晕厥”相关共28张)课件
- 某蔬菜大棚钢结构施工组织设计
- 企业管理基础完整版课件全套ppt最全电子教案整书教案教学设计教学教程
- 全国护士延续注册体检表-(正式)
- 矿山三违识别表
- 危房封条格式
- 智慧校园项目—数据大脑等平台建设方案
- 300mw汽轮机毕业设计论文
- 2022年甘肃省二级消防工程师《消防技术综合能力》考试题库及答案(含真题)
- 物资核销细则
- 小学语文1-6年级(上下册)词语表
评论
0/150
提交评论