黎 逍,姜開永,李文達(dá),林欽鴻,梁浩文
(廣州城市理工學(xué)院,廣東 廣州 510000)
零售批發(fā)商或小型庫存企業(yè)在日常工作中,需要對大宗貨物進(jìn)行進(jìn)銷存、訂單管理和貨物分揀等工作,由于接觸的商品類別,進(jìn)出貨的上下游商家/ 企業(yè)較多,往往耗費(fèi)大量的時(shí)間和精力對商品信息進(jìn)行維護(hù)。但由于經(jīng)營規(guī)模或經(jīng)營成本的限制,很多商家依然采用賬本登記的方式記錄銷存信息等內(nèi)容,這種方法不僅記錄方式效率低,而且容易出現(xiàn)錯(cuò)誤。特別是進(jìn)行商品盤點(diǎn)時(shí)還需要人工介入,不僅人工成本較高,而且工作重復(fù),效率低下。隨著信息化在生活工作中的普及,這些商家若想提高效益,改善營銷環(huán)境,就需要引入信息化管理措施,以降低訂單和配送錯(cuò)誤率,實(shí)現(xiàn)精準(zhǔn)運(yùn)營。為了契合這類商家的需求,因而研發(fā)設(shè)計(jì)了一款輕量級的商品配送系統(tǒng)。
本系統(tǒng)采用Qt 框架[1]、lua 腳本語言和C++ Boost庫[2]進(jìn)行開發(fā)實(shí)現(xiàn)。其中,Qt 實(shí)現(xiàn)界面UI 設(shè)計(jì);lua 腳本實(shí)現(xiàn)系統(tǒng)頂層功能實(shí)現(xiàn),用于改善系統(tǒng)效率和靈活度;Boost 庫作為C++語言的標(biāo)準(zhǔn)庫,以便使用C++擴(kuò)展的程序庫,用于加快系統(tǒng)開發(fā)速度。
本系統(tǒng)的整體結(jié)構(gòu)如圖1 所示。根據(jù)商家對業(yè)務(wù)的需求,本系統(tǒng)劃分了客戶管理、商品管理、單據(jù)管理和業(yè)務(wù)員管理等模塊。其中,客戶管理和業(yè)務(wù)員管理屬于基礎(chǔ)數(shù)據(jù)的管理,能夠?qū)崿F(xiàn)對人員信息的注冊、修改、刪除和顯示等操作;單據(jù)管理和商品管理屬于業(yè)務(wù)數(shù)據(jù)的管理,能夠?qū)崿F(xiàn)對商品和訂單的增、刪、改、查操作。

圖1 系統(tǒng)整體結(jié)構(gòu)圖
本系統(tǒng)采用PostgreSQL 數(shù)據(jù)庫[3],用于存儲數(shù)據(jù)信息。根據(jù)系統(tǒng)整體結(jié)構(gòu)圖中劃分的邏輯功能進(jìn)行數(shù)據(jù)庫的設(shè)計(jì),本系統(tǒng)需要?jiǎng)?chuàng)建包括客戶信息表、業(yè)務(wù)員信息表、商品信息表和單據(jù)信息表在內(nèi)的,共4 個(gè)數(shù)據(jù)表,部分表的信息如下:客戶信息表如表1,記錄了客戶名稱、客戶類型、店鋪名稱、客戶區(qū)域和客戶地址等內(nèi)容。

表1 客戶信息表
商品信息表如表2,記錄了商品條碼、商品名稱、規(guī)格、單價(jià)、系列和倉庫等內(nèi)容。

表2 商品信息表
單據(jù)信息表如表3,記錄了客戶地址、店鋪名稱、業(yè)務(wù)員、商品信息等內(nèi)容。

表3 訂單信息表
系統(tǒng)主界面采用簡約的設(shè)計(jì)風(fēng)格,如圖2 所示,界面從上到下分為三個(gè)部分,第一部分,包含軟件名稱和常用工具,用于燮制窗口關(guān)閉、最小化、發(fā)送郵件和查看信息等功能;第二部分,包含主功能燮件,用于實(shí)現(xiàn)系統(tǒng)的主要功能;第三部分,用于對所選功能進(jìn)行解釋說明。

圖2 系統(tǒng)主界面
客戶管理集成了客戶瀏覽、添加和刪除操作,點(diǎn)擊客戶管理燮件,打開后的客戶管理對話框如圖3 所示。

