河北地质大学本科生毕业设计
第3章 电子菜单app需求分析
根据第一章所定义的课题研究方向及目标,本章将对系统功能进行具体的需求分析,具体分析电子菜单app所要实现的功能以及欲达到的效果,具体内容如下章节:
3.1 电子菜单app的可行性分析
1.使用objective-C编程技术
Objective-C是非常实际的语言,他是一个用C写成、很小的运行库,只会令程序的尺寸增加很小,和大部分oo系统使用极大的vm执行时间会取代整个系统运作相反,Objective-C写的程序通常不会比起原始代码大很多,而其函数库亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反,因objective-C它完全兼容标准C语言,C语言具有的高效性也被objective-C继承,但是我们用的objective-C并不像C语言用起来那么的复杂,因为它是对C的封装,把复杂高效的语言变得简单高效,这样更利于iOS开发者使用,也为iOS开发者带来了便捷。 (1)动态绑定
函数和消息的最根本不同是:函数和它的参数是在编译的时候已经确定下来,但是消息和接收对象知道程序已经在运行,消息在传递时才能确定下来。确切的消息方法实现依赖于消息的接收者,不同的接收者可能有相同的方法名不同的方法实现,只有在消息接收时才能确定(动态类型),通过源代码的类型定义并不能完全确认接收者的类型。运行时消息例程查找接收者和消息方法,找到消息方法实现的机器码,呼叫这个方法,传递给它消息实例变量指针 (2)多态性
在Objective-C中消息的调用看上去和标准C中的函数调用相似,但因为方法属于一个对象,消息的行为与函数调用还是不同。在一些情况下,一些对象仅能对针对它涉及的方法起作用,不能被其他类的方法使用,即使这些类有同样名称的方法。这意味着两个对象对同样的消息有着不同的响应,即多态性。Objective-C中多态性和动态绑定配合使用,可以使代码提供给任意数量不同类型的对象使用,这些对象不需要再写代码的时候就已经定义好,它们可以是以后开发的对象,也可以是其他项目的对象。 (3)面向对象
面向对象程序构建在多种对象之上,基于Cocoa框架的程序可能使用NSMatrix对象、NSWindow对象、NSDirectonary对象、NSFont对象以及许多其它对象。在Objective-C中通过定义类来定义对象。面向对象让开发者更容易开发应用程序软件,以及更加规范化。 (4)继承性
类的定义是累进的,任一个新类都是在另一个类的基础上定义的,新类继承了它的方法和实例变量。继承使所有的类构成一颗树形的结构,在Objective-C中使用类一般要继承或间接继承于基类:NSObject,因为NSObject提供了大量的有用特性。比如,一些图形类,需要继承于Shape类,而Shape是Graphic类的子类,Graphic又继承于NSObject类,因此,还是间接继承于NSObject类。类的继承关系图3-1所示:
8
河北地质大学本科生毕业设计
图3-1 Objective-C类继承图
在项目中NSObject集合了所有类的基本方法,所有的=类都继承或者间接继承NSObject。
2.社会市场因素可行性
伴随着餐饮行业的快速发展,菜单也发生了重大演变,从挂牌菜单、华丽纸质菜单到点菜宝的兴起,再到电子菜单的横空出世,无一不体现着餐饮业及消费者对点菜方式的重视。基于平板电脑的电子菜单因良好的客户体验、更新及时、信息容量大等优势成为了餐饮界的新一代宠儿。
按照目前市场情形,越来越多的移动开发者涌进iOS开发领域。iOS平台上应用软件,App Store的支付模式更为成熟而且有监管,另外iOS的兼容性问题小,开发人员不用考虑太多的配置兼容问题,美观大方的外形,更是吸引了大量的用户。而且其良好的用户体验,都为iOS的发展奠定了良好的基础。 3.硬件工具可行性
使用工具方面,开发工具iOS xcode5.0版本,要求Mac10.8操作系统,一台已经安装有所有必备的软件及相应软件设备的计算机;内存要求大于或等于2G。
3.2 电子菜单app功能需求分析
电子菜单app,设计大致划分为5个主要模块,包括历史菜单、菜品介绍、我的菜单、餐位选择和提交订单。每个模块各司其职,在整个工程中又到了MVC模式,单例模式,通知模式,使每个功能模块化,各模块之间的耦合度降到最低,有利于后期代码的维护,模块化的设计也使得app看起来更有条理性,下面就是对模块化的图文解释,具体如图3-2-1:
9
河北地质大学本科生毕业设计
图3-2-1 模块展示
此图清晰的展示了app的功能模块之间的跳转交互,app的重点在于展示菜品的图片和介绍,以及用户点餐并提交订单等功能。历史菜单可以向用户展示已有的数据,提供借鉴和参考。根据不同的菜系,选择不同系列的菜品,点菜后会在我的菜单向用户展示已经点好的菜品,选择餐位后即可提交订单,等待上菜。 1.app登陆功能需求
为了避免用户注册登陆的繁琐操作,此项目弱化了用户的注册登陆部分,采用按钮点击事件直接登陆,或者可以联网,通过web页加载本餐厅的介绍。 2.app历史菜单功能需求
应用历史菜单的展示有一个表格控制器UITableView来进行展示数据内容,由xib可视化编程和代码两者结合实现,可以展示历史日期、时间和桌号等内容,还包括删除和查询按钮。
3.app历史菜单详情功能需求
历史菜单详情是由历史菜单中点击查询按钮,模态弹出一个窗口,通过前一个界面向后传值,以这个值为索引,从数据库中取出相应的数据,保存到数组中,再通过UITableView展示到界面上来。
4.app菜品介绍功能需求
根据不同的菜系选择,通过UITableView展示不同的菜品分类和名称,通过
UIScrollerView展示对应菜品的图片,通过UILable向用户展示已经点了多少种菜,界面布局还包括点菜按钮、详情按钮和我的菜单按钮。默认选择的是主厨推荐对应的菜品。 5.app我的菜单功能需求
在菜品介绍界面可以通过点击点菜按钮把用户点击的菜品数据加到数据库中,再在我的菜单界面通过UITableView进行信息展示。包括序号、菜名、单价、种类、份数、备注以及参考价格,其中份数和备注可以用户手动修改或添加。点击右下角的送单按钮,会模态弹出送单界面。 6.app送单功能需求
送单界面通过四个UITextField和两个UIButton布局,其中用餐人数、VIP号、工号和密码是UITextField,可以输入文字(或者不输入,这部分弱化,主要体现功能)。餐位选择按钮,其点击事件会触发模态弹出餐位选择界面。点击送单按钮,会判断是否已经
10
河北地质大学本科生毕业设计
选择餐位,如果已经选好,便立即送单,否则会弹出UIAlertView,提示用户进行餐位选择。
7.app餐位选择功能需求
在餐位选择界面是本餐厅的俯视缩略图,显示每个房间的位置以及名称。在相应位置布局UIButton,当触发点击事件时,一方面模态弹回该界面,另一方面发出通知,通知送单界面在餐位选择按钮处显示刚刚点击的房间名称。
11
河北地质大学本科生毕业设计
第4章 电子菜单app设计
系统设计阶段主要的任务是系统各个模块的具体设计与实现。
4.1 辅助功能设计
4.1.1 数据库操作功能
在本项目中数据的获取和保存都是基于对数据库的操作,为了降低类之间的耦合度,便于代码为维护和修改,将对数据库的增删改查操作封装到一个继承于NSObject的名为DataBaseTool 类中,定义为类方法,以便通过类名调用方法。
在DataBaseTool.h中声明加号方法,在其他类中需要使用数据库时,才可以调用相应的方法,代码详情见附录A。
在DataBaseTool.m中是以上方法的具体实现,借助第三方库FMDB对数据库进行操作,代码详情见附录B。
4.1.2 跳转动画功能
项目中界面间的切换主要用到的是模态弹出和切换根视图控制器两种方法,因为使用频率很高,所以将视图切换的方法封装,使用时传入要切换的试图控制器减少代码量。另外使用列表控制器UITableView时,有一些界面需要cell的点击事件中让cell做UIView动画,因此将该方法也封装。代码详情见附录C。
4.2 模块功能设计
下面以具体的效果来展示各个功能模块。
4.2.1 登陆和语言选择模块
登陆和语言选择模块在创建视图控制器时使用了xib拖拽控价,因此相对简单,代码量少。运行效果图如下4.2.1-1, 4.2.1-2所示。
图4.2.1-1 登陆界面
12