基于iOS平台的校园快递众包与大众抢单寄件App的设计与实现

 2022-03-01 07:03

论文总字数:16610字

摘 要

随着网购和各种电商平台的快速发展,快递行业也迅猛起势,用户对快递包裹的时效越来越关心。然而快递的拥堵大量体现在“最后一公里”的运输上。各种传统解决手段造成了资源浪费、加大交通压力等问题,于是基于iOS的众包型快递运送App应运而生。

该客户端基于iOS平台开发,以OC语言为基础。客户端分为以下几个功能模块。(1)任务模块:分为发送任务和接受任务。可对任务进行详细编辑。(2)个人信息模块:查看自己或者发单人的详细信息。(3)申请快递人模块:对于非认证用户进行资格审核,获得资格后方可使用全部功能。(4)接单历史模块:查看接单详细信息和历史,对收入进行管理。(5)评价模块:委托人和受托人相互评价,为以后的用户作为参考。(6) 建议反馈模块:该模块主要实现的功能是对订单分歧或者软件功能问题反馈。

该客户端采用了MVC的架构模式,遵循了低耦合的思想,易于后期维护。并且具有界面清新,功能简单易用等特点。软件在正式上线后为iPhone用户提供性能优良使用便捷的应用。

关键词:快递;众包;iOS移动应用;

Abstract

With the development of online shopping and E-commerce platforms, logistics industry is progressing rapidly. Users care more and more about the transportation effectiveness. But the jam always happens on the “last kilometer”. Many current solutions result in waste of resources and traffic pressure. So an iOS app based on logistics crowdsource emerges at a historic moment.

This app is based on iOS platform and OC language and have the following main modules.(1)Task module: People can publish tasks, take tasks and edit the task information.(2)Personal Info module: Check self information and consigner’s info. (3)Apply as consigner: Qualification examination for those who are not authenticated. (4)Order History module: Check orders’ detail and history and manage incomes.(5)Evaluation module: Consigners and consignees evaluate each other. (6)Feedback module: Give feedback and solution about the orders.

The app is in the MVC architecture and follows the idea of low coupling,easy to maintain.It has clean user interface and simple-to-use functions. The software will provide iPhone users with a logistics application with super performance and beautiful interface.

Key words: Logistics; Crowdsource; iOS mobile App

目 录

第一章 绪论 5

1.1 研究背景 5

1.2 研究现状 5

1.3 论文的组织结构 6

第二章 相关理论和技术 6

2.1 iOS简介 6

2.2 Objective-C简介 7

2.3 Xcode简介 7

2.4 基于主题订阅的无线消息群发系统-ACCS-Mass 7

2.5 JSON数据交换格式 8

2.6 iOS设计模式 8

2.6.2 观察者模式 8

2.6.3 KVO(Key-Value-Observing)机制 9

2.7 数据持久化 9

2.7.1属性列表 9

2.7.2数据归档/序列化 10

2.7.3数据库 10

第三章 需求分析 11

3.1 名词说明 11

3.2 设计背景 11

3.3 需求点设置原因 12

3.4 功能需求点 14

3.5业务总流程 15

3.6关键状态转化图 15

第四章 详细设计与实现 16

4.1 众包首页 16

4.2 任务详情 17

4.3 发布委托单(外部快递、驿站快递委托单) 19

4.4 个人主页 21

4.5新增列表(已发布列表、我的任务列表) 22

4.6在线支付和评价 24

4.7系统优化 26

第五章 系统测试 27

5.1 测试目的 27

5.2 测试方法 28

第六章 总结与展望 29

第一章 绪论

研究背景