圖3 客戶管理
客戶管理對話框的頂部,設(shè)置了信息檢索區(qū)和功能燮件區(qū),當(dāng)記錄的客戶數(shù)量較多時(shí),可通過檢索區(qū)域進(jìn)行客戶查詢;也可以在該對話框內(nèi)添加新客戶或者修改現(xiàn)有客戶信息等。
以客戶信息修改為例,點(diǎn)擊客戶信息欄中的一個(gè)客戶,使之處于被選中的狀態(tài),然后點(diǎn)擊【客戶信息修改】,即可進(jìn)入客戶修改對話框,如圖4 所示。

圖4 客戶修改對話框
單據(jù)管理是對客戶采購訂單的管理,能夠進(jìn)行基本的采購操作,如果商品在倉庫的數(shù)量不足,將會進(jìn)行提示,如圖5 所示。

圖5 單據(jù)管理
單據(jù)管理模塊是本系統(tǒng)的核心模塊,用于實(shí)現(xiàn)商家對單據(jù)進(jìn)行統(tǒng)計(jì)和管理的功能。主要包括:新增單據(jù)、預(yù)覽/打印單據(jù)和單據(jù)處理等功能。新增單據(jù)又分新增商品、刪除商品和修改商品等功能;單據(jù)處理包括:顯示單據(jù)詳細(xì)信息,通過店鋪名稱、客戶地址、查詢時(shí)間段篩選單據(jù)信息,刪除單據(jù)等功能。
單據(jù)處理模塊在實(shí)現(xiàn)時(shí),采用線程池和RAII 機(jī)制。程序一開始運(yùn)行后,便初始化八個(gè)線程并使它們處于阻塞狀態(tài)。當(dāng)有一個(gè)IO 處理即數(shù)據(jù)的讀取或者寫入時(shí),就會喚醒一個(gè)阻塞的線程處理IO 操作,以便線程在后期執(zhí)行時(shí)不會影響主線程的執(zhí)行。本系統(tǒng)使用線程池目的是方便管理線程的創(chuàng)建和銷毀,防止反復(fù)開辟線程,以降低資源開銷,提高系統(tǒng)運(yùn)行效率。
商品管理模塊實(shí)現(xiàn)對商家的商品進(jìn)行系統(tǒng)化管理功能,[4-5]錄入系統(tǒng)的商品能夠銷售給客戶,并記錄在訂單上,如圖6 所示。

圖6 商品管理
商品管理模塊的功能包括增加商品、刪除商品和修改商品信息等,可通過商品編碼、商品名稱和商品系列篩選商品的信息,為商家提供便利搜索的功能。其中,增加商品可以為商品增加商品序號、商品條款碼、商品名稱、商品規(guī)格單價(jià)等信息。商家也可在后臺進(jìn)行商品數(shù)據(jù)的錄入。
為了便于數(shù)據(jù)篩選和查詢,減少索引沖突,商品管理模塊編程時(shí),序號是通過自增索引進(jìn)行自動生成的。
備份數(shù)據(jù)模塊,用于備份系統(tǒng)的數(shù)據(jù),防止系統(tǒng)崩潰后導(dǎo)致數(shù)據(jù)丟失的問題產(chǎn)生,如圖7 所示。

圖7 數(shù)據(jù)備份
點(diǎn)擊備份數(shù)據(jù)按鍵后,即可將數(shù)據(jù)備份成獨(dú)立的文件,商家可通過查看文件來獲取備份的內(nèi)容,也可以進(jìn)行再次存儲和轉(zhuǎn)發(fā)。
在系統(tǒng)的客戶模塊、產(chǎn)品模塊和業(yè)務(wù)員模塊中,分別錄入對應(yīng)的數(shù)據(jù)后,進(jìn)入單據(jù)管理模塊并創(chuàng)建訂單,若能啟動打印機(jī)并進(jìn)行打印操作,則表明系統(tǒng)運(yùn)行正常,如圖8所示。

圖8 形成的配送單據(jù)
本文研究并設(shè)計(jì)的基于Qt 框架的商品配送系統(tǒng),采用C/S 結(jié)構(gòu),能夠在Windows 系統(tǒng)上安裝使用。由于采用C++多線程和線程池技術(shù),對系統(tǒng)的資源開銷小,運(yùn)行效率高。系統(tǒng)的功能緊湊,從數(shù)據(jù)錄入到配送訂單生成直至最終打印,操作過程簡單,形成的訂單及其內(nèi)容準(zhǔn)確,打印輸出紙質(zhì)訂單便于商家核對和保存。該系統(tǒng)的應(yīng)用,對于提升商家的信息化管理和精準(zhǔn)營銷,具有一定的推動作用。