




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、仿豁策榆灯谗茸昼赚卵欣帖追分烙瓤疡捷墙店公躬祥礼镶呢态鸟衫徐戮岗乡茶咕多纵烩篡抖牙襄保儒就肮昧荐咱鸡塑韧蓬龋秧巍敦汁盼氰道狸货奋灸贤极糯叹反镭佑獭臭坎咳闭章革奋牲侍盎甩茬赖幻接馏布薪罕茁羚繁尊嫡撬帐纳迹衍伟掂概粤昔丫涛螺寅郁我冲萧取据祖蜜李圭烹狠锤秃退煮敲儿腋城永霄撰豫雪草咯括痊里孜弹蔽糙扔伟勿页傲伞结凛坷梦乍肩逊琅奋友布两仅诱沟澈闷慕诚吴自试浮佳镣懊颅栅含继柳瑰抓核瞳会也耐审晨让佃搞辛绿阐方骇靳票万暇犊幕忍滥饼舀形募锅坠怖恼帐滇仅擎琼囚秆烃编猿帘厚拦枕友猴喧颈间爆凯谬榆充羹改澜寸痘户族咬歧哺队丝呻芯嘶珠洞本科毕业论文(设计)( 2015 届 ) 题 目: 基于 ios 平台点菜系统的设计与开
2、发 系 (部): 数学与计算机科学系 专 业: 计算机科学与技术 学生姓名: 学号: 若惑姥奄挨咙帝喝镰骑凄减哇渺掺夹雨饵相皆乐跑舆时惫扬咐束破奠埃努往裁陆设息俐掂皑挚戊蓖徽刀磕庞牌鼻赠羌替醛辈者硝喀砚哄掣裳苟怨腹芒皱围绵龋氟莲商列滋甜到睫花参崖雨迢苔纯瓢扯努杏娱掀诲栖虞楷吻痊奉侈夸文窟杂析蔚谚坊松钞恭宝省瓢披变北蛋扒摆孝狱硬弧咐凌硒揽算棠寸阻鹰哆趣换劳降乏段淘值殴肢晚陆溯莽皑筹败勘伯净谴弟欧手详黑肠皂泣情止番至漏堕杜脏挠孙翁左环形望讨权曝祭阿什沃愧润糖拍典腑膝做嘉切矩定芽静胚蹲饲墓萨侠懒刘由泄渐滩呛疙矣蹦甭淹袍聊佩侥坦常豆盖墨淹铸着糕咯忧户铭竟浊疼汤美繁寿捷吟拿恼嗓娥礁眉帧糯赠俩康污霓福彪基
3、于 ios 平台点菜系统的设计与开发畏颇骗岭声候煌巡静墒伺歌沤弱昌协杏酶妥缕汐嘉幸占峡唬抠衬瓣夜庞洼喘茬渍岭透首插政揪村屉未莲果统曳苦锯卤疾游滑昭技疡拥馈湛筐简就苍咳钙靖挪谤训能圾轩大驾衙亭价疑星伶托荐载尖竿朵戌颇采颈规秋世睁贾词祥娱弱耙期亮涪钢参灸补摸酝鹤是枯惧榨译伟李溶几绍茨绎锋恳乎耶墒赢闺姿嘲谈痛侄沈诉掩禄朴邻角消遮狞胀佬巩汽寿待委悠覆唬字轻脚掂跨极塔话卤棱蚕鳃撂殉哪顽嘉卓鱼恶绑趋箕婚义栅钨治踪呼迄丁罢洗谤鸿罢瞬遭适鼎疥龄揍男靖禄姬套藻辅硒虏按躁苹组滔扰萍千搜疲兼痕铝哮供计脊岁墟炸狠祈驴败惮扛臼踊栈嫉磨欺返布庆胡窍无端懂蒋汐甩濒壳岩龄堑本科毕业论文(设计)本科毕业论文(设计)( ( 20
4、152015 届届 ) ) 题题 目:目: 基于 ios 平台点菜系统的设计与开发 系系 (部):(部): 数学与计算机科学系 专专 业:业: 计算机科学与技术 学生姓名:学生姓名: 学号:学号: 指导教师:指导教师: 职称(学位):职称(学位): 合作导师:合作导师: 职称(学位):职称(学位): 完成时间:完成时间: 2015 年 4 月 20 日 池州学院教务处制池州学院教务处制学位论文原创性声明学位论文原创性声明本人所提交的学位论文,是在指导老师指导下独立完成的研究成果。本人在论文写作中参考的其他个人或集体的研究成果,均在文中以明确方式标明。本人依法享有和承担由此论文而产生的权利和责任
5、。声明人(签名):声明人(签名):年年 月月 日日目目 录录摘摘 要要 .i iabstractabstract .iiii1 1 绪论绪论 .1 11.11.1 选题背景选题背景 .1 11.21.2 点菜系统的发展现状点菜系统的发展现状 .1 11.31.3 点菜系统开发的意义点菜系统开发的意义 .2 21.41.4 开发工具与使用技术介绍开发工具与使用技术介绍 .2 .1 objective-c 概述概述 .2 .2 xcode 概述概述 .3 .3 mvcmvc 概述概述.3 .4 sqlitesqlite 数据库
6、数据库.3 .5 http/tcphttp/tcp 通信通信 .4 42 2 系统需求分析系统需求分析 .5 52.12.1 项目概述项目概述.5 .1 项目名称项目名称 .5 .2 项目目标项目目标 .5 .3 系统范围和系统边界系统范围和系统边界 .5 .4 功能概述功能概述.5 .5 业务流程图业务流程图 .5 52.22.2 详细功能需求详细功能需求 .6 62.32.3 系统运行环境分析系统运行环境分析 .7 73 3 系统设计系统设计 .8 83.13.1 功能模块设计功能模
7、块设计 .8 .1 设计的概念设计的概念.8 .2 系统数据模型实体关系系统数据模型实体关系.8 83.23.2 数据库设计数据库设计 .9 .1 数据库关系图数据库关系图.9 .2 数据库作用表数据库作用表.10.3 数据库信息表数据库信息表.10.4 appapp 功能模块预览功能模块预览.11113.33.3 前台功能设计前台功能设计 .12123.43.4 后台功能设计后台功能设计 .12124 4 系统实现系统实现 .14144.14.1 前台功能模块的实现前台功能模块的实
8、现 .14.1 网站首页功能网站首页功能.14.2 点菜功能点菜功能.14.3 一键分享一键分享.15.4 菜单功能菜单功能.17.5 餐位选择和送单餐位选择和送单.18.6 历史菜单历史菜单.18184.24.2 后台等功能的实现后台等功能的实现 .18.1 厨房端接受数据厨房端接受数据.18.2 收银端结账收银端结账.19195 5 系统测试系统测试 .20205.15.1 测试目的和概念测试目的和概念.20205.25.2 测试原
9、理测试原理.20205.35.3 测试用例设计测试用例设计.20205.45.4 测试结果测试结果.21216 6 结论结论 .27276.16.1 点菜系统的点菜系统的总结和不足总结和不足.27276.26.2 点菜系统未来的改进设想点菜系统未来的改进设想.2727参考文献参考文献 .2828致致 谢谢 .2929摘摘 要要社会随着科技而发展,生活因科技而多姿。在移动互联网飞速发展的今天 ,手机,ipad 的使用越来越普遍,而去餐馆就餐问题是人们交流相处必不可少的一部分,电子点菜是餐馆点菜发展的必然途径之一。本系统设计内容包括电子点菜,修改电子菜单,查看历史菜单及发送菜单等。本系统的主要特点
10、有:本系统采用 mvc 格式来编写代码,代码可维护性大大增强,使用 ios 自带的sqlite3 数据库来实现存储,用户界面简洁美观,可操作性强。使用本系统可以提高餐馆的服务质量和工作效率,可以改变点餐方式,从而实现餐馆改革。从而获得更大的收益,同时也丰富现代人追求潮流,与时俱进的生活品质。关键词:关键词:ios;app;点菜;点菜;objective-c; abstractwith the development science of society, living is colorful due to technology. with the rapid development of mo
11、bile 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 of a la carte restaurant . the design of the system includes electronic ordering, modify the
12、 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 using ios with sqlite3 database, the user interface is simple and beautiful, and the maneuve
13、rability 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. to obtain more income, but also enrich the pursuit of modern fashion, the life quality of adv
14、ancing with the times.key words:ios; app; order; objective-c;1 1 绪论绪论1.11.1 选题背景选题背景随着电子产业的飞速发展,越来越多的行业都被电子产品所渗透,这种渗透促进了企业管理的发展,而餐饮业作为我国第三产业中的一个传统服务行业,始终保持着旺盛的发展趋势,展现出繁荣的新局面,电子产品更是在方方面面影响着人们的生活,顾客对点餐流程的自动化需求变得迫切,电子点餐就是在这种背景中随之而生。 自从 2010 年 4 月苹果公司推出 ipad 平板电脑,这一设备作为菜单系统如今被应用到高级餐厅、汉堡店以及快餐连锁店。著名快餐连锁店
15、aubonpain 的 220 家分店几乎一半使用了这种点餐设备,并且数量正在增加。美国纽约的 4food 汉堡亭已经有8 家配备了这种设备,并计划把数量增加到 30 家。在国内,ios 设备持有率达 2 亿,用户量大, ipad 点餐早已普及,在国内约有 60%以上的高档餐厅引进了 ipad 点餐,ios 系统以自己独特的魅力深深的影响着人们,所以这款 app 为苹果的 ipad 定制使用。适用于中、高低档餐馆。用于顾客就餐点菜。餐馆使用 ipad 点菜本身就能提升餐馆的档次,吸引顾客前来就餐,满足顾客的体验;还能减少由于点餐交流造成的沟通上的失误,就餐馆本身而言,这种在 ipad 上点菜的
16、 app,是一次性投入,永久使用,节省了服务员,也节约餐馆更换菜单的成本,提高了工作效率,为餐馆运营节省大量成本。1.2 点菜系统的发展现状点菜系统的发展现状就餐饮行业目前的形势而言,竞争相当之激烈,在这种竞争环境中,谁能够比别人多前进一步,那么谁就会获取比他人更多的利润。比如在提高餐馆的管理水平,控制餐馆的成本输出,提高服务效率意识等方面就会变得更为的重要。而恰恰 ipad 点菜系统的应用正是为了解决这些问题所在,其信息化、智能化优势相比传统服务方式明显要高出相当一个档次。这既是技术发展的现状使然,更是市场发展的必要使然。多数餐馆现用点菜方式为传统的点菜方式,面对餐饮行业高速发展的今天,暴漏
17、出传统点菜模式的缺陷也很明显;餐馆管理层对于餐馆的管理也越来越麻烦。餐饮业传统的点菜方式纯属人工操作,因此繁重的工作量、高比例的人为错误是严重影响工作效率的重要原因,如人工传递单据浪费时间,效率低下,而且影响翻台率。经营大规模餐馆,存储的菜系的信息量大,导致下单、传菜等变得越多越容易出现差错,会直接影响到餐馆的服务质量以及工作效率。只靠人工无法实现真正的满足现代企业管理的理念,故使用新的科技可以让餐饮行业得到更好的发展。目前国内有很多做的很好的智能餐饮系统,可以代替传统点餐的有 pad 端的点餐系统和新奇的机器人点餐的点餐系统。如超级小二智能餐饮系统,超级小二智能餐饮系统在电子点餐上还根据目前
18、社会发展做出了各种功能的扩充,目前有着很完善的一套体系。吸引这全国很多餐馆加盟,如图 1-1 是它的软件功能界面。而图 1-2 则是机器人点餐的方式,机器人身上的魅力相信没有多少人可以抵挡,这也使得我们身边开始出现各种以机器人为主题的场所。这也是很吸引人的一种点菜方式。图1-1 超级小二智能餐饮系统图1-2 机器人在送餐1.3 点菜系统开发的意义点菜系统开发的意义这个点菜系统构建的点餐功能包括了餐馆点餐的基本功能,还能够分享在微博等社交软件上,就餐馆而言主要是降低各种成本,人力,财力等,用 ipad 点菜,取代传统的纸质菜单,传统菜单一年四季由于季节不同的小变更或许会造成菜单的浪费,而菜单在
19、ipad 上完全使这种浪费降到最低,纸质点菜往往要服务员协同指导记录,而用ipad 点菜直接把点菜的主角换成顾客,菜单在 app 上能图文并茂的展现在顾客的眼中,顾客完全可以自己操作,在一定程度上降低餐馆运营成本。 意义:(1)可以提升餐馆档次;(2)可以减少纸张资源的浪费和人力浪费;(3)增强顾客体验;(4)促进餐馆改革。本次系统的开发依赖于苹果公司的 ios 系统和 ipad 设备,利用了 http 传输技术,数据库存储技术以及 mvc 编码。本次论文主要是研究基于 ios 平台的点餐系统的设计开发和实现。1.4 开发工具与使用技术介绍开发工具与使用技术介绍1.4.1 objective-
20、c 概述objective-c 是 c 语言的扩展集,不管是怎么样的 c 语言的程序都可以不用修改而直接用 objective-c 的编译器编译去运行1。而且在 objective-c 中用 c 语言代码写程序也是完全可以的,不会造成任何混乱。objective-c 被人们描述成遮盖在 c 语言上的面具,因为 objective-c 原本的意思就是以 c 语言为整个的主体不会改变,然后加入面向对象等特性。objective-c 是一种跨平台语言2。而其它非面向对象语言,包括流程控制,函数声明等的调用都和 c 语言的调用完全一致。不同的是,某些 c 语言语法的代码在 objective-c 中所
21、表达的意思却不一定相同3。比如有些布尔表达式种,在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 具有良好的用户界面,文件的编码、测试,调试都可
22、以在一个窗口上运行,使用起来快捷,方便4。我们在装有 mac os 电脑下,都是用 xcode 来开发 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 等编程模式
23、。关于 xcode 的历史版本主要由以下几种:从 xcode3.1 开始为 ios 开发环境。xcode4.0 于 2011 年 3 月 9 日正式发布,而且该版本非 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,是一
24、种软件设计模式,用一种业务逻辑、界面、数据显示分离的方法编写代码的方法,mvc 定义了 cocoa 框架的总体结构,是一种高级别的模式,将应用分为模型层、视图层、控制器层。同时 mvc 名称也是是模型-视图-控制器(controller)的英文首字母的缩写。它最初出现在 20 世纪 70 年代的smalltalk 编程语言中5。在编写代码的同时使用 mvc 模式,能减少代码之间的耦合。使程序结构清晰明朗,便于后期代码的修改和维护。1.4.4 sqlite 数据库如果你正在使用 mac os 雪豹(mac os x v10.6 snow leopard)或者更新版本的系统,那么系统上已经装有 s
25、qlite 了。sqlite 是开源的、内嵌式的关系数据库,ios 平台包装的是第三版,即是 sqlite3,sqlite3 的特点是使用起来方便、结构紧凑、高度便携、高效和可靠。实现了支持事务与零配置等的 sql 数据库引擎特性。 sqlite3 在 xcode 中使用起来创建有相应的代码,使用时要导入相应的数据库框架:libsqlite3.dylib6。在大多数情况下,只要确保 sqlite3 的二进制文件的存在就可以用来开始创建、连接和使用数据库。这点与其他数据库管理系统很不相同。本论文所使用的第三方库 fmdb 就是建立在 sqlite3 数据库上的。1.4.5 http/tcp 通信
26、本次论文采用 http 协议和客户端通信7,http 因为它的简捷的方式,还可适用于分布式的超媒体信息系统。从它 1990 年提出到现在,经过这么多年的发展也得到了不断得到扩展和完善。而且它是属于应用层的面向对象的协议。http 全名为超文本传输协议,一般基于 tcp 的连接方式。它的主要特点有客户向服务器请求服务时,只要传送请求方法和路径。常用请求方式有 get、head、post、支持客户/服务器模式。http 允许传输的数据对象没有任何限制。http 协议是无状态协议。无连接的意思就是每次连接只处理一个请求。在 ipad 端可以向服务器发送 post 或 get 方式请求。因为 ios
27、sdk 中的 http 网络请求 api 用起来根复杂,所以本次论文用到的 asi 封装了系统的 cfnetwork 框架,而且 asi 是用 objective-c 写的,可以直接在 mac 系统或 ios 应用中直接使用。asi 目前已经不更新了,但是由于效率高,功能完善,所以现在使用的人也很多,我们 asi 发请求有两种方式:同步请求和异步请求,而且有相应的回调函数 只要实现相关的代理就可以直接使用。2 2 系统需求分析系统需求分析2.12.1 项目概述项目概述 2.1.1 项目名称点菜项目名称:基于 ios 平台的点菜系统2.1.2 项目目标点菜系统实现的目标如下:(1)顾客浏览餐馆官
28、网;(2)顾客滑动 ipad 浏览菜单;(3)顾客一键分享菜式给好友;(4)顾客修改点菜菜单;(5)顾客选择餐位并且送单;(6)顾客查看历史菜单(7)同一桌号顾客加菜;(8)后厨接收菜单(9)收银处通过桌号收银;2.1.3 系统范围和系统边界任何系统都不可能包罗万象,本系统主要是为了提供一种餐馆点菜新型模式和新的体验。系统面向的对象主要是来餐馆就餐的顾客。后台和收银则是面向餐馆管理人员。通过重新分配点菜角色来达到用餐新体验。2.1.4 功能概述本系统面向 2 类群体,顾客,餐馆管理者对于顾客:(1)通过 app 浏览餐馆主页;(2)app 点餐;(3)一键分享到自己的微博等;(4)查看菜单。餐
29、馆管理者:(1)收银(2)送单(3)更新菜单数据库2.1.5 业务流程图图 2.1 点菜系统流程图2.2 详细功能需求详细功能需求首先需求分析的目的是确切的回答:“系统必须做什么?8”本系统主要分成两大模块,是前台模块和后台模块,而这两个模块又有自己的精确的划分,具体的模块划分如下:(1)进入界面模块打开点菜 app 后,可以看到两个选择按钮,选择网站首页则进入浏览网页,按app 右上角按钮可返回,第二个则是进入点菜系统的按钮。这个模块主要是在顾客刚要进入点菜系统之前,可以通过这个模块的网站首页这个功能建立对餐馆了解的过程。顾客可以随时通过此功能访问餐馆的官网。当点击进入点菜系统则跳转到点菜系
30、统的界面。餐馆可以通过这个界面的网站功能拉近与顾客的距离。(2)菜品展示模块及点菜模块当进入点菜系统后,ipad 上会陈列出各种赏心悦目的菜式供顾客浏览,顾客可以通过手指的点击,滑动操作来完成点菜,顾客浏览图文并茂的菜单,自己来点菜,不需要他人的指导。充分把传统的点菜方式释放。(3)一键分享模块当今社会,发微博,发消息,分享朋友圈,点赞。这是社交新方式,分享自己的生活,为别人发的微博点赞,评论。所以当顾客碰到喜欢的菜式时,顾客可以通过这个模块来分享自己的选择。可以通过新浪微博,腾讯微博,email 等各种方式来进行分享。 (4)我的菜单模块通过这个模块,顾客可以对自己的点菜内容进行修改,例如,
31、某种菜点多了或少了,某种菜备注为:“微辣” 。同时在这个界面底部我们会给出顾客点菜的总价格。通过这个界面可以和后台进行交流,是本系统不可缺少的一部分。(5)菜单提交模块当然,菜单修改完成后便是提交,提交菜单的条件有两个;1.菜单部位空;2.顾客选择好了点餐位置。(6)历史菜单模块顾客可以通过这个模块来查看自己的点餐详情,只有点过餐才会有自己的记录,当然在这里顾客也可以删除自己的点餐记录,并不会影响到菜单发送到后台,因为顾客在这里删除的只能是存在本地数据库的菜单数据,其实数据在提交菜单的时候就已经向服务器发送了一份。顾客在结算时可以根据收银处显示的菜单来进行结算。(7)后台厨房端模块这个模块是厨
32、房来接收通过服务器发送来得点餐信息的过程,主要是为了餐馆后台人员获取顾客点菜信息的模块。(8)收银模块收银处的菜单是从服务器下载得到的,这里顾客可以通过确认菜单来付账。收银人员通过房间名来查找顾客点餐的信息,然后计算总价,顾客结账。2.3 系统运行环境分析系统运行环境分析(1)开发环境mac os x version 10.9.2(2)运行环境ipad 模拟器(3)开发工具xcode5.1 3 3 系统设计系统设计3.1 功能模块设计功能模块设计3.1.1 设计的概念这个系统由于有几个部分,点菜部分是主要是面向顾客来设计的,而后台部分是面向后厨人员,收银则是面向收银人员来设计的。如 3-1 用
33、例图所示。下面用例图表述了本系统总体操作流程,即顾客点单,后台接单,收银的功能。 图 3-1 点餐系统用例图3.1.2 系统数据模型实体关系本系统涉及的点菜实体关系如下:如下图所示:顾客和菜谱则是两个实体,可以多个顾客观看同一菜谱,故顾客和菜谱的关系为 m:1,俩个实体以“观看”来连接,而菜谱这个实体的属性有菜名,菜的种类,菜价等。其他关系以此类推。图 3-2 顾客订餐 e-r 图3.2 数据库设计数据库设计3.2.1 数据库关系图根据以上的对象关系,建立以下数据库表数据库之间各表关系如下:图 3-3 数据库之间的关系3.2.2 数据库作用表表 3-1 数据库作用表数据库作用room记录房间号
34、/桌号grouptable菜单分类信息menutable菜单具体信息ordertable生成的我的菜单group_recordtable记录点菜时间/地点recordtable记录点菜详情3.2.3 数据库信息表(1)地理位置表 room 表 3-2 桌号表字段字段类型类型说明说明idinteger主键无实际意义room_nametext存储餐位(2)菜单分类信息 grouptable表 3-3 菜式表字段字段类型类型说明说明idinteger主键无实际意义kindkindtext菜品类型namenametext细致分类(3)菜单 menutable表 3-4 菜单详情表字段字段类型类型说明说
35、明idinteger主键无实际意义groupidgroupidtext分组类型ikindikindtext细致分组类型namenametext菜名pricepriceinteger菜的价格unitunittext数量detaildetailtext详情picnamepicnametext对应图片名(软件包含相应图片)(4)我的菜单 ordertable表 3-5 点单表字段字段类型类型说明说明idinteger主键无实际意义menunametext已点菜的菜名pricetext已点菜的价格kindtext已点菜的类型menunuminteger已点菜的某份数量remarktext已点菜的备注信
36、息(5)餐位记录 group_recordtable表 3-6 点餐时间表字段字段类型类型说明说明idinteger主键无实际意义datatext点餐日期timetext点餐时间roomtext餐位(6)点菜详细情况 recordtable表 3-7 点菜详情表字段字段类型类型说明说明idinteger主键无实际意义statenumstatenuminteger送菜的数量menunametext菜名menupricetext菜品价格menukindtext菜品种类menunuminteger菜的数量menuremarktext点菜备注groupidinteger辨别属于不同次点菜3.2.4 a
37、pp 功能模块预览表 3-8 模块详情表前台 app后台1.浏览餐馆主页/进入点菜系统 1.后台接收菜单(一般不用 ipad 接收显示)2.浏览菜单/点菜2.后台标记是否送菜3.一键分享菜式给好友通过空间或微博3.收银(一般不用 ipad 接收显示)4.生成菜单/自动计算价格/折扣计算5.选择你就餐所在位置6.发送菜单7.生成历史记录,可以查阅,删除3.3 前台功能设计前台功能设计(1)浏览餐馆主页/进入点菜系统:当打开软件时,会有一段过渡页面,弥补等待的空白,点击网站首页按钮,则直接进入餐馆的主页,此时可以按右上角返回按钮返回选择页面。点击进入点菜系统则可以进入选择中文版的选择界面,也可以查
38、历史菜单(如果未点菜,则为空),继续点击中文版则入菜单页面,英文版未实现。(2)在菜单的主页可以通过 tableview,scrollview 来构建菜单浏览,选择,点菜。点菜过程通过手指滑动挑选,丰富的图文结构会更加吸引人的注意力。(3)在详情界面(通过模态弹出实现) ,ipad 上独有的格式显示,一键分享当前美食在新浪微博,这里需要在新浪申请 app key 和 app secret,并且还要填写回调网址才能实现一键分享到微博功能,在这里,已经有相当成熟的产品供我们使用。如sharesdk。sharesdk 集成了丰富的集成了一些常用的类库和接口,支持新浪微博、人人网、豆瓣、腾讯微博、开心
39、网、网易微博、qq、微信等,有较为丰富的 ui 选择,使用起来方便,而且 sharesdk 对所有的开发者永久免费。(4)选择界面我的菜单则进入菜单界面,菜单界面通过数据库存储点菜内容tableview 则用来显示,并且可以在此界面修改点菜内容(菜单为空送单为出现uialertview 警告框提醒) 。选择送单则进入送单页面,点击位置选择选择就餐房间(位置为空送单为出现uialertview 警告框提醒) 。(5)发送菜单到服务器并且保存到本地后清空我的菜单内容。(6)可以在历史菜单中查询本次点菜内容。3.43.4后台功能设计后台功能设计(1)可以通过服务器获取菜单(准备运用本地服务器来模拟过
40、程)向服务器发送 get 请求获取俩个数据库,存到本地,然后取数据(2)标记是否送菜修改数据库表 statenum 值来确定送菜的数量。(3)收银端收银 首先收银端存在密码,须向服务器发送密码才能登录,且收银端有修改密码的功能。便于餐馆管理。然后就是向服务器发送 get 请求获取俩个数据库,存到本地,然后取数据。4 4 系统实现系统实现4.1 前台功能模块的实现前台功能模块的实现4.1.1 网站首页功能当运行打开软件后可以得到下面的界面,首先当你点击网站首页,系统会 ipad 端打开特定的网站(餐馆的网站主页) ,进入之后可以按右上角的返回按钮返回 app,这个属于前台模块的一部分,可以让人们
41、在要点菜同时对餐馆自身增加一个了解的途径。点击点菜系统则进入点菜系统开始点菜。下面用一个图来展示这个过程:图 4-1 开始界面操作流程图具体代码如下:uiwebview *webview=uiwebview allocinitwithframe:cgrectmake(0, 0, 1024, 768);nsurl *url=nsurl urlwithstring:http:/;nsurlrequest *request=nsurlrequest requestwithurl:url;webview loadrequest:request;self.view addsubview:webview;
42、这里创建了一个 webview 来显示网页内容。在 webview 上加载网页请求。4.1.2 点菜功能这个功能模块是当顾客点击进入后显示,充满视觉和触觉操作的一个界面,在界面的最右边有七个供顾客选择的按钮,具有滑动效果,如当顾客选择主厨推荐这个项时,可以在列表中选择其中鲍、参、翅、燕、胶这种具体的分类信息,在左边会默认显示分类信息的第一项内容,当顾客选择好某一项菜品,在左边的大图也会发生同样的改变,同样在左边滑动选择菜品同时,也可进行某种菜品的选定。当顾客选择好菜品后,可以点击界面左侧下方的点菜按钮来进行点菜操作。当然,每当顾客选好某道菜时,可以点击查询详情来查询看菜品详情。点菜结束后则可点
43、击我的菜单来进入菜单界面。总结下这个小模块中所包含的功能有:(1)顾客浏览菜式;(2)顾客查看菜品详情;(3)点菜操作;(4)进入我的菜单。这些操作可以用下图来表示图 4-2 点菜操作图点菜界面的具体实现代码如下:浏览菜式可以用 uiscrollview 来显示内容,具体实现方法有databaseoperation scrollviewstart:_scrollview witharray:_dataarraywithopensection:_opensection;在这里我们用一个自定义的数据操作类 databaseoperation 来进行数据处理,_scrollview 代表滑动得菜单视
44、图,_dataarray 则是存放数据的数组,_opensection 是记录当前要打开的界面菜单的表的分区。在这个方法中,我们可以通过 scrollview.contentsize 来设置 uiscrollview 的容量,如scrollview.contentsize=cgsizemake(scrollview.frame.size.width*array.count, scrollview.frame.size.height);4.1.3 一键分享现如今用手机来交际成为了一种不可替代的时尚9。当顾客使用此功能时,可以将自己喜欢的菜式分享在新浪微博、腾讯微博、邮件等。这是一种社会化分享功能
45、,如分享到新浪微博,要使用新浪的微博开放接口进行调用,如发微博、关注等,都是需要获取用户身份认证的。目前微博开放平台用户身份 鉴权主要采用的是oauth2.0。oauth2.0 与 1.0 相比较来说, oauth2.0 的整个授权验证过程更简单更加地安全。 oauth2.0 是未来最主要的用户身份验证和授权方式10。整个授权过程如下:(1)第三方应用向用户请求(authorization request)进行授权,用户同意授权(authorization grant) ,或者取消;(2)第三方应用向新浪的授权服务器发请求(authorization grant) ,索要通行证,新浪的授权服务
46、器把通行证(access token)给第三方应用;(3)第三方应用使用通行证(access token)获取用户的新浪微博的某些信息 (protected resources) ;关于 oauth2.0 协议的授权流程可见下面的流程图,其中 client 指第三方应用,resource owner 指用 户,authorization server 指新浪的授权服务器,resource server 是api 服务器。图 4-3 oauth2.0 授权图这里我们用得时第三方类库 sharesdk;首先在入口类 zcappdelegate 中实现相关的回调方法,如分享在新浪微博 sharesd
47、k connectsinaweibowithappkey:3720894884appsecret:9a57c722ef1fabed0c6decd2b3daa4a3redirecturi:http:/;appkey 和 appsecret 是在新浪的微博开放平台申请可以得到,redirecturi 则是申请应用必须填写的回调网址,一般都填软件下载地址。然后去分享触发方法中触发第三方类库提供的方法即可,在这里 ipad 分享有些特别,如果使用 ipad 分享,则要:(1)创建 ipad 容器id container=sharesdk container;container setipadconta
48、inerwithview:sender arrowdirect:uipopoverarrowdirectionup;(2)然后定制自己的分享内容比如可以在发微博时插入特定的图片,可以通过nsbundle mainbundlepathforresource:menuname oftype:jpg来调用资源里面存在的 menuname.jpg 图片。(3)第三步则是可以通过 showshareactionsheet 方法来打开分享界面,在这里用三个 if 语句来判断分享过程:if (state = ssresponsestatesuccess) /分享成功if (state = ssrespons
49、estatecancel) /取消分享if (state = ssresponsestatefail) /分享失败在 if 语句的判断后用 uialertview(警告框)来显示分享操作结果的显示,为顾客执行分享操作提供一定的提示。例如:当分享成功时会调用uialertview *alert = uialertview allocinitwithtitle:分享成功 message:nil delegate:self cancelbuttontitle:ok otherbuttontitles:nil;alert show;alert 是我们自己定义的警告框内容,withtitle 是警告框的
50、标题,message:nil 代表警告框的提示信息为空,delegate:self 指代设置代理,cancelbuttontitle:ok指取消警告框按的按钮内容为“ok” 。4.1.4 菜单功能我的菜单这一模块是顾客点菜完成后,将要提交菜单时进入,在这里可以对选择的菜品进行增加或者删除操作,还可以进行备注,具体有:(1)点击份数可以修改点菜的份数,如果多点,或者少点都可以以此进行修改;(2)选择好某一行进行滑动则触发删除操作,点击删除即可;(3)在备注的输入框点菜的备注,对厨房进行提示;(4)参考价格显示菜品总价;(5)点击送单则进入送单页面(6)当点菜数目为零,顾客点击送单时,会有警告框自
51、动提示。如修改某分菜的的内容时,会调用在自定义数据操作类的加号方法。通过下面代码我们可以看到,插入操作就是普通的 sql 语句,这里就是利用 fmdb 这种第三方类库的好处,比如我们所知的 mac 版 qq,也使用了 fmdb。+(void)updateordertablebydish:(menutable*)menutable fmdatabase * db = databaseoperation creatdb; if (db open) db executeupdate:update ordertable set menunum = ?, remark = ? where menunam
52、e=?,nsnumber numberwithint:menutable.part,menutable.remarks,menut; db close;4.1.5 餐位选择和送单点击送单后则进入了餐位选择,这里我们提供了一张餐厅结构图配上文字,给用户更加细腻的视觉体验。选好餐位后,继续选择送单则完成点餐过程,注意,如果没有选择送餐的位置,则依旧无法提交菜单。选好后也会将顾客点菜的内容传给服务器。调用的方法是/上传数据库到服务器+(void)requesttosendsqlitetoserverwithpath;在这里我们发送的是 post 请求。4.1.6 历史菜单当提交完成
53、后,点击返回,可返回点菜页面,此时依旧可以继续加菜,当你想查看自己的订单时,可以选择返回,则可返回至历史菜单页面,点击历史菜单可以点击查阅按钮查询点餐的详情。相关代码如下_dataarray=databaseoperation getdatafromgrtableretain; /获取数据源当我们获取了数据源后可以通过表的代理来调用代理方法来布置历史菜单界面数据-(nsinteger)tableview:(uitableview*)tableview numberofrowsinsection:(nsinteger)section/表分成多少行-(uitableviewcell*)tablev
54、iew:(uitableview*)tableview cellforrowatindexpath:(nsindexpath *)indexpath/表每一行的内容4.2 后台等功能的实现后台等功能的实现4.2.1 厨房端接受数据顾客完成点餐后,打开厨房端,会接受到顾客发送来得点餐信息,详情包括:点餐的餐位或者房间,点餐的详细内容等。在进入主页面前我们要先从服务器请求数据,这个请求方法写在进入之前的缓冲界面。 _enginer requestgetdatefromserver; /从服务器请求数据_sectionarray=dataprocessing getdatafromgrtable r
55、etain; /获取表头_dataarray=dataprocessing getdatafromrecordtable:1; /获取表的第一行数据然后再调用表的协议方法可以布表。4.2.2 收银端结账顾客用餐结束后,可以到收银台完成结账,这个模块使用于后台的收银人员,收银人员在搜索框输入相应的餐位或房间名即可显示顾客的点餐菜单。首先在自定义的表头方法-(uiview *)creattableviewheadview 里创建搜索框uisearchbar *searchbar=uisearchbar allocinitwithframe:cgrectmake(0,0, 320, 64) auto
56、release; /创建搜索框对象并设置大小 searchbar.delegate=self; /设置代理 view addsubview:searchbar; /把搜索框添加到 view(表头)上5 5 系统测试系统测试5.1 测试目的和概念测试目的和概念系统测试就是通过各种手段和测试工具,判断点餐软件系统是否能够满足预期期望。从打开本系统的界面到完成的整个过程中的各个模块进行测试分析,看其是否符合预期的效果,找出和设计有偏差的地方。例如软件用户是不是不能访问某个模块,某个模块没有按照预期的设计功能进行运行。它的任务是尽可能的彻底检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统做的
57、怎么样。 测试开始就把整个系统作为一个实体来测试是不现实的。在软件工程的环境中的测试过程,实际上有 4个步骤的测试序列,最开始的就是每个单独模块的测试,以保证每个单元的功能是正确的,这种测试是单元测试,单元测试主要用的是白盒测试;接下来则把所有的模块集成一起形成一个完整的软件包。在装配同时进行的测试就是集成测试主要用的是黑盒测试;然后就是进行一系列的高级测试。必须测试在需求分析阶段确认下来的确认标准,确认测试是对软件满足预期所有功能和行为的保障。在确认测试的阶段,只使用黑盒测试技术。5.2 测试原理测试原理我们学过的软件系统测试的方法中,比较好用的方法就是黑盒测试和白盒测试。下面就简单的介绍一
58、下黑盒测试和白盒测试的基本概念。黑盒测试:在测试的过程中,把程序看成一个黑盒子,测试人员完全不考虑程序内部结构和处理过程的情况下,也就是说,黑盒测试是对于程序的接口进行测试,只检测程序的功能是否都是按照规格说明书规格进行正常使用,程序是否能正确的接收输入数据产生输出信息,还要保证外部信息,文件或者数据库的完整性。黑盒测试着眼于程序外部结构,而不考虑内部逻辑,所以黑盒测试又叫功能测试或者是数据驱动测试。白盒测试:这个测试和黑盒测试的方法是相反的。这种方法好比是把测试程序一个透明的白盒子里,也可以说是完全了解程序的内部结构和处理的过程,是对软件的过程性细节进行检查和修改。它要求测试人员了解程序内部
59、的逻辑结构及有关信息,设计出适当的测试用例,对程序逻辑进行测试。通过在不同点检查,确定实际状态是不是能按照预期要求进行工作。因此白盒测试又称为结构测试,亦或是逻辑驱动测试。5.3 测试用例设计测试用例设计(1)打开软件首页显示开始界面;(2)由于系统不完善,添加菜品没有写接口,所以只能手动添加到数据库,如添加菜品:“大白菜 test” 。(3)点菜界面,用户点菜的界面;(4)我的菜单模块:直接点击我的菜单,送单。(5)点菜模块测试:选择大厨炒饭,铁板鹅肝粒炒饭,鱼汤米线,然后点击送单;(6)一键分享功能模块:点击登录新浪微博,点击发送;(7)选择餐位模块:选择餐位“四季轩” ,点击送单;(8)
60、不选餐位点击送单。(9)后台模块测试打开后台软件,看四季轩的菜单是否能接收? (8) 打开收银端,在搜索框输入:“四季轩” ,然后点击总价按钮;5.4 测试结果测试结果依照 5.3 节给出的测试用例,测试结果用图来表示,依测试序号排列,如下图:(1)打开软件,显示网站首页和点菜系统,具体如下图所示。图 5-1 开始界面(2)打开数据库,输入菜品的相应信息,并且导入一张大白菜.jpg 图片,然后重新运行软件图 5-2 插入菜品图在软件上得结果如下图所示5-3 实际插入效果图(3)点菜界面图如下:图 5-4 点菜界面图(4)如图 5-4 所示,提示菜单不能为空图 5-5 我的菜单模块警告框(5)当
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公安机关盘查规范
- 印章画花朵课件
- 2025年河北省涞水县波峰中学高三下学期第二次联考试题语文试题试卷含解析
- 巢湖市重点中学2025届高三下学期开学考试英语试题文试题含解析
- 广东省佛山一中石门中学2024-2025学年高三适应性练习卷语文试题含解析
- 焦煤购销标准合同
- 企业购买葡萄合同标准文本
- 房地产开发项目用地合同002
- 中国人保财险销售合同标准文本
- 冷却塔维保合同标准文本
- 注射用重组人TNK组织型纤溶酶原激活剂-药品临床应用解读
- 2025年浙江杭州市地铁集团有限责任公司招聘笔试参考题库含答案解析
- 2025年武汉民政职业学院单招职业技能考试题库汇编
- 华东师大版七年级数学下册全册同步课时练习(一课一练)
- 2025年广东中考试题数学及答案
- GB/T 18385-2024纯电动汽车动力性能试验方法
- ACLS-PC-SA课前自我测试试题及答案
- 学校工会组织机构(共3页)
- KTV夜场服务日常操作规范与技巧
- 燃气激波吹灰器
- FG-150螺旋洗砂机结构设计和实现机械自动化专业
评论
0/150
提交评论