仓库管理系统设计研究报告_第1页
仓库管理系统设计研究报告_第2页
仓库管理系统设计研究报告_第3页
仓库管理系统设计研究报告_第4页
仓库管理系统设计研究报告_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

①操作购买信息:购买信息的录入、修改系统设计4.1总体设计 仓库管理系统是对设备的入库出库等信息进行记录并查询,包括管理员、经理和普通职员的操作。管理员可以对仓库进行出库入库及修改仓库信息,经理只能查看自己设备的相关情况,普通职员则只能录入购买信息。以下是对仓库各种操作的流程图。4.1.1处理流程以下是仓库管理系统中操作流程:管理员的入库操作出库操作3、更改密码4、查询操作4.2数据结构设计在仓库管理系统中,对设备的管理是整个系统运作的关键,是仓库管理、入库操作、出库操作的基础,因此对设备的管理就显得尤为重要。设备的基本表要设计合理,能涵盖其他操作需要的各种信息,以及对各类信息的限制条件等。设计好的设备管理表如下表所示:表1设备表列名数据类型长度是否允许空设备号char10NOTNULL,主键设备名char10NOTNULL经过分析,设计出的仓库管理的购买信息表如表2所示。表2购买信息表列名数据类型长度是否允许空设备号char10NOTNULL,主键最大库存量char10NOTNULL购买数量char10NOTNULL供应量char10NOTNULL价格char10NOTNULL购买信息表的设计也应该合理,设计好的购买信息表如下:表3库存表列名数据类型长度是否允许空设备号char10NOTNULL,主键现有库存量char10NOTNULL设备的各种入库信息应该显示在入库表中,设计好的入库表如下:表4入库表列名数据类型长度是否允许空设备号char10NOTNULL,主键供应商char10NOTNULL入库日期datetime8NOTNULL供应商电话char10NOTNULL价格char10NOTNULL采购员char10NOTNULL数量int4NOTNULL物资的各种出库信息应该显示在出库表中,设计好的出库表如下:表5出库表列名数据类型长度是否允许空设备号char10NOTNULL,主键使用部门char10NOTNULL出库日期datetimeNOTNULL数量char10NOTNULL设计好的还库表如下所示:表6还库表列名数据类型长度是否允许空设备号char10NOTNULL,主键数量char10NOTNULL还库日期datatimeNOTNULL经办人char10NOTNULL归还部门char30设计好的用户表如下所示:表7用户表列名数据类型长度是否允许空用户char10NOTNULL,主键密码char10NOTNULL,主键权限char10NOTNULL系统实现5.1开发工具和环境操作系统:MicrosoftWindows7数据库:MicrosoftSQLServer2005编程环境:MicrosoftVisualStudio20055.2系统的实现5.2.1管理员子系统的设计与实现管理员可以对仓库进行各种操作,包括入库操作、出库操作、各种查询操作及更改操作。因为是俩人合作,所以本部分实现入库操作及出库操作。存储过程ALTERprocedureUpdateStorage@i_Drive_IDCHAR(10),@i_InOutNumberINT,@o_ErrMessageVARCHAR(256)OUTPUTASDECLARE@SQL_ERR_CODEINT,@ERR_FLGINTBEGINIFNOTEXISTS(SELECT*FROMdrivestorageWHERE设备号=@i_Drive_ID)BEGINIF@i_InOutNumber>0BEGINprint1INSERTINTOdrivestorage(设备号,现有库存量)VALUES(@i_Drive_ID,@i_InOutNumber)print2SET@SQL_ERR_CODE=@@ERRORIF@SQL_ERR_CODE<>0BEGINSET@ERR_FLG=-1GOTOERROR_RETURNENDENDELSEBEGINSET@ERR_FLG=1GOTOERROR_RETURNENDENDELSEBEGINUPDATEdrivestorageSET现有库存量=CONVERT(CHAR,(CONVERT(INT,现有库存量)+@i_InOutNumber))WHERE设备号=@i_Drive_IDSET@SQL_ERR_CODE=@@ERRORIF@SQL_ERR_CODE<>0BEGINSET@ERR_FLG=-1GOTOERROR_RETURNENDENDENDNORMAL_RETURN:BEGINRETURN0ENDERROR_RETURN:BEGINIF@ERR_FLG=1BEGINSET@o_ErrMessage='没有入库的设备不能出库'ENDELSEIF@ERR_FLG=-1BEGINSET@o_ErrMessage='系统错误'ENDRETURN@ERR_FLGEND数据库的连接:数据库连接的代码: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();入库操作执行物资操作后,物资的相关数据就已经改变,所以跟设备相关的仓库、库存表、入库表都有相应的变化。典型代码如下: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("设备号,数量不能为空!"); 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;//更新到数据库 InStgAdapter.InsertCommand.Connection=MyConn; InStgTran=MyConn.BeginTransaction(); InStgAdapter.UpdateCommand.Transaction=InStgTran; InStgAdapter.InsertCommand.Transaction=InStgTran; this.InStgAdapter.Update(InStgInfo); if(change)//还库数量字段有新值了 { stringnumber=this.textAmount.Text.Trim(); intchangeAmt=int.Parse(number)-int.Parse(oldtxtAmount); stringdriveID=this.textNum2.Text.Trim(); SqlCommanddriveStorageUpdateCommand=newSqlCommand();//更新库存表的现有库存 driveStorageUpdateCommand.Connection=MyConn;//调用存储过程 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; }执行入库操作后,将显示入库表的情况,具体界面如下:图入库界面出库操作出库操作同入库操作一样要更改与物资有关的信息,比如出库表、仓库及库存表。典型代码如下:privatevoidOutStorage_Load(objectsender,System.EventArgse) { MyConn.Open();//打开连接 OutStgAdapter.SelectCommand.CommandText="SELECT*FROMstorage_out"; OutStgAdapter.SelectCommand.Connection=MyConn; OutStgAdapter.Fill(OutStgInfo);//填充数据集 this.dataGrid1.DataSource=OutStgInfo.DefaultView; OSReport=(CurrencyManager)BindingContext[OutStgInfo]; DataGridTableStyleOut=newDataGridTableStyle();this.DataBindingsFunction(); Out.AlternatingBackColor=Color.Blue;//颜色设置 Out.MappingName=OutStgInfo.TableName; this.dataGrid1.Select(0);//选定第一列 this.textNum2.Enabled=false; } privatevoidDataBindingsFunction()//绑定 { this.textNum2.DataBindings.Add("Text",OutStgInfo,"设备号"); this.textDate.DataBindings.Add("Text",OutStgInfo,"出库日期"); this.textDep.DataBindings.Add("Text",OutStgInfo,"使用部门"); this.textAmount.DataBindings.Add("Text",OutStgInfo,"数量"); this.textMan.DataBindings.Add("Text",OutStgInfo,"经办人"); 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;//还库数量更改 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("设备号,数量不能为空!"); return; } OSReport.EndCurrentEdit(); if(OutStgInfo.GetChanges()!=null)//信息是否被重新编辑 { if(!change) { if(oldtxtAmount==this.textAmount.Text.Trim()) change=false; else change=true; } OutStgAdapter.UpdateCommand.Connection=MyConn;//更新到数据库 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();//更新库存表的现有库存 driveStorageUpdateCommand.Connection=MyConn;//调用存储过程 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("对不起,您输入的设备号错误!!具体信息:"+ex.ToString()); if(OutStgTran!=null) { OutStgTran.Rollback(); } if(MyConn.State!=ConnectionState.Closed) { MyConn.Close(); } return; } }出库操作的界面:设备信息操作设备信息的添加删除修改操作:privatevoidDataBindingsFunction()//绑定 { this.textNum.DataBindings.Add("Text",FacNumInfo,"设备号"); this.textName.DataBindings.Add("Text",FacNumInfo,"设备名称"); } 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;//更新到数据库中 FacNumAdapter.Update(FacNumInfo); MessageBox.Show("已成功删除"); return; } } catch(Exceptionex) { MessageBox.Show("不能删除正在使用的数据","提示"); } } privatevoidsend_button_Click(objectsender,System.EventArgse)//提交信息 { FNReport=(CurrencyManager)this.BindingContext[FacNumInfo]; if(this.textNum.Text.Trim()=="")//检查不能为空的字段 { MessageBox.Show("设备号不能为空!"); 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("设备号必须唯一!"); this.FacNumInfo.RejectChanges(); return; } } FNReport.EndCurrentEdit(); if(FacNumInfo.GetChanges()!=null)//信息是否被重新编辑 { try { FacNumAdapter.UpdateCommand.Connection=MyConn;//更新到数据库 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; } }设备信息操作界面:还库管理还库操作的代码如下:privatevoidReturnStg_Load(objectsender,System.EventArgse) { MyConn.Open();//打开连接 RetnAdapter.SelectCommand.CommandText="SELECT*FROMstorage_retn"; RetnAdapter.SelectCommand.Connection=MyConn; RetnAdapter.Fill(ReturnInfo);//填充数据集 this.dataGrid1.DataSource=ReturnInfo.DefaultView; ReReport=(CurrencyManager)BindingContext[ReturnInfo]; DataGridTableStyleRe=newDataGridTableStyle(); this.DataBindingsFunction(); Re.AlternatingBackColor=Color.Blue;//颜色设置 Re.MappingName=ReturnInfo.TableName; this.dataGrid1.Select(0);//选定第一列 this.textNum2.Enabled=false; } privatevoidDataBindingsFunction()//绑定 { this.textNum2.DataBindings.Add("Text",ReturnInfo,"设备号"); this.textDate.DataBindings.Add("Text",ReturnInfo,"还库日期"); this.textAmount.DataBindings.Add("Text",ReturnInfo,"数量"); this.textMan.DataBindings.Add("Text",ReturnInfo,"经办人"); 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;//还库数量更改 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("设备号,数量不能为空!"); return; } ReReport.EndCurrentEdit(); if(ReturnInfo.GetChanges()!=null)//信息是否被重新编辑 { if(!change) { if(oldtxtAmount==this.textAmount.Text.Trim()) change=false; else change=true; } RetnAdapter.UpdateCommand.Connection=MyConn;//更新到数据库 RetnAdapter.InsertCommand.Connection=MyConn; ReturnTran=MyConn.BeginTransaction(); RetnAdapter.UpdateCommand.Transaction=ReturnTran; RetnAdapter.InsertCommand.Transaction=ReturnTran; this.RetnAdapter.Update(ReturnInfo); if(change)//还库数量字段有新值了 { stringnumber=this.textAmount.Text.Trim(); stringdriveID=this.textNum2.Text.Trim(); intchangeAmt=int.Parse(number)-int.Parse(oldtxtAmount); SqlCommanddriveStorageUpdateCommand=new

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论