【文章內(nèi)容簡介】
表 類別表編號 字段名稱 數(shù)據(jù)結(jié)構(gòu) 說明1 sortid Int 類別編號2 sortname Varchar(50) 類別名稱表 貨物表編號 字段名稱 數(shù)據(jù)結(jié)構(gòu) 說明1 goodsid Int 貨物編號2 goodsname Varchar(20) 貨物名稱3 sortid Int 所屬類別4 maxnumber Int 最大庫存5 minnumber Int 最小庫存6 price Int 價格表 庫存表編號 字段名稱 數(shù)據(jù)結(jié)構(gòu) 說明1 stockid Int 庫存編號2 goodsid Int 貨物名稱3 number Int 數(shù)量4 wareid Int 所屬倉庫5 areaid Int 所屬區(qū)域6 spaceid Int 所屬貨位表 入出庫表編號 字段名稱 數(shù)據(jù)結(jié)構(gòu) 說明1 inventoryid Int 入出庫編號2 goodsid Int 貨物名稱3 wareid Int 所在倉庫4 areaid Int 所在區(qū)域5 spaceid Int 所在貨位6 username Varchar(20) 操作員7 number Int 入出庫數(shù)量8 modifytime datetime 入出庫時間9 type Varchar(10) 入出庫類型10 remark Varchar(500) 備注17 / 49表 移出庫表編號 字段名稱 數(shù)據(jù)結(jié)構(gòu) 說明1 transferid Int 移庫編號2 goodsid Int 貨物名稱3 username Varchar(20) 操作員4 number Int 移庫數(shù)量5 transtime datetime 移庫時間6 inputwareid Int 移入倉庫7 inputareaid Int 移入?yún)^(qū)域8 inputspaceid Int 移入貨位9 outputwareid Int 移出倉庫10 outputareaid Int 移出區(qū)域11 outputspaceid Int 移出貨位表 采購表編號 字段名稱 數(shù)據(jù)結(jié)構(gòu) 說明1 purchaseid Int 采購編號2 goodsid Int 貨物名稱3 number Int 采購數(shù)量4 purtime datetime 采購時間5 username Varchar(20) 操作員6 remark Varchar(500) 備注表 系統(tǒng)表編號 字段名稱 數(shù)據(jù)結(jié)構(gòu) 說明1 wareinitial Int 倉庫是否初始化(0 否,1是)2 areainitial Int 區(qū)域是否初始化(0否,1是)3 spaceinitial Int 貨位是否初始化(0否,1是)4 sortinitial Int 類別是否初始化(0否,1是)5 goodsinitial Int 貨物是否初始化18 / 49五、詳細設計(一)引言為使用本系統(tǒng)的用戶提供完善的庫存管理服務,以及精確的庫存查詢服務,為企業(yè)管理者提供實時庫存信息,幫助企業(yè)決策者了解庫存狀態(tài),輔助做出合理的決策。該部分所有業(yè)務邏輯代碼詳見附錄Ⅱ。(二)系統(tǒng)程序設計該程序檢查用戶登錄信息是否合法,合法用戶的信息會被保存到 Session 中,如果未登錄用戶想使用系統(tǒng)其它功能都會被拒絕。該程序的設計可有效避免 SQL 注入漏洞。如圖 為用戶登陸界面,用戶登錄時要求用戶名長度在 20 個字符以內(nèi),密碼長度為 616 個字符19 / 49圖 系統(tǒng)登錄界面如圖 所示為用戶登錄后界面。圖 用戶管理主界面該功能流程邏輯圖如下所示:圖 用戶管理流程邏輯圖LoginServlet 得到用戶提交的數(shù)據(jù) username,password,然后調(diào)用 UserProcess20 / 49類的 loginCheck(String u,String p)方法對數(shù)據(jù)進行檢查。檢查方法如下:(1)首先檢查用戶名為 username 時的密碼(select top 1 password from users where username=39。 + u + 39。) ,若不存在,表明不存在該用戶,返回用戶名錯誤提示信息。(2)若存在,檢查 username 的密碼與 password 是否相等(((1)) ) ,若相等,登錄成功,跳轉(zhuǎn)到用戶管理界面;否則,返回密碼錯誤提示信息。該算法有效避免了 SQL 注入漏洞。因為如果采用以下 SQL 查詢語句:select top 1 * from users where username=39。 + u + 39。 and password=39。 + p+ 39。時,用戶在登錄時隨意輸入用戶名,而輸入以下密碼: 39。 or 1=39。1 就可以成功登錄到系統(tǒng)。2.實體添加設計說明該程序功能是添加實體到數(shù)據(jù)庫,以倉庫添加為實例,其他實體的添加過程與倉庫類似,不在一一贅述。如圖 為倉庫添加界面,添加倉庫時要求倉庫名長度在 50 個字符以內(nèi),地址長度為 100 個字符以內(nèi)。圖 添加倉庫界面如圖 所示為成功添加倉庫后界面。圖中第一條數(shù)據(jù)即為剛剛添加數(shù)據(jù)。圖 成功添加倉庫界面該功能流程邏輯圖為:21 / 49圖 添加倉庫流程邏輯圖WareServlet 得到用戶提交的數(shù)據(jù) warename,maxarea,address,然后調(diào)用WareProcess 類的 addWare(WareBean wb)方法將數(shù)據(jù)添加到數(shù)據(jù)庫,SQL 語句如下:String sql = insert into warehouse values (39。 + () + 39。, + () + ,39。+ () +39。)。該程序功能是添加實體到數(shù)據(jù)庫,以倉庫添加為實例,其他實體的添加過程與倉庫類似,不在一一贅述。如圖 為倉庫分頁瀏覽界面圖 倉庫分頁瀏覽界面 1如圖 所示為點擊下一頁后倉庫分頁瀏覽界面。圖 倉庫分頁瀏覽界面 222 / 49該算法有四個主要的參數(shù),pageNo 代表當前的頁數(shù),pageSize 代表每頁顯示幾行記錄,pageCount 代表共有多少頁, rowCount 代表共有多少行記錄。其中rowCount 由以下 SQL 語句求出:select count(*) from warehouse;pageSize 由程序員自己設置,pageCount 的值可由以下方法求出:如果rowCount%pageSize=0,pageCount=rowCount/ageSize,否則pageCount=rowCount/ageSize+1;pageNo 的值是通過參數(shù)傳遞過來的,那么上述四個參數(shù)確定后,第 pageNo 頁的記錄通過以下的 SQL 語句求的:String sql1 = select top” + pageSize + * from warehouse where wareid not in(select top + (pageNo1)*pageSize+ wareid from warehouse) order by wareid desc。該程序功能是修改實體的信息,然后保存到數(shù)據(jù)庫,以倉庫修改為實例,其他實體的修改過程與倉庫類似,不在一一贅述。如圖 為倉庫修改界面,修改倉庫時要求倉庫名長度在 50 個字符以內(nèi),地址長度為 100 個字符以內(nèi)。圖 添加倉庫界面如圖 所示為成功修改倉庫后界面。圖 成功修改倉庫界面該功能流程邏輯圖為:23 / 49W a r e M o d i f y . j s p 提交 W a r e S e r v l e t W a r e M a n a g e r . j s p成功失敗f a i l u r e . j s p調(diào)用W a r e P r o c e s s( m o d i f y W a r e )圖 成功修改倉庫流程邏輯圖WareServlet 得到用戶提交的數(shù)據(jù) wareid,warename,maxarea,address,然后調(diào)用 WareProcess 類的 modifyWare(WareBean wb)方法修改倉庫信息,然后將數(shù)據(jù)保存到數(shù)據(jù)庫,SQL 語句如下:String sql = update warehouse set warename = 39。 + () + 39。, maxarea = + () + , address = 39。 + () + 39。 where wareid = + ()。該程序功能是刪除實體的信息,以倉庫刪除為實例,其他實體的刪除過程與倉庫類似,不在一一贅述。如圖 為倉庫刪除界面 圖 倉庫刪除界面如圖 所示為成功刪除倉庫后界面。24 / 49圖 成功刪除倉庫界面該功能流程邏輯圖為:W a r e M a n a g e r . j s p 提交 W a r e S e r v l e t W a r e M a n a g e r . j s p成功失敗f a i l u r e . j s p調(diào)用W a r e P r o c e s s( d e l e t e W a r e )圖 刪除倉庫業(yè)務邏輯流程圖WareServlet 得到用戶提交的數(shù)據(jù) wareid,然后調(diào)用 WareProcess 類的deleteWare(int wareid)方法刪除倉庫信息,SQL 語句如下:String sql = delete from warehouse where wareid = + wareid。該程序功能是實現(xiàn)貨物的入庫。如圖 、 所示為入庫界面 圖 入庫界面 125 / 49圖 入庫界面 2如圖 所示為成功入庫后界面。圖 成功入庫界面該功能流程邏輯圖為:圖 入庫流程邏輯圖InventoryServlet 得到用戶提交的數(shù)據(jù),然后調(diào)用 InventoryProcess 類的addInventory(InventoryBean ib)方法添加入庫信息,同時更新庫存信息,更新庫存信息的 SQL 語句如下:26 / 49String sql = update stock set number = number + + number + where goodsid = + () + and wareid = + () + and areaid = + () + and spaceid = + ()。該程序功能是實現(xiàn)貨物的移庫。如圖 所示為移庫界面 圖 移庫界面如圖 所示為成功移庫后界面。圖 成功移庫界面該功能流程邏輯圖為:T r a n s f e r . j s p 提交 T r a n s f e r S e r v l e t T a n s f e r . j s p成功失敗T r a n s f e r . j s p( 錯誤提示信息 )調(diào)用T r a n s f e r P r o c e s s( a d d T r a n s f e r )S t o c k P r o c e s s( p u t i n , p u t o u t )調(diào)用27 / 49圖 移庫流程邏輯圖TransferServlet 得到用戶提交的數(shù)據(jù),然后調(diào)用 TransferProcess 類的addTransfer(TransferBean tb)方法添加移庫信息,同時更新庫存信息: (gb, inputware, inputarea, inputspace, number)。 (gb, outputware, outputarea, outputspace, number)。該程序功能是實現(xiàn)貨物的采購。如圖 所示為采購界面 圖 采購界面如圖 所示為成功采購后界面。圖 成功采購界面該功能流程邏輯圖為:28 / 49P u r c h a s e . j s p 提交 P u r c h a s e S e r v l e t P u r c h a s e . j s p成功失敗P u r c h a s e . j s p( 錯誤提示信息 )調(diào)用P u r c h a s e P r o c e s s( a d d P u r c h a s e )S t o c k P r o c e s s( p u t i n )調(diào)用圖 采購流程邏輯圖PurchaseServlet 得到用戶提交的數(shù)據(jù),然后調(diào)用 PurchaseProcess 類的addPurchase(PurchaseBean pb)方法添加采購信息,同時更新庫存信息。六、系統(tǒng)安裝與調(diào)試本系統(tǒng)順利運行需要以下安裝環(huán)境: 以上, 以上,SQLServer2022 以上以及 SP4 升級包。開發(fā)環(huán)境為:。(一)系統(tǒng)安裝 安裝首先下載 jdk 安裝包,地址如下:29 / 49487C88FB1/2147483648/2328078531/1/838358/840458/2328078531/2ts+/westCoastFSEND/jdk6u2othJPR/jdk6u2othJPR:2/;下載完成后,雙擊安裝文件,按提示完成安裝。 安裝首先下載 Tomcat 安裝包,地址如下: 下載完成后