張京宇 溫蟾圓 吳彩元 張廣浩 武文斌
(北京信息科技大學(xué)計算機(jī)學(xué)院 北京市 100101)
隨著庫存管理系統(tǒng)的不斷發(fā)展,現(xiàn)代信息技術(shù)在其中占據(jù)了越來越大的比重,大型企業(yè)不再使用各自為政的傳統(tǒng)庫存管理系統(tǒng)?,F(xiàn)代信息技術(shù)給庫存管理帶來了在企業(yè)管理的決策層面的好處,決策者可以從基層產(chǎn)生的大量信息中獲得了生產(chǎn)線效率、生產(chǎn)成本的結(jié)構(gòu)與變化、大型生產(chǎn)性資源的投資效益等關(guān)鍵傾向性信息,為管理層生成企業(yè)運(yùn)營的宏觀規(guī)劃。除此之外,通過運(yùn)用二維碼技術(shù)、大型數(shù)據(jù)庫技術(shù)、大數(shù)據(jù)與人工智能技術(shù)等現(xiàn)代信息技術(shù),實現(xiàn)定時定量的實時分析計算,有助于決策者更好的掌握企業(yè)的動向。
以上優(yōu)勢是以信息技術(shù)為基礎(chǔ)的庫存管理方法所具有的,而且隨著企業(yè)運(yùn)營模式的不斷改進(jìn),運(yùn)營理念的不斷創(chuàng)新,會變得越來越以客戶和用戶為中心,決策者就會需要更大量更細(xì)節(jié)化的庫存數(shù)據(jù),這都離不開智能化的高度先進(jìn)的現(xiàn)代信息技術(shù)。
一般來說,大型的物流企業(yè)供應(yīng)鏈網(wǎng)絡(luò)化和信息化程度較高,一般不存在致命性的庫存管理問題。這也就意味著我們的系統(tǒng)主要面向的對象是小微企業(yè)。這類客戶群體有一些共同的特點,由于業(yè)務(wù)規(guī)模小,故而庫存周轉(zhuǎn)周期較短,且一般不涉及完整的供應(yīng)鏈,只作為供應(yīng)鏈的末端實體存在。[1]
針對這些業(yè)務(wù)特點,我們需要將兩類庫存區(qū)分開,第一類是入庫的庫存,例如生產(chǎn)制造成品所需要的生產(chǎn)資料、生產(chǎn)過程中所需的耗材等。第二類是出庫的庫存,主要就是生產(chǎn)制造的產(chǎn)成品。這兩者無論是誰如果發(fā)生短缺的現(xiàn)象都會造成企業(yè)的經(jīng)濟(jì)損失。我們的庫存管理系統(tǒng)的一個主要目標(biāo)就是保障用戶的庫存滿足用戶的生產(chǎn)、銷售的目標(biāo)需求。
其次,我們要防止多余的庫存會造成企業(yè)成本的損失,也就是說生產(chǎn)產(chǎn)品所需要的庫存要與預(yù)期的生產(chǎn)目標(biāo)匹配。因此我們需要保障連續(xù)生產(chǎn)的前提下通過庫存管理與分析將庫存盡可能的維持在成本最優(yōu)的水平上從而使兩者匹配從而達(dá)到最大化企業(yè)資金利用率的目的。
以上兩點有一定的相互矛盾性。如果將所需要的生產(chǎn)資料的庫存維持在較低水平上進(jìn)行生產(chǎn)意味著極有可能造成用戶生產(chǎn)或銷售的目標(biāo)因為庫存不足從而無法實現(xiàn),這使得企業(yè)的生產(chǎn)風(fēng)險增大。如果將所需要的生產(chǎn)資料的庫存維持在較高的水平上進(jìn)行生產(chǎn)又意味著企業(yè)需要為此承擔(dān)更大的倉儲成本,這會增大企業(yè)的成本風(fēng)險。我們需要用定量的分析測算方法來平衡這個矛盾,對庫存實施定量控制,從而實現(xiàn)我們的兩個目的。
綜上所述,我們可以認(rèn)為我們系統(tǒng)的主要任務(wù)就是提高企業(yè)的庫存周轉(zhuǎn)率,實現(xiàn)精確的庫存控制。為了完成我們的任務(wù),我們需要著手解決幾個問題。
圖1:模塊化設(shè)計
圖2:數(shù)據(jù)庫設(shè)計
圖3:人員管理
(1)實現(xiàn)庫存信息的集中管理,做好基礎(chǔ)的增刪改查功能。
(2)以庫存作為變量,以降低庫存成本同時控制生產(chǎn)風(fēng)險為標(biāo)準(zhǔn)實現(xiàn)成本最低的庫存量動態(tài)調(diào)節(jié)機(jī)制。
(3)實現(xiàn)庫存事務(wù)的規(guī)范化,針對不同的管理人員設(shè)置不同的權(quán)限,保證企業(yè)的數(shù)據(jù)安全。
表1:庫存表單
表2:員工表單
表3:出庫記錄表單
表4:入庫記錄表單
表5:公告表單
本系統(tǒng)采用B/S 架構(gòu)(瀏覽器/服務(wù)器結(jié)構(gòu))設(shè)計,該架構(gòu)能大幅減輕瀏覽器端負(fù)荷,減少系統(tǒng)維護(hù)、升級的成本。本系統(tǒng)劃分為管理端和操作端兩個用戶子系統(tǒng),面向不同使用者。管理端實現(xiàn)庫存信息、人員信息及人員權(quán)限的增添、刪除、更改和查詢,適用與現(xiàn)實場景下的倉庫管理人員,該管理人員同時擔(dān)負(fù)著庫存管理系統(tǒng)的管理員工作。操作端是一個應(yīng)用程序,功能單一,僅實現(xiàn)庫存信息的添加或更改,適用于現(xiàn)實場景下的倉庫工作人員,主要用于物品的出入庫。服務(wù)器端采用LAMP 環(huán)境:Linux+Apache+MySQL+PHP。組成LAMP 環(huán)境的軟件均是開源軟件,也是國際上成熟的架構(gòu),既減少了應(yīng)用成本,也可以大幅節(jié)省服務(wù)器資源,提高瀏覽器端運(yùn)行效率。
操作端主要功能設(shè)計為:員工信息錄入、出庫操作、入庫操作,功能較為簡單,減少了使用者學(xué)習(xí)使用的成本。
管理端設(shè)計總體采用模塊化設(shè)計[2],一級模塊:注冊登錄登出模塊、出庫入庫模塊、庫存信息模塊、出入庫信息模塊、數(shù)據(jù)統(tǒng)計模塊、人員管理模塊以及公告模塊。模塊化設(shè)計如圖1所示。
注冊登錄登出模塊下設(shè)五個二級模塊:團(tuán)體注冊模塊、團(tuán)體數(shù)據(jù)庫登錄模塊、個人注冊模塊、個人登錄模塊、登出模塊。該模塊用于面向團(tuán)隊、個人用戶的注冊、登錄及登出,注冊登錄個人用戶需要先登錄團(tuán)隊用戶,輔以快捷登錄功能,可減少繁雜的登錄步驟,極大地提高工作效率。
圖4:權(quán)限細(xì)化表
圖5:庫存管理
圖6:登錄界面
出庫入庫模塊下設(shè)兩個二級模塊:手動出庫模塊、手動入庫模塊。該模塊用于在管理端進(jìn)行手動出庫入庫操作,需要相應(yīng)的權(quán)限才可訪問。
庫存信息模塊下設(shè)兩個二級模塊:庫存信息展示模塊、庫存信息修改模塊。該模塊用于查看倉庫內(nèi)的基本信息及貨物數(shù)量,并提供特定情況下的庫存信息修改功能,供管理者快速查看貨物儲量并作出決斷。
出入庫信息模塊下設(shè)兩個二級模塊:出庫信息展示模塊、入庫信息展示模塊。該模塊詳細(xì)存儲了物品的出入庫記錄,并可按商品、經(jīng)辦人和時間查詢信息。
數(shù)據(jù)統(tǒng)計模塊下設(shè)兩個二級模塊:歷史數(shù)據(jù)統(tǒng)計模塊、數(shù)據(jù)預(yù)測模塊。該模塊用于分時段查看歷史出入庫數(shù)據(jù)并根據(jù)歷史數(shù)據(jù)對未來數(shù)據(jù)進(jìn)行預(yù)測,供企業(yè)管理者和相關(guān)人員查詢、統(tǒng)計和分析,并為企業(yè)管理者做出相關(guān)決策提供可靠的數(shù)據(jù)來源。[3]
圖7:操作端
人員管理模塊下設(shè)兩個二級模塊:人員信息管理模塊、人員權(quán)限管理模塊。該模塊由管理員對團(tuán)隊用戶下的員工進(jìn)行增添改查操作,并可以修改員工的各模塊權(quán)限。該模塊需要相應(yīng)的訪問權(quán)限,并可從企業(yè)其他信息化軟件中導(dǎo)入相關(guān)信息。
公告模塊無下設(shè)二級模塊,主要用于用于管理員發(fā)布系統(tǒng)公告,可快速下達(dá)物流相關(guān)的通知和指示。
數(shù)據(jù)庫設(shè)計如圖2所示。本系統(tǒng)數(shù)據(jù)庫采用MySQL。根據(jù)需求分析和實際需求,我們設(shè)計了如表1、表2、表3、表4、表5所示的表單。
本系統(tǒng)采用團(tuán)隊協(xié)同開發(fā)的方式,管理端與操作端分別開發(fā)。團(tuán)隊協(xié)作開發(fā)需要統(tǒng)一開發(fā)環(huán)境并分配工作。基于此,我們選擇PHP 語言進(jìn)行管理端開發(fā),并采用WAMP+NetBeans 作為開發(fā)環(huán)境,并且將7 個模塊劃分為三個部分進(jìn)行開發(fā)工作:人員管理部分、庫存管理部分(包括庫存信息、出入庫記錄和數(shù)據(jù)統(tǒng)計模塊)、登錄及公告部分。
如圖3所示,人員管理部分需要實現(xiàn)管理員對人員信息的增加、查找、修改、刪除,以及人員的權(quán)限設(shè)定、細(xì)化和控制。
人員信息添加:團(tuán)隊有兩種方式添加人員,自主添加和手動添加。自主添加可以讓員工自行注冊系統(tǒng),在注冊時需要填寫相關(guān)個人信息和上級所給的權(quán)限信息。手動添加可以讓系統(tǒng)管理員手動錄入員工的個人相關(guān)信息并添加至系統(tǒng)中。
人員信息查找:系統(tǒng)在人員管理界面以表格形式展示了所有的員工信息供管理員查看;若企業(yè)員工數(shù)量較多,管理員還可以點擊上方的查詢按鈕,按照不同的查找規(guī)則進(jìn)行員工的查找。
人員信息修改:員工的個人信息在員工登錄系統(tǒng)后可自行修改;管理員也可以從人員管理界面對所有員工的個人信息進(jìn)行修改。員工修改密碼時需要輸入原密碼和新密碼,如果本人忘記了賬戶的原密碼,需要聯(lián)系管理員進(jìn)行密碼修改。管理員在對員工信息進(jìn)行修改時可以先對員工進(jìn)行查找操作,然后在查找結(jié)果中進(jìn)行修改。
人員刪除:考慮到賬戶的安全性,賬戶的刪除操作僅能由管理員進(jìn)行,員工不能自行注銷賬號。管理員可以在人員管理界面中對人員進(jìn)行刪除操作,也可以先進(jìn)行查找并在查找結(jié)果中進(jìn)行刪除操作。
權(quán)限設(shè)定:權(quán)限設(shè)定的初始化操作在員工注冊成功時就已經(jīng)完成。注冊請求一經(jīng)提交,員工的權(quán)限信息僅能由系統(tǒng)管理員更改,無法自己更改。
權(quán)限細(xì)化:為實現(xiàn)系統(tǒng)不同功能的權(quán)限控制操作,本系統(tǒng)預(yù)設(shè)的權(quán)限細(xì)化表如圖4所示。企業(yè)可根據(jù)自身情況制定權(quán)限細(xì)化表。
權(quán)限控制:在用戶訪問某模塊時,頁面會先檢測用戶有無訪問權(quán)限,若有訪問權(quán)限則會正常顯示;對于沒有訪問權(quán)限的用戶系統(tǒng)將會拒絕訪問并給出提示。
如圖5所示,庫存管理部分需要實現(xiàn)庫存信息的展示、出入庫記錄、手動出入庫、數(shù)據(jù)統(tǒng)計等功能。
庫存信息展示:當(dāng)員工查看此頁面時,系統(tǒng)將展示所有產(chǎn)品的庫存信息。每一種產(chǎn)品(擁有唯一的產(chǎn)品編號)為一行,并可以按多種排序方式查看。
出入庫記錄展示:出入庫記錄詳細(xì)記錄了所有出入庫信息。為方便查看,入庫和出庫記錄分別存儲展示。當(dāng)員工使用操作端進(jìn)行入庫或出庫操作時,系統(tǒng)會自動插入一條相應(yīng)的記錄信息,并將該產(chǎn)品的庫存數(shù)量做相應(yīng)的調(diào)整。
手動出入庫:若企業(yè)在周期性的產(chǎn)品清點的過程中,發(fā)現(xiàn)實際庫存數(shù)量與系統(tǒng)顯示的庫存數(shù)量有小幅差異,可使用手動出入庫操作進(jìn)行數(shù)據(jù)校對,該操作也會在出入庫記錄中展示并備注為“手動操作”。
數(shù)據(jù)統(tǒng)計:數(shù)據(jù)統(tǒng)計會展示一段時間內(nèi)各類產(chǎn)品的出入庫情況,為企業(yè)決策提供一定的數(shù)據(jù)基礎(chǔ)。若產(chǎn)品庫存數(shù)量低于設(shè)定的閾值,系統(tǒng)會發(fā)出“空倉預(yù)警”;若產(chǎn)品庫存數(shù)量高于設(shè)定的閾值,則系統(tǒng)會發(fā)出“滿倉預(yù)警”。決策者可以根據(jù)系統(tǒng)發(fā)出的預(yù)警信息以及產(chǎn)品出入庫信息調(diào)整進(jìn)貨數(shù)量。
如圖6所示,登錄及公告部分需要實現(xiàn)團(tuán)隊數(shù)據(jù)庫的登錄、個人賬戶登錄、個人賬戶注冊、賬戶退出、公告信息展示、公告發(fā)布等功能。本系統(tǒng)使用Cookie 來標(biāo)識用戶。
團(tuán)隊數(shù)據(jù)庫登錄:用戶輸入團(tuán)隊數(shù)據(jù)庫的賬戶和密碼,系統(tǒng)會加密發(fā)送登錄請求。服務(wù)器接收到登錄請求后,嘗試使用此賬戶密碼登錄數(shù)據(jù)庫。若登錄成功系統(tǒng)會自動設(shè)置團(tuán)體賬號的Cookie 信息并進(jìn)入員工個人賬戶登錄界面;若登錄失敗提示“賬戶或密碼錯誤”。為了方便用戶登錄,本系統(tǒng)提供了快捷登錄選項,若檢測到Cookie 信息存在且有效,系統(tǒng)會開放快捷登錄按鈕,用戶可以直接點擊快捷登錄直接訪問庫存管理系統(tǒng)的主頁。
個人賬戶登錄:用戶輸入員工個人的賬戶和密碼,系統(tǒng)會對密碼進(jìn)行MD5 加鹽加密,然后向服務(wù)器發(fā)送登錄請求。服務(wù)器接收到登錄請求后,匹配數(shù)據(jù)庫員工表單中存儲的賬戶和密碼。若匹配成功進(jìn)入庫存管理主界面,并設(shè)置個人賬號的Cookie 信息;若匹配失敗提示“賬戶或密碼錯誤”。
個人賬戶注冊:用戶輸入個人信息和登錄密碼后,系統(tǒng)會對個人信息進(jìn)行加密處理,并對密碼進(jìn)行MD5 加鹽加密,然后向服務(wù)器發(fā)送注冊請求。服務(wù)器接收到注冊請求后會在員工表單中嘗試插入該條信息。若插入成功則用戶注冊成功;若插入失敗則會提示“注冊失敗”并附上注冊失敗的原因。
賬戶退出:用戶退出賬戶時,系統(tǒng)會將用戶的Cookie 信息置空,從而取消了用戶的標(biāo)識,用戶下次進(jìn)入系統(tǒng)會重新登錄。
公告信息展示:用戶查看此頁面時,系統(tǒng)會展示發(fā)布時間最近的一次公告內(nèi)容和發(fā)布時間。
公告發(fā)布:擁有相關(guān)權(quán)限的員工可以發(fā)布新的公告。用戶輸入公告內(nèi)容后點擊發(fā)布,系統(tǒng)會自動設(shè)置當(dāng)前時間為發(fā)布時間。
如圖7所示,操作端基于IOS 開發(fā),在員工輸入個人信息后,提供掃碼功能。在系統(tǒng)確認(rèn)掃描結(jié)果后,由員工選擇對該產(chǎn)品進(jìn)行入庫操作或出庫操作。
用戶在操作端點擊按鈕后,程序會調(diào)用攝像頭,掃描并識別產(chǎn)品上的二維碼,并將二維碼上的內(nèi)容和用戶信息轉(zhuǎn)換為Json 字符串發(fā)送給服務(wù)器。服務(wù)器接收并解析Json 字符串,然后采用模式匹配的方法對字符串進(jìn)行拆分,提取有效信息,存儲在數(shù)據(jù)庫出入庫記錄的相應(yīng)表單,并修改該產(chǎn)品的庫存數(shù)量。
系統(tǒng)開發(fā)完畢后,需要在服務(wù)器部署測試系統(tǒng)。首先要在服務(wù)器上分別配置Linux+Apache+MySQL+PHP 環(huán)境,然后采用SCP 指令將系統(tǒng)代碼上傳至服務(wù)器。在服務(wù)器上對系統(tǒng)代碼解壓并授權(quán)相應(yīng)權(quán)限后,放置到Apache 相應(yīng)文件夾內(nèi)。然后在手機(jī)上安裝操作端的應(yīng)用程序。至此,系統(tǒng)部署完成。
系統(tǒng)部署完成后開始對系統(tǒng)進(jìn)行測試工作。首先通過瀏覽器訪問系統(tǒng)主頁,測試管理端7 個模塊功能的完備性。然后測試管理端整體的功能完備性與運(yùn)行流暢度。最后測試操作端和管理端的協(xié)同工作。
本文分析了庫存管理系統(tǒng)的必要需求,然后設(shè)計了一種基于二維碼技術(shù)的庫存管理系統(tǒng),并說明了實現(xiàn)的思路和部署測試方法,為企業(yè)庫存管理的信息化、網(wǎng)絡(luò)化和企業(yè)管理者的決策提供了一定的幫助。