梅建東+李紅春+陳霞
摘 要:隨著快遞行業(yè)的迅猛發(fā)展,傳統(tǒng)快遞投遞率低下,出現(xiàn)了大量積壓訂單。基于Android平臺(tái),設(shè)計(jì)了快遞搶單系統(tǒng),手機(jī)快遞搶單系統(tǒng)有助于訂單信息實(shí)時(shí)更新和訂單信息動(dòng)態(tài)的及時(shí)掌握,實(shí)現(xiàn)有選擇性地?fù)寙?、取貨并投遞,加快了物流運(yùn)轉(zhuǎn)速度。
關(guān)鍵詞關(guān)鍵詞:Android;Java;Eclipse;快遞搶單系統(tǒng);數(shù)據(jù)庫
DOIDOI:10.11907/rjdk.161314
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文
章編號(hào):1672-7800(2016)008-0107-03
0 引言
自1979年出現(xiàn)第一家快遞企業(yè)起,中國快遞業(yè)已成為市場(chǎng)中關(guān)注度最高、發(fā)展速度最快的行業(yè)之一。隨著互聯(lián)網(wǎng)時(shí)代的到來,網(wǎng)購成為人們生活中不可缺少的一部分,我國快遞行業(yè)也呈現(xiàn)出了非常迅速的發(fā)展勢(shì)頭,2014年,中國憑借140億件快遞躍居全球快遞市場(chǎng)之首。
為了應(yīng)對(duì)如此火爆的快遞行業(yè),快遞業(yè)務(wù)的高速運(yùn)轉(zhuǎn)成了目前研究的主題。目前,快遞投遞都采取定時(shí)定點(diǎn)取單取貨方式,對(duì)于訂單的實(shí)時(shí)性和動(dòng)態(tài)性信息掌握不足,效率低下。如此效率低下的投遞方式不能滿足訂單大量涌現(xiàn)的需求,出現(xiàn)了貨物積壓,所謂“單等人”的現(xiàn)象。
Android應(yīng)用開發(fā)技術(shù)[1]、嵌入式系統(tǒng)開發(fā)技術(shù)[2]作為移動(dòng)終端的核心技術(shù),是目前最熱門的開發(fā)技術(shù)。Android智能手機(jī)是人們身邊最普遍、最方便快捷的工具,通過對(duì)手機(jī)快遞系統(tǒng)的研究[3-4],能夠加快快遞領(lǐng)域市場(chǎng)化步伐,讓投遞員了解訂單的實(shí)時(shí)動(dòng)態(tài)變化,實(shí)現(xiàn)快速搶單,及時(shí)處理積壓訂單,提高效率,同時(shí)能夠?qū)崟r(shí)了解自己的工作業(yè)績(jī)。
1 系統(tǒng)分析
基于手機(jī)的快遞系統(tǒng)項(xiàng)目,來源于揚(yáng)州快點(diǎn)網(wǎng)電子商務(wù)有限公司的實(shí)際需求,實(shí)現(xiàn)買家從網(wǎng)絡(luò)平臺(tái)購買商品下單后,快遞人員快速高效地從商家取貨并安全將商品送達(dá)客戶手中。該系統(tǒng)的研發(fā)將改變傳統(tǒng)的快遞訂單獲取方式,可將訂單信息實(shí)時(shí)推送到快遞人員手機(jī)上,便于快遞搶單,提升物流運(yùn)轉(zhuǎn)速度和效率。這一運(yùn)營(yíng)模式的改變,是“互聯(lián)網(wǎng)+”產(chǎn)業(yè)的典型應(yīng)用[5],具有一定的現(xiàn)實(shí)意義和社會(huì)意義。其研究成果既可直接服務(wù)于揚(yáng)州快點(diǎn)網(wǎng)電子商務(wù)公司,也可復(fù)制推廣到整個(gè)物流行業(yè),項(xiàng)目極具創(chuàng)新性且現(xiàn)實(shí)可行。
手機(jī)快遞搶單系統(tǒng)設(shè)計(jì)具有以下特點(diǎn):①軟件安裝在手機(jī)上,使用簡(jiǎn)單、便捷;②改變了傳統(tǒng)的訂單獲取方式,物流派單系統(tǒng)將訂單直接推送到快遞人員手機(jī)上,快遞工作人員通過手機(jī)即可查看自己的訂單業(yè)務(wù),直接去商家取貨并完成派送工作;③通過手機(jī)可以實(shí)現(xiàn)訂單信息的在線更新,實(shí)時(shí)了解物流動(dòng)態(tài),查看系統(tǒng)中等待派送的訂單,快遞工作人員可以通過搶單的方式獲取訂單,取貨并完成派送,加快了物流行業(yè)運(yùn)轉(zhuǎn)速度;④快遞人員可以實(shí)時(shí)查詢自己完成的業(yè)務(wù)量,了解自己的工作業(yè)績(jī);⑤公司指派業(yè)務(wù)和快遞搶單相結(jié)合,是基本工作量和績(jī)效工作量的結(jié)合,提高了員工的工作積極性,同時(shí)也加快了快遞投遞領(lǐng)域市場(chǎng)化的步伐。
2 系統(tǒng)設(shè)計(jì)
系統(tǒng)采用客戶端/服務(wù)器模式,具體包括Android快遞搶單客戶端、Web服務(wù)器、后臺(tái)數(shù)據(jù)庫、無線網(wǎng)絡(luò)等部分,其物理結(jié)構(gòu)如圖1所示??头薃ndroid智能手機(jī)通過無線網(wǎng)絡(luò)訪問后臺(tái)服務(wù)器,若需要數(shù)據(jù)訪問,則訪問后臺(tái)數(shù)據(jù)庫。
Android客戶端設(shè)計(jì)采用基于Java語言的Eclipse集成開發(fā)環(huán)境,網(wǎng)絡(luò)通信使用Apache HTTP協(xié)議客戶端,Web服務(wù)器采用Servlet響應(yīng)客戶請(qǐng)求。系統(tǒng)客戶端采用SQLite數(shù)據(jù)庫,存儲(chǔ)自己的業(yè)務(wù)訂單,服務(wù)器端采用MySQL數(shù)據(jù)庫,通過軟件提供客戶端數(shù)據(jù)和服務(wù)器端數(shù)據(jù)同步功能,提高程序運(yùn)行效率。具體業(yè)務(wù)流程如圖2所示。
3 功能實(shí)現(xiàn)
3.1 公共模塊設(shè)計(jì)
在軟件開發(fā)過程中,經(jīng)常需要設(shè)計(jì)一些公共模塊,如數(shù)據(jù)庫連接、數(shù)據(jù)存儲(chǔ)、網(wǎng)絡(luò)傳輸、格式處理等,以提高程序開發(fā)速度,降低代碼冗余度。因此,開發(fā)系統(tǒng)前需要設(shè)計(jì)此類的公共模塊。
(1)數(shù)據(jù)庫幫助類。本系統(tǒng)客戶端設(shè)有數(shù)據(jù)庫Order.db,主要是保存快遞員的訂單業(yè)務(wù)信息,其數(shù)據(jù)可以從服務(wù)器中更新獲取??爝f員可以方便查看屬于自己的業(yè)務(wù)信息,以便更好地完成任務(wù)。讀寫本地?cái)?shù)據(jù)庫Order.db必須借助系統(tǒng)的SQLiteOpenHelper,因此可以繼承SQLiteOpenHelper基類,添加系統(tǒng)所需的數(shù)據(jù)庫管理功能,形成方便的數(shù)據(jù)庫幫助類DBHelper。
(2)訂單引擎類。管理自己的業(yè)務(wù)訂單信息需要連接Order.db,讀寫訂單表中的數(shù)據(jù),并借助哈希表進(jìn)行數(shù)據(jù)處理。設(shè)計(jì)一個(gè)OrderProvider公共類,實(shí)現(xiàn)數(shù)據(jù)的增、改、刪、查,可以避免不同程序模塊中的相似操作代碼,減少程序冗余。
(3)網(wǎng)絡(luò)傳輸類。實(shí)現(xiàn)用戶登錄、管理訂單等操作,都需要連接網(wǎng)絡(luò)服務(wù)器和數(shù)據(jù)庫。設(shè)計(jì)一個(gè)網(wǎng)絡(luò)連接與傳輸?shù)墓差怘ttpUtil.java完成此項(xiàng)任務(wù)??梢赃x用Post方式向服務(wù)器發(fā)出請(qǐng)求,根據(jù)響應(yīng)結(jié)果Result來判斷網(wǎng)絡(luò)連接情況。
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 = "網(wǎng)絡(luò)異常!";
return result;
} catch (IOException e) {
e.printStackTrace();
result = "網(wǎng)絡(luò)異常!";
return result;
}
return null;
}
3.2 登錄模塊設(shè)計(jì)
為了增強(qiáng)系統(tǒng)的安全性,使用該系統(tǒng)必須進(jìn)行身份認(rèn)證,因此登錄模塊必不可少。登錄過程是通過無線網(wǎng)絡(luò),在后臺(tái)數(shù)據(jù)庫中進(jìn)行用戶工號(hào)和密碼認(rèn)證,在后面訂單管理中都要用到登錄用戶信息,這樣可以做到責(zé)任分明、工作嚴(yán)謹(jǐn)。
登錄基本流程是:輸入用戶工號(hào)和密碼,在本地進(jìn)行合法性認(rèn)證,符合規(guī)則后提交給服務(wù)器,在后臺(tái)數(shù)據(jù)庫中進(jìn)行查詢,如果有該用戶則進(jìn)入系統(tǒng),否則給出錯(cuò)誤提示。
登錄成功后,將用戶信息保存至配置文件中,以在后面訂單管理中使用。
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 主界面設(shè)計(jì)
用戶登錄成功后即可進(jìn)入系統(tǒng)的主界面,如圖3所示。主界面通過一個(gè)GridView展示,在GridView中設(shè)置子組件ImageView,每個(gè)ImageView代表一個(gè)功能,同時(shí)在ImageView下方顯示文字,便于直觀理解,符合目前手機(jī)流行界面的設(shè)計(jì)要求。對(duì)每個(gè)ImageView建立一個(gè)事件的監(jiān)聽器,當(dāng)單擊ImageView時(shí)會(huì)跳轉(zhuǎn)到相應(yīng)的功能界面。比如,點(diǎn)擊系統(tǒng)主界面上的“待派訂單”圖標(biāo),可以進(jìn)入待派訂單模塊,如圖4所示。
3.4 訂單模塊設(shè)計(jì)
訂單管理模塊主要包括待派訂單、指派訂單、搶單訂單、送達(dá)訂單等。
(1)待派訂單模塊。在系統(tǒng)的主界面點(diǎn)擊“待派訂單”圖標(biāo),可以進(jìn)入該模塊。該模塊主要包括以下功能:①顯示待派訂單:通過自定義的ListView組件在線顯示物流訂單派送系統(tǒng)中等待派送的訂單信息,上面一行顯示下單時(shí)間和訂單狀態(tài),下面一行顯示商家名稱和派送地址;②更新功能:重新刷新訂單列表,顯示正在等待派送的訂單;③搶單功能:訂單的一種獲取方式,在等待派送的訂單列表中可以選擇性搶單。若搶單成功,搶單的訂單信息將顯示到后面的搶單訂單列表中。
客戶端通過選擇的訂單信息以Post方式向服務(wù)器發(fā)出請(qǐng)求,通過返回結(jié)果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();
服務(wù)器接受請(qǐng)求,并獲取客戶端的請(qǐng)求參數(shù)。若可以搶單,則向客戶端發(fā)出“搶單成功”字樣信息。
String id = request.getParameter("id");
String op_id = request.getParameter("op_id");
dao.ModifyDpai(id, op_id);
out.println("搶單成功!")
(2)指派訂單模塊。指派訂單是訂單的另一種獲取方式,除了搶單方式獲取外,還有公司每天指派的訂單任務(wù)。通過指派訂單模塊可以在線查看公司指定本人當(dāng)天派送的訂單信息,同時(shí)將該訂單信息保存到手機(jī)的本地?cái)?shù)據(jù)庫中,以便于查看。
(3)搶單訂單模塊。搶單功能在待派訂單模塊中實(shí)現(xiàn),該模塊屬管理模塊,管理在待派訂單中通過搶單方式獲取的訂單信息,并根據(jù)訂單信息完成商家取單及投遞。
通過搶單獲取的訂單信息除了提交服務(wù)器外,也保存一份至本地SQLite數(shù)據(jù)庫中,可以在本地?cái)?shù)據(jù)庫中查詢并以列表方式在該模塊中顯示出來。
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)送達(dá)訂單模塊。管理本人已經(jīng)完成的訂單信息,可以分時(shí)間段統(tǒng)計(jì)或查看自己的工作業(yè)績(jī)。完成的訂單信息需要提交至網(wǎng)絡(luò)數(shù)據(jù)庫,同時(shí)更新本地?cái)?shù)據(jù)庫。
(5)其它模塊。包括系統(tǒng)設(shè)置、密碼管理、注銷系統(tǒng)、退出系統(tǒng)。主要實(shí)現(xiàn)本地?cái)?shù)據(jù)庫初始化、員工密碼修改、系統(tǒng)重新登錄以及退出整個(gè)系統(tǒng)。
4 結(jié)語
基于Android平臺(tái)的快遞搶單系統(tǒng)設(shè)計(jì),改變了傳統(tǒng)的快遞訂單獲取方式,可將訂單信息實(shí)時(shí)推送到快遞人員手機(jī)上??爝f員通過手機(jī)能夠及時(shí)掌握訂單信息的動(dòng)態(tài)變化,除了完成公司指派的訂單任務(wù)外,還可以有選擇性地進(jìn)行搶單,及時(shí)取貨完成投遞任務(wù),加快物流的運(yùn)轉(zhuǎn)速度。這一運(yùn)營(yíng)模式的改變,對(duì)整個(gè)物流行業(yè)具有一定的現(xiàn)實(shí)意義和社會(huì)意義。
參考文獻(xiàn):
[1]陳長(zhǎng)順.Android應(yīng)用開發(fā)[M].北京:高等教育出版社, 2014.
[2]劉連浩.物聯(lián)網(wǎng)與嵌入式系統(tǒng)開發(fā)[M].北京:電子工業(yè)出版社,2012.
[3]田智.安卓平臺(tái)快遞派送輔助軟件開發(fā)[J].電腦編程技巧與維護(hù), 2015(12):55-57.
[4]陳鳳翔,黃賢珊.智能手機(jī)快遞發(fā)件系統(tǒng)研究[J].武漢理工大學(xué)學(xué)報(bào), 2015(8):396-398.
[5]鄔航濤,楊斌,樓駿鵬.基于物聯(lián)網(wǎng)的智能快遞終端[J].輕工機(jī)械, 2015(6):109-112.
(責(zé)任編輯:孫 娟)