快递行业随着人们越来越多的网购获得了迅猛发展,但快递“最后一公里”情况却不容乐观。据数据显示,城市快递最后一公里配送成本已经在物流总成本中占比百分之三十以上,大量的社会资源消耗在“最后一公里”上,这导致了城市交通拥堵和环境破坏。在投递快件的方式上,因为收件人或者快递厂商要求当面签收,所以在城市配送的末端,绝大部分快递公司都一致采用了增加投递员的战术。而这种决策,既不能很好地缓解现在繁重的投递任务,也不符合未来的行业趋势。除“人海战术”外,还有一种快递末端配送方式是“门店合作”,快递公司寻找门店让其代收和代寄包裹。但这种模式遇到的困难较大,寻找实体店铺意味着大量的资金支出并且各种快递公司不情愿共享门店造成资源浪费。因此,现有的解决方案都不成熟或者有缺陷。所以需要有一种新型的最后一公里派送方式来解决此问题。

研究现状

随着移动互联网应用的发展和4G网络的成熟,4G智能手机成为最重要的终端载体,更多的人利用智能手机网上冲浪、收发电子邮件、看视频、打游戏、视频通话等。智能手机让人们的生活变得丰富多彩。在现实生活中,众包寄件是一种用于取件和寄件的软件。它有一键式的发件和取件功能,而且操作简单,带你进入一个全新的快递生活方式。手机App可以简单操作后收发快递,还有公司推出的各种优惠活动,为用户节省寄件费用。基于iOS平台的众包与抢单寄件App是一个基于众包模式的快递在线收发平台,倡导“人人参与”,通过就近原则的众包行为,整合平时有业余时间的优质小件员和大学生的人力资源,顺势满足时间较少的用户需求。运用互联网优势,将用户的寄件取件需求及时得推送给自由快递人,自由快递人选择利于自己的订单,及时高效得为用户提供取件或者寄件服务,以此优化社会资源。不但为社会上闲散的人提供了收入机会。还有效地帮助中小型店铺和企业扩大了营业范围,突破了其受到地理位置、店面规模等诸多客观因素的限制。并且借助活跃的大学生群体,用小费形式激励大学生在快递方面的互帮互助,减少校园快递站点压力,为校园生活注入新鲜内容。

论文的组织结构

本论文通过对快递行业和快递类App的现状分析和总结,对一款基于iOS平台的校园快递众包与大众抢单寄件App进行设计和实现。本篇文章的结构如下:

第一章是绪论,包括基于iOS的校园快递众包与大众抢单寄件App的研究背景、目的、意义和国内快递行业的研究现状还有本论文的研究内容,以及本论文的组织结构。

第二章是该App开发中用到的相关技术。本研究涉及到的相关技术较包含了iOS开发的环境、开发工具Xcode和语言Objective-C,iOS常用到的开发模式,无线消息群发系统-ACCS-Mass,数据的持久化方法。

第三章是该App的需求分析,包含特殊名词说明,App设计背景,需求点设置原因分析和功能点。

第四章是App的详细设计与实现,分别阐述了众包详情,任务首页,发布委托单,个人主页,新增任务列表,在线支付,系统优化功能模块的规则,设计原型。

第五章介绍了App的系统测试环节,包括测试目的和测试方法。

第六章是总结与展望,总结了App的设计和实现工作,并对未来工作提出展望。

第二章 相关理论和技术

2.1 iOS简介

iOS是由苹果公司开发的手持设备操作系统。苹果公司最早
于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及
Apple TV等苹果产品上。iOS与苹果的Mac OS X操作系统一样,它也是以Darwin为基础的,因此同样属于类Unix的商业操作系 统。这个系统原名为iPhone OS,2010年6月7日WWDC大会上
宣布改名为iOS[1]

iOS是苹果开发的移动操作系统,它的架构主要分为4个层次:核心操作系统 层(the Core OS layer),核心服务层(the Core Services layer),媒体层(the Media layer),可轻触层(the Cocoa Touch layer),每个层都包含一定数量框架。简而言之,由四个层次组成,每个层次拥有几个框架,每个框架对应于iOS系统里的一层,每层建立在它下面层的上面,应该尽可能使用上层的框架来代替下层框架,因为高层次的框架式对底层框架对象的抽象,而每个框架其实就是一个目录,这个目录包含了一个共享库,这个共享库里有代码的头文件和其它的图片音乐的资源文件,这个共享库定义的方法或函数只要程序员把框架添加到你的项目上就可以被程序员调用进行软件开发,而本项目应用的框架主要是基于Foundation、UIKit和Core Data这三个框架[2]

