APP下载

基于Android平台的快递抢单系统设计

2017-03-31梅建东李红春陈霞

软件导刊 2016年8期

梅建东+李红春+陈霞

摘 要:随着快递行业的迅猛发展,传统快递投递率低下,出现了大量积压订单。基于Android平台,设计了快递抢单系统,手机快递抢单系统有助于订单信息实时更新和订单信息动态的及时掌握,实现有选择性地抢单、取货并投递,加快了物流运转速度。

关键词关键词:Android;Java;Eclipse;快递抢单系统;数据库

DOIDOI:10.11907/rjdk.161314

中图分类号:TP319

文献标识码:A 文

章编号:1672-7800(2016)008-0107-03

0 引言

自1979年出现第一家快递企业起,中国快递业已成为市场中关注度最高、发展速度最快的行业之一。随着互联网时代的到来,网购成为人们生活中不可缺少的一部分,我国快递行业也呈现出了非常迅速的发展势头,2014年,中国凭借140亿件快递跃居全球快递市场之首。

为了应对如此火爆的快递行业,快递业务的高速运转成了目前研究的主题。目前,快递投递都采取定时定点取单取货方式,对于订单的实时性和动态性信息掌握不足,效率低下。如此效率低下的投递方式不能满足订单大量涌现的需求,出现了货物积压,所谓“单等人”的现象。

Android应用开发技术[1]、嵌入式系统开发技术[2]作为移动终端的核心技术,是目前最热门的开发技术。Android智能手机是人们身边最普遍、最方便快捷的工具,通过对手机快递系统的研究[3-4],能够加快快递领域市场化步伐,让投递员了解订单的实时动态变化,实现快速抢单,及时处理积压订单,提高效率,同时能够实时了解自己的工作业绩。

1 系统分析

基于手機的快递系统项目,来源于扬州快点网电子商务有限公司的实际需求,实现买家从网络平台购买商品下单后,快递人员快速高效地从商家取货并安全将商品送达客户手中。该系统的研发将改变传统的快递订单获取方式,可将订单信息实时推送到快递人员手机上,便于快递抢单,提升物流运转速度和效率。这一运营模式的改变,是“互联网+”产业的典型应用[5],具有一定的现实意义和社会意义。其研究成果既可直接服务于扬州快点网电子商务公司,也可复制推广到整个物流行业,项目极具创新性且现实可行。

手机快递抢单系统设计具有以下特点:①软件安装在手机上,使用简单、便捷;②改变了传统的订单获取方式,物流派单系统将订单直接推送到快递人员手机上,快递工作人员通过手机即可查看自己的订单业务,直接去商家取货并完成派送工作;③通过手机可以实现订单信息的在线更新,实时了解物流动态,查看系统中等待派送的订单,快递工作人员可以通过抢单的方式获取订单,取货并完成派送,加快了物流行业运转速度;④快递人员可以实时查询自己完成的业务量,了解自己的工作业绩;⑤公司指派业务和快递抢单相结合,是基本工作量和绩效工作量的结合,提高了员工的工作积极性,同时也加快了快递投递领域市场化的步伐。

2 系统设计

系统采用客户端/服务器模式,具体包括Android快递抢单客户端、Web服务器、后台数据库、无线网络等部分,其物理结构如图1所示。客服端Android智能手机通过无线网络访问后台服务器,若需要数据访问,则访问后台数据库。

Android客户端设计采用基于Java语言的Eclipse集成开发环境,网络通信使用Apache HTTP协议客户端,Web服务器采用Servlet响应客户请求。系统客户端采用SQLite数据库,存储自己的业务订单,服务器端采用MySQL数据库,通过软件提供客户端数据和服务器端数据同步功能,提高程序运行效率。具体业务流程如图2所示。

3 功能实现

3.1 公共模块设计

在软件开发过程中,经常需要设计一些公共模块,如数据库连接、数据存储、网络传输、格式处理等,以提高程序开发速度,降低代码冗余度。因此,开发系统前需要设计此类的公共模块。

(1)数据库帮助类。本系统客户端设有数据库Order.db,主要是保存快递员的订单业务信息,其数据可以从服务器中更新获取。快递员可以方便查看属于自己的业务信息,以便更好地完成任务。读写本地数据库Order.db必须借助系统的SQLiteOpenHelper,因此可以继承SQLiteOpenHelper基类,添加系统所需的数据库管理功能,形成方便的数据库帮助类DBHelper。

(2)订单引擎类。管理自己的业务订单信息需要连接Order.db,读写订单表中的数据,并借助哈希表进行数据处理。设计一个OrderProvider公共类,实现数据的增、改、删、查,可以避免不同程序模块中的相似操作代码,减少程序冗余。

(3)网络传输类。实现用户登录、管理订单等操作,都需要连接网络服务器和数据库。设计一个网络连接与传输的公共类HttpUtil.java完成此项任务。可以选用Post方式向服务器发出请求,根据响应结果Result来判断网络连接情况。

public static String queryStringForPost(String url){

HttpPost request = HttpUtil.getHttpPost(url);

String result = null;

try {

HttpResponse response = HttpUtil.getHttpResponse(request);

if(response.getStatusLine().getStatusCode()==200){

result = EntityUtils.toString(response.getEntity());

return result;

}

} catch (ClientProtocolException e) {

e.printStackTrace();

result = "网络异常!";

return result;

} catch (IOException e) {

e.printStackTrace();

result = "网络异常!";

return result;

}

return null;

}

