倉庫管理系統(tǒng)實驗報告_第1頁
倉庫管理系統(tǒng)實驗報告_第2頁
倉庫管理系統(tǒng)實驗報告_第3頁
倉庫管理系統(tǒng)實驗報告_第4頁
倉庫管理系統(tǒng)實驗報告_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

數(shù)據(jù)庫設計與開發(fā)實驗報告食品倉庫管理系統(tǒng)姓名:姜雪第一章需求分析1.1項目概述由于食品倉庫中貨品種類龐大,數(shù)量眾多,但是靠手寫這種方式來記錄倉庫中食品的情況顯然是遠遠不夠的,因此就需要一個自動便捷的倉庫管理系統(tǒng)。介于實際情況,倉庫入庫和出庫以及庫存這三種之間有著密切關系,因此可以考慮使用觸發(fā)器來實現(xiàn)。另外由于實際生活中的情況,貨品經常需要大量的進行入庫和出庫操作,因此很有必要實現(xiàn)批量的入庫出庫操作,這就很符合游標的特點:完成批量作業(yè),所以在入庫和出庫表中定義游標來進行對庫存表的批量修改就很有意義。 而本系統(tǒng)選擇用WPF也是基于現(xiàn)在的趨勢,WPF相比windows的界面美觀簡潔很符合用戶的需求。并且也是比較新的應用程序,符合大眾審美。1.2功能模塊倉庫管理系統(tǒng)需要實現(xiàn)操作員、產品管理、產品入庫管理、產品出庫管理、供應商管理、庫房管理、操作員查詢、出貨部門管理模塊的功能,具體功能如下圖所示:1.3用例圖第二章數(shù)據(jù)庫設計2.1E-R圖設計2.2數(shù)據(jù)庫表設計2.2.1產品庫存表jiangxue_storage表結構字段數(shù)據(jù)結構長度是否允許空備注產品編號sto_idChar10否主鍵產品名稱sto_nameChar20是產品庫存sto_numberInt否產品單位sto_unitChar5是產品單價sto_priceFloat是產品類型編號sto_typeIdChar10否外鍵產品庫房編號sto_houseIdChar10否外鍵產品出產日期sto_proTimeDate是產品保質日期sto_lifeChar10是產品凈含量sto_weightChar10是2.2.2產品類型jiangxue_type表結構字段數(shù)據(jù)結構長度是否允許空備注類型編號type_idChar10否主鍵類型名稱type_nameChar10是2.2.3入庫表jiangxue_inStorage表結構字段數(shù)據(jù)結構長度是否允許空備注入庫編號in_idChar10否主鍵入庫日期in_timeDatetime是入庫產品編號in_stoIdChar10否外鍵入庫數(shù)量in_stonumberInt否產品類型編號in_typeIdChar10否外鍵供應商編號in_supIdChar10否外鍵操作員編號in_opeIdChar10否外鍵入庫庫房編號in_houseIdChar10否外鍵備注in_commentChar50是2.2.4出庫表jiangxue_outStorage表結構字段數(shù)據(jù)結構長度是否允許空備注出庫編號out_idChar10否主鍵出庫日期out_timeDatetime是出庫產品編號out_stoIdChar10否外鍵出庫數(shù)量out_stonumberInt否產品類型編號out_typeIdChar10否外鍵領取部門編號out_depIdChar10否外鍵出庫操作員out_opeIdChar10否外鍵備注out_commentChar50是2.2.5供應商jangxue_supplier表結構字段數(shù)據(jù)結構長度是否允許空備注供應商編號sup_idChar10否主鍵供應商名稱sup_nameChar20是供應商電話sup_phoneChar20是供應商地址sup_addressChar30是供應商郵件sup_emailChar20是供應商郵編sup_postcadeChar10是2.2.6出貨部門jiangxue_department表結構字段數(shù)據(jù)結構長度是否允許空備注部門編號dep_idChar10否主鍵部門名稱dep_nameChar10是2.2.7操作員jiangxue_operator表結構字段數(shù)據(jù)結構長度是否允許空備注操作員編號ope_idChar10否主鍵操作員姓名ope_nameChar10是操作員性別ope_sexChar5是操作員電話ope_phoneChar20是操作員職位ope_positionChar10是操作員身份證號ope_idcardChar30是2.2.8庫房jiangxue_storeHouse表結構字段數(shù)據(jù)結構長度是否允許空備注庫房編號stohouse_idChar10否主鍵庫房面積stohouse_areaFloat是管理員stohouse_managerChar10否外鍵2.2.9用戶jiangxue_user表結構字段數(shù)據(jù)結構長度是否允許空備注用戶名usernameChar10否主鍵密碼passwordChar10否操作員編號ope_idChar10否外鍵第三章數(shù)據(jù)庫程序設計3.1數(shù)據(jù)庫及表的定義3.2創(chuàng)建索引(加快查詢速度)其他表類似。3.3創(chuàng)建存儲過程3.3.1帶參數(shù)的存儲過程描述:根據(jù)產品編號返回對應的產品信息usejiangxue_storageIFEXISTS(SELECTnameFROMsysobjectsWHEREname='jiangxue_someStorage'ANDtype='P')DROPPROCEDUREjiangxue_someStoragegocreateprocedurejiangxue_someStorage@idvarchar(10)asselect*fromjiangxue_storagewheresto_id=@id3.3.2帶output參數(shù)的存儲過程描述:返回某產品近期入庫的總數(shù)量IFEXISTS(SELECTnameFROMsysobjectsWHEREname='jiangxue_countInStorage'ANDtype='P')DROPPROCEDUREjiangxue_countInStoragegocreateprocedurejiangxue_countInStorage@idvarchar(10),@namevarchar(20)out,@unitvarchar(5)out,@totalintOUTPUTasselect@total=SUM(in_stonumber),@name=jiangxue_storage.sto_name,@unit=jiangxue_storage.sto_unitfromjiangxue_inStorage,jiangxue_storagewherein_stoId=@idandjiangxue_storage.sto_id=jiangxue_inStorage.in_stoIdgroupbyjiangxue_inStorage.in_stoId,jiangxue_storage.sto_name,jiangxue_storage.sto_unit執(zhí)行:declare@namevarchar(20),@unitvarchar(5),@totalintexecjiangxue_countInStorage1,@nameout,@unitout,@totaloutputprint@name+'的近期入庫總數(shù)量:'+rtrim(@total)+@unit3.3.3createprocedure[dbo].[jiangxue_insertStorage]@idvarchar(10),@namevarchar(20),@numberint,@unitvarchar(5),@wpricefloat,@typeidvarchar(10),@houseidvarchar(10),@protimedate,@lifevarchar(10),@weightvarchar(10)asinsertintojiangxue_storagevalues(@id,@name,@number,@unit,@wprice,@typeid,@houseid,@protime,@life,@weight)3.3.4描述:更新商品信息createprocedure[dbo].[jiangxue_updateStorage]@idvarchar(10),@namevarchar(20),@numberint,@unitvarchar(5),@wpricefloat,@typeidvarchar(10),@houseidvarchar(10)asupdatejiangxue_storagesetsto_name=@name,sto_number=@number,sto_unit=@unit,sto_wprice=@wprice,sto_typeId=@typeid,sto_houseId=@houseidwheresto_id=@id3.4觸發(fā)器設計3.4.1insert觸發(fā)器描述:當增加出庫記錄后,庫存表jiangxue_storage中對應的產品庫存數(shù)量sto_number便減去其出庫數(shù)量out_stonumbercreatetriggerupdateOutStorageonjiangxue_outStorageafterinsertasupdatejiangxue_storagesetsto_number=sto_number-inserted.out_stonumberfromjiangxue_storage,insertedwherejiangxue_storage.sto_id=inserted.out_stoId描述:當增加入庫記錄后,庫存表jiangxue_storage中對應的產品庫存數(shù)量sto_number便增加其入庫數(shù)量in_stonumberCreatetrigger[dbo].[updateInStorage]on[dbo].[jiangxue_inStorage]afterinsertasupdatejiangxue_storagesetsto_number=sto_number+inserted.in_stonumberfromjiangxue_storage,insertedwherejiangxue_storage.sto_id=inserted.in_stoId3.4.2update觸發(fā)器描述:向庫存表jiangxue_storage中插入一條數(shù)據(jù)后,顯示全部產品的記錄,便于確認信息createtriggerinsertStorageonjiangxue_storageforupdateasselect*frominserted3.5游標應用描述:將出庫表中產品出庫數(shù)量更新到庫存表中對應編號的產品數(shù)量。結果:描述:將入庫表中產品如庫數(shù)量更新到庫存表中對應編號的產品數(shù)量。第四章用戶交互界面4.1用戶登錄界面輸入用戶名及密碼,驗證輸入是否正確,輸入錯誤則彈出錯誤的對話框。正確則跳到主界面。4.2主界面顯示當前日期,及登錄用戶名。4.3產品管理查詢、修改、增加產品信息4.4產品類型管理查詢、修改、增加產品類型4.5入庫操作在表格內輸入入庫信息,批量填寫入庫信息后,點擊增加入庫信息按鈕進行批量入庫。4.6出庫操作在表格內輸入出庫信息,批量填寫出庫信息后,點擊增加出庫信息按鈕進行批量出庫。4.7供應商管理查詢、增加、刪除、修改供應商信息4.8出貨部門管理查詢所有部門信息或某部門信息、增加、刪除及修改部門4.9操作員查詢查詢操作員信息,不能進行修改4.10庫房管理查詢全部倉庫信息、通過某倉庫號查詢該倉庫信息,刪除及修改倉庫信息。第五章實驗中遇到的問題及總結1.數(shù)據(jù)庫設計(1)設計表時,沒有從實際角度出發(fā),剛開始入庫表的屬性中包含了產品的名稱、及產品的其他屬性,造成了嚴重的冗余,未考慮到一般倉庫內錄入的是庫存內已有的產品。如果出現(xiàn)新產品,也應該先從產品表中添加,再進行入庫操作。如果屬性類型、允許null值及移動屬性順序時候,在數(shù)據(jù)表設計界面中直接修改會出現(xiàn)如下界面:只能用sql語句進行修改。最后通過查詢資料得點擊工具->選項,彈出如下圖所示對話框,去掉勾選“阻止保存要求重新創(chuàng)建表的更改”。創(chuàng)建存儲過程在入庫表中創(chuàng)建帶返回參數(shù)的存儲過程時,出現(xiàn)如下圖所示錯誤,本意選出對應編號的商品數(shù)據(jù),輸出商品名稱及近期入庫的總數(shù)量。需要設置一個變量@name進行賦值即可。加上rtrim將int轉化成varchar型觸發(fā)器設計設計了一個insert觸發(fā)器,當入庫操作的產品不在庫存表內,則在庫存表內增加該商品的信息。驗收的時候發(fā)現(xiàn)自己表設計上冗余過大。同時在C#編程時也出現(xiàn)了錯誤,疑問:不知道為什么會出錯?USEjiangxue_storageIFEXISTS(SELECTnameFROMsysobjectsWHEREname='insertStorage'ANDtype='TR')DROPTRIGGERinsertStorageGOcreateTriggerinsertStorageonjiangxue_inStorageforinsertasif((selectCOUNT(*)frominsertedi,jiangxue_storageswherei.in_stoId=s.sto_id)=0) begindeclare@idvarchar(10),@namevarchar(20),@numberint,@unitvarchar(5),@pricefloat,@typeidvarchar(10),@houseidvarchar(10),@protimedate,@lifevarchar(10),@weightvarchar(10)set@id=(selectin_stoIdfrominsertediwherei.in_stoIdnotin(selectsto_idfromjiangxue_storage))set@name=(selectin_stonamefrominsertedwherein_stoId=@id)set@number=(selectin_stonumberfrominsertedwherein_stoId=@id)set@unit=(selectin_stounitfrominsertedwherein_stoId=@id)set@price=(selectin_stopricefrominsertedwherein_stoId=@id)set@typeid=(selectin_typeIdfrominsertedwherein_stoId=@id)set@houseid=(selectin_houseIdfrominsertedwherein_stoId=@id)set@protime=(selectin_proTimefrominsertedwherein_stoId=@id)set@life=(selectin_lifefrominsertedwherein_stoId=@id)set@weight=(selectin_weightfrominsertedwherein_stoId=@id)end insertintojiangxue_storage values(@id,@name,@number,@unit, @price,@typeid,@houseid,@protime,@life,@weight)insertintojiangxue_inStoragevalues(2013,'2013-12-05',8,'蜂蜜水',10,'瓶',5,2,3,1,'b','2013-11-05','18個月','500g','該食品未在庫存內')5.游標設計因為是第一次接觸嵌入式sql語句,對于游標的熟練度還是遠遠不夠的。不過游標中fetch的運用跟java中ResultSet語句類似,與原來知識相互聯(lián)系后加深了對游標的認識。在以后的學習中要懂得知識的相互融通,以不變應萬變。注:例子中倉庫管理系統(tǒng)的游標設計有問題,while循環(huán)內沒有fetchnext跳到下一條記錄的語句,會成了執(zhí)行時的死循環(huán),一直在執(zhí)行第一個記錄6.用戶交互界面的設計初學C#編程中的WPF應用程序編程,所以對詳細知識沒有掌握很透徹。實現(xiàn)了通過下拉框選取編號,來查詢對應的產品、部門、供應商、產品類型的信息。但最后未能完全實現(xiàn)入庫、出庫操作中對于類型編號、產品編號、操作員編號下拉框操作,在DataGrid中增加下拉框有點難度,最終采取了輸入文本框的操作,在以后編程中要與實際相結合,便于用戶操

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論