于佳瑋++閆迎迎
摘要:以Java語言和SQL Server數(shù)據(jù)庫為基礎(chǔ),利用傳統(tǒng)的MVC模式設(shè)計(jì)了物流運(yùn)輸管理系統(tǒng),實(shí)現(xiàn)了用戶在線下單、實(shí)時(shí)計(jì)算運(yùn)費(fèi)、后臺(tái)操作員實(shí)時(shí)接單處理等相關(guān)功能,方便了客戶對(duì)貨物寄送的需求,極大地提高了企業(yè)的貨物運(yùn)輸效率。
關(guān)鍵詞:Java Web;物流運(yùn)輸管理;MVC;ExtJS
中圖分類號(hào):TP315 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)09-0283-03
1 背景
隨著物流行業(yè)的不斷發(fā)展,各物流公司之間競(jìng)爭(zhēng)也日益加劇。目前,多數(shù)物流公司接收貨物都是以用戶上門提交來完成,用戶運(yùn)輸?shù)呢浳锪看髸r(shí)還要自己尋找車輛運(yùn)輸,物流公司對(duì)各種用戶的貨物信息要計(jì)算貨物運(yùn)輸費(fèi)用并做出詳細(xì)的清單,十分不便。針對(duì)以上的問題,設(shè)計(jì)并實(shí)現(xiàn)了基于傳統(tǒng)MVC架構(gòu)的物流運(yùn)輸管理系統(tǒng),解決了用戶注冊(cè)后在線下單、物流運(yùn)輸公司后臺(tái)操作員時(shí)時(shí)接單處理等需求。系統(tǒng)采用JSP語言和SQL server 2005數(shù)據(jù)庫編寫,采用傳統(tǒng)的MVC編程模式實(shí)現(xiàn)系統(tǒng),降低模塊之間耦合性,方便后期進(jìn)行擴(kuò)展和維護(hù)。
2 系統(tǒng)架構(gòu)
物流運(yùn)輸管理系統(tǒng)根據(jù)面臨的實(shí)際需求來設(shè)計(jì)實(shí)現(xiàn)系統(tǒng)各個(gè)功能模塊,使用JSP、Servlet和JavaBean實(shí)現(xiàn)。MVC設(shè)計(jì)模式使應(yīng)用程序被分成模型(Model)、視圖(View)和控制器(Control)三個(gè)核心部件,將系統(tǒng)設(shè)計(jì)者和程序員的角色清楚地劃分開。模型是在系統(tǒng)程序中處理數(shù)據(jù)邏輯的部分,視圖是在系統(tǒng)程序中處理數(shù)據(jù)顯示的部分??刂破魇窃谙到y(tǒng)程序中處理用戶交互的部分,將視圖上的行為(比如點(diǎn)擊Submit提交按鈕)映射到模型上的操作(比如提交用戶下單相關(guān)的信息),它的運(yùn)行模式如圖1所示。系統(tǒng)使用ExtJS設(shè)計(jì)界面,ExtJS是一套客戶端框架,完全基于JavaScript、CSS和HTML實(shí)現(xiàn),與主流瀏覽器完全兼容,并且無需安裝任何插件。
JSP全名為Java Server Pages,是在Sun Microsystems公司的倡導(dǎo)下、多家公司共同參與建立的一種跨平臺(tái)的動(dòng)態(tài)網(wǎng)頁技術(shù),在傳統(tǒng)靜態(tài)HTML頁面中嵌入Java代碼片段,再由Web服務(wù)器中的JSP引擎來進(jìn)行編譯并執(zhí)行嵌入的Java代碼片段,生成的頁面信息返回給客戶端。JavaBean是Java語言寫成的一種可復(fù)用的平臺(tái)獨(dú)立軟件組件,主要負(fù)責(zé)處理后臺(tái)的數(shù)據(jù)運(yùn)算和數(shù)據(jù)庫的相關(guān)操作;Servlet是連接前臺(tái)和后臺(tái)service層的橋梁,是數(shù)據(jù)的中轉(zhuǎn)站,主要負(fù)責(zé)交互式瀏覽和修改數(shù)據(jù)并生成動(dòng)態(tài)內(nèi)容,它的工作流程為:用戶通過HTTP在本地Web端發(fā)出請(qǐng)求,服務(wù)器端收到用戶的請(qǐng)求提交到Servlet容器并調(diào)用Servlet中編寫設(shè)計(jì)的相關(guān)方法來處理請(qǐng)求,訪問Sql Server數(shù)據(jù)庫,調(diào)用Web服務(wù)、EJB或直接給出處理結(jié)果,并生成一個(gè)響應(yīng)。響應(yīng)由Servlet容器返回給服務(wù)器,服務(wù)器包裝這個(gè)響應(yīng)后以HTTP響應(yīng)的方式發(fā)送給本地Web瀏覽器。 Servelt與一般JAVA類的不同之處是可以處理HTTP請(qǐng)求。
ExtJS是采用JavaScript寫的主要用于創(chuàng)建用戶界面的前端框架。ExtJs由開發(fā)人員Jack Slocum開發(fā),通過參考Java Swing等機(jī)制來組織可視化組件,無論是在UI界面上CSS樣式的應(yīng)用,到對(duì)數(shù)據(jù)解析異常處理,都算是一款不可多得的JavaScript客戶端技術(shù)的精品。因?yàn)樗c后臺(tái)技術(shù)無關(guān),因此可以在Java.、Net等各種語言開發(fā)的應(yīng)用中使用ExtJS對(duì)前端頁面進(jìn)行設(shè)計(jì)美化,達(dá)到快速開發(fā)的目的,提升效率。
3 系統(tǒng)需求設(shè)計(jì)
在物流運(yùn)輸管理系統(tǒng)的特點(diǎn)是:用戶注冊(cè)后可以在線下單,方便高效,下單過程中根據(jù)填寫的信息實(shí)時(shí)計(jì)算出所需支付的費(fèi)用。用戶可選擇自己配送或是讓物流公司上門提貨,物流公司在線接單后根據(jù)用戶實(shí)際訂單貨物量和地址距離來派車,充分提高了貨物運(yùn)送的效率。功能模塊如圖2所示。
物流運(yùn)輸管理系統(tǒng)主要分為前臺(tái)用戶和后臺(tái)管理員兩類角色。后臺(tái)管理員分為:系統(tǒng)操作員、主管、財(cái)務(wù)人員和超級(jí)管理員,其中系統(tǒng)操作員又分接單操作員、派單操作員和干線商聯(lián)系人操作員。對(duì)于后臺(tái)管理員的一系列操作,主要分幾個(gè)時(shí)間節(jié)點(diǎn):未審核狀態(tài)、已審核未派車狀態(tài)、已派車未入庫狀態(tài)、已入庫待運(yùn)輸狀態(tài)、運(yùn)輸中狀態(tài)和運(yùn)輸完成已簽收狀態(tài)。
1)前臺(tái)用戶模塊。該模塊實(shí)現(xiàn)用戶注冊(cè)、個(gè)人信息修改、密碼修改、運(yùn)單查詢、在線下單和物流查詢功能。
2)接單操作員模塊。接單操作員查看并審核客戶已提交的運(yùn)單信息,并反饋給客戶。
3)派單操作員模塊。派單操作員根據(jù)運(yùn)單的實(shí)際處理情況派車提貨并能根據(jù)實(shí)際需求對(duì)運(yùn)單部分信息進(jìn)行修改。
4)干線商聯(lián)系人操作員模塊。干線商聯(lián)系人操作員通過本系統(tǒng)反饋,及時(shí)聯(lián)系干線商進(jìn)行貨物運(yùn)輸及物流狀態(tài)更新。
5)主管模塊。主管登錄系統(tǒng)后,可以查看掌握所有訂單的實(shí)時(shí)處理動(dòng)態(tài),做出相應(yīng)決策。
6)超級(jí)管理員模塊。超級(jí)管理員可以通過系統(tǒng)后臺(tái)管理所有人員,包括每個(gè)操作員的相關(guān)權(quán)限和人員的增加刪除。
4 系統(tǒng)部分功能設(shè)計(jì)與實(shí)現(xiàn)
4.1 用戶在線下單模塊
該部分主要實(shí)現(xiàn)了已注冊(cè)登錄的用戶對(duì)貨物運(yùn)輸?shù)脑诰€下單功能,設(shè)計(jì)過程如下:用戶登錄系統(tǒng)后點(diǎn)擊“我要下單”進(jìn)入下單頁面,填寫發(fā)貨人信息、收貨人信息、貨物信息和其他增值費(fèi)用信息。在填寫相關(guān)信息的過程中,點(diǎn)擊不同費(fèi)用的id操作,觸發(fā)onblur()事件和onchange事件等事件調(diào)用Ajax的異步傳輸,提交一個(gè)攜帶費(fèi)用信息的長(zhǎng)字符串到后臺(tái)Servlet對(duì)用戶當(dāng)前所填內(nèi)容進(jìn)行實(shí)時(shí)計(jì)算,并將計(jì)算的詳細(xì)費(fèi)用顯示在頁面左側(cè),供下單用戶參考。填寫完畢后,用戶勾選同意相關(guān)貨物運(yùn)輸協(xié)議,“我要下單”按鈕從灰色的不可點(diǎn)擊狀態(tài)轉(zhuǎn)為藍(lán)色可下單狀態(tài),點(diǎn)擊按鈕提交訂單;前臺(tái)js相關(guān)代碼在提交前進(jìn)行數(shù)據(jù)格式驗(yàn)證,若驗(yàn)證失敗則彈出問題提示信息;若驗(yàn)證成功則提交請(qǐng)求至后臺(tái),此時(shí)運(yùn)單狀態(tài)變?yōu)槲磳徍?。用戶也可以選擇“保存草稿”對(duì)已填寫內(nèi)容保存,方便之后繼續(xù)填寫。圖3為用戶下單頁面。
4.2 接單操作員審核運(yùn)單模塊
后臺(tái)接單員對(duì)用戶新下的運(yùn)單進(jìn)行審核,若用戶未選擇上門提貨,則審核通過后訂單從未審核狀態(tài)變?yōu)槲慈霂鞝顟B(tài),否則審核通過后轉(zhuǎn)變?yōu)橐雅绍嚑顟B(tài)。若審核未通過則轉(zhuǎn)為審核未通過狀態(tài)。當(dāng)用戶新下單后超過一定時(shí)間未被審核處理時(shí),系統(tǒng)自動(dòng)提高其處理優(yōu)先級(jí),將運(yùn)單按照其優(yōu)先級(jí)的高低順序顯示給接單操作員處理。接單操作員對(duì)新收到的運(yùn)單操作如圖4所示。
4.3 派單操作員派車提貨模塊操
后臺(tái)派單員對(duì)需要派車提貨運(yùn)單填寫派出的車輛信息并進(jìn)行派車提貨,并轉(zhuǎn)為已派車未入庫狀態(tài)。當(dāng)確認(rèn)貨物入庫后,派單操作員將運(yùn)單裝狀態(tài)改為已入庫待運(yùn)輸狀態(tài)。當(dāng)待派車的運(yùn)單超過一定時(shí)間未被處理時(shí),系統(tǒng)自動(dòng)提高其處理優(yōu)先級(jí),將運(yùn)單按照其優(yōu)先級(jí)的高低順序顯示給派單操作員處理。派單操作員對(duì)運(yùn)單派車操作如圖5所示。
4.4 干線商聯(lián)系人操作員模塊
對(duì)于自身運(yùn)輸?shù)木€路,物流公司可以選擇獨(dú)自承擔(dān)運(yùn)輸貨物服務(wù)。對(duì)于超出運(yùn)輸路線的運(yùn)單,物流公司需要聯(lián)系干線商為其提供貨物運(yùn)輸服務(wù),并錄入干線商運(yùn)送貨物車輛信息,貨車信息組成為貨車司機(jī)姓名+司機(jī)電話+貨車車號(hào)+車型。此時(shí)運(yùn)單狀態(tài)變?yōu)檫\(yùn)輸中狀態(tài)。
4.5 簽收確認(rèn)模塊
貨物已完成配送且收件人已簽收后,需要對(duì)運(yùn)單執(zhí)行簽收操作,并向系統(tǒng)上傳簽收拍照?qǐng)D片。運(yùn)單完成后,狀態(tài)更改為已完成狀態(tài),前臺(tái)用戶可在已完成運(yùn)單中查看詳細(xì)信息。
5 數(shù)據(jù)庫設(shè)計(jì)
系統(tǒng)數(shù)據(jù)庫采用SQL Server 2005,設(shè)計(jì)了dbo.admin1、dbo.adminorder、dbo.contacts、dbo.logistics、dbo.trunk、dbo.userorder、dbo.packing、dbo.goods、dbo.freighttype等17個(gè)表。各個(gè)數(shù)據(jù)庫表圖如圖6所示。
6 結(jié)束語
本文介紹了使用傳統(tǒng)MVC模式設(shè)計(jì)的物流運(yùn)輸管理系統(tǒng),根據(jù)具體需求以時(shí)間節(jié)點(diǎn)為順序分析了每個(gè)角色的功能作用和實(shí)現(xiàn),希望該文能讓讀者了解物流運(yùn)輸?shù)牧鞒碳熬唧w的設(shè)計(jì)實(shí)現(xiàn)過程。
參考文獻(xiàn):
[1] 屈展, 李嬋. JSON在Ajax數(shù)據(jù)交換中的應(yīng)用研究[J]. 西安石油大學(xué)學(xué)報(bào):自然科學(xué)版, 2011(1): 95-98,122.
[2] 陳道鑫, 宋紹云, 袁中旺, 等. ExtJS框架在Web軟件開發(fā)中的應(yīng)用[J]. 電腦知識(shí)與技術(shù), 2011(9): 2044-2047.
[3] 孫瑩, 許俊華, 張毅, 等. MVC編程模型在Web程序中的應(yīng)用及Java實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與應(yīng)用, 2001(17): 160-163.
[4] 張圣篩, 陳家琪. 基于JavaWeb的高校學(xué)生考勤管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件導(dǎo)刊, 2015(12): 84-86.