基于IOS平台美食应用软件毕业设计.docx
《基于IOS平台美食应用软件毕业设计.docx》由会员分享,可在线阅读,更多相关《基于IOS平台美食应用软件毕业设计.docx(46页珍藏版)》请在冰点文库上搜索。
基于IOS平台美食应用软件毕业设计
摘要
随着计算机网络通信技术和Internet的飞速发展,基于因特网的手机移动应用已经开始成为一种全新的功能需求,并且越来越受到人们的关注。
由于移动应用具有简单性,随时随地性等诸多特点,因此它有着传统计算机所无法比拟的优点。
这样一来,手机移动应用的开发工作就显得尤为重要。
并且随着生活水平的提高,人们对于吃的要求也是越来越高,所以一款关于美食应用软件的开发也会符合人们的需求。
本文主要介绍了iOS平台以及基于该平台的美食教程应用软件的开发过程,详尽论述了从需求分析、系统分析、概要设计、详细设计、以及测试与调试的整个开发过程,总结了开发过程中的经验及本系统今后的改进方向。
Xcode5.0开发工具,采用成熟的软件研制技术,后台数据库采用SQLite3。
关键字:
iOS开发美食应用软件XcodeSQLite3
Abstract
WiththerapiddevelopmentofcomputernetworkcommunicationtechnologyandInternet,mobileapplicationbasedonInternethasbeguntobecomeakindofnewfunctionalrequirements,andmoreandmoregettheattentionofpeople.Becausethemobileapplicationshassimplicity,sexanytimeandanywhere,andmanyotherfeatures,soithastheadvantagesoftraditionalcomputer.Asaresult,mobileapplicationdevelopmentworkisparticularlyimportant.Andwiththeimprovementoflivingstandards,peoplealsomoreandmorehightotherequirementofeating,soaaboutfoodapplicationsoftwaredevelopmentalsowillmeetthedemandofpeople.
IOSismainlyintroducedinthispaper,andbasedontheplatformoffoodtutorialapplicationsoftwaredevelopmentprocess,detaileddiscussedfromtherequirementanalysis,systemanalysis,generaldesign,detaileddesign,andtestinganddebuggingofthewholedevelopmentprocess,summeduptheexperienceintheprocessofdevelopmentandtheimprovementdirectionofthesysteminthefuture.Xcode5.0developmenttools,USESthematuresoftwaredevelopmenttechnology,backgrounddatabaseusingSQLite3.
KeyWords:
IOSDevelopFoodapplicationsXcodeSQLite3。
1引言
1.1掌厨应用的意义
一款美食教程应用软件,精选万道家常菜高清“同步视频”,轻松一点,即可随意浏览,拥有上万道家常菜、上万个同步视频,如此卓越不凡,将全面颠覆您对美食软件的认识。
规模较大,菜谱数量近万道,同步视频数量近万个,视频品质好,清晰度、流畅度好,为您带来极致的视觉体验。
在掌厨客户端,你可以体会到:
万道美食任您选,展示高清菜谱图片,无限滑动带来无限惊喜。
万个同步视频边看边做,每道家常菜都配有“材料准备”与“制作过程”两段视频,两段视频与现实烹饪完全同步。
提供多种检索方式,包含智能选菜、菜系搜索、口味搜索等47种快速搜索功能,还有随机的摇一摇选菜功能……无论您带着哪种目的搜索,都会有所收获。
点击轻松注册,万道美食任您收藏。
点击“我的”实现注册,注册成功,点击每道菜上的红心按钮即可实现收藏,菜例即归入收藏夹,以后便可随查随看。
1.2IOS开发的研究现状
世界在发展,社会在进步,在信息化时代的今天,人们对于手机有了进一步的了解与应用。
随着科技的发展,智能手机已经成为了今天手机市场的主流产品,现在大部分的人都在用智能手机。
智能手机的发展势不可挡。
现在常用的智能手机系统有:
苹果ios智能系统、安卓智能系统、塞班智能系统、软智能手机系统、黑莓智能系统等等。
毫无疑问,手机的智能化是手机的一场革命。
互联网应用的发展和3G网络的成熟,3G智能手机成为最重要的终端载体,吸引了越来越多消费者利用智能手机网上冲浪、收发电子邮件、看电影、打游戏、视频对话等。
智能手机让人们的生活变得越来越便捷,这就使得智能手机成为了消费者追捧的对象。
现在,消费者已经可以用具有支付、认证功能的手机来购买车票和电影票、打开大门、借书、充当会员卡,可以实现移动通信与金融服务的完美结合以及有线通信和无线通信的无缝过渡,让消费者享受到方便安全的金融生活服务。
其次,手机搜索将超过计算机搜索。
再次,手机内容共享。
手机图片、音频、视频共享被认为是3G手机业务的重要应用。
中国拥有者世界上最大规模的潜在移动互联网市场,而且由于文化等原因,中国移动互联网市场有着自身较为特殊的需求。
这使得生硬地照搬国外作品不一定能在国内有较好的反响。
实际上,如果国内企业能针对国内需开发软件,或者对借鉴来的国外经验加以调整,反而能达到更好的经济效益。
例如"酒店达人"软件对于国内宾馆移动预定业务进行针对性的开发运作,在短时间内就开始了盈利。
苹果ios系统作为高端机的智能系统截止至2011年11月,根据Canalys的数据显示,iOS已经占据了全球智能手机系统市场份额的30%,在美国的市场占有率为43%,并在逐渐的增加总之,在移动互联网时代,传统的信息产业运作模式正在被打破,新的运作模式正在形成。
对于手机厂商、互联网公司、消费电子公司和网络运营商来说,这既是机遇,也是挑战,他们积极参与到移动互联网市场的市场竞争中。
2
技术基础
移动app顾名思义就是手机软件app,也叫移动终端,手机客户终端,移动软件,手机应用软件等,属于移动设备上面运行的一款终端软件。
在移动互联网风生水起的时代,移动app已经越来越深入人心,app应用开发市场突飞猛进,成为了移动互联网的主流。
掌厨是基于app的开发理论基础而实现的,首先是基于移动终端上的随身性,互动性通过新技术以及数据分析,实现了精准定位企业目标用户。
其次软件开发是一个复杂的过程,软件过程可以通过软件过程模型来表示。
概念模式是非常重要的,它是指人们在认识事物的过程中,对于某一事物或者系统形成的抽象的一般化的框架,是在人们长期的实践活动中实现的,概念模式简单明了,易于理解。
概念模式具有相对性,面对不同的用途会有不同形式的概念模型,各有各的用处。
软件开发中有常见的其中概念模式,结构图,数据流程图,实体关系图等等,这些概念模式都是为了实现软件的易于理解性。
iOS简介:
iOS最初是设计在iPhone上的操作系统,苹果公司于2007年1月9日的Macworld大会上公布了这个系统,并命名为iPhone OS,但随着此系统在iPod touch、iPad以及Apple TV等苹果产品上的广泛应用,苹果公司于2010年6月7日WWDC大会上将其改名为IOS。
据Canalys的数据显示, 截止到2011年11月,iOS占据了全球智能手机系统市场份额的30%,在美国的市场占有率更是达到了43%。
随着Andriod开源操作系统的异军突起以及Windows Phone的发力,iOS市场份额正被一点点的蚕食,但是iOS设备的利润率高的惊人,以智能手机为例,iphone的利润额占到整个智能手机利润额的80%,受益于此,苹果的市值也达到了5000亿美元。
Objective-c简介:
Objective-C是非常“实际”的语言。
它使用一个用C写成的运行库,只会令应用程序的大小增加很小。
Objective-C写成的程序通常不会比其源代码大很多。
而其函数库(通常附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。
Objective-C的最初版本并不支持垃圾回收。
在当时这是争论的焦点之一,很多人考虑到Smalltalk回收时有漫长的“死亡时间”,令整个系统失去功用。
Objective-C为避免此问题才不拥有这个功能。
虽然某些第三方版本已经加入这个功能(尤其是GNUstep),再起Mac OS X 10.3中仍未引入这个功能。
不过令人欣慰的是在Apple发布的XCode4中已经支持自动释放,在xCode4中的自动释放,也就是ARC(Automatic Reference Counting)机制,是不需要用户手动去Release一个对象,而是在编译期间,编译器会自动帮你添加那些以前你经常写的[NSObject release]。
另一个问题是ObjC不包括命名空间机制(namespace mechanism)。
取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。
在2004年,在Cocoa编程环境中,所有Mac OS X类别和函式均有“NS”作为前缀,例如NSObject或NSButton来清楚分别它们属于Mac OS X核心;使用“NS”是由于这些类别的名称在NeXTSTEP开发时定下。
虽然Objective-C是C的母集,但它也不视C的基本型别为第一级的对象。
和C++不同,Objective-C不支援运算子多载(它不支持ad-hoc多型)。
亦与C++不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。
Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。
由于Obj-C使用动态运行时类型,而且所有的方法都是函数调用(有时甚至连系统调用(syscalls)也如此),很多常见的编译时性能优化方法都不能应用于Obj-C(例如:
内联函数、常数传播、交互式优化、纯量取代与聚集等)。
这使得Obj-C性能劣于类似的对象抽象语言(如C++)。
不过Obj-C拥护者认为既然Obj-C运行时消耗较大,Obj-C本来就不应应用于C++或Java常见的底层抽象
ios系统框架:
iOS的系统架构和其操作系统一样,采用了分层的架构。
iOS分为四层,分别为核心操作系统(the Core OS layer),核心服务层(the Core Services layer),媒体层(the Media layer),Cocoa触摸架构层(the Cocoa Touch layer)。
SQLite数据库介绍:
SQLite, 是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
Xcode 整合的 Apple Reference Library 为所有的Apple开发者文件提供一个单独的搜索和显示界面,这些文件包括来自苹果电脑公司网站的在线文件,以及存放在你电脑上的文件。
新的参考资料库甚至可以帮你将定期更新资料下载到你的电脑,保持文件的最新状态。
Xcode 将帮你快速找到最新的答案。
Xcode 将赋予你创建诸如计算和渲染引擎应用程序的能力,这些应用程序使用64位内存定址。
这非常适合数据集中的应用程序,其通过访问内存中的数据运行速度更快,远胜于磁盘访问。
Xcode 将为你提供工具来建立并调试适合 Intel Core i5, i7 和 Mac OS X Lion 的 32 或 64 位应用程序,还可以让你创建包含32位和64位执行能力的 Fat Binaries。
众所周知,在构建中引进多重处理器可以提高速度,Xcode 能帮你实现这个明显的结论。
利用支持 Rendezvous 的分布式构建功能,可以轻易地把编译工作量分散到闲置的电脑上来寄放构建,或者更好是在单独的电脑上开发一个专门的 Xserve 构建寄放区,快速处理那些耗时的任务。
3
系统分析与设计
3.1需求分析
3.1.1编写目的
“养生之道,莫先于食。
”利用食物的营养来防治疾病,可促进健康长寿。
通过调整饮食来补养脏腑功能,促进身体健康和疾病的康。
俗话说:
“药补不如食补。
”所谓食补,就是食补能起到药物所无法起到的作用。
在我国,利用调整饮食作为一种养生健身手段有着悠久的历史,比如唐代名医孙思邈对饮食养生作了重大贡献,他认为,老年人疾病的治疗,首先要注重饮食。
因为“食能排邪而安脏腑悦神爽志以资气血,而药性烈,犹若御兵,药势有所偏助,令人脏气不平,易受外患,所以若能用食平疴,适性遣疾,最易收养生之效益”。
饮食是人类维持生命的基本条件,而要使人活得健康愉快、充满活力和智慧,则不仅仅满足于吃饱肚子,还必须考虑饮食的合理调配,保证人体所需的各种营养素的摄入平衡且充足,并且能被人体充分吸收利用。
掌厨给了人们更多的选择,上万道菜品展示,上万道美食制作视频,让人们轻松拥有精湛的厨艺,及合理的搭配,让你做出来的饭菜不在单调,并且更加有营养。
这就是编写掌厨的目的。
3.1.2开发的软件硬件要求
硬件:
主流配置pc机(装黑苹果,大多数主流硬件的驱动都能找到,但还是推荐虚拟),iMac或MacbookAir或MacbookPro
软件:
虚拟机VM+MacOS系统镜像,X-Code在虚拟Mac中安装,苹果免费提供),MacOS,X-Code
iOS设备:
iPhone、iPad、iPod
3.2总体设计
3.2.1主要功能
a.万道美食任你选:
展现高清菜谱图片,无限滑动带来无限惊喜。
b.提供多种检索方式:
包含智能选菜、菜系搜索、口味搜索以及摇一摇选菜。
c.菜品制作视频及四大相关信息板块,迅速成为掌厨达人。
d.轻松注册登录,美食任你收藏。
e.对症食疗,健康美食生活
3.2.2软件结构示意图
3.3
详细设计
3.3.1主界面设计
图3.2主界面设计
3.3.2对症治疗界面设计
点击主界面上对症治疗进入相应界面出现多种类别点击类别出现多种相应病状
3.3.3热门推荐界面设计
点击主界面上热门推荐出现多种菜品
3.3.4摇一摇界面设计
点击主界面上摇一摇进入摇一摇界面摇晃手机后随机出现一款美食
3.3.5万道菜界面设计
点击主界面上万道美食进入万道菜界面
3.3.6菜品详情界面设计
点击菜品后出现相应菜品的材料,相关常识,相宜相克,做法
3.3.7二维码界面设计
点击主界面上二维码进入到二维码界面
3.3.8登录与注册界面设计
点击主界面上“我的”自动进入到登陆注册界面
3.3.9“我的”界面设计
点击主界面上的我的进入到我的界面
3.3.10收藏界面设计
点击我的界面中的我的收藏后出现我的收藏界面
点击菜品下的红心,可以收藏该菜品,收藏后弹出收藏成功对话框,点击确定后可以在我的收藏界面中查看该菜品
3.3.11五层搜索界面设计
4
系统实现
4.1各界面的实现
4.1.1主界面的实现
点击主界面上的相应功能进入到相应的功能模块
4.1.2对症食疗界面的实现
图4.2-a对症食疗界面实现
点击科目出现具体病状点击具体病状出现病状详情
点击详情出现病状的详情及相关的饮食保健点击相应菜品可看菜品详情
4.1.3热门推荐界面的实现
点击主界面上的热门推荐进入到热门推荐界面,点击相应菜品,可看菜品详情
4.1.4摇一摇界面的实现
点击主界面上的摇一摇进入到摇一摇界面摇晃手机后出现相应的菜品
4.1.5万道菜界面的实现
点击主界面上的万道菜进入万道菜界面,点击相应菜品可看菜品详情
图4.5万道菜界面实现
4.1.6菜品详情界面的实现
点击菜品后进入菜品详情界面
4.1.7二维码界面的实现
点击主界面上的二维码进入到二维码界面
4.1.8登录与注册界面的实现
4.1.9“我的”界面的实现
点击主界面上的“我的”进入我的界面,点击我的收藏可进入收藏界面
4.1.10收藏界面的实现
点击我的界面中的我的收藏后出现我的收藏界面,点击菜品下的红心,可以收藏该菜品,收藏后弹出收藏成功对话框,点击确定后可以在我的收藏界面中查看该菜品
点击编辑,进入编辑界面可删除菜品
点击完成后日退出编辑界面
4.1.11五层搜索界面的实现
点击主界面上的搜索,进入到搜索界面
4.2实现系统过程中遇到的关键问题
小组件比较多,写成复用,工作量较大
导入第三方库及整合代码
4.3关键代码
-(id)initWithNibName:
(NSString*)nibNameOrNilbundle:
(NSBundle*)nibBundleOrNil
{
self=[superinitWithNibName:
nibNameOrNilbundle:
nibBundleOrNil];
if(self){
[selfinitMember];
}
returnself;
}
-(void)viewDidLoad{
[superviewDidLoad];
[selfuiConfig];
[selfloadData];
}
#pragmamark-QFTableViewDataSource
-(CGFloat)QFTableView:
(QFTableView*)fanView
widthForIndex:
(NSInteger)index{
return320;
}
-(NSInteger)numberOfIndexForQFTableView:
(QFTableView*)fanView{
return_mainArray.count;
}
-(void)QFTableView:
(QFTableView*)fanView
setContentView:
(UIView*)contentView
ForIndex:
(NSInteger)index{
LLCMainModel*model=[_mainArrayobjectAtIndex:
index];
UIImageView*pictureImageView=(UIImageView*)contentView;
[pictureImageViewsetImageWithURL:
[NSURLURLWithString:
model.imagePathLandscape]
placeholderImage:
[UIImageimageNamed:
@"defaultImage.png"]];
}
-(UIView*)QFTableView:
(QFTableView*)fanView
targetRect:
(CGRect)targetRect
ForIndex:
(NSInteger)index{
UIImageView*pictureImageView=[[UIImageViewalloc]initWithFrame:
targetRect];
returnpictureImageView;
}
#pragmamarkQFTableViewDelegate
#pragmamark点选cell,弹入视频界面
-(void)QFTableView:
(QFTableView*)fanViewselectIndex:
(NSInteger)index{
LLCVideoViewController*vVC=[[LLCVideoViewControlleralloc]init];
vVC.dataArray=_mainArray;
vVC.currentIndex=index;
[self.navigationControllerpushViewController:
vVCanimated:
YES];
}
#pragmamark翻页
-(void)QFTableView:
(QFTableView*)fanViewscrollToIndex:
(NSInteger)index{
if(index>_mainArray.count-1){
return;
}
if(_mainArray.count>0&&index>-1){
LLCMainModel*model=[_mainArrayobjectAtIndex:
index];
_dateIntroduce.foodNameLabel.text=model.name;
_dateIntroduce.foodPinYinName.text=model.englishName;
[_pageControllightPointBeforePage:
index];
}
}
#pragmamark读取更多
-(void)llcTableViewLoadMoreData{
if(_isLoading){
return;
}
//加载hud
UIView*oldHud=[self.viewviewWithTag:
kHUD_Tag];
if(oldHud!
=nil){
[oldHudremoveFromSuperview];
}
LLCFacilityHUD*hud=[[LLCFacilityHUDalloc]initWithPosition:
self.view.center];
hud.tag=kHUD_Tag;
[self.viewaddSubview