基于IOS平台点菜系统的设计与开发.docx
《基于IOS平台点菜系统的设计与开发.docx》由会员分享,可在线阅读,更多相关《基于IOS平台点菜系统的设计与开发.docx(38页珍藏版)》请在冰点文库上搜索。
基于IOS平台点菜系统的设计与开发
本科毕业论文(设计)
(2015届)
题目:
基于IOS平台点菜系统的设计与开发
系(部):
数学与计算机科学系
专业:
计算机科学与技术
学生姓名:
学号:
指导教师:
职称(学位):
合作导师:
职称(学位):
完成时间:
2015年4月20日
池州学院教务处制
学位论文原创性声明
本人所提交的学位论文,是在指导老师指导下独立完成的研究成果。
本人在论文写作中参考的其他个人或集体的研究成果,均在文中以明确方式标明。
本人依法享有和承担由此论文而产生的权利和责任。
声明人(签名):
年月日
摘要
社会随着科技而发展,生活因科技而多姿。
在移动互联网飞速发展的今天,手机,iPad的使用越来越普遍,而去餐馆就餐问题是人们交流相处必不可少的一部分,电子点菜是餐馆点菜发展的必然途径之一。
本系统设计内容包括电子点菜,修改电子菜单,查看历史菜单及发送菜单等。
本系统的主要特点有:
本系统采用MVC格式来编写代码,代码可维护性大大增强,使用iOS自带的Sqlite3数据库来实现存储,用户界面简洁美观,可操作性强。
使用本系统可以提高餐馆的服务质量和工作效率,可以改变点餐方式,从而实现餐馆改革。
从而获得更大的收益,同时也丰富现代人追求潮流,与时俱进的生活品质。
关键词:
iOS;app;点菜;Objective-C;
Abstract
Withthedevelopmentscienceofsociety,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设备,利用了HTTP传输技术,数据库存储技术以及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.5HTTP/TCP通信
本次论文采用http协议和客户端通信[7],HTTP因为它的简捷的方式,还可适用于分布式的超媒体信息系统。
从它1990年提出到现在,经过这么多年的发展也得到了不断得到扩展和完善。
而且它是属于应用层的面向对象的协议。
HTTP全名为超文本传输协议,一般基于TCP的连接方式。
它的主要特点有客户向服务器请求服务时,只要传送请求方法和路径。
常用请求方式有GET、HEAD、POST、支持客户/服务器模式。
HTTP允许传输的数据对象没有任何限制。
HTTP协议是无状态协议。
无连接的意思就是每次连接只处理一个请求。
在iPad端可以向服务器发送Post或GET方式请求。
因为IOSSDK中的http网络请求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.顾客选择好了点餐位置。
(6)历史菜单模块
顾客可以通过这个模块来查看自己的点餐详情,只有点过餐才会有自己的记录,当然在这里顾客也可以删除自己的点餐记录,并不会影响到菜单发送到后台,因为顾客在这里删除的只能是存在本地数据库的菜单数据,其实数据在提交菜单的时候就已经向服务器发送了一份。
顾客在结算时可以根据收银处显示的菜单来进行结算。
(7)后台厨房端模块
这个模块是厨房来接收通过服务器发送来得点餐信息的过程,主要是为了餐馆后台人员获取顾客点菜信息的模块。
(8)收银模块
收银处的菜单是从服务器下载得到的,这里顾客可以通过确认菜单来付账。
收银人员通过房间名来查找顾客点餐的信息,然后计算总价,顾客结账。
2.3系统运行环境分析
(1)开发环境
MacOSXVersion10.9.2
(2)运行环境
iPad模拟器
(3)开发工具
Xcode5.1
3系统设计
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数据库信息表
(1)地理位置表Room
表3-2桌号表
字段
类型
说明
Id
Integer
主键无实际意义
Room_name
Text
存储餐位
(2)菜单分类信息groupTable
表3-3菜式表
字段
类型
说明
Id
Integer
主键无实际意义
kind
Text
菜品类型
name
Text
细致分类
(3)菜单menuTable
表3-4菜单详情表
字段
类型
说明
Id
Integer
主键无实际意义
groupID
Text
分组类型
iKind
Text
细致分组类型
name
Text
菜名
price
Integer
菜的价格
unit
Text
数量
detail
Text
详情
picName
Text
对应图片名(软件包含相应图片)
(4)我的菜单orderTable
表3-5点单表
字段
类型
说明
Id
Integer
主键无实际意义
menuName
Text
已点菜的菜名
Price
Text
已点菜的价格
Kind
Text
已点菜的类型
menuNum
Integer
已点菜的某份数量
remark
Text
已点菜的备注信息
(5)餐位记录group_recordTable
表3-6点餐时间表
字段
类型
说明
Id
Integer
主键无实际意义
data
Text
点餐日期
time
Text
点餐时间
room
Text
餐位
(6)点菜详细情况recordTable
表3-7点菜详情表
字段
类型
说明
Id
Integer
主键无实际意义
stateNum
Integer
送菜的数量
menuName
Text
菜名
menuPrice
Text
菜品价格
menuKind
Text
菜品种类
menuNum
Integer
菜的数量
menuRemark
Text
点菜备注
groupID
Integer
辨别属于不同次点菜
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集成了丰富的集成了一些常用的类库和接口,支持新浪微博、人人网、豆瓣、腾讯微博、开心网、网易微博、QQ、微信等,有较为丰富的UI选择,使用起来方便,而且ShareSDK对所有的开发者永久免费。
(4)选择界面我的菜单则进入菜单界面,菜单界面通过数据库存储点菜内容TableView则用来显示,并且可以在此界面修改点菜内容(菜单为空送单为出现UIAlertView警告框提醒)。
选择送单则进入送单页面,点击位置选择选择就餐房间(位置为空送单为出现UIAlertView警告框提醒)。
(5)发送菜单到服务器并且保存到本地后清空我的菜单内容。
(6)可以在历史菜单中查询本次点菜内容。
3.4后台功能设计
(1)可以通过服务器获取菜单(准备运用本地服务器来模拟过程)
向服务器发送get请求获取俩个数据库,存到本地,然后取数据
(2)标记是否送菜
修改数据库表stateNum值来确定送菜的数量。
(3)收银端收银
首先收银端存在密码,须向服务器发送密码才能登录,且收银端有修改密码的功能。
便于餐馆管理。
然后就是向服务器发送get请求获取俩个数据库,存到本地,然后取数据。
4系统实现
4.1前台功能模块的实现
4.1.1网站首页功能
当运行打开软件后可以得到下面的界面,首先当你点击网站首页,系统会iPad端打开特定的网站(餐馆的网站主页),进入之后可以按右上角的返回按钮返回app,这个属于前台模块的一部分,可以让人们在要点菜同时对餐馆自身增加一个了解的途径。
点击点菜系统则进入点菜系统开始点菜。
下面用一