




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
29/35本科毕业论文(设计)(2015届)题目:基于IOS平台点菜系统的设计与开发系(部):数学与计算机科学系专业:计算机科学与技术学生:学号:指导教师:职称(学位):合作导师:职称(学位):完成时间:2015年4月20日池州学院教务处制学位论文原创性声明本人所提交的学位论文,是在指导老师指导下独立完成的研究成果。本人在论文写作中参考的其他个人或集体的研究成果,均在文中以明确方式标明。本人依法享有和承担由此论文而产生的权利和责任。声明人(签名):年月日目录TOC\o"1-3"摘要IAbstract II1绪论11.1选题背景11.2点菜系统的发展现状11.3点菜系统开发的意义21.4开发工具与使用技术介绍21.4.1Objective-C概述21.4.2Xcode概述31.4.3MVC概述31.4.4SQLite数据库31.4.5/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.4APP功能模块预览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摘要社会随着科技而发展,生活因科技而多姿。在移动互联网飞速发展的今天,手机,iPad的使用越来越普遍,而去餐馆就餐问题是人们交流相处必不可少的一部分,电子点菜是餐馆点菜发展的必然途径之一。本系统设计容包括电子点菜,修改电子菜单,查看历史菜单与发送菜单等。本系统的主要特点有:本系统采用MVC格式来编写代码,代码可维护性大大增强,使用iOS自带的Sqlite3数据库来实现存储,用户界面简洁美观,可操作性强。使用本系统可以提高餐馆的服务质量和工作效率,可以改变点餐方式,从而实现餐馆改革。从而获得更大的收益,同时也丰富现代人追求潮流,与时俱进的生活品质。关键词:iOS;app;点菜;Objective-C;AbstractWiththedevelopmentscienceofsociety,livingiscolorfulduetotechnology.WiththerapiddevelopmentofmobileInternettoday,mobilephone,iPadisusedmoreandmorewidely,andgotoarestaurantispartofpeoplecommunicatealongessential,Electronicorderingisoneoftheinevitablewaytothedevelopmentofalacarterestaurant.Thedesignofthesystemincludeselectronicordering,modifytheelectronicmenu,menuandmenusendviewhistory.Themaincharacteristicsofthissystemare:thesystemusestheMVCformattowritethecode,codeMaintainabilitygreatlyenhanced,torealizethestorageusingiOSwithSqlite3database,theuserinterfaceissimpleandbeautiful,andthemaneuverabilityisstrong.Thedesignofthissystemisthecoreobjectiveistoimprovetherestaurantservicequalityandworkefficiency,youcanchangetheorder,soastorealizethereformoftherestaurant.Toobtainmoreincome,butalsoenrichthepursuitofmodernfashion,thelifequalityofadvancingwiththetimes.Keywords:ios;app;order;objective-c;1绪论1.1选题背景随着电子产业的飞速发展,越来越多的行业都被电子产品所渗透,这种渗透促进了企业管理的发展,而餐饮业作为我国第三产业中的一个传统服务行业,始终保持着旺盛的发展趋势,展现出繁荣的新局面,电子产品更是在方方面面影响着人们的生活,顾客对点餐流程的自动化需求变得迫切,电子点餐就是在这种背景中随之而生。
自从2010年4月苹果公司推出iPad平板电脑,这一设备作为菜单系统如今被应用到高级餐厅、汉堡店以与快餐连锁店。著名快餐连锁店AuBonPain的220家分店几乎一半使用了这种点餐设备,并且数量正在增加。美国纽约的4Food汉堡亭已经有8家配备了这种设备,并计划把数量增加到30家。在国,iOS设备持有率达2亿,用户量大,iPad点餐早已普与,在国约有60%以上的高档餐厅引进了iPad点餐,iOS系统以自己独特的魅力深深的影响着人们,所以这款APP为苹果的iPad定制使用。适用于中、高低档餐馆。用于顾客就餐点菜。餐馆使用iPad点菜本身就能提升餐馆的档次,吸引顾客前来就餐,满足顾客的体验;还能减少由于点餐交流造成的沟通上的失误,就餐馆本身而言,这种在iPad上点菜的APP,是一次性投入,永久使用,节省了服务员,也节约餐馆更换菜单的成本,提高了工作效率,为餐馆运营节省大量成本。1.2 点菜系统的发展现状就餐饮行业目前的形势而言,竞争相当之激烈,在这种竞争环境中,谁能够比别人多前进一步,那么谁就会获取比他人更多的利润。比如在提高餐馆的管理水平,控制餐馆的成本输出,提高服务效率意识等方面就会变得更为的重要。而恰恰iPad点菜系统的应用正是为了解决这些问题所在,其信息化、智能化优势相比传统服务方式明显要高出相当一个档次。这既是技术发展的现状使然,更是市场发展的必要使然。多数餐馆现用点菜方式为传统的点菜方式,面对餐饮行业高速发展的今天,暴漏出传统点菜模式的缺陷也很明显;餐馆管理层对于餐馆的管理也越来越麻烦。餐饮业传统的点菜方式纯属人工操作,因此繁重的工作量、高比例的人为错误是严重影响工作效率的重要原因,如人工传递单据浪费时间,效率低下,而且影响翻台率。经营大规模餐馆,存储的菜系的信息量大,导致下单、传菜等变得越多越容易出现差错,会直接影响到餐馆的服务质量以与工作效率。只靠人工无法实现真正的满足现代企业管理的理念,故使用新的科技可以让餐饮行业得到更好的发展。目前国有很多做的很好的智能餐饮系统,可以代替传统点餐的有Pad端的点餐系统和新奇的机器人点餐的点餐系统。如超级小二智能餐饮系统,超级小二智能餐饮系统在电子点餐上还根据目前社会发展做出了各种功能的扩充,目前有着很完善的一套体系。吸引这全国很多餐馆加盟,如图1-1是它的软件功能界面。而图1-2则是机器人点餐的方式,机器人身上的魅力相信没有多少人可以抵挡,这也使得我们身边开始出现各种以机器人为主题的场所。这也是很吸引人的一种点菜方式。图1-1超级小二智能餐饮系统图1-2机器人在送餐1.3 点菜系统开发的意义这个点菜系统构建的点餐功能包括了餐馆点餐的基本功能,还能够分享在微博等社交软件上,就餐馆而言主要是降低各种成本,人力,财力等,用iPad点菜,取代传统的纸质菜单,传统菜单一年四季由于季节不同的小变更或许会造成菜单的浪费,而菜单在iPad上完全使这种浪费降到最低,纸质点菜往往要服务员协同指导记录,而用iPad点菜直接把点菜的主角换成顾客,菜单在app上能图文并茂的展现在顾客的眼中,顾客完全可以自己操作,在一定程度上降低餐馆运营成本。意义:(1)可以提升餐馆档次;(2)可以减少纸资源的浪费和人力浪费;(3)增强顾客体验;(4)促进餐馆改革。本次系统的开发依赖于苹果公司的iOS系统和iPad设备,利用了传输技术,数据库存储技术以与MVC编码。本次论文主要是研究基于iOS平台的点餐系统的设计开发和实现。1.4 开发工具与使用技术介绍1.4.1Objective-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]。比如有些布尔表达式种,在Objective-C中返回值可能是NO,在C语言中返回值却为true。在Objective-C类的定义与实现,分为.h和.m文件,类的定义文件是遵循C语言之惯例用.h为后缀命名,类一般在.h文件中声明,在.m文件中实现。用一句话来慨括,Objective-C是一种面向对象的c语言,并且有着自己的鲜明的特点。如兼容性,字符串,类,方法,协议,属性。1.4.2Xcode概述Xcode是苹果公司自己开发的只能在MacOSX平台上运行的集成环境,Xcode具有良好的用户界面,文件的编码、测试,调试都可以在一个窗口上运行,使用起来快捷,方便[4]。我们在装有MacOS电脑下,都是用Xcode来开发iPhone应用程序。在使用Xcode进行编程设计时,Xcode提供模拟器供编程人员测试程序。有关Xcode的前世今生,前生是继承自NEXT的ProjectBuilder。TheXcodesuite里面有GNUCompilerCollection自由软件(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日正式发布,而且该版本非Apple开发者也能够从苹果商店付费下载。Xcode4.1开始,对于OSX10.6和OSX10.7用户可以从商店免费下载Xcode的主要版本为Xcode5,支持iOS7,可以在MacAppstore免费下载,也可以在其它IOS计划下载Xcode6为最新的版本,支持苹果公司最新发布的语言Swift。1.4.3MVC概述MVC全名是ModelViewController,是一种软件设计模式,用一种业务逻辑、界面、数据显示分离的方法编写代码的方法,MVC定义了Cocoa框架的总体结构,是一种高级别的模式,将应用分为模型层、视图层、控制器层。同时MVC名称也是是模型-视图-控制器(controller)的英文首字母的缩写。它最初出现在20世纪70年代的Smalltalk编程语言中[5]。在编写代码的同时使用MVC模式,能减少代码之间的耦合。使程序结构清晰明朗,便于后期代码的修改和维护。1.4.4SQlite数据库如果你正在使用MacOS雪豹(MacOSXv10.6SnowLeopard)或者更新版本的系统,那么系统上已经装有SQLite了。SQLite是开源的、嵌式的关系数据库,iOS平台包装的是第三版,即是SQLite3,SQLite3的特点是使用起来方便、结构紧凑、高度便携、高效和可靠。实现了支持事务与零配置等的SQL数据库引擎特性。SQLite3在Xcode中使用起来创建有相应的代码,使用时要导入相应的数据库框架:libsqlite3.dylib[6]。在大多数情况下,只要确保SQLite3的二进制文件的存在就可以用来开始创建、连接和使用数据库。这点与其他数据库管理系统很不一样。本论文所使用的第三方库FMDB就是建立在SQLite3数据库上的。1.4.5/TCP通信本次论文采用协议和客户端通信[7],因为它的简捷的方式,还可适用于分布式的超媒体信息系统。从它1990年提出到现在,经过这么多年的发展也得到了不断得到扩展和完善。而且它是属于应用层的面向对象的协议。全名为超文本传输协议,一般基于TCP的连接方式。它的主要特点有客户向服务器请求服务时,只要传送请求方法和路径。常用请求方式有GET、HEAD、POST、支持客户/服务器模式。允许传输的数据对象没有任何限制。协议是无状态协议。无连接的意思就是每次连接只处理一个请求。在iPad端可以向服务器发送Post或GET方式请求。因为IOSSDK中的网络请求API用起来根复杂,所以本次论文用到的ASI封装了系统的CFNetwork框架,而且ASI是用Objective-C写的,可以直接在Mac系统或IOS应用中直接使用。ASI目前已经不更新了,但是由于效率高,功能完善,所以现在使用的人也很多,我们ASI发请求有两种方式:同步请求和异步请求,而且有相应的回调函数只要实现相关的代理就可以直接使用。2系统需求分析2.1项目概述2.1.1项目名称点菜项目名称:基于iOS平台的点菜系统2.1.2项目目标点菜系统实现的目标如下:(1)顾客浏览餐馆官网;(2)顾客滑动iPad浏览菜单;(3)顾客一键分享菜式给好友;(4)顾客修改点菜菜单;(5)顾客选择餐位并且送单;(6)顾客查看历史菜单(7)同一桌号顾客加菜;(8)后厨接收菜单(9)收银处通过桌号收银;2.1.3系统围和系统边界任何系统都不可能包罗万象,本系统主要是为了提供一种餐馆点菜新型模式和新的体验。系统面向的对象主要是来餐馆就餐的顾客。后台和收银则是面向餐馆管理人员。通过重新分配点菜角色来达到用餐新体验。2.1.4功能概述本系统面向2类群体,顾客,餐馆管理者对于顾客:(1)通过APP浏览餐馆主页;(2)APP点餐;(3)一键分享到自己的微博等;(4)查看菜单。餐馆管理者:(1)收银(2)送单(3)更新菜单数据库2.1.5业务流程图图2.1点菜系统流程图2.2详细功能需求首先需求分析的目的是确切的回答:“系统必须做什么?[8]”本系统主要分成两大模块,是前台模块和后台模块,而这两个模块又有自己的精确的划分,具体的模块划分如下:(1)进入界面模块打开点菜APP后,可以看到两个选择按钮,选择首页则进入浏览网页,按APP右上角按钮可返回,第二个则是进入点菜系统的按钮。这个模块主要是在顾客刚要进入点菜系统之前,可以通过这个模块的首页这个功能建立对餐馆了解的过程。顾客可以随时通过此功能访问餐馆的官网。当点击进入点菜系统则跳转到点菜系统的界面。餐馆可以通过这个界面的功能拉近与顾客的距离。(2)菜品展示模块与点菜模块当进入点菜系统后,iPad上会列出各种赏心悦目的菜式供顾客浏览,顾客可以通过手指的点击,滑动操作来完成点菜,顾客浏览图文并茂的菜单,自己来点菜,不需要他人的指导。充分把传统的点菜方式释放。(3)一键分享模块当今社会,发微博,发消息,分享朋友圈,点赞。这是社交新方式,分享自己的生活,为别人发的微博点赞,评论。所以当顾客碰到喜欢的菜式时,顾客可以通过这个模块来分享自己的选择。可以通过新浪微博,腾讯微博,Email等各种方式来进行分享。(4)我的菜单模块通过这个模块,顾客可以对自己的点菜容进行修改,例如,某种菜点多了或少了,某种菜备注为:“微辣”。同时在这个界面底部我们会给出顾客点菜的总价格。通过这个界面可以和后台进行交流,是本系统不可缺少的一部分。(5)菜单提交模块当然,菜单修改完成后便是提交,提交菜单的条件有两个;1.菜单部位空;2.顾客选择好了点餐位置。历史菜单模块顾客可以通过这个模块来查看自己的点餐详情,只有点过餐才会有自己的记录,当然在这里顾客也可以删除自己的点餐记录,并不会影响到菜单发送到后台,因为顾客在这里删除的只能是存在本地数据库的菜单数据,其实数据在提交菜单的时候就已经向服务器发送了一份。顾客在结算时可以根据收银处显示的菜单来进行结算。后台厨房端模块这个模块是厨房来接收通过服务器发送来得点餐信息的过程,主要是为了餐馆后台人员获取顾客点菜信息的模块。收银模块收银处的菜单是从服务器下载得到的,这里顾客可以通过确认菜单来付账。收银人员通过房间名来查找顾客点餐的信息,然后计算总价,顾客结账。2.3系统运行环境分析(1)开发环境MacOSXVersion10.9.2(2)运行环境iPad模拟器(3)开发工具Xcode5.13系统设计3.1功能模块设计3.1.1设计的概念这个系统由于有几个部分,点菜部分是主要是面向顾客来设计的,而后台部分是面向后厨人员,收银则是面向收银人员来设计的。如3-1用例图所示。下面用例图表述了本系统总体操作流程,即顾客点单,后台接单,收银的功能。图3-1点餐系统用例图3.1.2系统数据模型实体关系本系统涉与的点菜实体关系如下:如下图所示:顾客和菜谱则是两个实体,可以多个顾客观看同一菜谱,故顾客和菜谱的关系为M:1,俩个实体以“观看”来连接,而菜谱这个实体的属性有菜名,菜的种类,菜价等。其他关系以此类推。图3-2顾客订餐E-R图3.2数据库设计3.2.1数据库关系图根据以上的对象关系,建立以下数据库表数据库之间各表关系如下:图3-3数据库之间的关系3.2.2数据库作用表表3-1数据库作用表数据库作用Room记录房间号/桌号groupTable菜单分类信息menuTable菜单具体信息orderTable生成的我的菜单group_recordTable记录点菜时间/地点recordTable记录点菜详情3.2.3数据库信息表地理位置表Room表3-2桌号表字段类型说明IdInteger主键无实际意义Room_nameText存储餐位菜单分类信息groupTable表3-3菜式表字段类型说明IdInteger主键无实际意义kindText菜品类型nameText细致分类菜单menuTable表3-4菜单详情表字段类型说明IdInteger主键无实际意义groupIDText分组类型iKindText细致分组类型nameText菜名priceInteger菜的价格unitText数量detailText详情picNameText对应图片名(软件包含相应图片)我的菜单orderTable表3-5点单表字段类型说明IdInteger主键无实际意义menuNameText已点菜的菜名PriceText已点菜的价格KindText已点菜的类型menuNumInteger已点菜的某份数量remarkText已点菜的备注信息餐位记录group_recordTable表3-6点餐时间表字段类型说明IdInteger主键无实际意义dataText点餐日期timeText点餐时间roomText餐位点菜详细情况recordTable表3-7点菜详情表字段类型说明IdInteger主键无实际意义stateNumInteger送菜的数量menuNameText菜名menuPriceText菜品价格menuKindText菜品种类menuNumInteger菜的数量menuRemarkText点菜备注groupIDInteger辨别属于不同次点菜3.2.4App功能模块预览表3-8模块详情表前台App后台1.浏览餐馆主页/进入点菜系统1.后台接收菜单(一般不用iPad接收显示)2.浏览菜单/点菜2.后台标记是否送菜3.一键分享菜式给好友—通过空间或微博3.收银(一般不用iPad接收显示)4.生成菜单/自动计算价格/折扣计算5.选择你就餐所在位置6.发送菜单7.生成历史记录,可以查阅,删除3.3前台功能设计(1)浏览餐馆主页/进入点菜系统:当打开软件时,会有一段过渡页面,弥补等待的空白,点击首页按钮,则直接进入餐馆的主页,此时可以按右上角返回按钮返回选择页面。点击进入点菜系统则可以进入选择中文版的选择界面,也可以查历史菜单(如果未点菜,则为空),继续点击中文版则入菜单页面,英文版未实现。(2)在菜单的主页可以通过TableView,ScrollView来构建菜单浏览,选择,点菜。点菜过程通过手指滑动挑选,丰富的图文结构会更加吸引人的注意力。(3)在详情界面(通过模态弹出实现),iPad上独有的格式显示,一键分享当前美食在新浪微博,这里需要在新浪申请AppKey和AppSecret,并且还要填写回调网址才能实现一键分享到微博功能,在这里,已经有相当成熟的产品供我们使用。如shareSDK。shareSDK集成了丰富的集成了一些常用的类库和接口,支持新浪微博、人人网、豆瓣、腾讯微博、开心网、网易微博、、微信等,有较为丰富的UI选择,使用起来方便,而且ShareSDK对所有的开发者永久免费。(4)选择界面我的菜单则进入菜单界面,菜单界面通过数据库存储点菜容TableView则用来显示,并且可以在此界面修改点菜容(菜单为空送单为出现UIAlertView警告框提醒)。选择送单则进入送单页面,点击位置选择选择就餐房间(位置为空送单为出现UIAlertView警告框提醒)。(5)发送菜单到服务器并且保存到本地后清空我的菜单容。(6)可以在历史菜单中查询本次点菜容。后台功能设计(1)可以通过服务器获取菜单(准备运用本地服务器来模拟过程)向服务器发送get请求获取俩个数据库,存到本地,然后取数据(2)标记是否送菜修改数据库表stateNum值来确定送菜的数量。(3)收银端收银首先收银端存在密码,须向服务器发送密码才能登录,且收银端有修改密码的功能。便于餐馆管理。然后就是向服务器发送get请求获取俩个数据库,存到本地,然后取数据。4系统实现4.1前台功能模块的实现4.1.1首页功能当运行打开软件后可以得到下面的界面,首先当你点击首页,系统会iPad端打开特定的(餐馆的主页),进入之后可以按右上角的返回按钮返回app,这个属于前台模块的一部分,可以让人们在要点菜同时对餐馆自身增加一个了解的途径。点击点菜系统则进入点菜系统开始点菜。下面用一个图来展示这个过程:图4-1开始界面操作流程图具体代码如下:UIWebView*webview=[[UIWebViewalloc]initWithFrame:CGRectMake(0,0,1024,768)];NSURL*url=[NSURLURLWithString:".baidu."];NSURLRequest*request=[NSURLRequestrequestWithURL:url];[webviewloadRequest:request];[self.viewaddSubview:webview];这里创建了一个webView来显示网页容。在webView上加载网页请求。4.1.2点菜功能这个功能模块是当顾客点击进入后显示,充满视觉和触觉操作的一个界面,在界面的最右边有七个供顾客选择的按钮,具有滑动效果,如当顾客选择主厨推荐这个项时,可以在列表中选择其中鲍、参、翅、燕、胶这种具体的分类信息,在左边会默认显示分类信息的第一项容,当顾客选择好某一项菜品,在左边的大图也会发生同样的改变,同样在左边滑动选择菜品同时,也可进行某种菜品的选定。当顾客选择好菜品后,可以点击界面左侧下方的点菜按钮来进行点菜操作。当然,每当顾客选好某道菜时,可以点击查询详情来查询看菜品详情。点菜结束后则可点击我的菜单来进入菜单界面。总结下这个小模块中所包含的功能有:(1)顾客浏览菜式;(2)顾客查看菜品详情;(3)点菜操作;(4)进入我的菜单。这些操作可以用下图来表示图4-2点菜操作图点菜界面的具体实现代码如下:浏览菜式可以用UIScrollView来显示容,具体实现方法有[DataBaseOperationscrollViewStart:_scrollViewWithArray:_dataArrayWithopenSection:_openSection];在这里我们用一个自定义的数据操作类DataBaseOperation来进行数据处理,_scrollView代表滑动得菜单视图,_dataArray则是存放数据的数组,_openSection是记录当前要打开的界面菜单的表的分区。在这个方法中,我们可以通过scrollView.contentSize来设置UIScrollView的容量,如scrollView.contentSize=CGSizeMake(scrollView.frame.size.width*array.count,scrollView.frame.size.height);4.1.3一键分享现如今用手机来交际成为了一种不可替代的时尚[9]。当顾客使用此功能时,可以将自己喜欢的菜式分享在新浪微博、腾讯微博、等。这是一种社会化分享功能,如分享到新浪微博,要使用新浪的微博开放接口进行调用,如发微博、关注等,都是需要获取用户身份认证的。目前微博开放平台用户身份鉴权主要采用的是OAuth2.0。OAuth2.0与1.0相比较来说,OAuth2.0的整个授权验证过程更简单更加地安全。OAuth2.0是未来最主要的用户身份验证和授权方式[10]。整个授权过程如下:(1)第三方应用向用户请求(AuthorizationRequest)进行授权,用户同意授权(AuthorizationGrant),或者取消;(2)第三方应用向新浪的授权服务器发请求(AuthorizationGrant),索要通行证,新浪的授权服务器把通行证(AccessToken)给第三方应用;(3)第三方应用使用通行证(AccessToken)获取用户的新浪微博的某些信息(ProtectedResources);关于OAuth2.0协议的授权流程可见下面的流程图,其中Client指第三方应用,ResourceOwner指用户,AuthorizationServer指新浪的授权服务器,ResourceServer是API服务器。图4-3OAuth2.0授权图这里我们用得时第三方类库shareSDK;首先在入口类ZCAppDelegate中实现相关的回调方法,如分享在新浪微博[ShareSDKconnectSinaWeiboWithAppKey:"3720894884"appSecret:"9a57c722ef1fabed0c6decd2b3daa4a3"redirectUri:".baidu."];AppKey和APPSecret是在新浪的微博开放平台申请可以得到,redirectUri则是申请应用必须填写的回调网址,一般都填软件下载地址。然后去分享触发方法中触发第三方类库提供的方法即可,在这里iPad分享有些特别,如果使用iPad分享,则要:(1)创建iPad容器idcontainer=[ShareSDKcontainer];[containersetIPadContainerWithView:senderarrowDirect:UIPopoverArrowDirectionUp];(2)然后定制自己的分享容比如可以在发微博时插入特定的图片,可以通过[[NSBundlemainBundle]pathForResource:menuNameofType:"jpg"]来调用资源里面存在的menuName.jpg图片。(3)第三步则是可以通过showShareActionSheet方法来打开分享界面,在这里用三个if语句来判断分享过程:if(state==SSResponseStateSuccess){}//分享成功if(state==SSResponseStateCancel){}//取消分享if(state==SSResponseStateFail){}//分享失败在if语句的判断后用UIAlertView(警告框)来显示分享操作结果的显示,为顾客执行分享操作提供一定的提示。例如:当分享成功时会调用UIAlertView*alert=[[UIAlertViewalloc]initWithTitle:"分享成功"message:nildelegate:selfcancelButtonTitle:"OK"otherButtonTitles:nil];[alertshow];alert是我们自己定义的警告框容,WithTitle是警告框的标题,message:nil代表警告框的提示信息为空,delegate:self指代设置代理,cancelButtonTitle:"OK"指取消警告框按的按钮容为“OK”。4.1.4菜单功能我的菜单这一模块是顾客点菜完成后,将要提交菜单时进入,在这里可以对选择的菜品进行增加或者删除操作,还可以进行备注,具体有:(1)点击份数可以修改点菜的份数,如果多点,或者少点都可以以此进行修改;(2)选择好某一行进行滑动则触发删除操作,点击删除即可;(3)在备注的输入框点菜的备注,对厨房进行提示;(4)参考价格显示菜品总价;(5)点击送单则进入送单页面(6)当点菜数目为零,顾客点击送单时,会有警告框自动提示。如修改某分菜的的容时,会调用在自定义数据操作类的加号方法。通过下面代码我们可以看到,插入操作就是普通的SQL语句,这里就是利用FMDB这种第三方类库的好处,比如我们所知的MAC版,也使用了FMDB。+(void)updateOrderTableByDish:(MenuTable*)menuTable{FMDatabase*db=[DataBaseOperationcreatDB];if([dbopen]){[dbexecuteUpdate:"updateorderTablesetmenuNum=?,remark=?wheremenuName=?",[NSNumbernumberWithInt:menuTable.part],menuTable.reMarks,menuT];}[dbclose];}4.1.5餐位选择和送单点击送单后则进入了餐位选择,这里我们提供了一餐厅结构图配上文字,给用户更加细腻的视觉体验。选好餐位后,继续选择送单则完成点餐过程,注意,如果没有选择送餐的位置,则依旧无法提交菜单。选好后也会将顾客点菜的容传给服务器。调用的方法是//上传数据库到服务器+(void)requestToSendSqliteToServerWithPath;在这里我们发送的是post请求。4.1.6历史菜单当提交完成后,点击返回,可返回点菜页面,此时依旧可以继续加菜,当你想查看自己的订单时,可以选择返回,则可返回至历史菜单页面,点击历史菜单可以点击查阅按钮查询点餐的详情。相关代码如下_dataArray=[[DataBaseOperationgetDataFromGRTable]retain];//获取数据源当我们获取了数据源后可以通过表的代理来调用代理方法来布置历史菜单界面数据-(NSInteger)tableView:(UITableView*)tableViewnumberOfRowsInSection:(NSInteger)section//表分成多少行-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath//表每一行的容4.2后台等功能的实现4.2.1厨房端接受数据顾客完成点餐后,打开厨房端,会接受到顾客发送来得点餐信息,详情包括:点餐的餐位或者房间,点餐的详细容等。在进入主页面前我们要先从服务器请求数据,这个请求方法写在进入之前的缓冲界面。[_enginerrequestGetDateFromServer];//从服务器请求数据_sectionArray=[[DataProcessinggetDataFromGRTable]retain];//获取表头_dataArray=[[DataProcessinggetDataFromRecordTable:1];//获取表的第一行数据然后再调用表的协议方法可以布表。4.2.2收银端结账顾客用餐结束后,可以到收银台完成结账,这个模块使用于后台的收银人员,收银人员在搜索框输入相应的餐位或房间名即可显示顾客的点餐菜单。首先在自定义的表头方法-(UIView*)creatTableViewHeadView里创建搜索框UISearchBar*searchBar=[[[UISearchBaralloc]initWithFrame:CGRectMake(0,0,320,64)]autorelease];//创建搜索框对象并设置大小searchBar.delegate=self;//设置代理[viewaddSubview:searchBar];//把搜索框添加到View(表头)上5系统测试5.1测试目的和概念系统测试就是通过各种手段和测试工具,判断点餐软件系统是否能够满足预期期望。从打开本系统的界面到完成的整个过程中的各个模块进行测试分析,看其是否符合预期的效果,找出和设计有偏差的地方。例如软件用户是不是不能访问某个模块,某个模块没有按照预期的设计功能进行运行。它的任务是尽可能的彻底检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统做的怎么样。测试开始就把整个系统作为一个实体来测试是不现实的。在软件工程的环境中的测试过程,实际上有4个步骤的测试序列,最开始的就是每个单独模块的测试,以保证每个单元的功能是正确的,这种测试是单元测试,单元测试主要用的是白盒测试;接下来则把所有的模块集成一起形成一个完整的软件包。在装配同时进行的测试就是集成测试主要用的是黑盒测试;然后就是进行一系列的高级测试。必须测试在需求分析阶段确认下来的确认标准,确认测试是对软件满足预期所有功能和行为的保障。在确认测试的阶段,只使用黑盒测试技术。5.2测试原理我们学过的软件系统测试的方法中,比较好用的方法就是黑盒测试和白盒测试。下面就简单的介绍一下黑盒测试和白盒测试的基本概念。黑盒测试:在测试的过程中,把程序看成一个黑盒子,测试人员完全不考虑程序部结构和处理过程的情况下,也就是说,黑盒测试是对于程序的接口进行测试,只检测程序的功能是否都是按照规格说明书规格进行正常使用,程序是否能正确的接收输入数据产生输出信息,还要保证外部信息,文件或者数据库的完整性。黑盒测试着眼于程序外部结构,而不考虑部逻辑,所以黑盒测试又叫功能测试或者是数据驱动测试。白盒测试:这个测试和黑盒测试的方法是相反的。这种方法好比是把测试程序一个透明的白盒子里,也可以说是完全了解程序的部结构和处理的过程,是对软件的过程性细节进行检查和修改。它要求测试人
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗设备开发采购合同范例
- 上海房产抵押合同范例
- 占补项目合同范例
- 人工聘请合同范例
- 发包搬运劳务合同范例
- 医院健康服务合同范例
- 保镖雇佣合同范例
- 加盟品牌解约合同范例
- 书籍赠予合同范例
- 劳动合同范例纠错
- 商务咨询费合同范本与商务外贸合同范本6篇
- 2025届泉州市高三语文三检作文题目解析及相关范文:光靠理性还不足以解决我们社会生活的问题
- 2025年道路运输企业主要负责人安全考试练习题(100题)含答案
- 湖北咸宁咸安区招引硕士、博士研究生人才41人高频重点模拟试卷提升(共500题附带答案详解)
- 1、工贸行业重大事故隐患重点排查事项清单
- 2025年青岛平度市人民检察院招考编外书记员高频重点模拟试卷提升(共500题附带答案详解)
- 中小学学三年发展规划(2025-2028)
- 超全自考英语二词汇表-含音标4500-个单词
- 电梯日管控、周排查、月调度内容表格
- 课件:《中华民族共同体概论》第一讲 中华民族共同体基础理论
- 湖南财政经济学院专升本英语真题及答案解析
评论
0/150
提交评论