2.2 Objective-C简介

Objective-C,是扩充C的面向对象编程语言。它主要使用于Mac OS Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是在C的基础上,加入面向对象特性扩充而成的编程语言。目前,Objective-C主要应用于Mac OS X和iOS这两个NeXTSTEP的衍生系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在任何gcc支持的平台上进行编译,因为gcc原生支持Objective-C[3]

2.3 Xcode简介

开发iOS的应用程序,需要一台安装有Xcode工具和Mac OS X的电脑。Xcode是苹果提供的开发工具集、提供项目管理、代码编辑、创建执行程序、代码级调试、代码库管理和性能调节等等功能。Xcode是一个集成开发环境(IDE),提供所有的工具,可以创建和管理iPhone项目和源代码,构建代码成为可执行文件,在iPhone模拟器或者真实设备上运行和调试代码[4]

2.4 基于主题订阅的无线消息群发系统-ACCS-Mass

在基于ACCS这个长连通道上,可以快速搭建基于发布/订阅类消息群发业务。群发业务的特点就是:用户群体性(共同关注),用户动态性(随时进出),消息实时性(低延迟)。用户能连续接收房间内实时广播和消息,且能随时订阅(进入)和取消(退出)的业务场景。ACCS-Mass就是为了解决这类动态群群发业务而产生。持久化 缓存用户与房间的关系,并对房间内用户通过ACCS通道进行高速并发推送到端上,做实时展现,解决以往定时轮询的诸多弊端。并提供在线查询,消息到达、回执效果统计等,减少系统负荷,将注意力集中到业务和内容上来。

2.5 JSON数据交换格式

JSON作为一种轻量级的数据传输格式,可以在多种语言之间进行数据交换。JSON易于阅读和编码,且它是 JavaScript
规范的子集,能被支持JavaScript的浏览器所解析,相比XML减少了解析时带来的性能和兼容性问题,这些特性使 JSON成为理想的数据交换语言[5]。

2.6 iOS设计模式

2.6.1 MVC模式

MVC模式即模型-视图-控制器(Model-View-Controller, MVC),显而易见,是由模型、视图和控制器三个部分组成。Controller接收View的操作事件,根据事件不同,或者调用Model的接口进行数据操作,或者进行View的跳转,从而也意味着一个Controller可以对应多个View。Controller对View的实现不太关心,只会被动地接收,Model的数据变更不通过Controller直接通知View,通常View采用观察者模式监听Model的变化。若使用计算机语言描述,即模型是内部数据,控制器则是输入输出控制,而视图是数据表示。MVC模式实际上是对应用程序进行了逻辑分离,将输入、处理和输出具体业务逻辑分解成了视图通过控制器到模型,模型处理后 再通过控制器回到相应视图(可能已经不是原来的视图了),三者相互联系,但具体处理上又各自分开,它们各自只负责自己的一块具体事务[6]

2.6.2 观察者模式

观察者模式又叫做发布一订阅(Publish/Subscribe)模式、模型.视图(Model/Viov)模式、源.监听器(Source/Listener)模式或从属者(Dependents)模式。

将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性,我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、拓展和重用都带来不便。而观察者模式的关键对象时主题Subject和观察者Observer,一个Subject可以有任意数目的依赖它的Observer,一旦Subject的状态发生了改变,所有的Observer都可以得到通知。Subject发出通知时并不需要知道谁时它的观察者,也就是说,具体观察者是谁,它根本不需要知道。而任何一个具体观察者不知道也不需要知道其他观察者的存在。做到这一点的设计 方案有很多,但是为了使系统能够易于复用,应该选择低耦 合度的设计方案。减少对象之间的耦合有利于系统的复用, 但是同时设计者需要使这些低耦合度的对象之间能够维持行动的协调一致,保证高度的协作(Collaboration)。观察者模式是满足这一要求的各种设计方案中最重要的一种[7]

