基于LBS的iOS客户端应用之生活助手毕业论文设计.docx
- 文档编号:4327984
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:28
- 大小:825.15KB
基于LBS的iOS客户端应用之生活助手毕业论文设计.docx
《基于LBS的iOS客户端应用之生活助手毕业论文设计.docx》由会员分享,可在线阅读,更多相关《基于LBS的iOS客户端应用之生活助手毕业论文设计.docx(28页珍藏版)》请在冰豆网上搜索。
基于LBS的iOS客户端应用之生活助手毕业论文设计
优秀论文审核通过
未经允许切勿外传
SHANDONGUNIVERSITY OF TECHNOLOGY
毕业设计说明书
题目:
基于LBS的iOS客户端应用之生活助手的设计与实现
学院:
计算机科学与技术学院
专业:
计算机科学与技术
学生姓名:
指导教师:
毕业设计(论文)时间:
二O一二年四月至六月共十七周
摘要
随着近年来智能手机的爆炸性增长,LBS已经开始广泛被使用并在改变我们的生活:
下班后的朋友聚会,可以用大众点评网搜索附近500米内最好吃的餐馆;用Google地图寻找最快捷的路线和抵达方式;发一条新微博,顺手添上自己所在的位置;高德导航可以轻松取代车载GPS,指引下一个聚会地。
本论文主要围绕实现iOS设备的LBS进行相关详细的分析介绍。
最终实现附近、搜索、签到、优惠券、今日团购、排行榜、记录、城市信息、更多九大功能模块。
关键词:
智能手机、LBS、签到、分享。
ABSTRACT
Inrecentyears,withtherapidgrowthofsmartphones,theLBSwidelyusedandischangingourlives:
thegatheringoffriendsafterwork,youcanusethebestfoodrestaurantwithin500metersnearthepubliccommentnetworksearch;useGoogleMapstofindthemostefficientrouteandarrival;Postanewmicrobloggingandaddtheirlocationinit;caneasilyreplacethecarGPS,undertheguidanceofaparty.
ThisthesisismainlyaroundtheLBSiOSdevicestocarryoutadetailedanalysisofintroduction.Andultimatelytoachievenear,search,sign,coupons,buy,list,record,urban,moretheseninefunctionalmodules.
Keywords:
Smartphone、LBS、signin、share.
第一章引言
近几年,人们用移动设备接入互联网的时间显著上升,与此相伴,“LBS”(LocationBasedService),即基于用户当时位置的服务将会呈蒸蒸日上之势。
1.1课题的目的和意义
在维基百科上,对LBS的简短定义是“通过移动设备在移动网络中对于地理位置信息的定位所提供的一种信息与娱乐服务”。
一个关于LBS应用的著名段子是,老婆要求老公买下iPhone4后,每两小时都得通过签到网站签到一次这样一来,她就能知道他的全部行踪,可以预防出轨。
随着近年来智能手机的爆炸性增长,LBS已经开始广泛被使用并在改变我们的生活:
下班后的朋友聚会,可以用大众点评网搜索附近500米内最好吃的餐馆;用Google地图寻找最快捷的路线和抵达方式;在街旁网上签到分享自己和朋友大快朵颐的照片;发一条新微博,顺手添上自己所在的位置;高德导航可以轻松取代车载GPS,指引下一个聚会地。
在这个背景下,基于LBS的服务类应用如雨后春笋般得以大量涌现。
1.2移动互联网时代的新宠:
LBS应用
据中国互联网络信息中心(CNNIC)最新的统计报告(2011年7月),截至2011年6月底,中国手机网民规模为3.18亿。
手机网民在总体网民中的比例为65.5%,移动互联网时代已经全面到来。
那移动互联网究竟给我们带来了什么?
环顾一下四周,我们会不难发现,无论是在公交车还是在地铁,总有不少人低着头沉默不语,他们紧盯着自己手中的手机或平板,手中也没闲着,在不停的比划,凑近一看,他们要么在玩游戏,要么在上qq,要么在微博,要么在一些社交网站。
我们会发现,一旦有一点空闲的时间,我们就会拿出我们的手机来玩。
蹲厕所时,隔壁会传来小鸟撞击石头而发出的叫声;在电梯中,总会有朋友拿出手机或ipad登陆自己的某个客户端。
当我们通过登录自己的LBS客户端,在某些地方进行签到的时候,你会拿到你想要的徽章,通过这个徽章你会享受打折优惠;你也会看到有些疯狂的朋友为了一个徽章不择手段的采用虚假签到;这都是现实的生活,这就是移动互联网给人们生活带来的变革,通过智能终端上网,你不在被拘束在电脑前,只要身边有网络信号即可。
不过这其中似乎减少了人与人之间的交流,更多的是增加了人机之间的交互,把一些的交流也带入了虚拟的空间中。
如今的签到已经成为了现在移动互联网玩家的一个嗜好,通过签到你可以分享自己当前的状态,同时还能获得朋友当前的情况,在个人分享的时代中,签到成为了一个助推剂,让大家尽情的享受在彼此熟知的虚拟环境中。
1.3主要设计内容
(1)附近模块:
将附近的签约商户分门别类(如美食、酒店等)的进行展示。
(2)搜索模块:
该模块主要实现的功能是可以通过输入商户名、地址搜索特定商户和热门商区的展示。
(3)签到模块:
该模块主要实现的功能是签到商户、对商户进行评价、上传照片、关注。
(4)优惠券模块:
该模块的主要功能是显示正在进行的优惠商户信息。
(5)今日团购模块:
该模块主要实现的功能是展示团购信息、购买。
(6)排行榜模块:
该模块主要实现的功能是根据人气、评分等展示热门商户和最佳商户的排行。
(7)记录模块:
该模块收集展示收藏商户和浏览记录。
(8)城市信息模块:
该模块主要实现的功能是展示所选城市的生活信息如:
医院、银行、公安机关等等。
(9)更多模块:
该模块主要实现的功能是显示自己的账户信息。
第二章iOS、语言、环境以及所用技术介绍
iOS平台使用了构建MacOSX时积累的知识,iOS平台的许多工具和技术也源自MacOSX平台。
尽管它和MacOSX很类似,但是没有MacOSX开发经验也可以开发iOS程序。
iOSSDK提供了创建iOS应用程序所需要的环境和工具。
利用iOSSDK开发应用时所用的编程语言是Objective-C。
下面具体介绍一下iOS、语言、环境以及其他所用技术。
2.1iOS简介
iOS最初是设计在iPhone上的操作系统,苹果公司于2007年1月9日的Macworld大会上公布了这个系统,并命名为iPhoneOS,但随着此系统在iPodtouch、iPad以及AppleTV等苹果产品上的广泛应用,苹果公司于2010年6月7日WWDC大会上将其改名为IOS。
据Canalys的数据显示,截止到2011年11月,iOS占据了全球智能手机系统市场份额的30%,在美国的市场占有率更是达到了43%。
随着Andriod开源操作系统的异军突起以及WindowsPhone的发力,iOS市场份额正被一点点的蚕食,但是iOS设备的利润率高的惊人,以智能手机为例,iphone的利润额占到整个智能手机利润额的80%,受益于此,苹果的市值也达到了5000亿美元。
1.操作界面
iOS操作采用的是多点触控直接操作,控制方法包括滑动、轻触屏幕和图标及按键。
操作有:
滑动、轻按、缩小及放大。
此外,iOS移动设备中还内置了加速器,使得旋转iOS设备时,界面也可以得到旋转,这也使得iPhone等便携设备更便于使用。
自3GS开始,iphone装备有陀螺仪,这使得iphone有了重力感应,游戏效果更加的突出。
屏幕的下方是home键,点按回到主界面。
底部是dock,可安放四个使用者最经常使用的程序的图标。
屏幕最上方是状态栏,显示一些有关资讯:
如时间、电池电量和讯号强度等。
其余的屏幕用于显示当前的应用程序。
启动程序,只需点按该程序的图标,点按屏幕下方的home键即退出应用程序。
在iPhone3.0及后续版本中,及时应用程序退出,当第三方软件收到了新的讯息时,苹果公司的服务器将把这些通知推送至iPhone或iPodTouch上(不管它是否正在运行中)。
2.2Objective-C语言
Objective-C,也通常被写作ObjC,是一种扩充C的面向对象编程语言,主要用于MacOSX和GNUstep这两个使用OpenStep标准的系统。
Objective-C最开始并不支持垃圾回收,因为垃圾回收有漫长的“死亡时间”,会导致整个系统失去功用。
但自Xcode4.0开始,支持自动释放,也就是ARC(AutomaticReferenceCounting)机制,不需要用户手动去Release每一个对象,编译器会在编译期间自动帮你添加那些以前你经常写的[NSObjectrelease]。
Objective-C和C++有很多不同之处,Objective-C不支持运算符重载,也只允许对象单继承,但其引入的Categories和protocols可以提供很多多重继承的好处。
很多常见的编译时的性能优化方法都不能应用于Obj-C,比如内联函数。
2.3Xcode开发环境
Xcode是开发苹果应用程序的必备开发环境,自4.0开始,开发人员就可以利用Xcode开发基于iOS的iPad、iPhone、iPodTouch设备应用程序,只要你有MacOSXSnowLeopard10.6.2以上版本MacOS操作系统,便可安装iossdk,如果你有iOS设备,便可让Xcode把应用程序部署到你的iOS设备上。
另外,你还可以使用iPhone仿真器进行调试。
Xcode提供了友好而方便的应用程序开发环境,这样你就可以开发出好的iOS应用程序了。
Xcode支持多种语言,如:
C、C++、Objective-C、Java。
另外,Xcode的编译速度也极快。
Xcode还具有自由撤消的强大功能:
Xcode4具有虚拟模型和设计功能,这可以让你更轻松的开发和维护应用程序。
2.4SQLite数据库
iOS包含了SQLite数据库,它是一个简单的、轻量级的数据库,并宣布是“世界上部署的最广泛的数据库引擎”。
目前很多嵌入式产品都使用SQLite,SQLite占用资源非常的低,在嵌入式设备中,只需要几百K的内存就够了。
它支持WindowsLinuxUnix等主流的操作系统,比起Mysql、PostgreSQL这两款世界著名的开源数据库管理系统,它的处理速度都比他们快。
下面以具体实例的形式讲述创建SQLite的方法:
1.创建数据库命令:
sqlite3shopping.db
若shopping.db文件已存在,则打开数据库,若不存在,则创建它。
2.创建表格:
createtableshopping(keyintegerprimarykey,itemtext,pricedouble,groupidinteger,dateaddeddate);
3.插入数据:
insertinto“shppinglist”(item,price,groupid,dateadded)values(“iPhone3G”,“199”,1,DATETIME(‘NOW’))
4.查询:
select*fromshoppinglist
2.5JSON解析
JSON(JavascriptObjectNotation)是一种轻量级的,以文字为基础,且易于让人阅读。
尽管JSON是在Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。
JSON格式是1999年《JavaScriptProgrammingLanguage,StandardECMA-2623rdEdition》的子集合,所以可以在JavaScript以eval()函式(javascript通过eval()调用解释器)读入。
不过这并不代表JSON无法使用于其他语言,事实上几乎所有与网页开发相关的语言都有JSON函式库。
JSON用于描述数据结构,有以下形式存在:
1.对象(object):
一个对象以“{”开始,并以“}”结束。
一个对象包含一系列非排序的名称值对,每个名称值对之间使用“,”分割。
2.名称值对(collection):
名称和值之间使用“:
”隔开,一般的形式是:
{name:
value}一个名称是一个字符串;一个值可以是一个字符串,一个数值一个对象,一个布尔值,一个有序列表,或者一个null值。
3.值的有序列表(Array):
一个或者多个值用“,”分割后,使用“[”,“]”括起来就形成了这样的列表,形如:
[collection,collection]
4.字符串:
以""括起来的一串字符。
5.数值:
一系列0-9的数字组合,可以为负数或者小数。
还可以用“e”或者“E”表示为指数形式。
6.布尔值:
表示为true或者false。
第三章需求分析
LBS是由移动通信网络和卫星定位系统结合的一种增值业务,通过一组定位技术获得移动终端的位置信息,并提供给移动用户本人、他人及通信系统,实现相关信息服务的业务。
值得注意的是,单独的位置信息不再是最终的服务,它需要结合有效内容的服务才能称得上是完整的LBS。
因为传统意义上的导航服务作用是有限的,以导航为最终目的的服务往往只在用户处于相对陌生的环境时,才能满足用户需求。
3.1设计背景
随着近年来智能手机的爆炸性增长,LBS已经开始广泛被使用并在改变我们的生活:
下班后的朋友聚会,可以用大众点评网搜索附近500米内最好吃的餐馆;用Google地图寻找最快捷的路线和抵达方式;在街旁网上签到分享自己和朋友大快朵颐的照片;发一条新微博,顺手添上自己所在的位置;高德导航可以轻松取代车载GPS,指引下一个聚会地。
在这个背景下,基于LBS的服务类应用如雨后春笋般得以大量涌现。
LBS基本模式:
用户将信息上传到平台,进行信息管理与发布,根据需要决定开放的程度和内容,当用户需要开始基于位置的互动时,首先向平台开放定位搜索功能,并允许别人对自己进行定位。
最后,平台利用其定位功能对用户进行定位,并对用户指定区域进行定位搜索,同时向用户提供所在地区的相关服务信息。
用户根据反馈结果决定是否建立联系。
3.2总体设计
按照功能分成九大功能模块,如下表:
表3-5程序功能表
模块简述
功能描述
附近
根据用户的手机位置,将用户所在位置的附近的签约商户的信息,显示在手机上,用户可以根据自己的需求选择所需要的服务,分门别类(如美食、酒店等)的进行展示
搜索
可以根据用户需求搜索关键字,通过输入商户名、地址等信息搜索特定商户和热门商区的商户信息。
签到
用户享受到商家的服务后,可以在该页面对商户的服务或商品进行评价,评分,改评价可以为以后的用户提供参考、对商户进行评价、上传照片、关注,商家可以凭借用户的好评。
来提高自己的名声,吸引更多的消费者。
优惠券
显示正在进行的优惠商户信息,商家开始通过报纸杂志等传统平面媒体发布优惠券,并借此扩大自身品牌关注和知名度,就好比将派发的人扩大到了报纸所覆盖的区域,自然事半功倍。
排行榜
根据人气、评分等展示热门商户和最佳商户的排行
记录
收集展示收藏商户和浏览记录
城市信息
展示所选城市的生活信息如:
医院、银行、公安机关等等
更多
显示自己的账户信息
第四章详细设计与实现
根据需求分析,划分了九大功能模块,其中Neaby,ListInOrder,Coupons是本软件的特色及关键部分,具体功能如下所示:
4.1首页展示设计
下图4-1为首页界面,最上方用一个UIButton显示城市信息,程序运行时判断当前有无已选城市,第一次运行时判断无已选城市,会跳到城市选择界面(图4-2)。
向下紧接着是一个UISearchBar,触碰此searchBar会进入搜索界面。
下方显示红色图片的是UIScrollView,其上是九个UIButton,设置各button的背景图片即为所展现之场景,点击各个button会进入个相应界面。
图4-1首页视图
以下代码为通过数据库判断是否已选择城市:
-(void)viewDidAppear:
(BOOL)animated
{
MySqlite*mysql=[[MySqlitealloc]init];
if(flag>0)
{
flag--;
}
if([mysqlgetCity]==nil)
{
ChangeCity*city=[[ChangeCityalloc]init];
[self.navigationControllerpushViewController:
cityanimated:
YES];
[cityrelease];
}
else
{
NSString*cityString=[NSStringstringWithFormat:
@"SPTKDir.%@",[mysqlgetCity]];
UIButton*b=[UIButtonbuttonWithType:
UIButtonTypeCustom];
b.tag=13;
b.frame=CGRectMake(29,6,262,33);
[bsetTitle:
cityStringforState:
UIControlStateNormal];
[bsetImage:
[UIImageimageNamed:
@":
@selector(qwer:
)forControlEvents:
UIControlEventTouchUpInside];
b.titleLabel.font=[UIFontfontWithName:
@"Helvetica-Bold"size:
18];
self.navigationItem.titleView=b;
}
[mysqlrelease];
}
4.2附近模块设计
如下图4-2为附近界面,用一个UITableView列表显示信息。
在viewController中设置此tableView的delegate和dataSource为self。
在viewController声明文件中遵循UITableViewDelegate和UITableViewDataSource协议,在实现文件中实现UITableViewDelegate和UITableViewDataSource的相应方法:
主-(NSInteger)tableView:
(UITableView*)tableViewnumberOfRowsInSection:
(NSInteger)section,-(UITableViewCell*)tableView:
(UITableView*)tableViewcellForRowAtIndexPath:
(NSIndexPath*)indexPath。
图4-2附近界面
代码如下:
-(NSInteger)tableView:
(UITableView*)tableViewnumberOfRowsInSection:
(NSInteger)section
{
return[[ListDataobjectAtIndex:
0]count];
}
上面的方法中return的数据为一个section的行数。
-(UITableViewCell*)tableView:
(UITableView*)tableViewcellForRowAtIndexPath:
(NSIndexPath*)indexPath
{
staticNSString*CellIdentifier=@"Cell";
UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier:
CellIdentifier];
if(cell==nil)
{
cell=[[[UITableViewCellalloc]initWithStyle:
UITableViewCellStyleDefaultreuseIdentifier:
CellIdentifier]autorelease];
}
cell.textLabel.text=[[ListDataobjectAtIndex:
0]objectAtIndex:
indexPath.row];
cell.textLabel.font=[UIFontboldSystemFontOfSize:
14];
cell.imageView.image=[UIImageimageNamed:
[[ListDataobjectAtIndex:
1]objectAtIndex:
indexPath.row]];
cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;
returncell;
}
上面的方法中是实现cell的具体代码。
点击各cell时,调用-(void)tableView:
(UITableView*)tableViewdidSelectRowAtIndexPath:
(NSIndexPath*)indexPath;方法,进入相应界面代码如下:
-(void)tableView:
(UITableView*)tableViewdidSelectRowAtIndexPath:
(NSIndexPath*)indexPath
{
if(indexPath.row==0)
{
SearchCoupon*tabView=[[SearchCouponalloc]init];
TKSPAppDelegate*appDelegate=[[UIApplicationsharedApplication]delegate];
[appDelegate.navigationControllerpushViewController:
tabViewanimated:
YES];
[tabViewrelease];
}
elseif([[[ListDataobjectAtIndex:
0]objectAtIndex:
indexPath.row]isEqualToString:
@"Moreclassification"])
{
MoreCategoriesTable*nextView=[[MoreCategoriesTablealloc]init];
nextView.title=@"Moreclassification";
[self.navigationControllerpushViewController:
nextViewanimated:
YES];
[nextViewrelease];
}
else
{
NearbyOther*nextView=[[NearbyOtheralloc]init];
nextView.flag=0;
nextView.lat=lats;
nextView.lon=lo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 LBS iOS 客户端 应用 生活 助手 毕业论文 设计