3.2 登录模块设计

为了增强系统的安全性,使用该系统必须进行身份认证,因此登录模块必不可少。登录过程是通过无线网络,在后台数据库中进行用户工号和密码认证,在后面订单管理中都要用到登录用户信息,这样可以做到责任分明、工作严谨。

登录基本流程是:输入用户工号和密码,在本地进行合法性认证,符合规则后提交给服务器,在后台数据库中进行查询,如果有该用户则进入系统,否则给出错误提示。

登录成功后,将用户信息保存至配置文件中,以在后面订单管理中使用。

SharedPreferences pre = getSharedPreferences("user_msg", MODE_WORLD_WRITEABLE);

SharedPreferences.Editor editor = pre.edit();

editor.putString("id", id);

editor.putString("name", name);

editor.commit();

3.3 主界面设计

用户登录成功后即可进入系统的主界面,如图3所示。主界面通过一个GridView展示,在GridView中设置子组件ImageView,每个ImageView代表一个功能,同时在ImageView下方显示文字,便于直观理解,符合目前手机流行界面的设计要求。对每个ImageView建立一个事件的监听器,当单击ImageView时会跳转到相应的功能界面。比如,点击系统主界面上的“待派订单”图标,可以进入待派订单模块,如图4所示。

3.4 订单模块设计

订单管理模块主要包括待派订单、指派订单、抢单订单、送达订单等。

(1)待派订单模块。在系统的主界面点击“待派订单”图标,可以进入该模块。该模块主要包括以下功能:①显示待派订单:通过自定义的ListView组件在线显示物流订单派送系统中等待派送的订单信息,上面一行显示下单时间和订单状态,下面一行显示商家名称和派送地址;②更新功能:重新刷新订单列表,显示正在等待派送的订单;③抢单功能:订单的一种获取方式,在等待派送的订单列表中可以选择性抢单。若抢单成功,抢单的订单信息将显示到后面的抢单订单列表中。

客户端通过选择的订单信息以Post方式向服务器发出请求,通过返回结果result来判断是否抢单成功。

String queryString = "id="+selection.get(i)+"&op_id="+opID;

String url = HttpUtil.BASE_URL+"servlet/ModifyDpaiServlet?"+queryString;

String result= HttpUtil.queryStringForPost(url);

Toast.makeText(DpaiActivity.this, result, Toast.LENGTH_LONG).show();

服务器接受请求,并获取客户端的请求参数。若可以抢单,则向客户端发出“抢单成功”字样信息。

String id = request.getParameter("id");

String op_id = request.getParameter("op_id");

dao.ModifyDpai(id, op_id);

out.println("抢单成功!")

(2)指派订单模块。指派订单是订单的另一种获取方式,除了抢单方式获取外,还有公司每天指派的订单任务。通过指派订单模块可以在线查看公司指定本人当天派送的订单信息,同时将该订单信息保存到手机的本地数据库中,以便于查看。

(3)抢单订单模块。抢单功能在待派订单模块中实现,该模块属管理模块,管理在待派订单中通过抢单方式获取的订单信息,并根据订单信息完成商家取单及投递。

通过抢单获取的订单信息除了提交服务器外,也保存一份至本地SQLite数据库中,可以在本地数据库中查询并以列表方式在该模块中显示出来。

String state="搶单";

db=this.openOrCreateDatabase("Order.db", MODE_PRIVATE, null);

cursor=db.query("OrderTbl",null,"op_id like ? and order_state like ?",new String[]{opID,state},null,null,"order_time desc");

cursor.moveToFirst();

MyAdapter ad=new MyAdapter(this,R.layout.list_style, cursor,

new String[]{"order_time","order_state","s_name","b_add"},

new int[]{R.id.textView1,R.id.textView2,R.id.textView3,R.id.textView5}); list.setAdapter(ad)

(4)送达订单模块。管理本人已经完成的订单信息,可以分时间段统计或查看自己的工作业绩。完成的订单信息需要提交至网络数据库,同时更新本地数据库。

(5)其它模块。包括系统设置、密码管理、注销系统、退出系统。主要实现本地数据库初始化、员工密码修改、系统重新登录以及退出整个系统。

4 结语

基于Android平台的快递抢单系统设计,改变了传统的快递订单获取方式,可将订单信息实时推送到快递人员手机上。快递员通过手机能够及时掌握订单信息的动态变化,除了完成公司指派的订单任务外,还可以有选择性地进行抢单,及时取货完成投递任务,加快物流的运转速度。这一运营模式的改变,对整个物流行业具有一定的现实意义和社会意义。

参考文献:

[1]陈长顺.Android应用开发[M].北京:高等教育出版社, 2014.

[2]刘连浩.物联网与嵌入式系统开发[M].北京:电子工业出版社,2012.

[3]田智.安卓平台快递派送辅助软件开发[J].电脑编程技巧与维护, 2015(12):55-57.

[4]陈凤翔,黄贤珊.智能手机快递发件系统研究[J].武汉理工大学学报, 2015(8):396-398.

[5]邬航涛,杨斌,楼骏鹏.基于物联网的智能快递终端[J].轻工机械, 2015(6):109-112.

(责任编辑:孙 娟)