2.6.3 KVO(Key-Value-Observing)机制

KVO提供了一种key-value-observing的机制,也就是说可以通过监听key,来获得value的变化。用来在对象之间监听状态变化。使用KVO的类要遵循协议,事实上,任何继承自NSObject的类,都遵循了这个协议。KVO是通过Objective-C的runtime来实现的。当第一次要对一个对象进行观察时,runtime会创建一个被观察对象class的subclass。在这个新创建的subclass中,KVO会复写所要观察属性的setter方法,然后转换被观察对象的isa指针,指向新创建的subclass,所以,想要观察的对象,变成了KVO在runtime时创建的subclass。因为Apple不想让这种机制暴露,所以还会复写要观察对象的class方法,所以,当调用class来判断该对象的class时,还会显示原对象的class类型,而不是subclass的类型[8]

2.7 数据持久化

2.7.1属性列表

属性列表是一种不经过加密的轻量级存储方式,有多样化的存储格式,最常规格式为XML格式。在我们创建一个新的项目的时候,Xcode会自动生成一个info.plist文件用来存储项目的部分系统设置。plist只能用数组(NSArray)或者字典(NSDictionary)进行读取,属性列表没有经过加密处理,所以安全性较低。因此,属性列表通常用来存储体积小且安全系数低的数据。

在程序启动后,系统会维护一个NSUserDefaults的单例对象,可以用其存储数据,并且轻量易用。但是NSUserDefaults的存储对象全是不可变的,支持的数据类型有: NSArray,NSString,NSDate,NSNumber(NSInteger、float、double),NSDictionary,BOOL

2.7.2数据归档/序列化

与属性列表不同的是,数据归档是经过加密处理的,归档处理把数据转换成二进制,具有更高的安全性。并且归档方式支持自定义的对象,不受基本类型的限制。

使用方法是利用NSKeyedArchiver对复杂的数据进行序列化处理。使用这种归档的前提是让存储的数据模型遵守NSCoding协议并且实现其两个协议方法[9]。(如果为了更加安全的存储,也可以遵守NSSecureCoding协议,这是iOS6之后新增的特性)

2.7.3数据库

SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统。它的设计目标是嵌入式的。而且目前已经在很多嵌入式产品中使用了它.它占用资源非常的低,在嵌入式设备中,可能只需要几百KB的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、c#、PHP、Java等,还有ODBC接口,同样比起MySQL、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite是纯C实现的,所以注定了它是一个跨平台利器, 在Android与iOS下均能使用.而且完全可以写出通用的代码。方便移植[10]。

第三章 需求分析

3.1 名词说明

表3-1-1 名词说明对照表

名称

说明

驿站

合作的末端网点。本文档中驿站特指提供上门揽件服务的驿站。

众包公司

指为商业、生活社区消费者提供揽派件服务的末端网点服务商。这些服务商不具备快递资质,但是与快递公司合作并签约,将包裹投递到快递公司才能将揽收网点送达。如财神到家、指尖快递。

服务商

本文中包含提供上门揽件的驿站、众包公司。

快递员

特指快递公司快递员

揽件员

驿站提供上门揽件的快递员、众包服务商提供上门揽件的快递员、快递公司提供上门揽件的快递员统称。

快递员APP

快递公司自己开发的APP,将抢单等功能以SDK的方式集成到快递员APP中。

3.2 设计背景

原有预约寄件流程有很多重要的问题无法解决:

  1. 消费者下单后快递员上门不及时(不按约定时间或者根本不上门),而且整个流程无法监控。
  2. 消费者下单后快递员上门时间普遍较慢。目前快递公司普遍承诺当日上门揽件,这与很多上门类O2O项目的上门时间差距较大。
  3. 原有流程不能让部分快递公司返回面单号,从而无法让消费者直接在订单中查看寄件进度。并且原有流程无法与退货对接,解决退货的超时问题。

为了解决消费者寄件方面的问题,给消费者更好的寄件体验,我们发起了新的寄件流程,通过抢单的方式,让快递员上门服务。

