劉 峰
(中國兵器裝備集團自動化研究所, 四川 綿陽 621000)
在這個科學技術(shù)不斷發(fā)展的年代里, 世界已經(jīng)變的越來越高科技化越來越智能化, 一個智能化的時代已經(jīng)到來,近幾年由于網(wǎng)絡(luò)購物的火熱現(xiàn)象,導致越來越多的廠家開始規(guī)劃自己的倉庫管理模式, 以便于更加高效率的進行貨物管理。
截止到目前, 各個大型公司已經(jīng)對自己的公司倉庫管理進行了信息化的管理, 例如京東選擇在各個省市建立倉庫,采用全智能化信息管理倉庫,達到了高效率的分配訂單。
我國現(xiàn)階段正處于飛速發(fā)展的階段, 如何更加有效地管理倉庫,已經(jīng)成為現(xiàn)階段的一個大問題。
一個企業(yè)所擁有的商品是他所生存發(fā)展的根本,而倉庫是企業(yè)用來保存商品的所在。 所以說,擁有一個高效的倉庫管理對企業(yè)來說很重要。 總之,一個成功的企業(yè)必定會有一個好的倉庫, 但是一個好的倉庫沒有一個合理的管理系統(tǒng)是不完美的。 可是一個靜態(tài)化的簡單的倉庫管理的系統(tǒng),因為它不具備信息共享的功能,而且不能夠保證貨物的正常運轉(zhuǎn)中所遇到的一些問題, 也不能保證企業(yè)所擁有資源的正常的運轉(zhuǎn)與利用; 還有一些傳統(tǒng)的倉庫管理系統(tǒng)在維護和開發(fā)起來也是十分困難的一個大問題,所以極大地浪費了人力與物力資源,完全脫離了現(xiàn)代化社會。 因此,一個成功的企業(yè),如果擁有了一個現(xiàn)代化的倉庫管理系統(tǒng),會有效的提高生產(chǎn),降低使用的成本。
本系統(tǒng)的目標是做一個基于互聯(lián)網(wǎng)端的倉庫管理系統(tǒng),在選擇語言方面,由于JAVA 語言具有良好的跨平臺性以及支持多種系統(tǒng),因此本系統(tǒng)才用該語言進行程序編寫,并且運用B/S 的框架系統(tǒng)和Mybatis 來構(gòu)架數(shù)據(jù)庫。
需求分析是系統(tǒng)開發(fā)的首要步驟, 也是直接影響系統(tǒng)整體性能和功能的最主要的步驟。 系統(tǒng)的需求分析最重要的是對系統(tǒng)的可行性、 性能和功能等方面進行具體地分析[1]。 不合理的需求分析,會使系統(tǒng)的開發(fā)環(huán)節(jié)出現(xiàn)許多錯誤和走許多彎路,導致系統(tǒng)開發(fā)時間長,效率低,系統(tǒng)的總體質(zhì)量也會受到影響。
該系統(tǒng)分為管理員和客戶等不同種類的用戶角色系統(tǒng)。 本系統(tǒng)的用例功能模塊主要包括管理員、 用戶等模塊,管理員模塊的主要功能有查看庫存信息,修改信息,用戶管理,產(chǎn)品入庫,產(chǎn)品出庫等功能。
用戶模塊的功能主要包括有庫存信息的查找, 用戶信息的修改,用戶管理等功能。
(1)登錄驗證功能:為了保證倉庫管理系統(tǒng)信息的安全性,進入系統(tǒng)時需要對用戶身份進行驗證。
(2)管理員管理功能:此功能屬于系統(tǒng)的管理員功能,他實現(xiàn)了對所有用戶的管理操作, 可以添加一個新的用戶,也可以對已經(jīng)添加的業(yè)務進行刪除的操作。
(3)用戶的查詢功能模塊:此項功能屬客戶管理員功能,用戶可以根據(jù)自己所需要的條件查詢相關(guān)信息,也可以對自己的個人信息進行修改[2]。
(4)倉庫存儲的查詢管理功能:此功能屬管理員與客戶共同享有的功能,客戶可以實現(xiàn)查看、入庫以及出庫等功能,兩者都可以查看庫存的相關(guān)信息。
(5)用戶的信息管理模塊:此功能屬于用戶管理員,管理員可以對自己負責的客戶信息進行有效的管理[3]。
倉庫管理系統(tǒng)主要分為兩大用戶功能, 兩種功能所實現(xiàn)的功能流程如下所示。
2.3.1 管理員模塊業(yè)務
倉庫的管理員可以通過帳號和密碼驗證之后進行登錄, 登錄到系統(tǒng)之后主要的功能是對商品與用戶的信息進行管理。
2.3.2 客戶模塊業(yè)務
管理員可以通過帳號和密碼進行登錄, 登錄后的主要是對用戶和商品信息的管理, 管理員其主要的功能是查看用戶的信息, 修改用戶的相關(guān)信息以及對倉庫貨物的查看等。
倉庫管理系統(tǒng)主要分為兩個用戶角色, 其最為主要是管理員與用戶這兩個角色,其各個角色功能如下:
(1)管理員。管理員可以通過帳號和密碼進行登錄,管理員登陸系統(tǒng)后的主要功能是對自己管理的庫存信息進行管理,主要包括個人信息管理、商品進行入庫、出庫、查詢操作、客戶的信息進行查詢、修改及退出系統(tǒng)等功能[4]。
(2)用戶。 用戶可以注冊登錄成為會員,其中的系統(tǒng)功能應當包括系統(tǒng)的首頁,查詢系統(tǒng)庫存,注冊登錄,我的信息,退出倉庫系統(tǒng)等一些功能。
根據(jù)上述分析, 得出的功能結(jié)構(gòu)圖中大致包含了兩項主要的大目標,一是商品信息查詢類,其中包含了商品入庫,商品查詢以及商品出庫這三項,二是用戶信息管理類, 它主要包含了管理倉庫的管理員信息以及商品擁有者用戶信息這兩項。 以上的大致信息便構(gòu)成了這個系統(tǒng)的主要需要實現(xiàn)的功能。
B/S 系統(tǒng)對客戶機的工作量做了極大的簡化,對數(shù)據(jù)庫的訪問以及應用程序的執(zhí)行都將由服務器來完成。B/S 架構(gòu)主要使用萬維網(wǎng)瀏覽器技術(shù),使用各種腳本語言。在B/S 架構(gòu)基礎(chǔ),各類軟件的安裝,維護這類只需要在服務器端解決就行,減少了很多不必要的麻煩。 在使用該系統(tǒng)時,用戶只需要用一個瀏覽器便可以運行所有的模塊,從而實現(xiàn)了“零客戶端”功能,很容易在運行時自動升級。 B/S 架構(gòu)也有一個均質(zhì)機,網(wǎng)上異構(gòu)網(wǎng)絡(luò),異構(gòu)應用服務的聯(lián)機[5,6]。
B/S 系統(tǒng)由以下三層構(gòu)成,三層是相對獨立又相互關(guān)聯(lián),在這里我們在三個層面上做一個介紹:
(1) 表示邏輯層提出請求服務并將服務傳輸?shù)骄W(wǎng)絡(luò)上的Web 服務器,當主頁上的信息傳遞給了HTTP 時,便開始驗證身份,并將主頁文件信息顯示在網(wǎng)絡(luò)的Web 瀏覽器上。
(2)用戶的數(shù)據(jù)請求會被控制邏輯層接受到,數(shù)據(jù)庫與程序相互連接,并進行相應的處理請求,然后服務器開始接受由數(shù)據(jù)庫傳來的數(shù)據(jù)處理結(jié)果, 最后再將這些數(shù)據(jù)返給客戶端[7]。
(3)數(shù)據(jù)庫表示接受服務器所請求的操作,以便實現(xiàn)對數(shù)據(jù)庫進行相關(guān)的操作, 最后服務器負責接受最后生成的操作結(jié)果[8]。
3.2.1 用戶登錄模塊設(shè)計
系統(tǒng)中用戶登錄驗證是最為初始的一個環(huán)節(jié), 其環(huán)節(jié)流程可以如下概括:
用戶在登陸的時候,系統(tǒng)頁面會彈出一個登陸頁面,用戶按照頁面的提示將相關(guān)的信息輸入, 確認以后系統(tǒng)將用戶所輸入的信息返回服務器, 服務器端將接收到的數(shù)據(jù)與自身后臺數(shù)據(jù)進行對比驗證, 如果輸入的內(nèi)容能夠相互匹配會進入到登錄首頁; 若不能正常匹配則系統(tǒng)會跳轉(zhuǎn)到報錯界面[9]。
在本次的倉庫管理系統(tǒng)中有兩個不同的入口。 倉庫管理人員使用用戶名和密碼之后可以對應相應的操作。用戶的登錄所需的用戶名和密碼已經(jīng)在之前的用戶信息表中建立, 用戶的個人信息由管理員提前錄入或者自己注冊。 由于用戶信息需要先從所對應的數(shù)據(jù)庫中進行讀取,所以在讀取之前需要先和數(shù)據(jù)庫進行連接。在本系統(tǒng)當中,有兩個登陸模塊的入口。如下圖所示確認文件審核用戶提供的用戶名和密碼。
管理員登錄如圖1 所示。
圖1 登錄界面
3.2.2 商品入庫模塊設(shè)計
首先,入庫申請人需要將自己需要入庫的貨物向倉庫的管理員提交申請單,管理員先根據(jù)申請人提交的貨物數(shù)量與實際接收到的數(shù)量進行清查,若數(shù)量不對,則拒絕該貨物進行入庫,且如果發(fā)現(xiàn)該貨物在現(xiàn)存的庫存中有,則還需計算是否倉庫能否存入該批貨物,若超過倉庫庫存上限,則拒絕入庫,沒有超過的話,倉庫的管理員進行入庫操作[1]。 如果該庫存中沒有該商品存在,則需要重新添加該商品,計算該商品可在庫存中能夠存放的最大數(shù)量,然后重新考慮若該貨物存入加上現(xiàn)在的存有量是否會超過倉庫的最大容納量, 如果超過倉庫的最大容納量, 則拒絕入庫操作,并將該貨物歸納到暫時禁止入庫,待倉庫空出足夠的數(shù)量時,再將該貨物入庫,入庫后,管理員需要給入庫申請人開一張貨物的入庫單,以便日后進行查詢。 這便是入庫操作模塊[10]。
圖2 商品入庫界面
3.2.3 商品出庫模塊設(shè)計
圖3 商品出庫界面
在進行出庫的操作時, 第一步首先是貨物提取人先向倉庫的管理員提交一份貨物出庫申請, 管理員在接收到申請單后,先對申請單進行驗證,若申請單不真實,則拒絕出庫操作,若申請單真實,則再進行下一步操作,即對貨物名稱進行查詢以及數(shù)量查詢, 如果倉庫中的該貨物數(shù)量少于申請的數(shù)量,則取消此次出庫申請,若倉庫中的貨物數(shù)量多于申請的數(shù)量,則進行出庫操作,并將出庫數(shù)量進行記錄,最后開一張出庫單,整個出庫過程完成[11]。
3.2.4 用戶注冊模塊設(shè)計
系統(tǒng)中用戶登錄驗證相對比較簡單, 可以將其流程概括如下:
在用戶注冊時, 需要在注冊的頁面各框中輸入用戶名、密碼、姓名、性別、年齡、聯(lián)系方式、email、聯(lián)系地址等一系列信息, 頁面后臺將用戶輸入的一系列信息傳遞給服務器,服務器將收到的數(shù)據(jù)與自己的數(shù)據(jù)庫進行對比,如果沒有找到該用戶信息,系統(tǒng)會進一步進行注冊[3];當在注冊的過程中有空的情況下系統(tǒng)會有相應的提示。 在進行email 注冊時,在注冊的欄中輸入的不正確時,系統(tǒng)會提示出錯誤。當輸入的內(nèi)容符合要求時會繼續(xù)注冊。還可以選擇清空,從頭開始再注冊一遍內(nèi)容[12]。
圖4 用戶注冊界面
數(shù)據(jù)庫的設(shè)計在開發(fā)的過程中占有一個十分關(guān)鍵的作用,在這里強調(diào)數(shù)據(jù)庫重要性的作用,原因是數(shù)據(jù)庫是軟件開發(fā)過程的根基,前期的建設(shè)不牢固,會使得后期的建設(shè)出現(xiàn)大批量的問題, 在后期的處理過程中會非常的困難[13]。
通常概念設(shè)計的主要目標是設(shè)計并反映出某一個組織部門的信息需求中的要求, 數(shù)據(jù)庫系統(tǒng)通常是獨立的并主要存在于:數(shù)據(jù)庫系統(tǒng)的邏輯結(jié)構(gòu)、DBMS 即數(shù)據(jù)庫管理系統(tǒng)、計算機系統(tǒng)等模式。
在次結(jié)構(gòu)的設(shè)計過程當中,E-R 模型法是最為常見的設(shè)計辦法。
在次結(jié)構(gòu)設(shè)計當中中,有以下幾種方法:
自下往上、從上往下、逐步擴張、相互結(jié)合,以這種方式為模型然后分別實現(xiàn)各個結(jié)構(gòu)的模型。
在物理結(jié)構(gòu)設(shè)計階段首先分兩步走:
確定數(shù)據(jù)庫的物理結(jié)構(gòu), 是用來說明數(shù)據(jù)在數(shù)據(jù)庫中怎么樣存儲的。
選取正確的關(guān)系模式存取方法有好多種方法進行選擇。
概念設(shè)計通常是從系統(tǒng)的需求出發(fā), 常常將對象使用數(shù)據(jù)流的形式表達成為完整的抽象實體。 而與模塊內(nèi)部的細節(jié)無關(guān)。 E-R 圖為主要的工具,如圖5 所示。
圖5 系統(tǒng)E-R 圖
(1)管理員信息關(guān)系模式, 里面的主鍵是管理員ID。 管理員(管理員Id、 用戶名、email、 密碼、 聯(lián)系方式、姓名、地址、性別)。
(2)客戶信息關(guān)系模式,里面的關(guān)系主鍵是客戶ID??蛻簦蛻鬒D、用戶名、email、密碼、聯(lián)系方式、姓名、聯(lián)系地址、性別)。
(3)商品信息關(guān)系模式,里面的關(guān)系主鍵是商品編號。商品(編號、價格、名稱、類別、生產(chǎn)產(chǎn)地、商品數(shù)量)。
表1 管理員信息表
表2 客戶信息表
表3 商品信息表
本系統(tǒng)與數(shù)據(jù)庫的連接采用了數(shù)據(jù)持久化層的開源框架Mybatis 方式,它能高效的進行數(shù)據(jù)的添加,修改,刪除等一系列操作, 并提供了一個簡單易用的API 和數(shù)據(jù)庫交互。以便倉庫管理人員在計算機上運行本系統(tǒng)時,對數(shù)據(jù)庫進行必須的操作。
本系統(tǒng)采用了數(shù)據(jù)持久化層的開源框架Mybatis 方式,它能高效的進行數(shù)據(jù)的添加,修改,刪除等一系列操作,并提供了一個簡單易用的API(應用程序編程接口)和數(shù)據(jù)庫交互。 以便倉庫管理人員在計算機上運行本系統(tǒng)時,對數(shù)據(jù)庫進行必須的操作[14]。
由于MyBatis 操作簡單且易于使用的特點,才會開始流行起來。在Java 應用程序中,將從數(shù)據(jù)庫查詢到的數(shù)據(jù)生成所需要的Java 對象;將Java 對象中的數(shù)據(jù)通過SQL長期保存到數(shù)據(jù)庫中,都是數(shù)據(jù)庫的設(shè)計中所涉及到的。MyBatis 通過抽象底層的JDBC 代碼,自動化SQL 結(jié)果集產(chǎn)生Java 對象、Java 對象的數(shù)據(jù)持久化數(shù)據(jù)庫中的過程使得對SQL 的使用變得容易[15]。
使用Mybatis 的具有優(yōu)勢:①它消除了大量的不必要的重復代碼;②學習和使用起來非常簡單;③能與其他的一些數(shù)據(jù)庫在一起共同使用;④它可以接受SQL 語句;⑤具有與其他的一些框架一起使用的集成支持; ⑥提供了與第三方緩存類庫的集成支持;⑦引入了更好的性能。
基于互聯(lián)網(wǎng)的倉庫管理系統(tǒng)在之后的市場發(fā)展中有著非常廣闊的前景, 會對傳統(tǒng)的一些理念造成巨大的沖擊。 本文是運用了計算機學科中的兩項重要的技術(shù)即計算機網(wǎng)絡(luò)技術(shù)和數(shù)據(jù)庫技術(shù)出發(fā),分析了Web 數(shù)據(jù)庫及JSP 技術(shù)在本次倉庫管理系統(tǒng)中的應用。