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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

數(shù)據(jù)庫綜合實驗11軟工錢宇坤2011435112題目:倉庫管理系統(tǒng)學(xué)院數(shù)學(xué)與計算機學(xué)院專業(yè)軟件工程學(xué)號201135112姓名錢宇坤2013年5月30日①操作購買信息:購買信息的錄入、修改系統(tǒng)設(shè)計4.1總體設(shè)計 倉庫管理系統(tǒng)是對設(shè)備的入庫出庫等信息進行記錄并查詢,包括管理員、經(jīng)理和普通職員的操作。管理員可以對倉庫進行出庫入庫及修改倉庫信息,經(jīng)理只能查看自己設(shè)備的相關(guān)情況,普通職員則只能錄入購買信息。以下是對倉庫各種操作的流程圖。4.1.1處理流程以下是倉庫管理系統(tǒng)中操作流程:管理員的入庫操作出庫操作3、更改密碼4、查詢操作4.2數(shù)據(jù)結(jié)構(gòu)設(shè)計在倉庫管理系統(tǒng)中,對設(shè)備的管理是整個系統(tǒng)運作的關(guān)鍵,是倉庫管理、入庫操作、出庫操作的基礎(chǔ),因此對設(shè)備的管理就顯得尤為重要。設(shè)備的基本表要設(shè)計合理,能涵蓋其他操作需要的各種信息,以及對各類信息的限制條件等。設(shè)計好的設(shè)備管理表如下表所示:表1設(shè)備表列名數(shù)據(jù)類型長度是否允許空設(shè)備號char10NOTNULL,主鍵設(shè)備名char10NOTNULL經(jīng)過分析,設(shè)計出的倉庫管理的購買信息表如表2所示。表2購買信息表列名數(shù)據(jù)類型長度是否允許空設(shè)備號char10NOTNULL,主鍵最大庫存量char10NOTNULL購買數(shù)量char10NOTNULL供應(yīng)量char10NOTNULL價格char10NOTNULL購買信息表的設(shè)計也應(yīng)該合理,設(shè)計好的購買信息表如下:表3庫存表列名數(shù)據(jù)類型長度是否允許空設(shè)備號char10NOTNULL,主鍵現(xiàn)有庫存量char10NOTNULL設(shè)備的各種入庫信息應(yīng)該顯示在入庫表中,設(shè)計好的入庫表如下:表4入庫表列名數(shù)據(jù)類型長度是否允許空設(shè)備號char10NOTNULL,主鍵供應(yīng)商char10NOTNULL入庫日期datetime8NOTNULL供應(yīng)商電話char10NOTNULL價格char10NOTNULL采購員char10NOTNULL數(shù)量int4NOTNULL物資的各種出庫信息應(yīng)該顯示在出庫表中,設(shè)計好的出庫表如下:表5出庫表列名數(shù)據(jù)類型長度是否允許空設(shè)備號char10NOTNULL,主鍵使用部門char10NOTNULL出庫日期datetimeNOTNULL數(shù)量char10NOTNULL設(shè)計好的還庫表如下所示:表6還庫表列名數(shù)據(jù)類型長度是否允許空設(shè)備號char10NOTNULL,主鍵數(shù)量char10NOTNULL還庫日期datatimeNOTNULL經(jīng)辦人char10NOTNULL歸還部門char30設(shè)計好的用戶表如下所示:表7用戶表列名數(shù)據(jù)類型長度是否允許空用戶char10NOTNULL,主鍵密碼char10NOTNULL,主鍵權(quán)限char10NOTNULL系統(tǒng)實現(xiàn)5.1開發(fā)工具和環(huán)境操作系統(tǒng):MicrosoftWindows7數(shù)據(jù)庫:MicrosoftSQLServer2005編程環(huán)境:MicrosoftVisualStudio20055.2系統(tǒng)的實現(xiàn)5.2.1管理員子系統(tǒng)的設(shè)計與實現(xiàn)管理員可以對倉庫進行各種操作,包括入庫操作、出庫操作、各種查詢操作及更改操作。因為是倆人合作,所以本部分實現(xiàn)入庫操作及出庫操作。存儲過程ALTERprocedureUpdateStorage@i_Drive_IDCHAR(10),@i_InOutNumberINT,@o_ErrMessageVARCHAR(256)OUTPUTASDECLARE@SQL_ERR_CODEINT,@ERR_FLGINTBEGINIFNOTEXISTS(SELECT*FROMdrivestorageWHERE設(shè)備號=@i_Drive_ID)BEGINIF@i_InOutNumber>0BEGINprint1INSERTINTOdrivestorage(設(shè)備號,現(xiàn)有庫存量)VALUES(@i_Drive_ID,@i_InOutNumber)print2SET@SQL_ERR_CODE=@@ERRORIF@SQL_ERR_CODE<>0BEGINSET@ERR_FLG=-1GOTOERROR_RETURNENDENDELSEBEGINSET@ERR_FLG=1GOTOERROR_RETURNENDENDELSEBEGINUPDATEdrivestorageSET現(xiàn)有庫存量=CONVERT(CHAR,(CONVERT(INT,現(xiàn)有庫存量)+@i_InOutNumber))WHERE設(shè)備號=@i_Drive_IDSET@SQL_ERR_CODE=@@ERRORIF@SQL_ERR_CODE<>0BEGINSET@ERR_FLG=-1GOTOERROR_RETURNENDENDENDNORMAL_RETURN:BEGINRETURN0ENDERROR_RETURN:BEGINIF@ERR_FLG=1BEGINSET@o_ErrMessage='沒有入庫的設(shè)備不能出庫'ENDELSEIF@ERR_FLG=-1BEGINSET@o_ErrMessage='系統(tǒng)錯誤'ENDRETURN@ERR_FLGEND數(shù)據(jù)庫的連接:數(shù)據(jù)庫連接的代碼:stringmyConn=newSqlConnection(@"DataSource=.\SQLEXPRESS;AttachDbFilename='C:\ProgramFiles(x86)\MicrosoftSQLServer\MSSQL.3\MSSQL\Data\storage_Data.MDF';IntegratedSecurity=True;ConnectTimeout=30;UserInstance=True");//建立連接SqlConnectionmyConnection=newSqlConnection(connectionString);myConnection.Open();入庫操作執(zhí)行物資操作后,物資的相關(guān)數(shù)據(jù)就已經(jīng)改變,所以跟設(shè)備相關(guān)的倉庫、庫存表、入庫表都有相應(yīng)的變化。典型代碼如下:try { if(MyConn.State!=ConnectionState.Open) { MyConn.Open(); } if(this.textNum2.Enabled==true) { this.textNum2.Enabled=false; } ISReport=(CurrencyManager)this.BindingContext[InStgInfo]; if(this.textNum2.Text.Trim()==""||this.textAmount.Text.Trim()=="")//檢查不能為空的字段 { MessageBox.Show("設(shè)備號,數(shù)量不能為空!"); return; } ISReport.EndCurrentEdit(); if(InStgInfo.GetChanges()!=null)//信息是否被重新編輯 { if(!change) { if(this.oldtxtAmount==this.textAmount.Text.Trim()) change=false; else change=true; } InStgAdapter.UpdateCommand.Connection=MyConn;//更新到數(shù)據(jù)庫 InStgAdapter.InsertCommand.Connection=MyConn; InStgTran=MyConn.BeginTransaction(); InStgAdapter.UpdateCommand.Transaction=InStgTran; InStgAdapter.InsertCommand.Transaction=InStgTran; this.InStgAdapter.Update(InStgInfo); if(change)//還庫數(shù)量字段有新值了 { stringnumber=this.textAmount.Text.Trim(); intchangeAmt=int.Parse(number)-int.Parse(oldtxtAmount); stringdriveID=this.textNum2.Text.Trim(); SqlCommanddriveStorageUpdateCommand=newSqlCommand();//更新庫存表的現(xiàn)有庫存 driveStorageUpdateCommand.Connection=MyConn;//調(diào)用存儲過程 driveStorageUpdateCommand.Transaction=InStgTran; driveStorageUpdateCommand.CommandType=CommandType.StoredProcedure; driveStorageUpdateCommand.CommandText="UpdateStorage"; driveStorageUpdateCommand.Parameters.Add("@i_Drive_ID",SqlDbType.Char,10); driveStorageUpdateCommand.Parameters["@i_Drive_ID"].Value=driveID; driveStorageUpdateCommand.Parameters.Add("@i_InOutNumber",SqlDbType.Int); driveStorageUpdateCommand.Parameters["@i_InOutNumber"].Value=changeAmt; driveStorageUpdateCommand.Parameters.Add("@o_ErrMessage",SqlDbType.VarChar,256); driveStorageUpdateCommand.Parameters["@o_ErrMessage"].Direction=ParameterDirection.Output; driveStorageUpdateCommand.ExecuteNonQuery(); InStgTran.Commit(); MessageBox.Show("成功!"); } } else { MessageBox.Show("您沒有修改任何信息"); return; }執(zhí)行入庫操作后,將顯示入庫表的情況,具體界面如下:圖入庫界面出庫操作出庫操作同入庫操作一樣要更改與物資有關(guān)的信息,比如出庫表、倉庫及庫存表。典型代碼如下:privatevoidOutStorage_Load(objectsender,System.EventArgse) { MyConn.Open();//打開連接 OutStgAdapter.SelectCommand.CommandText="SELECT*FROMstorage_out"; OutStgAdapter.SelectCommand.Connection=MyConn; OutStgAdapter.Fill(OutStgInfo);//填充數(shù)據(jù)集 this.dataGrid1.DataSource=OutStgInfo.DefaultView; OSReport=(CurrencyManager)BindingContext[OutStgInfo]; DataGridTableStyleOut=newDataGridTableStyle();this.DataBindingsFunction(); Out.AlternatingBackColor=Color.Blue;//顏色設(shè)置 Out.MappingName=OutStgInfo.TableName; this.dataGrid1.Select(0);//選定第一列 this.textNum2.Enabled=false; } privatevoidDataBindingsFunction()//綁定 { this.textNum2.DataBindings.Add("Text",OutStgInfo,"設(shè)備號"); this.textDate.DataBindings.Add("Text",OutStgInfo,"出庫日期"); this.textDep.DataBindings.Add("Text",OutStgInfo,"使用部門"); this.textAmount.DataBindings.Add("Text",OutStgInfo,"數(shù)量"); this.textMan.DataBindings.Add("Text",OutStgInfo,"經(jīng)辦人"); this.textExp.DataBindings.Add("Text",OutStgInfo,"備注"); } privatevoidadd_button_Click(objectsender,System.EventArgse)//增加記錄 { try { OSReport=(CurrencyManager)this.BindingContext[OutStgInfo]; OSReport.AddNew();//增加新記錄 this.textDate.Text=DateTime.Now.ToString(); this.textNum2.Enabled=true; this.change=true;//還庫數(shù)量更改 this.oldtxtAmount="0"; this.textNum2.Focus();//焦點在第一個字段上 } catch(Exceptionex) { MessageBox.Show(ex.Message); } } privatevoidsend_button_Click(objectsender,System.EventArgse)//提交信息 { try { if(MyConn.State!=ConnectionState.Open) { MyConn.Open(); } if(this.textNum2.Enabled==true) { this.textNum2.Enabled=false; } OSReport=(CurrencyManager)this.BindingContext[OutStgInfo]; if(this.textNum2.Text.Trim()==""||this.textAmount.Text.Trim()=="")//檢查不能為空的字段 { MessageBox.Show("設(shè)備號,數(shù)量不能為空!"); return; } OSReport.EndCurrentEdit(); if(OutStgInfo.GetChanges()!=null)//信息是否被重新編輯 { if(!change) { if(oldtxtAmount==this.textAmount.Text.Trim()) change=false; else change=true; } OutStgAdapter.UpdateCommand.Connection=MyConn;//更新到數(shù)據(jù)庫 OutStgAdapter.InsertCommand.Connection=MyConn; OutStgTran=MyConn.BeginTransaction(); OutStgAdapter.UpdateCommand.Transaction=OutStgTran; OutStgAdapter.InsertCommand.Transaction=OutStgTran; this.OutStgAdapter.Update(OutStgInfo); intcmdresults=0; if(change) { stringdriveID=this.textNum2.Text.Trim(); stringnumber=this.textAmount.Text.Trim(); intoutnumber=0-(int.Parse(number))+int.Parse(this.oldtxtAmount); SqlCommanddriveStorageUpdateCommand=newSqlCommand();//更新庫存表的現(xiàn)有庫存 driveStorageUpdateCommand.Connection=MyConn;//調(diào)用存儲過程 driveStorageUpdateCommand.Transaction=OutStgTran; driveStorageUpdateCommand.CommandType=CommandType.StoredProcedure; driveStorageUpdateCommand.CommandText="UpdateStorage"; driveStorageUpdateCommand.Parameters.Add("@i_Drive_ID",SqlDbType.Char,10); driveStorageUpdateCommand.Parameters["@i_Drive_ID"].Value=driveID; driveStorageUpdateCommand.Parameters.Add("@i_InOutNumber",SqlDbType.Int); driveStorageUpdateCommand.Parameters["@i_InOutNumber"].Value=outnumber; driveStorageUpdateCommand.Parameters.Add("@o_ErrMessage",SqlDbType.VarChar,256); driveStorageUpdateCommand.Parameters["@o_ErrMessage"].Direction=ParameterDirection.Output; driveStorageUpdateCommand.Parameters.Add("@o_Return",SqlDbType.Int); driveStorageUpdateCommand.Parameters["@o_Return"].Direction=ParameterDirection.ReturnValue; cmdresults=driveStorageUpdateCommand.ExecuteNonQuery(); cmdresults=Convert.ToInt16(driveStorageUpdateCommand.Parameters["@o_Return"].Value); if(cmdresults!=0) { MessageBox.Show(driveStorageUpdateCommand.Parameters["@o_ErrMessage"].Value.ToString()); OutStgTran.Rollback(); } else { MessageBox.Show("成功!"); OutStgTran.Commit(); } return; } } else { MessageBox.Show("您沒有修改任何信息"); return; } } catch(Exceptionex) { MessageBox.Show("對不起,您輸入的設(shè)備號錯誤!!具體信息:"+ex.ToString()); if(OutStgTran!=null) { OutStgTran.Rollback(); } if(MyConn.State!=ConnectionState.Closed) { MyConn.Close(); } return; } }出庫操作的界面:設(shè)備信息操作設(shè)備信息的添加刪除修改操作:privatevoidDataBindingsFunction()//綁定 { this.textNum.DataBindings.Add("Text",FacNumInfo,"設(shè)備號"); this.textName.DataBindings.Add("Text",FacNumInfo,"設(shè)備名稱"); } privatevoidadd_button_Click(objectsender,System.EventArgse)//增加記錄 { try { FNReport=(CurrencyManager)this.BindingContext[FacNumInfo]; FNReport.AddNew();//增加新記錄 this.textNum.Focus();//焦點在第一個字段上 } catch(Exceptionex) { MessageBox.Show(ex.Message); } } privatevoiddel_button_Click(objectsender,System.EventArgse)//刪除操作 { try { if(MessageBox.Show("您確定刪除么?","提示",MessageBoxButtons.YesNo)==DialogResult.Yes)//提示 { FNReport=(CurrencyManager)this.BindingContext[FacNumInfo]; FNReport.RemoveAt(FNReport.Position);//刪除 FacNumAdapter.DeleteCommand.Connection=MyConn;//更新到數(shù)據(jù)庫中 FacNumAdapter.Update(FacNumInfo); MessageBox.Show("已成功刪除"); return; } } catch(Exceptionex) { MessageBox.Show("不能刪除正在使用的數(shù)據(jù)","提示"); } } privatevoidsend_button_Click(objectsender,System.EventArgse)//提交信息 { FNReport=(CurrencyManager)this.BindingContext[FacNumInfo]; if(this.textNum.Text.Trim()=="")//檢查不能為空的字段 { MessageBox.Show("設(shè)備號不能為空!"); return; } for(inti=0;i<FacNumInfo.Rows.Count;i++) { this.numRow=FacNumInfo.Rows[i]; if(numRow[0].ToString().Trim()==this.textNum.Text.Trim()) { MessageBox.Show("設(shè)備號必須唯一!"); this.FacNumInfo.RejectChanges(); return; } } FNReport.EndCurrentEdit(); if(FacNumInfo.GetChanges()!=null)//信息是否被重新編輯 { try { FacNumAdapter.UpdateCommand.Connection=MyConn;//更新到數(shù)據(jù)庫 FacNumAdapter.InsertCommand.Connection=MyConn; FacNumTran=MyConn.BeginTransaction(); FacNumAdapter.UpdateCommand.Transaction=FacNumTran; FacNumAdapter.InsertCommand.Transaction=FacNumTran; this.FacNumAdapter.Update(FacNumInfo); FacNumTran.Commit(); MessageBox.Show("提交成功"); } catch(Exceptionex) { MessageBox.Show(ex.Message); } } else { MessageBox.Show("您沒有修改任何信息"); return; } }設(shè)備信息操作界面:還庫管理還庫操作的代碼如下:privatevoidReturnStg_Load(objectsender,System.EventArgse) { MyConn.Open();//打開連接 RetnAdapter.SelectCommand.CommandText="SELECT*FROMstorage_retn"; RetnAdapter.SelectCommand.Connection=MyConn; RetnAdapter.Fill(ReturnInfo);//填充數(shù)據(jù)集 this.dataGrid1.DataSource=ReturnInfo.DefaultView; ReReport=(CurrencyManager)BindingContext[ReturnInfo]; DataGridTableStyleRe=newDataGridTableStyle(); this.DataBindingsFunction(); Re.AlternatingBackColor=Color.Blue;//顏色設(shè)置 Re.MappingName=ReturnInfo.TableName; this.dataGrid1.Select(0);//選定第一列 this.textNum2.Enabled=false; } privatevoidDataBindingsFunction()//綁定 { this.textNum2.DataBindings.Add("Text",ReturnInfo,"設(shè)備號"); this.textDate.DataBindings.Add("Text",ReturnInfo,"還庫日期"); this.textAmount.DataBindings.Add("Text",ReturnInfo,"數(shù)量"); this.textMan.DataBindings.Add("Text",ReturnInfo,"經(jīng)辦人"); this.textDep.DataBindings.Add("Text",ReturnInfo,"歸還部門"); } privatevoidadd_button_Click(objectsender,System.EventArgse)//增加記錄 { try { ReReport=(CurrencyManager)this.BindingContext[ReturnInfo]; ReReport.AddNew();//增加新記錄 this.textNum2.Enabled=true; this.textDate.Text=DateTime.Now.ToString(); this.change=true;//還庫數(shù)量更改 this.oldtxtAmount="0"; this.textNum2.Focus();//焦點在第一個字段上 } catch(Exceptionex) { MessageBox.Show(ex.Message); } } privatevoidsend_button_Click(objectsender,System.EventArgse)//提交信息 { try { if(MyConn.State!=ConnectionState.Open) { MyConn.Open(); } if(this.textNum2.Enabled==true) { this.textNum2.Enabled=false; } ReReport=(CurrencyManager)this.BindingContext[ReturnInfo]; if(this.textNum2.Text.Trim()==""||this.textAmount.Text.Trim()=="")//檢查不能為空的字段 { MessageBox.Show("設(shè)備號,數(shù)量不能為空!"); return; } ReReport.EndCurrentEdit(); if(ReturnInfo.GetChanges()!=null)//信息是否被重新編輯 { if(!change) { if(oldtxtAmount==this.textAmount.Text.Trim()) change=false; else change=true; } RetnAdapter.UpdateCommand.Connection=MyConn;//更新到數(shù)據(jù)庫 RetnAdapter.InsertCommand.Connection=MyConn; ReturnTran=MyConn.BeginTransaction(); RetnAdapter.UpdateCommand.Transaction=ReturnTran; RetnAdapter.InsertCommand.Transaction=ReturnTran; this.RetnAdapter.Update(ReturnInfo); if(change)//還庫數(shù)量字段有新值了 { stringnumber=this.textAmount.Text.Trim(); stringdriveID=this.textNum2.Text.Trim(); intchangeAmt=int.Parse(number)-int.Parse(oldtxtAmount); SqlCommanddriveStorageUpdateCommand=newSqlCommand();//更新庫存表的現(xiàn)有庫存 driveStorageUpdateCommand.Connection=MyConn;//調(diào)用存儲過程 driveStorageUpdateCommand.Transaction=ReturnTran; driveStorageUpdateCommand.CommandType=CommandType.StoredProcedure; driveStorageUpdateCommand.CommandText="UpdateStorage"; driveStorageUpdateCommand.Parameters.Add("@i_Drive_ID",SqlDbType.Char,10); driveStorageUpdateCommand.Parameters["@i_Drive_ID"].Value=driveID; driveStorageUpdateCommand.Parameters.Add("@i_InOutNumber",SqlDbType.Int); driveStorageUpdateCommand.Parameters["@i_InOutNumber"].Value=changeAmt; driveStorageUpdateCommand.Parameters.Add("@o_ErrMessage",SqlDbType.VarChar,256);

溫馨提示

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

最新文檔

評論

0/150

提交評論