3.3 需求点设置原因

  1. 为什么要抢单?为什么要对接服务商?
    1. 预约寄件的最主要问题是上门揽收不及时。通过抢单方式快速匹配快递员揽件意愿,达成更快上门效果。
    2. 目前部分地区服务商能提供更优质的揽件服务。提供上门寄件的驿站通常能在半小时/1小时内上门揽件;众包公司中,财神到家覆盖大型社区,提供30分钟上门揽收服务;指尖快递提供10分钟上门。
  2. 为什么不统一定价?
    1. 寄件价格的形成:
      1. 快递公司不同能力:不同快递公司、不同路线,由于服务质量(顺丰服务质量高,所以要价高)、路由能力(部分路线部分快递公司路由能力强,所以要价低)的不同,寄件价格存在差异。
      2. 小件员提供的服务:不同时段、不同地域,价格会存在不同。
    2. 统一定价的不可操作性:
      1. 快递公司的阻力
        1. 统一定价损害了快递公司利益,快递公司可以通过多种手段中止合作。
        2. 不是采购的方式与快递公司合作,没有定价权。
        3. 统一价格抹平了快递公司之间的竞争,不利于行业发展。
      2. 操作难度
        1. 目前真实的价格不可知
        2. 很难抹平快递公司的差异。就低不可行,就高也不可行。
      3. 消费者的需求
        1. 需求的差异(价格、时效、品牌),对应不同的需求。
        2. 消费者对于价格统一的痛点不明显。
  3. 为什么要统一揽收时效?

希望能通过统一时效提现产品核心价值,与其他同类型产品差异化竞争。

  1. 分单时为什么是优先分给服务商,而不是快递公司快递员?
    1. 目前服务商的上门时效优于快递公司快递员,为了保证消费者的体验,避免出现快递公司快递员优先抢到单而晚于服务商上门的情况,将订单优先分给服务商。
    2. 平等抢单的前提是所有人抢单人快递响应,在短时间内类似集合竞价的方式挑选出最优服务者(上门时效最快)。由于目前参与抢单的人员不是太多,做不到短时间多人抢单,因此分单有先后。
  2. 如何确保揽件员快速上门揽收?
    1. 初期通过补贴提升揽件员上门揽收,如果不按时揽收揽件员将拿不到补贴。
    2. 与服务商合作,服务商提供可靠的上门时效。
  3. 揽件操作为什么是揽件员操作而不是消费者?
    1. 及时操作揽件关系揽件员的核心利益(补贴或惩罚),因此揽件员与揽件操作最利益相关;而消费者只关心揽件员是否及时上门,对与揽件操作没有意愿。
    2. 如果是消费者线下支付,消费者不可能打开手机操作确认揽收,而应该有揽件员操作。
  4. 为什么揽件时不强制揽件员上传运单号?
    1. 服务商通常与多家快递公司签约,因此部分服务商的揽件员在上门时未携带面单,而在回到驿站/众包公司网点时再填写面单。
    2. 电子面单并无纸质面单,需要等到回到驿站/众包公司网点才能打印面单。
  5. 如何确保揽件员揽收的真实性?
    1. 揽收后快递员需确定价格。可以确认揽件的凭证可以有上传图片、价格、运单。对于上传图片,揽件员的操作成本高,并且运营成本也相应较高;对于运单,考虑到不是所有情况都有面单,因此不合适。
    2. 揽收完毕消费者支付页面有虚假揽收举报入口。
  6. 确认引导消费者在线支付?
    1. 告知消费者在线支付可以使用优惠券。
    2. 通过补贴规则(告知揽件员只有用户在线支付才有补贴)促使揽件员引导消费者在线支付。
  7. 为什么要让揽件员回传运单号?
    1. 消费者可以跟踪运单号,体验更好。
    2. 与退货、寄件对接,需要运单号。
  8. 如何确保揽件员回传运单号?

