《基于ios的外卖app设计与实现_王大鹏.docx》由会员分享,可在线阅读,更多相关《基于ios的外卖app设计与实现_王大鹏.docx(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、分类号: 密级: U D C: 学号: 416114514069 南 昌 大 学 专 业 学 位 研 究 生 学 位 论 文 基于 iOS的外卖 App设计与实现 Design and Implementation of Take-out Application Based on iOS 王大鹏 培养单位(院、系 ): 信息工程学院计算机系 指导教师姓名、职称:周兴斌副教授 专 业 学 位种 类 : 工 程 硕 士 专 业 领 域 名 称 : 软 件工程 论 文 答 辩 日 期 : 2016 年 5 月 21日 答辩委员会主席 : 评阅人 : 2 0 1 6 年 月 日 摘要 近年来,我国移动
2、应用产业延续了近几年来 50%地增长速度,国内的智能 移动终端设备不断涌现。与此同时,我国在线订餐市场规模未来两年内仍将保 持超过 40%左右的增速, 2016年中国餐饮行业 020市场规模有望突破 1600亿 元。数据表明,在线订餐市场处于快速增长时期,移动端的订餐方式将逐渐成 为一种饮食趋势。 i S手机操作系统具有稳定、安全和良好的用户体验,而且 iOS 应用回报率远高于 Android和 Windows Phone操作系统。因此本课题对基于 iOS 的外卖 APP的设计与实现具有较强的现实意义。 本文首先对 i S开发平台的相关技术, Native、 Web、 Hybrid三种 APP
3、开发 模式,基于 i S的 MVC开发模式, GPS、 E-OTD、 A-GPS三种移动定位技术进 行了介绍和分析。通过对三种 APP开发模式和移动定位技术的分析比对,本文 最终采用 Native的 MVC开发模式以及 A-GPS定位技术。 然后,从业务、功能和非功能三个方面对外卖客户端进行需求分析,设计 了外卖客户端的系统架构和整体流程,接着介绍了客户端商品、购物、订单、 定位、用户等功能模块,接着从动画效果、网络交互速度、内存管理三个方面 对客户端进行了优化。 最后是对外卖客户端的测试方法做出了介绍和说明,采用了单元测试、集 成测试、系统测试和网络测试方法,系统测试包括界面和性能测试 。结
4、果表明 客户端能良好的完成各个功能需求。 关键词: iOS;外卖; APP开发模式;定位技术 ABSTRACT In recent years, Chinas mobile application industry continues the growth rate of 50% in recent years, the domestic smart mobile terminal devices continue to emerge. At the same time, Chinas online ordering market within the next two years will
5、continue to maintain more than 40% of the growth, 2016 Chinas catering industry 2 market size is expected to exceed 160 billion yuan. Data show that the online ordering market in a period of rapid growth, mobile terminal ordering methods will gradually become a trend of eating. IOS mobile operating
6、system is stable and safe and has good user experience, iOS application rate of return is much higher than the Android and Windows Phone operating system. Therefore, the topic, design and implementation of take-out Application based on iOS has a strong practical significance. First of all, the iOS d
7、evelopment platform related technologies, Native, Web, Hybrid three kinds of APP development model, based on the MVC iOS development model, GPS, E-OTD, A-GPS three kinds of mobile positioning technology are introduced and analyzed in this paper. Through the analysis and comparison of three kinds of
8、APP development mode and mobile positioning technology, this paper finally uses MVC Native development model and A-GPS positioning technology. And then, it introduces the take-out client demand analysis from the business, functional and non functional three aspects, design system architecture and th
9、e overall process of the take-out client,it introduces commodity, shopping, order, positioning, users function module of the client, then from three aspects of animation, interactive network speed, memory management of the client has been optimized. Finally, it introduces and explains test method of
10、 system, this paper adopts the unit testing, integration testing, system testing and network testing method, system testing including interface and performance testing. The results show that the client can complete the functional requirements well. Key Words: iOS; Take-out; APP development mode; loc
11、ation technique 目录 m-# 弓丨 w . i i.i论文背景及意义 . 1 1.2 国内外研宄现状 . 2 1.3 本文所做的主要工作 . 3 1.4 论文组织结构 . 4 第二章相关技术介绍 . 5 2.1 开发模式 . 5 2.1.1 APP开发模式 . 5 2.1.2 基于 iOS的 MVC开发模式 . 8 2.1.3 本文采用的开发模式 . 9 2.2 iOS相关介绍 . 10 2.2.1 iOS系统框架 . 10 2.2.2 iOS内存管理机制 . 12 2.2.3 iOS多线程技术 . 13 2.2.4 Swift 语言 . 14 2.2.5 推送机制 . 14
12、2.3 定位技术介绍 . 15 2.3.1 GPS . 15 2.3.2 E-OTD . 16 2.3.3 A-GPS . 16 2.4 本章小结 . 17 第三章客户端需求分析 . 18 3.1 业务需求分析 . 18 3.2 功能性需求分析 . 18 3.3 非功能性需求分析 . 19 3.4 本章小结 . 20 第 四 章 客 户 端 设 计 与 实 现 . 2 4.1 客户端物理架构设计 . 2 4.2 iOS开发工具介绍 . 22 4.3 客户端的设计与实现 . 23 4.3.1 商品模块 . 23 4.3.2 广告活动和筛选模块 . 25 4.3.3 购物模块 . 28 4.3.4
13、 订单模块 . 33 4.3.5 搜索与定位模块 . 37 4.3.6 用户模块 . 39 4.3.7 外卖信息模块 . 42 4.4 客户端功能优化 . 42 4.5 45 第 五 章 客 户 端 测 试 . 47 5.1 单元测试 . 47 5.2 集成测试 . 47 5.3 系统测试 . 48 5.3.1 界面测试 . 48 5.3.2 性能测试 . 50 5.4 网络功能测试 . 51 5.5 本章小结 . 52 第 六 章 总 结 与 展 望 . 53 6.1 总结 . 53 6.2 廳 . 54 賴 . 55 参考文献 . 56 第一章 引言 1.1论文背景及意义 2015年,我国
14、移动应用产业延续了近几年来 50%地增长速度,特别是随着 4G网络的快速发展与普及,国内的智能移动终端设备不断涌现,移动互联网应 用产品的高速发展成为必然。另一方面,随着移动终端设备的日益普及,越来 越多的人们开始把手机融入自己的快节奏生活。同时,对于移动终端设备而言, 尤其是基于 i S操作系统的手机智能化日益进步,越来越多的应用软件也在移 动终端这个使用方便、应用广泛的平台上出现 1。根据 2014年上半年中国在 线订餐市场研宄报告的数据显示, 2013年我国在线订餐市场规模达到 502.6 亿元, 2014年上半年,餐饮团购在在线订餐市场交易额的比重超过 40%。 2015 年中国餐饮行
15、业020市场规模有望突破 1200亿元。数据表明,在线订餐市场 处于快速增长时期,伴随移动产品的爆发式增长,移动端的订餐方式将逐渐成 为一种饮食趋势。 外卖是为不方便或不愿意外出就餐的人群提供的一项服务,不方便主要是 指条件有限且外出的成本较高,而不愿意则多数是因为懒,两者的代表分别是 白领和大学生。高校市场具 有一个不可比拟的优势即学生对配送环节要求不高, 配送可以说是外卖 020最难解决的一个问题,平台难以解决,商家自配送则需 要负担额外的人力成本。在高校,一方面是人力成本低(学生可兼职 ), 而学生 又对时间不敏感,当平台带来足够订单时,商家自然还是愿意做;据品途网了 解,校园单店每天外
16、卖的订单数量为 500、 600份。与此同时,传统 020平台 遗留的诟病也在外面应用中体现,食品安全及售后服务的欠缺是现在外卖行业 最大和最难解决的问题。平台无法设立对商家的实时安全检查机制,因此,也 就无法保证众多商家的食品安全;正如 上文提到的配送问题,平台不想也无法 解决这个问题,而商家自配则需要消耗更多的人力物力。随着现在智能设备硬 件不断升级,移动应用也朝着多功能、多集成的趋势发展,但是传统的外卖 020 平台,更多的是商家与用户之间的交易,融合用户之间的交互则会成为外卖 APP 的一个新特色。 本课题研发应用是一款自产自营的外卖 APP。 公司具备自己的食品生产线, 保证食品卫生
17、和口味,通过该 APP展示和销售公司生产的产品,该 APP只要 消费群体是各大高校师生。该应用的优势如下: 1) 消费群体的选择,相比较外卖的另一受众群即白领,高校师生对送餐时 间要求不高,减缓了商家的配送和制作难度; 2) 配送难题,依傍大学生兼职机制,有效的解决了送餐配送人员问题,就 地取材,既熟悉环境又减少配送成本; 3) 自产自营,在开实体店保证食品质量的同时,经营线上营销平台,直接 的、自主的掌握营销动态。 4) 用户交互模块,增加请人吃饭、找人买单两个新颖点餐形式。 相比较市面上几款外卖 ai)p, 用户不仅可以做传统的点餐,还可以给朋友点 餐或者找朋友买单。在传统 020APP中
18、融合用户交互功能,提高了用户的交互 性,作为新晋 020产品的新尝试,也能作为一种 APP应用的推广手段。 1.2国内外研究现状 智能手机就像个人电脑一样,具有独自的操作系统和运行内存空间,用户 可自行安装使用第三方程序,也可以通过移动通信网络来进行网络交互。智能 手机又接入无线网络的能力、开放性的操作系统和触摸式操作等特点。目前, 苹果的iOS、 谷歌的 Android、 黑莓的 Black Berry和微软的 Windows Phone是 市场上三种主流的智能手机操作系统 2。第一代 iPhone发布于 2007年, 2010 年 6月,在苹果全球开发者大会上,苹果 CEO乔布斯发布了第四
19、代 iPhone,从 此智能手机的发展进入了新的时代, iPhone也成为了业界的标杆产品,到了 2011 年 11月, iPhone在智能手机的占有率达到 30%。根据 2014年第一季度的全球 智能手机操作系统市场份额数据显示,排名第一的仍然是 Android系统,排名 第二的是 iOS系统,排名第三的则是新兴 Windows Phone系统。 2014年第一季 度的全球移动应用市场调查数据显示 , Google Play的下载量比苹果的 App Store 将近多一倍,但是收入却远远低于 App Store。 同时 ,数据显不 , App Store在 中国的收入提升幅度巨大,比上季度增
20、长了将近 70%。由此可以看出,进行 iOS 应用的开发比 Android是具有更高的回报率的 3。 在 iOS 5.0系统版本之前,没有引入 ARC (Auto Reference Counting), 所以 内存管理方面的工作几乎都是有开发者来手动管理,包括对象的创建和释放。 由于 iOS开发的历史并不悠久,尤其是在国内,所以很多开发者,甚至是一些 有过一两年 iOS开发经验的开发者,常因为内存泄露而导致 APP出现难以检测 和修复的bug。 虽然 ARC可以有效的帮助开发者做到内存管理的自动化,但是 众多开发者对ARC到底如何实现并不了解,甚至完全将内存管理托付给 ARC 机制。但是还是
21、有许多 ARC不能兼顾的地方,这时了解 ARC的实现原理,并 针对性解决问题十分必要。 iOS系统中有三种多线程技术: NSTread多线程、 GCD多线程、 NSOperation&NSOperationQueue多线程 4。对于这三种多线程技术,众多开发 者仅仅是基于应用层面来使用它们,很少有人去比较它们之间的优劣势,并给 出在实际开发过程中应侧重哪种技术。 2014年苹果全球开发者大会上,苹果公司推出一款新的编程语言 -Swift5。 Swift是编译式编程语言,支持多编程范式,用来编写 OS X和 iOS应用程序。 现在苹果公司己推出 Swift2.0版本,为了响应苹果公司的设计理念与
22、匹配 Xcode 的 Storyboard功能,国外众多公司己经在进行 Objective-C到 Swift的软件移植 工作;而在国内,考虑到软件的维护以及工作的熟练度,仅仅只有在新项目中 使用 Swift进行开发 。 1.3本文所做的主要工作 本课题的主要工作从 iOS内存管理机制、 iOS多线程编程、 Swift语言三方 方面进行研宄,并设计和实现满足用户需求的基于 i S的外卖 APP,通过与服 务器的通信实现定位、搜索、购物、订单、好友等功能。本课题主要研宄内容 如下: 1) 研究当下 Native、 Web、 Hybrid三种 APP开发模式,针对该课题实际 情况作出分析和比较并选择
23、出最合适的开发模式。 2) 研宄 iOS开发的相关技术,分析和比较同一领域不同技术的优缺点并作 总结。 3) 从业务、功能性、非功能性三方面做需求分析,设计外卖 APP的主要 功能模块。 4) 对 APP客户端提出设计方案并进行实现。 5) 对实现的 APP进行测试。 6) 最后对 APP进行总结和展望。 1.4论文组织结构 第一章引言,首先分别从外卖 020和 iOS手机系统的角度分析了基于 iOS 的外卖 APP的开发背景和意义,然后对国内外在 iOS平台与 iOS的相关技术的 研宄和发展做了一个简要概括,最后对课题中主要所做的工作进行了总结和概 述。 第二章相关技术介绍,主要介绍了本课题
24、中涉及的相关技术,分为三部分, 第一部分对 APP开发模式进行介绍,分析并选择合适的开发模式;第二部分对 i S相关内容进行了介绍,包括 iOS的系统框架及开发的相关技术、开发语言、 推送机制;第三部分对定位技术进行了介绍,分析并选择合适的定位技术。 第三章客户端需求分析,介绍了本课题客户端的业务需求、功能需求和非 功能需求。 第四章客户端设计与实现,对整个系统结构做了分析和模块划分,分析和 选择合适的软硬件平台,针对各个模块进行详细设计和实现。 第五章客户端测试,从各个模块分别对客户端进行测试,并对测试结果进 行论述。 第六章总结与展望,对课题研宄的内容与所做的工作进行总结。 第二章 相关技
25、术介绍 本章对 iOS系统、 APP开发模型、 iOS相关技术、 Swift语言、定位技术进 行了介绍。 2.1开发模式 2.1.1 APP开发模式 从 APP应用程序开发的角度上分析,开发模式主要包括原生开发模式 (Native APP)、 网页开发模式 ( Web APP)两种以及在这两种模式基础上衍生 的混合开发模式 ( Hybrid APP) 7。三种不同的 APP开发模式,具有各自的优 缺点,因此各自有着不同的适用环境。 1) 原生开发模式 原生开发模式又称为传统型开发模式,实则是基于本地操作系统运行的 APP应用,代码编译之后以二进制或字节码的形式调用移动终端的设备 API 来运行
26、 APP8,如图 2-1。因此在 APP开发中需要针对不同的手机操作系统, 采用不同的编程语言和系统框架进行开发,这就要求开发者必须对 APP所运行 的硬件设备和对应的开发软件有深入的理解。一般而言,原生开发模式包括云 服务器和手机端 APP两部分构成,应用中所有的 UI元素、数据内容以及逻辑 框架均需要下载安装都移动终端设备中。 原生开发模式开发的 APP应用位于平台层上方,这就意味着 APP具有较好 的下行访问和兼容能力,可以利用平台提供的原生 框架接口 ( API),可以支持 在线或离线情况下消息推送和本地资源访问,可以充分运用平台硬件资源来提 供良好的用户体验。 从上文也不难看出,原生
27、开发模式的开发成本较高,开发周期较长;对开 发者的要求也比较高,需要对多种不同开发语言和开发工具有深入的了解,在 不同平台上进行软件移植时,近乎需要重新开发;而且如果要更新版本,则需 要用户重新下载和安装 APP。 2) 网页开发模式 网页开发模式是一种框架性的开发模式,以 HTML+JS+CSS等 Web开发技 术进行编程,代码在浏览器上运行 ,设备 API也是通过浏览器来调用 9,如图 2-1。简单地说,网页开发模式就是针对智能移动终端特殊处理优化后的 Web 站点,如 HTML 或 HTML5、 JavaScript, 服务器技术如 JAVA、 PHP、 ASP 等。 一般而言,网页开发
28、模式主要由 HTML5云网站和 APP应用客户端两部分组成, 通常 APP客户端仅需要安装应用的框架部分,应用的内容部分则是通过打开 APP时,去 HTML5云端服务器来获取数据并呈现给用户。 不难看出,网页开发模式具有跨平台性;移动终端设备的浏览器对 Web技 术的良好支持,加上 Web开发技术人才丰富,使之开发周期较短,开发成本较 低;适配多种设备,在软件更新升级的时候只需要在服务器端完成,用户可以 不用进行繁琐的更新操作。 但是,也正因为网页开发模式是基于 Web技术开发,对于功能复杂,实时 性需求较高的功能,特别是类似于消息推送、性能指标和触摸实践响应等,都 达不到原生开发模式的体验效
29、果。 3) 混合开发模式 混合开发模式介于原生开发模式和网页开发模式之间 1 shopCarDic 减少商品 MinusQ 2)购物车 模型设计: ShopCarModel,其中包括购物车类型、发起者用户、接受者用 户、支付方式、备注、优惠券 id、 送达时间、是否预定、商品列表、收货地址、 商铺 id等。 视图设计:在购物车中,根据购物车类型的不同,显示的内容也会有所差 别。普通购物是自点自买的购物形式,因此在购物车界面,会要求填写收货地 址、支付方式、送达时间、备注、优惠券、商品列表、活动杂项以及总计等选 项;找人买单是自点他人买的购物形式,因此在购物车界面中,会另外出现选 择好友选项,而
30、不会出现支付方式选项(他人买单则默认在线支付 ); 请客吃饭 也是自点自买的购物形式,不过受益者 变成了自己的好友,因此在购物车界面 中,收货地址的选项改为选择好友,同样也只支持在线支付,并且由好友来选 择送达时间。三种购物车界面的实现如图 4-13所示。 图 4-13三种购物模式的购物车界面 控制器设计: ShopCarViewController, HttpController。 ShopCarViewController 接受 ViewController将接收的 shopCarModel模型呈现在购物车视图上,并通过 HttpController向服务器获取购物车中的其他详细信息并呈现
31、。 工作流程:在首页完成选择商品并确定之后,界面跳转到购物车。送达时 间的选择:进入购物车界面之后, ShopCarViewController向服务器发送请求, 服务器查询对应店铺 是否营业以及能配送的时间段并返回 JSON数据给客户 端,之后控制器解析并在购物车界面中显示。只要用户选择好商品并进入到购 物车界面,购物车控制器 ShopCarViewController都要访问服务器端,一方面是 计算商品的总价格,另一方面是生成订单,订单模块将在下文进行介绍。购物 车的 MVC关系对应属性参照表 4-5。 表 4-5购物车的 MVC属性对应表 属性 ShopCarModel 属性 ShopC
32、arModel ShopCarViewController 购物车类型 shopCarStyle 接受者用户 acceptPhone 发起者用户 sendPhone 菜单 menuList 地址 id Addressld 送达时间 receiveTime setTimeTv() 支付类型 payNum 是否预定 isYuDing 优惠券 id youhuiquanld 提交(支付 ) GoPay 3)支付 模型设计: ShopCarModel。 在支付宝支付中,需要实现向服务器申请收款 账号 seller、 支付的唯一 pamter和私密密钥 privateKey, 在访问支付宝时,需要 向支
33、付宝提供 pamter、 seller、 tradeNo (订单 ID)、 productName (商品标题)、 amount (商品价格 )、 notifyURL (回调 URL)、 service (mobile.security.pay)以 及 appScheme (应用注册 scheme, alisdkdemo)。 视图设计:在支付订单界面中,显示支付方式选项模块、用户余额、订单 名称、订单金额,除此之外,为提醒用户支付时间,从进入该页面器客户端即 刻启动 15分钟倒计时,如超过 15分钟仍未支付,则此次订单作废。因为公司 仍在申请微信支付和银行卡支付的 SDK,现阶段客户端只集成了
34、支付宝支付。 支付订单界面和支付宝支付如图 4-14所示。 图 4-14支付订单界面 控 制 器 设 计 : ShopCarViewController 和 PayViewController ,其中 ShopCarViewController 负责支付信息传递给 PayViewController , 而 PayViewController则生成支付宝的支付订单和呈现支付信息。 工作流程:用户在购物车中填写完数据后,完成支付操作。支付部分又分 在线支付和货到付款两种,购物车中选择货到付款的话,则直接跳转到订单详 情页面,此部分控制器为 ShopCarViewController 和 Deta
35、ilOrderViewController, 模型采用 ShopCarModel和 orderltem, 订单详情页面将在订单模块中进行介绍 ; 如果选择的是在线支付则跳转到支付订单界面选择在线支付方式并完成支付, 控制器有 ShopCarViewController 和 PayViewController, 模 型 继续米用 ShopCarModel, 在支付订单界面点击 “ 确认支付 ” 按钮客户端调用支付宝内置 的 APP或者本地的支付宝 APP完成支付操作,用户完成支付操作后,支付宝 返回外卖 APP并跳转到订单详情界面。 4.3.4订单模块 订单模块是为了方便用户管理自己的订单和查看
36、订单详情,以及追中订单 的实时动态。为满足订单的动态追中,每当订单状态发生改变,服务器就会向 用户推送最新的订单动态,因此客户端中绝大多数的推送功能的触发界面是 订 单详情界面。下面将分别对订单列表界面和订单详情界面做介绍。 1)订单列表 模型设计: OrderModel和 Orderltem, 将订单设为一个模型 OrderModel, 该 模型包括订单的获取和删除等相关操作。在 OrderModel下面还另外设计了一个 Orderltem模型,该模型的目的是存储订单的具体属性,是 OrderModel的成员 变量。 Orderltem模型分为两部分,一部分是是用于在订单列表显示的简要信息
37、, 另一部分是用于在订单详情界面显示的具体信息。 视图设计:订单列表的界面效果和商品展示相似,同样采用 TableView和 TableViewCell的形式,订单条中包含订单产生时间、预计(实际 ) 送达时间、 订单(购物 ) 类型、备注(对方留言)、支付方式、商品信息、订单状态、状态 对应操作掠 4SJ.翻 睑掠 钮知杏丢往桔 1*邰 _臾而泣 rffil输里 图 4-20订单列表效果图图 4-21评价订单界面图 4-22订单详情界面 控制器设计 : OrderViewController 和 HttpController, OrderViewController 负责将模型数据呈现在视图
38、上,并且响应视图上面的相关操作 。 HttpController 负责与服务器交互数据。 工作流程: OrderViewController首先将判断用户是否登录客户端,如果用户 己经登录,则将用户的 phone属性传递 HttpController, HttpController访问服务 器来获取该用户的订单信息,并将这些信息储存在 OrderModel和 Orderltem中, 如果用户未登录,则通知用户登录,跳转登录页面,该功能将在用户模块进行 介绍;之后, OrderViewController访问 OrderModel, 将对应的信息显本在订单 列表界面中。 OrderViewCon
39、troller会根据 Orderltem中状态字段的不同,而显 7K 和执 行不同的操作,其中有九种状态(操作 ): 请客确认中(查看详情 )、待付 款(立即付款 )、未处理(查看详情 )、制作中(查看详情 )、配送中(查看详情 )、 送达(确认收货)、已完成(再来一单 )、取消订单(再来一单)和己评论(再 来一单 ), 以上九种状态对应的操作将跳转到订单详情中执行,其具体实现将在 订单详情部分进行介绍,订单列表的功能仅包括列举订单和管理订单(删除 ), 具体流程如图 4-19所示。 图 4-19订单列表工作流程图 订单列表的 MVC对应属性参考表 4-6。 表 4-6订单列表的 MVC属性对
40、应表 属性 OrderViewController Orderltem 属性 Orderltem 获取订单 getOrderData() 订单状态 Status 删除订单 deleteOrder 预计 /实际送达时间 arriveTime 查看详情 lookDetailOrder() 备注 /留言 Comment 状态操作 Confirm 支付类型 Pay type 提交时间 Time 订单类型 shopCarType 首个商品 firMenuItem 2)订单详情 订单详情分为两部分,一部分是有关订单的详细信息和订单动态追中,另 一部分是订单的相关操作,其中包括再来一单、评论、查看详情、立即付款、 确认订单等。 再来一单:每 个订单 Orderltem中会记录该订单中的商品列表,包括商品 id、 商品名称以及商品数量,当用户点击再来一点时, OrderViewController控制器 调用 Orderltem中的这些数据传入到 ShopCarViewController中,接下来如同上 文提到的购物模块继续执行相关操作。 评论订单:当用户确认收货之后,订单条中的按钮将显示为评论订单。 OrderViewController控制器调用 Orderltem中