仓库管理实验报告 33页

  • 1.06 MB
  • 2022-05-16 18:35:11 发布

仓库管理实验报告

  • 33页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
数据库综合实验------11软工----钱宇坤----2011435112题目:仓库管理系统学院数学与计算机学院专业软件工程学号201135112姓名钱宇坤2013年5月30日 数据库综合实验------11软工----钱宇坤----2011435112仓库管理系统一、实验目的1、全面熟悉与领会本门课程所学习的内容,从实际系统开发中领会数据库完整性的意义和数据库设计理论的意义与设计过程,掌握开发数据库应用程序的基本能力。2、掌握“仓库管理系统”及查询定义方法和使用方法;3、熟悉数据库建模及E/R图的画法;4、掌握SQLServer中数据库、及数据库的建立与管理方法;5、掌握数据导入/导出及数据表的建立与管理方法。二、实验要求本系统的设计模拟一般仓库的管理内容,包括物资管理、仓库管理、入库操作、入库查询统计、出库操作、出库查询统计、库存查询统计等处理情况。2.1管理模块要求:管理设备信息实现设备信息的添加、删除、修改、查询仓库管理实现仓库信息的添加、删除、修改、查询入库信息管理实现入库信息的添加、删除、修改、查询、打印出库信息管理实现出库信息的添加、删除、修改、查询、打印库存信息查询实现库存信息的查询2.2功能要求:设备管理包括物资类别,物资信息的维护(包括录入、删除、修改)仓库管理包括从仓库信息的录入、修改、删除入库信息管理包括入库信息的操作,能够按照年、月、季度、设备种类查询方式进行查询,并打印入库信息。出库查询管理保罗出库信息的操作,能够按照年、月、季度、设备种类查询方式进行查询,并打印出库信息。库存信息管理实现按照物资种类、物资名称等方式查询库存信息2.3其他要求设计设计界面友好,功能操作方面合理,并适当考虑系统在安全性、完整性、备份、恢复等方面的功能要求。三、实验设计3.1基本表设计用户表LogInFrm(用户名,密码,用户组权限)设备信息表FacilityNum(设备号,设备名称)库存信息表drivestorage(设备号,设备库存量)购买信息表buyTable(设备号31 数据库综合实验------11软工----钱宇坤----2011435112,现有库存,最大库存,购买数量,供应商,价格,制表人,备注,报表时间)入库信息表storage_in(设备号,入库日期,供应商,供应商电话,数量,价格,采购员)出库信息表storage_out(设备号,出库日期,使用部门,数量,经办人,备注)还库信息表storage_ret(设备号,还库日期,数量,经办人,归还部门)3.2E/R图设备号设备名称设备还库日期入库日期供应商使用部门出库日期还库电话数量数量入库出库经办人数量备注归还部门经办人价格采购员仓库31 数据库综合实验------11软工----钱宇坤----20114351123.3数据字典名字:设备表描述:唯一的标识一个设备的信息集合定义:设备=设备号+设备名位置:存储在数据库名字:库存表描述:唯一的标识一个仓库的信息集合定义:仓库=仓库号+库存量位置:存储在数据库名字:购买信息表描述:唯一的标识一个购买记录特征的信息集合定义:购买信息=设备号+现有库存+最大库存+购买数量+供应商+价格+制表人+备注+报表时间位置:存储在数据库名字:用户表别名:描述:唯一的标识一个用户特征的信息集合定义:职工=用户名+密码+权限位置:存储在数据库名字:还库表描述:还库信息的情况定义:还库信息=设备号+还库日期+数量+经办人+归还部门位置:存储在数据库名字:入库表描述:物资的入库信息定义:入库表=设备号+入库日期+供应商+供应商电话+数量+价格+采购员位置:存储在数据库名字:出库表描述:物资的出库信息定义:出库表=设备号+出库日期+使用部门+数量+经办人+备注位置:存储在数据库31 数据库综合实验------11软工----钱宇坤----20114351123.4系统需求仓库管理系统普通职员经理仓库管理员操作购买信息查询操作查询操作修改操作还库操作入库操作出库操作删除仓库增加仓库更改密码出库查询购买信息还库查询设备查询库存查询入库查询3.5功能描述仓库管理员:①入库操作:设备入库信息的操作②出库操作:设备出库信息的操作③还库操作:设备还库信息的操作④查询操作:查询设备信息、库存信息⑤更改操作:更改密码,仓库的增加、删除经理:①查询操作:查询设备信息、库存信息、购买信息普通职员:①操作购买信息:购买信息的录入、修改31 数据库综合实验------11软工----钱宇坤----2011435112四、系统设计4.1总体设计仓库管理系统是对设备的入库出库等信息进行记录并查询,包括管理员、经理和普通职员的操作。管理员可以对仓库进行出库入库及修改仓库信息,经理只能查看自己设备的相关情况,普通职员则只能录入购买信息。以下是对仓库各种操作的流程图。4.1.1处理流程以下是仓库管理系统中操作流程:1、管理员的入库操作2、出库操作3、更改密码31 数据库综合实验------11软工----钱宇坤----20114351124、查询操作4.2数据结构设计在仓库管理系统中,对设备的管理是整个系统运作的关键,是仓库管理、入库操作、出库操作的基础,因此对设备的管理就显得尤为重要。设备的基本表要设计合理,能涵盖其他操作需要的各种信息,以及对各类信息的限制条件等。设计好的设备管理表如下表所示:表1设备表列名数据类型长度是否允许空设备号char10NOTNULL,主键设备名char10NOTNULL31 数据库综合实验------11软工----钱宇坤----2011435112经过分析,设计出的仓库管理的购买信息表如表2所示。表2购买信息表列名数据类型长度是否允许空设备号char10NOTNULL,主键最大库存量char10NOTNULL购买数量char10NOTNULL供应量char10NOTNULL价格char10NOTNULL购买信息表的设计也应该合理,设计好的购买信息表如下:表3库存表列名数据类型长度是否允许空设备号char10NOTNULL,主键现有库存量char10NOTNULL设备的各种入库信息应该显示在入库表中,设计好的入库表如下:表4入库表列名数据类型长度是否允许空设备号char10NOTNULL,主键供应商char10NOTNULL入库日期datetime8NOTNULL供应商电话char10NOTNULL价格char10NOTNULL采购员char10NOTNULL数量int4NOTNULL物资的各种出库信息应该显示在出库表中,设计好的出库表如下:表5出库表列名数据类型长度是否允许空设备号char10NOTNULL,主键使用部门char10NOTNULL出库日期datetimeNOTNULL数量char10NOTNULL31 数据库综合实验------11软工----钱宇坤----2011435112设计好的还库表如下所示:表6还库表列名数据类型长度是否允许空设备号char10NOTNULL,主键数量char10NOTNULL还库日期datatimeNOTNULL经办人char10NOTNULL归还部门char30设计好的用户表如下所示:表7用户表列名数据类型长度是否允许空用户char10NOTNULL,主键密码char10NOTNULL,主键权限char10NOTNULL五、系统实现5.1开发工具和环境操作系统:MicrosoftWindows7数据库:MicrosoftSQLServer2005编程环境:MicrosoftVisualStudio20055.2系统的实现5.2.1管理员子系统的设计与实现管理员可以对仓库进行各种操作,包括入库操作、出库操作、各种查询操作及更改操作。因为是俩人合作,所以本部分实现入库操作及出库操作。5.2.1.1存储过程ALTERprocedureUpdateStorage@i_Drive_IDCHAR(10),@i_InOutNumberINT,@o_ErrMessageVARCHAR(256)OUTPUTASDECLARE@SQL_ERR_CODEINT,@ERR_FLGINTBEGIN31 数据库综合实验------11软工----钱宇坤----2011435112IFNOTEXISTS(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:31 数据库综合实验------11软工----钱宇坤----2011435112BEGINIF@ERR_FLG=1BEGINSET@o_ErrMessage="没有入库的设备不能出库"ENDELSEIF@ERR_FLG=-1BEGINSET@o_ErrMessage="系统错误"ENDRETURN@ERR_FLGEND5.2.1.2数据库的连接:数据库连接的代码:stringmyConn=newSqlConnection(@"DataSource=.SQLEXPRESS;AttachDbFilename="C:ProgramFiles(x86)MicrosoftSQLServerMSSQL.3MSSQLDatastorage_Data.MDF";IntegratedSecurity=True;ConnectTimeout=30;UserInstance=True");//建立连接SqlConnectionmyConnection=newSqlConnection(connectionString);myConnection.Open();5.2.1.2入库操作执行物资操作后,物资的相关数据就已经改变,所以跟设备相关的仓库、库存表、入库表都有相应的变化。典型代码如下: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("设备号,数量不能为空!");31 数据库综合实验------11软工----钱宇坤----2011435112return;}ISReport.EndCurrentEdit();if(InStgInfo.GetChanges()!=null)//信息是否被重新编辑{if(!change){if(this.oldtxtAmount==this.textAmount.Text.Trim())change=false;elsechange=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"].Value31 数据库综合实验------11软工----钱宇坤----2011435112=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;}执行入库操作后,将显示入库表的情况,具体界面如下:31 数据库综合实验------11软工----钱宇坤----2011435112图入库界面5.2.1.3出库操作出库操作同入库操作一样要更改与物资有关的信息,比如出库表、仓库及库存表。典型代码如下: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,"设备号");31 数据库综合实验------11软工----钱宇坤----2011435112this.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];31 数据库综合实验------11软工----钱宇坤----2011435112if(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;elsechange=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";31 数据库综合实验------11软工----钱宇坤----2011435112driveStorageUpdateCommand.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;}}else31 数据库综合实验------11软工----钱宇坤----2011435112{MessageBox.Show("您没有修改任何信息");return;}}catch(Exceptionex){MessageBox.Show("对不起,您输入的设备号错误!!具体信息:"+ex.ToString());if(OutStgTran!=null){OutStgTran.Rollback();}if(MyConn.State!=ConnectionState.Closed){MyConn.Close();}return;}}出库操作的界面:5.2.1.4设备信息操作设备信息的添加删除修改操作:31 数据库综合实验------11软工----钱宇坤----2011435112privatevoidDataBindingsFunction()//绑定{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("不能删除正在使用的数据","提示");}}31 数据库综合实验------11软工----钱宇坤----2011435112privatevoidsend_button_Click(objectsender,System.EventArgse)//提交信息{FNReport=(CurrencyManager)this.BindingContext[FacNumInfo];if(this.textNum.Text.Trim()=="")//检查不能为空的字段{MessageBox.Show("设备号不能为空!");return;}for(inti=0;i