寄件订单的结算以快递员回传运单号作为重要节点,只有消费者在线支付并且揽件员运单号回传,该笔寄件资金、订单时效补贴才能进入揽件员资金账户。

3.4 功能需求点

表3-4-1 功能需求点汇总表

序号

名称

描述

1

众包首页

包含发布功能、待抢订单展示、抢单等功能集一体的综合页面

2

任务详情页

展示委托单详情、发布详情等信息并进行相应操作

3

发布委托单

外部快递、其他需求下单页面

4

新增个人主页

包含个人Profile页面、累积赚钱金额、累积任务发布、排名、收到标签等

5

新增列表

委托人发布的委托单列表;

包裹侠抢单列表;待抢单列表

6

在线支付

新增支付宝提供给委托人线上支付悬赏金给受托人结算

7

自动确认收货

委托人下单后72H内若未点击收货,默认已收货结束该订单

8

委托单过期清除

超过24h委托单未被抢单,不展示在委托任务列表

3.5业务总流程

图3-5-1 业务总流程图

3.6关键状态转化图

图3-6-1 关键状态转化图

第四章 详细设计与实现

4.1 众包首页

简要说明

当用户通过裹裹发现中“校园包裹侠”入口进入,展示包裹侠首页,包含发布功能、抢单功能并展示待抢单列表、任务列表、发布列表、个人中心的综合页面。

业务规则

1、发布委托单:点击【帮我取快递】按钮进入发布委托单流程;

2、抢单:点击待抢单列表中的【抢单】进入包裹侠抢单流程,抢单业务逻辑不变。判断是否是包裹侠身份, 若已注册成为包裹侠可直接接单,若不是包裹侠点击后进入在线注册包裹侠页面;

3、我的动态:右上角我的动态中包含我发布的和我的任务,当其中任意列表中有未完成订单,首页右上角红点标红提醒;

4、任务卡片:展示任务内容、发布人、悬赏金等信息,页面元素如下:

委托人姓名:发布订单的姓名

送达地址:委托人下单时填写的地址;

悬赏金:跑腿悬赏金额;

备注:下单时填写的备注信息,此处字数有限制,不超过30字;

5、抢单二次确认页面:点击【抢单】操作后出现确认抢单页面,也可选择“不再提醒”功能,提高包裹侠操作效率;

界面原型

图4-1-1 校园包裹侠入口图

执行者

用户

前置条件

下载裹裹并登陆淘宝账号的学生

后置条件

4.2 任务详情

简要说明

点击首页的任务卡片,进入任务详情页面查看详细信息;当委托人的订单被接单后,也通过该页面查看包裹侠信息及相应操作;当包裹侠接单后查看订单同时可进行相应操作。

业务规则

  1. 他人发布详情:通过任务大厅点开看到别人的任务详情页,显示任务信息及订单通知状态,点击【立即抢单】也可进行抢单操作;
  2. 我的任务详情(待接单):委托人下单后进入自己的任务详情页面,或通过【我的动态】-【我发布的】中的委托列表进入;显示发布委托的基本信息:发布时间、送达地点、悬赏金额、备注;

展示已通知包裹侠数量,此为该校内注册的包裹侠总数量,随时切换包裹侠头像展示。

  1. 我的任务详情(接单待派送):

a)包裹侠接单后该页面展示关键节点已接单,展示包裹侠基本信息(包括姓名等基本信息、评价),且可以电话、短信联系包裹侠;

b)右上角【取消】按钮,点击可取消该委托单。但当包裹侠已点击已取货后,委托人无法取消。

  1. 我的任务详情(确认收货页面):

a)当包裹侠点击已取货操作后,弹窗提醒委托人“对方已拿到货即将派送,请准备支付”;

b)出现【确认收货并支付】按钮,点击进行支付悬赏金;

5、包裹侠任务详情页面(接单待取件):

a)展示委托人委托详情信息包括委托人姓名、头像、地址、备注、悬赏金,点击可与委托人进行电话、短信操作;

剩余内容已隐藏,请支付后下载全文,论文总字数:16610字

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;