1、本科毕业论文(设计)( 2015 届 ) 题 目: 基于IOS平台点菜系统的设计与开发 系 (部): 数学与计算机科学系 专 业: 计算机科学与技术 学生姓名: 学号: 指导教师: 职称(学位): 合作导师: 职称(学位): 完成时间: 2015 年 4月20日 池州学院教务处制学位论文原创性声明本人所提交的学位论文,是在指导老师指导下独立完成的研究成果。本人在论文写作中参考的其他个人或集体的研究成果,均在文中以明确方式标明。本人依法享有和承担由此论文而产生的权利和责任。声明人(签名):年 月 日目 录摘 要IABSTRACTII1 绪论11.1选题背景11.2点菜系统的发展现状11.3点菜系
2、统开发的意义21.4开发工具与使用技术介绍21.4.1 Objective-C概述21.4.2 Xcode概述31.4.3 MVC概述31.4.4 SQLite数据库31.4.5 HTTP/TCP 通信42 系统需求分析52.1 项目概述52.1.1 项目名称52.1.2 项目目标52.1.3 系统范围和系统边界52.1.4功能概述52.1.5 业务流程图52.2详细功能需求62.3系统运行环境分析73 系统设计83.1功能模块设计83.1.1设计的概念83.1.2系统数据模型实体关系83.2数据库设计93.2.1数据库关系图93.2.2数据库作用表103.2.3数据库信息表103.2.4 A
3、PP功能模块预览113.3前台功能设计123.4后台功能设计124 系统实现144.1前台功能模块的实现144.1.1网站首页功能144.1.2点菜功能144.1.3一键分享154.1.4菜单功能174.1.5餐位选择和送单184.1.6历史菜单184.2后台等功能的实现184.2.1厨房端接受数据184.2.2收银端结账195 系统测试205.1 测试目的和概念205.2 测试原理205.3 测试用例设计205.4 测试结果216 结论276.1 点菜系统的总结和不足276.2 点菜系统未来的改进设想27参考文献28致 谢29摘 要社会随着科技而发展,生活因科技而多姿。在移动互联网飞速发展的
4、今天 ,手机,iPad的使用越来越普遍,而去餐馆就餐问题是人们交流相处必不可少的一部分,电子点菜是餐馆点菜发展的必然途径之一。本系统设计内容包括电子点菜,修改电子菜单,查看历史菜单及发送菜单等。本系统的主要特点有:本系统采用MVC格式来编写代码,代码可维护性大大增强,使用iOS自带的Sqlite3数据库来实现存储,用户界面简洁美观,可操作性强。使用本系统可以提高餐馆的服务质量和工作效率,可以改变点餐方式,从而实现餐馆改革。从而获得更大的收益,同时也丰富现代人追求潮流,与时俱进的生活品质。关键词:iOS;app;点菜;Objective-C; AbstractWith the developme
5、nt science of society, living is colorful due to technology. With the rapid development of mobile Internet today, mobile phone, iPad is used more and more widely, and go to a restaurant is part of people communicate along essential, Electronic ordering is one of the inevitable way to the development
6、 of a la carte restaurant . The design of the system includes electronic ordering, modify the electronic menu, menu and menu send view history. The main characteristics of this system are: the system uses the MVC format to write the code, code Maintainability greatly enhanced, to realize the storage
7、 using iOS with Sqlite3 database, the user interface is simple and beautiful, and the maneuverability is strong. The design of this system is the core objective is to improve the restaurant service quality and work efficiency, you can change the order, so as to realize the reform of the restaurant.
8、To obtain more income, but also enrich the pursuit of modern fashion, the life quality of advancing with the times.Key words:ios; app; order; objective-c;29池州学院本科毕业论文(设计)1 绪论1.1选题背景随着电子产业的飞速发展,越来越多的行业都被电子产品所渗透,这种渗透促进了企业管理的发展,而餐饮业作为我国第三产业中的一个传统服务行业,始终保持着旺盛的发展趋势,展现出繁荣的新局面,电子产品更是在方方面面影响着人们的生活,顾客对点餐流程的自
9、动化需求变得迫切,电子点餐就是在这种背景中随之而生。 自从2010年4月苹果公司推出iPad平板电脑,这一设备作为菜单系统如今被应用到高级餐厅、汉堡店以及快餐连锁店。著名快餐连锁店AuBonPain的220家分店几乎一半使用了这种点餐设备,并且数量正在增加。美国纽约的4Food汉堡亭已经有8家配备了这种设备,并计划把数量增加到30家。在国内,iOS设备持有率达2亿,用户量大, iPad点餐早已普及,在国内约有60%以上的高档餐厅引进了iPad点餐,iOS系统以自己独特的魅力深深的影响着人们,所以这款APP为苹果的iPad定制使用。适用于中、高低档餐馆。用于顾客就餐点菜。餐馆使用iPad点菜本身
10、就能提升餐馆的档次,吸引顾客前来就餐,满足顾客的体验;还能减少由于点餐交流造成的沟通上的失误,就餐馆本身而言,这种在iPad上点菜的APP,是一次性投入,永久使用,节省了服务员,也节约餐馆更换菜单的成本,提高了工作效率,为餐馆运营节省大量成本。1.2点菜系统的发展现状就餐饮行业目前的形势而言,竞争相当之激烈,在这种竞争环境中,谁能够比别人多前进一步,那么谁就会获取比他人更多的利润。比如在提高餐馆的管理水平,控制餐馆的成本输出,提高服务效率意识等方面就会变得更为的重要。而恰恰iPad点菜系统的应用正是为了解决这些问题所在,其信息化、智能化优势相比传统服务方式明显要高出相当一个档次。这既是技术发展
11、的现状使然,更是市场发展的必要使然。多数餐馆现用点菜方式为传统的点菜方式,面对餐饮行业高速发展的今天,暴漏出传统点菜模式的缺陷也很明显;餐馆管理层对于餐馆的管理也越来越麻烦。餐饮业传统的点菜方式纯属人工操作,因此繁重的工作量、高比例的人为错误是严重影响工作效率的重要原因,如人工传递单据浪费时间,效率低下,而且影响翻台率。经营大规模餐馆,存储的菜系的信息量大,导致下单、传菜等变得越多越容易出现差错,会直接影响到餐馆的服务质量以及工作效率。只靠人工无法实现真正的满足现代企业管理的理念,故使用新的科技可以让餐饮行业得到更好的发展。目前国内有很多做的很好的智能餐饮系统,可以代替传统点餐的有Pad端的点
12、餐系统和新奇的机器人点餐的点餐系统。如超级小二智能餐饮系统,超级小二智能餐饮系统在电子点餐上还根据目前社会发展做出了各种功能的扩充,目前有着很完善的一套体系。吸引这全国很多餐馆加盟,如图1-1是它的软件功能界面。而图1-2则是机器人点餐的方式,机器人身上的魅力相信没有多少人可以抵挡,这也使得我们身边开始出现各种以机器人为主题的场所。这也是很吸引人的一种点菜方式。图1-1 超级小二智能餐饮系统图1-2 机器人在送餐1.3点菜系统开发的意义这个点菜系统构建的点餐功能包括了餐馆点餐的基本功能,还能够分享在微博等社交软件上,就餐馆而言主要是降低各种成本,人力,财力等,用iPad点菜,取代传统的纸质菜单
13、,传统菜单一年四季由于季节不同的小变更或许会造成菜单的浪费,而菜单在iPad上完全使这种浪费降到最低,纸质点菜往往要服务员协同指导记录,而用iPad点菜直接把点菜的主角换成顾客,菜单在app上能图文并茂的展现在顾客的眼中,顾客完全可以自己操作,在一定程度上降低餐馆运营成本。 意义:(1)可以提升餐馆档次;(2)可以减少纸张资源的浪费和人力浪费;(3)增强顾客体验;(4)促进餐馆改革。本次系统的开发依赖于苹果公司的iOS系统和iPad设备,利用了HTTP传输技术,数据库存储技术以及MVC编码。本次论文主要是研究基于iOS平台的点餐系统的设计开发和实现。1.4开发工具与使用技术介绍1.4.1 Ob
14、jective-C概述Objective-C是C语言的扩展集,不管是怎么样的C语言的程序都可以不用修改而直接用Objective-C的编译器编译去运行1。而且在Objective-C中用C语言代码写程序也是完全可以的,不会造成任何混乱。Objective-C被人们描述成遮盖在C语言上的面具,因为Objective-C原本的意思就是以C语言为整个的主体不会改变,然后加入面向对象等特性。Objective-C是一种跨平台语言2。而其它非面向对象语言,包括流程控制,函数声明等的调用都和C语言的调用完全一致。不同的是,某些C语言语法的代码在objective-c中所表达的意思却不一定相同3。比如有些布
15、尔表达式种,在Objective-C中返回值可能是NO,在C语言中返回值却为true。在Objective-C类的定义与实现,分为.h和.m文件,类的定义文件是遵循C语言之惯例用.h为后缀命名,类一般在.h文件中声明,在.m文件中实现。用一句话来慨括,Objective-C是一种面向对象的c语言,并且有着自己的鲜明的特点。如兼容性,字符串,类,方法,协议,属性。1.4.2 Xcode概述Xcode是苹果公司自己开发的只能在Mac OS X平台上运行的集成环境,Xcode具有良好的用户界面,文件的编码、测试,调试都可以在一个窗口上运行,使用起来快捷,方便4。我们在装有Mac OS电脑下,都是用X
16、code来开发iPhone应用程序。在使用Xcode进行编程设计时,Xcode提供模拟器供编程人员测试程序。有关Xcode的前世今生,前生是继承自NEXT的Project Builder。The Xcode suite 里面有GNU Compiler Collection自由软件 (GCC、 apple-darwin9-gcc-4.0.1 等),并支持 Objective-C ,C语言、C+、Objective-C+等,而且提供Cocoa、Java以及Carbon等编程模式。关于Xcode的历史版本主要由以下几种:从Xcode3.1开始为iOS开发环境。Xcode4.0于2011年3月9日正式
17、发布,而且该版本非Apple开发者也能够从苹果商店付费下载。Xcode4.1开始,对于OS X 10.6和OS X 10.7用户可以从商店免费下载Xcode的主要版本为Xcode5,支持iOS7,可以在Mac App store免费下载,也可以在其它IOS计划网站下载Xcode6为最新的版本,支持苹果公司最新发布的语言Swift。1.4.3 MVC概述MVC全名是Model View Controller,是一种软件设计模式,用一种业务逻辑、界面、数据显示分离的方法编写代码的方法,MVC定义了Cocoa框架的总体结构,是一种高级别的模式,将应用分为模型层、视图层、控制器层。同时MVC名称也是是
18、模型-视图-控制器(controller)的英文首字母的缩写。它最初出现在20世纪70年代的Smalltalk编程语言中5。在编写代码的同时使用MVC模式,能减少代码之间的耦合。使程序结构清晰明朗,便于后期代码的修改和维护。1.4.4 SQlite数据库如果你正在使用 Mac OS 雪豹(Mac OS X v10.6 Snow Leopard)或者更新版本的系统,那么系统上已经装有 SQLite 了。SQLite 是开源的、内嵌式的关系数据库,iOS平台包装的是第三版,即是SQLite3,SQLite3的特点是使用起来方便、结构紧凑、高度便携、高效和可靠。实现了支持事务与零配置等的SQL数据库
19、引擎特性。 SQLite3在Xcode中使用起来创建有相应的代码,使用时要导入相应的数据库框架:libsqlite3.dylib6。在大多数情况下,只要确保SQLite3的二进制文件的存在就可以用来开始创建、连接和使用数据库。这点与其他数据库管理系统很不相同。本论文所使用的第三方库FMDB就是建立在SQLite3数据库上的。1.4.5 HTTP/TCP 通信本次论文采用http协议和客户端通信7,HTTP因为它的简捷的方式,还可适用于分布式的超媒体信息系统。从它1990年提出到现在,经过这么多年的发展也得到了不断得到扩展和完善。而且它是属于应用层的面向对象的协议。HTTP全名为超文本传输协议,
20、一般基于TCP的连接方式。它的主要特点有客户向服务器请求服务时,只要传送请求方法和路径。常用请求方式有GET、HEAD、POST、支持客户/服务器模式。HTTP允许传输的数据对象没有任何限制。HTTP协议是无状态协议。无连接的意思就是每次连接只处理一个请求。在iPad端可以向服务器发送Post或GET方式请求。因为IOS SDK中的http网络请求API用起来根复杂,所以本次论文用到的ASI封装了系统的CFNetwork 框架,而且ASI是用Objective-C写的,可以直接在Mac系统或IOS应用中直接使用。ASI目前已经不更新了,但是由于效率高,功能完善,所以现在使用的人也很多,我们AS
21、I发请求有两种方式:同步请求和异步请求,而且有相应的回调函数 只要实现相关的代理就可以直接使用。2 系统需求分析2.1 项目概述 2.1.1 项目名称点菜项目名称:基于iOS平台的点菜系统2.1.2 项目目标点菜系统实现的目标如下:(1)顾客浏览餐馆官网;(2)顾客滑动iPad浏览菜单;(3)顾客一键分享菜式给好友;(4)顾客修改点菜菜单;(5)顾客选择餐位并且送单;(6)顾客查看历史菜单(7)同一桌号顾客加菜;(8)后厨接收菜单(9)收银处通过桌号收银;2.1.3 系统范围和系统边界任何系统都不可能包罗万象,本系统主要是为了提供一种餐馆点菜新型模式和新的体验。系统面向的对象主要是来餐馆就餐的
22、顾客。后台和收银则是面向餐馆管理人员。通过重新分配点菜角色来达到用餐新体验。2.1.4功能概述本系统面向2类群体,顾客,餐馆管理者对于顾客:(1)通过APP浏览餐馆主页;(2)APP点餐;(3)一键分享到自己的微博等;(4)查看菜单。餐馆管理者:(1)收银(2)送单(3)更新菜单数据库2.1.5 业务流程图图2.1 点菜系统流程图2.2详细功能需求首先需求分析的目的是确切的回答:“系统必须做什么?8”本系统主要分成两大模块,是前台模块和后台模块,而这两个模块又有自己的精确的划分,具体的模块划分如下:(1)进入界面模块打开点菜APP后,可以看到两个选择按钮,选择网站首页则进入浏览网页,按APP右
23、上角按钮可返回,第二个则是进入点菜系统的按钮。这个模块主要是在顾客刚要进入点菜系统之前,可以通过这个模块的网站首页这个功能建立对餐馆了解的过程。顾客可以随时通过此功能访问餐馆的官网。当点击进入点菜系统则跳转到点菜系统的界面。餐馆可以通过这个界面的网站功能拉近与顾客的距离。(2)菜品展示模块及点菜模块当进入点菜系统后,iPad上会陈列出各种赏心悦目的菜式供顾客浏览,顾客可以通过手指的点击,滑动操作来完成点菜,顾客浏览图文并茂的菜单,自己来点菜,不需要他人的指导。充分把传统的点菜方式释放。(3)一键分享模块当今社会,发微博,发消息,分享朋友圈,点赞。这是社交新方式,分享自己的生活,为别人发的微博点
24、赞,评论。所以当顾客碰到喜欢的菜式时,顾客可以通过这个模块来分享自己的选择。可以通过新浪微博,腾讯微博,Email等各种方式来进行分享。 (4)我的菜单模块通过这个模块,顾客可以对自己的点菜内容进行修改,例如,某种菜点多了或少了,某种菜备注为:“微辣”。同时在这个界面底部我们会给出顾客点菜的总价格。通过这个界面可以和后台进行交流,是本系统不可缺少的一部分。(5)菜单提交模块当然,菜单修改完成后便是提交,提交菜单的条件有两个;1.菜单部位空;2.顾客选择好了点餐位置。(6) 历史菜单模块顾客可以通过这个模块来查看自己的点餐详情,只有点过餐才会有自己的记录,当然在这里顾客也可以删除自己的点餐记录,
25、并不会影响到菜单发送到后台,因为顾客在这里删除的只能是存在本地数据库的菜单数据,其实数据在提交菜单的时候就已经向服务器发送了一份。顾客在结算时可以根据收银处显示的菜单来进行结算。(7) 后台厨房端模块这个模块是厨房来接收通过服务器发送来得点餐信息的过程,主要是为了餐馆后台人员获取顾客点菜信息的模块。(8) 收银模块收银处的菜单是从服务器下载得到的,这里顾客可以通过确认菜单来付账。收银人员通过房间名来查找顾客点餐的信息,然后计算总价,顾客结账。2.3系统运行环境分析(1)开发环境Mac OS X Version 10.9.2(2)运行环境iPad模拟器(3)开发工具Xcode5.1 3 系统设计
26、3.1功能模块设计3.1.1 设计的概念这个系统由于有几个部分,点菜部分是主要是面向顾客来设计的,而后台部分是面向后厨人员,收银则是面向收银人员来设计的。如3-1用例图所示。下面用例图表述了本系统总体操作流程,即顾客点单,后台接单,收银的功能。 图3-1 点餐系统用例图3.1.2系统数据模型实体关系本系统涉及的点菜实体关系如下:如下图所示:顾客和菜谱则是两个实体,可以多个顾客观看同一菜谱,故顾客和菜谱的关系为M:1,俩个实体以“观看”来连接,而菜谱这个实体的属性有菜名,菜的种类,菜价等。其他关系以此类推。图3-2 顾客订餐E-R图3.2数据库设计3.2.1 数据库关系图根据以上的对象关系,建立
27、以下数据库表数据库之间各表关系如下:图3-3数据库之间的关系3.2.2数据库作用表表3-1 数据库作用表数据库作用Room记录房间号/桌号groupTable菜单分类信息menuTable菜单具体信息orderTable生成的我的菜单group_recordTable记录点菜时间/地点recordTable记录点菜详情3.2.3数据库信息表(1) 地理位置表Room 表3-2 桌号表字段类型说明IdInteger主键无实际意义Room_nameText存储餐位(2) 菜单分类信息groupTable表3-3 菜式表字段类型说明IdInteger主键无实际意义kindText菜品类型nameTe
28、xt细致分类(3) 菜单menuTable表3-4 菜单详情表字段类型说明IdInteger主键无实际意义groupIDText分组类型iKindText细致分组类型nameText菜名priceInteger菜的价格unitText数量detailText详情picNameText对应图片名(软件包含相应图片)(4) 我的菜单orderTable表3-5 点单表字段类型说明IdInteger主键无实际意义menuNameText已点菜的菜名PriceText已点菜的价格KindText已点菜的类型menuNumInteger已点菜的某份数量remarkText已点菜的备注信息(5) 餐位记录
29、group_recordTable表3-6 点餐时间表字段类型说明IdInteger主键无实际意义dataText点餐日期timeText点餐时间roomText餐位(6) 点菜详细情况recordTable表3-7 点菜详情表字段类型说明IdInteger主键无实际意义stateNumInteger送菜的数量menuNameText菜名menuPriceText菜品价格menuKindText菜品种类menuNumInteger菜的数量menuRemarkText点菜备注groupIDInteger辨别属于不同次点菜3.2.4 App功能模块预览表3-8模块详情表前台App后台1.浏览餐馆主
30、页/进入点菜系统 1.后台接收菜单(一般不用iPad接收显示)2.浏览菜单/点菜2.后台标记是否送菜3.一键分享菜式给好友通过空间或微博3.收银(一般不用iPad接收显示)4.生成菜单/自动计算价格/折扣计算5.选择你就餐所在位置6.发送菜单7.生成历史记录,可以查阅,删除3.3前台功能设计(1)浏览餐馆主页/进入点菜系统:当打开软件时,会有一段过渡页面,弥补等待的空白,点击网站首页按钮,则直接进入餐馆的主页,此时可以按右上角返回按钮返回选择页面。点击进入点菜系统则可以进入选择中文版的选择界面,也可以查历史菜单(如果未点菜,则为空),继续点击中文版则入菜单页面,英文版未实现。(2)在菜单的主页
31、可以通过TableView,ScrollView来构建菜单浏览,选择,点菜。点菜过程通过手指滑动挑选,丰富的图文结构会更加吸引人的注意力。(3)在详情界面(通过模态弹出实现),iPad上独有的格式显示,一键分享当前美食在新浪微博,这里需要在新浪申请App Key和App Secret,并且还要填写回调网址才能实现一键分享到微博功能,在这里,已经有相当成熟的产品供我们使用。如shareSDK。shareSDK集成了丰富的集成了一些常用的类库和接口,支持新浪微博、人人网、豆瓣、腾讯微博、开心网、网易微博、QQ、微信等,有较为丰富的UI选择,使用起来方便,而且ShareSDK对所有的开发者永久免费。
32、(4)选择界面我的菜单则进入菜单界面,菜单界面通过数据库存储点菜内容TableView则用来显示,并且可以在此界面修改点菜内容(菜单为空送单为出现UIAlertView警告框提醒)。选择送单则进入送单页面,点击位置选择选择就餐房间(位置为空送单为出现UIAlertView警告框提醒)。(5)发送菜单到服务器并且保存到本地后清空我的菜单内容。(6)可以在历史菜单中查询本次点菜内容。3.4 后台功能设计(1)可以通过服务器获取菜单(准备运用本地服务器来模拟过程)向服务器发送get请求获取俩个数据库,存到本地,然后取数据(2)标记是否送菜修改数据库表stateNum值来确定送菜的数量。(3)收银端收
33、银 首先收银端存在密码,须向服务器发送密码才能登录,且收银端有修改密码的功能。便于餐馆管理。然后就是向服务器发送get请求获取俩个数据库,存到本地,然后取数据。4 系统实现4.1前台功能模块的实现4.1.1 网站首页功能当运行打开软件后可以得到下面的界面,首先当你点击网站首页,系统会iPad端打开特定的网站(餐馆的网站主页),进入之后可以按右上角的返回按钮返回app,这个属于前台模块的一部分,可以让人们在要点菜同时对餐馆自身增加一个了解的途径。点击点菜系统则进入点菜系统开始点菜。下面用一个图来展示这个过程:图4-1 开始界面操作流程图具体代码如下:UIWebView *webview=UIWe
34、bView allocinitWithFrame:CGRectMake(0, 0, 1024, 768);NSURL *url=NSURL URLWithString:;NSURLRequest *request=NSURLRequest requestWithURL:url;webview loadRequest:request;self.view addSubview:webview;这里创建了一个webView来显示网页内容。在webView上加载网页请求。4.1.2点菜功能这个功能模块是当顾客点击进入后显示,充满视觉和触觉操作的一个界面,在界面的最右边有七个供顾客选择的按钮,具有滑动效
35、果,如当顾客选择主厨推荐这个项时,可以在列表中选择其中鲍、参、翅、燕、胶这种具体的分类信息,在左边会默认显示分类信息的第一项内容,当顾客选择好某一项菜品,在左边的大图也会发生同样的改变,同样在左边滑动选择菜品同时,也可进行某种菜品的选定。当顾客选择好菜品后,可以点击界面左侧下方的点菜按钮来进行点菜操作。当然,每当顾客选好某道菜时,可以点击查询详情来查询看菜品详情。点菜结束后则可点击我的菜单来进入菜单界面。总结下这个小模块中所包含的功能有:(1)顾客浏览菜式;(2)顾客查看菜品详情;(3)点菜操作;(4)进入我的菜单。这些操作可以用下图来表示图4-2 点菜操作图点菜界面的具体实现代码如下:浏览菜
36、式可以用UIScrollView来显示内容,具体实现方法有DataBaseOperation scrollViewStart:_scrollView WithArray:_dataArrayWithopenSection:_openSection;在这里我们用一个自定义的数据操作类DataBaseOperation来进行数据处理,_scrollView代表滑动得菜单视图,_dataArray则是存放数据的数组,_openSection是记录当前要打开的界面菜单的表的分区。在这个方法中,我们可以通过scrollView.contentSize来设置UIScrollView的容量,如scrollV
37、iew.contentSize=CGSizeMake(scrollView.frame.size.width*array.count, scrollView.frame.size.height);4.1.3一键分享现如今用手机来交际成为了一种不可替代的时尚9。当顾客使用此功能时,可以将自己喜欢的菜式分享在新浪微博、腾讯微博、邮件等。这是一种社会化分享功能,如分享到新浪微博,要使用新浪的微博开放接口进行调用,如发微博、关注等,都是需要获取用户身份认证的。目前微博开放平台用户身份 鉴权主要采用的是OAuth2.0。OAuth2.0与1.0相比较来说, OAuth2.0的整个授权验证过程更简单更加地
38、安全。 OAuth2.0是未来最主要的用户身份验证和授权方式10。整个授权过程如下:(1)第三方应用向用户请求(Authorization Request)进行授权,用户同意授权(Authorization Grant),或者取消;(2)第三方应用向新浪的授权服务器发请求(Authorization Grant),索要通行证,新浪的授权服务器把通行证(Access Token)给第三方应用;(3)第三方应用使用通行证(Access Token)获取用户的新浪微博的某些信息 (Protected Resources);关于OAuth2.0协议的授权流程可见下面的流程图,其中Client指第三方应
39、用,Resource Owner指用 户,Authorization Server指新浪的授权服务器,Resource Server是API服务器。图4-3 OAuth2.0授权图这里我们用得时第三方类库shareSDK;首先在入口类ZCAppDelegate中实现相关的回调方法,如分享在新浪微博 ShareSDK connectSinaWeiboWithAppKey:3720894884appSecret:9a57c722ef1fabed0c6decd2b3daa4a3redirectUri:;AppKey和APPSecret是在新浪的微博开放平台申请可以得到,redirectUri则是申请
40、应用必须填写的回调网址,一般都填软件下载地址。然后去分享触发方法中触发第三方类库提供的方法即可,在这里iPad分享有些特别,如果使用iPad分享,则要:(1)创建iPad容器id container=ShareSDK container;container setIPadContainerWithView:sender arrowDirect:UIPopoverArrowDirectionUp;(2)然后定制自己的分享内容比如可以在发微博时插入特定的图片,可以通过NSBundle mainBundlepathForResource:menuName ofType:jpg来调用资源里面存在的me
41、nuName.jpg图片。(3)第三步则是可以通过showShareActionSheet方法来打开分享界面,在这里用三个if语句来判断分享过程:if (state = SSResponseStateSuccess) /分享成功if (state = SSResponseStateCancel) /取消分享if (state = SSResponseStateFail) /分享失败在if语句的判断后用UIAlertView(警告框)来显示分享操作结果的显示,为顾客执行分享操作提供一定的提示。例如:当分享成功时会调用UIAlertView *alert = UIAlertView allocin
42、itWithTitle:分享成功 message:nil delegate:self cancelButtonTitle:OK otherButtonTitles:nil;alert show;alert是我们自己定义的警告框内容,WithTitle是警告框的标题,message:nil代表警告框的提示信息为空,delegate:self指代设置代理,cancelButtonTitle:OK指取消警告框按的按钮内容为“OK”。4.1.4菜单功能我的菜单这一模块是顾客点菜完成后,将要提交菜单时进入,在这里可以对选择的菜品进行增加或者删除操作,还可以进行备注,具体有:(1)点击份数可以修改点菜的份
43、数,如果多点,或者少点都可以以此进行修改;(2)选择好某一行进行滑动则触发删除操作,点击删除即可;(3)在备注的输入框点菜的备注,对厨房进行提示;(4)参考价格显示菜品总价;(5)点击送单则进入送单页面(6)当点菜数目为零,顾客点击送单时,会有警告框自动提示。如修改某分菜的的内容时,会调用在自定义数据操作类的加号方法。通过下面代码我们可以看到,插入操作就是普通的SQL语句,这里就是利用FMDB这种第三方类库的好处,比如我们所知的MAC版QQ,也使用了FMDB。+(void)updateOrderTableByDish:(MenuTable*)menuTable FMDatabase * db = DataBaseOperation creatDB; if (db open) db executeUpdate:update orderTable set menuNum = ?, remark = ? where menuName=?,NSNumber numberWithInt:menuTable.part,menuTable.reMarks,menuTable.name; db close;4.1.5餐位选择和送单点击送单