




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库综合实验-11软工-钱宇坤-2011435112 题目: 仓库管理系统 学 院 数学与计算机学院 专 业 软件工程 学 号 201135112 姓 名 钱宇坤 2013年5月30日仓库管理系统一、实验目的1、全面熟悉与领会本门课程所学习的内容,从实际系统开发中领会数据库完整性的意义和数据库设计理论的意义与设计过程,掌握开发数据库应用程序的基本能力。2、掌握“仓库管理系统”及查询定义方法和使用方法;3、熟悉数据库建模及E/R图的画法;4、掌握SQL Server 中数据库、及数据库的建立与管理方法;5、掌握数据导入/导出及数据表的建立与管理方法。二、实验要求本系统的设计模拟一般仓库的管理内容,包括物资管理、仓库管理、入库操作、入库查询统计、出库操作、出库查询统计、库存查询统计等处理情况。2.1管理模块要求:管理设备信息实现设备信息的添加、删除、修改、查询仓库管理实现仓库信息的添加、删除、修改、查询入库信息管理实现入库信息的添加、删除、修改、查询、打印出库信息管理实现出库信息的添加、删除、修改、查询、打印库存信息查询实现库存信息的查询2.2功能要求:设备管理包括物资类别,物资信息的维护(包括录入、删除、修改)仓库管理包括从仓库信息的录入、修改、删除入库信息管理包括入库信息的操作,能够按照年、月、季度、设备种类查询方式进行查询,并打印入库信息。出库查询管理保罗出库信息的操作,能够按照年、月、季度、设备种类查询方式进行查询,并打印出库信息。库存信息管理实现按照物资种类、物资名称等方式查询库存信息2.3其他要求设计设计界面友好,功能操作方面合理,并适当考虑系统在安全性、完整性、备份、恢复等方面的功能要求。三、实验设计3.1基本表设计用户表 LogInFrm(用户名,密码,用户组权限)设备信息表 FacilityNum(设备号,设备名称)库存信息表 drivestorage(设备号,设备库存量)购买信息表 buyTable (设备号,现有库存,最大库存,购买数量,供应商,价格,制表人,备注,报表时间)入库信息表 storage_in(设备号,入库日期,供应商,供应商电话,数量,价格,采购员)出库信息表 storage_out(设备号,出库日期,使用部门,数量,经办人,备注)还库信息表 storage_ret(设备号,还库日期,数量,经办人,归还部门)3.2 E/R图设备号设备名称设备还库日期入库日期供应商使用部门出库日期还库电话数量数量入库出库 经办人数量 备注归还部门经办人价格采购员仓库3.3 数据字典名字:设备表描述:唯一的标识一个设备的信息集合定义:设备=设备号+设备名位置:存储在数据库名字:库存表描述:唯一的标识一个仓库的信息集合定义:仓库=仓库号+库存量位置:存储在数据库名字:购买信息表描述:唯一的标识一个购买记录特征的信息集合定义:购买信息=设备号+现有库存+最大库存+购买数量+供应商+价格+制表人+备注+报表时间位置:存储在数据库名字:用户表别名: 描述:唯一的标识一个用户特征的信息集合定义:职工=用户名+密码+权限位置:存储在数据库名字:还库表描述:还库信息的情况定义:还库信息=设备号+还库日期+数量+经办人+归还部门位置:存储在数据库名字:入库表 描述:物资的入库信息定义:入库表=设备号+入库日期+供应商+供应商电话+数量+价格+采购员位置:存储在数据库名字:出库表 描述:物资的出库信息定义:出库表=设备号+出库日期+使用部门+数量+经办人+备注位置:存储在数据库3.4 系统需求仓库管理系统普通职员经理仓库管理员操作购买信息查询操作查询操作修改操作还库操作入库操作出库操作删除仓库增加仓库更改密码出库查询购买信息还库查询设备查询库存查询入库查询3.5功能描述仓库管理员:入库操作:设备入库信息的操作出库操作:设备出库信息的操作还库操作:设备还库信息的操作查询操作:查询设备信息、库存信息更改操作:更改密码,仓库的增加、删除经理:查询操作:查询设备信息、库存信息、购买信息普通职员:操作购买信息:购买信息的录入、修改4、 系统设计4.1总体设计仓库管理系统是对设备的入库出库等信息进行记录并查询,包括管理员、经理和普通职员的操作。管理员可以对仓库进行出库入库及修改仓库信息,经理只能查看自己设备的相关情况,普通职员则只能录入购买信息。以下是对仓库各种操作的流程图。4.1.1 处理流程以下是仓库管理系统中操作流程:1、 管理员的入库操作2、 出库操作 3、更改密码 4、查询操作 4.2数据结构设计在仓库管理系统中,对设备的管理是整个系统运作的关键,是仓库管理、入库操作、出库操作的基础,因此对设备的管理就显得尤为重要。设备的基本表要设计合理,能涵盖其他操作需要的各种信息,以及对各类信息的限制条件等。设计好的设备管理表如下表所示:表1设备表列名数据类型长度是否允许空设备号char10NOT NULL,主键设备名char10NOT NULL经过分析,设计出的仓库管理的购买信息表如表2所示。表2购买信息表列名数据类型长度是否允许空设备号char10NOT NULL,主键最大库存量char10NOT NULL购买数量char10NOT NULL供应量char10NOT NULL价格char10NOT NULL 购买信息表的设计也应该合理,设计好的购买信息表如下:表3库存表列名数据类型长度是否允许空设备号char10NOT NULL, 主键现有库存量char10NOT NULL 设备的各种入库信息应该显示在入库表中,设计好的入库表如下: 表4入库表列名数据类型长度是否允许空设备号char10NOT NULL,主键供应商char10NOT NULL入库日期datetime8NOT NULL供应商电话char10NOT NULL价格char10NOT NULL采购员char10NOT NULL数量int4NOT NULL 物资的各种出库信息应该显示在出库表中,设计好的出库表如下: 表5出库表列名数据类型长度是否允许空设备号char10NOT NULL,主键使用部门char10NOT NULL出库日期datetimeNOT NULL数量char10NOT NULL 设计好的还库表如下所示:表6还库表列名数据类型长度是否允许空设备号char10NOT NULL,主键数量char10NOT NULL还库日期datatimeNOT NULL经办人char10NOT NULL归还部门char30 设计好的用户表如下所示:表7用户表列名数据类型长度是否允许空 用户char10NOT NULL,主键密码char10NOT NULL,主键权限char10NOT NULL5、 系统实现5.1开发工具和环境操作系统:Microsoft Windows 7 数 据 库:Microsoft SQL Server 2005编程环境:Microsoft Visual Studio 20055.2系统的实现5.2.1 管理员子系统的设计与实现 管理员可以对仓库进行各种操作,包括入库操作、出库操作、各种查询操作及更改操作。因为是俩人合作,所以本部分实现入库操作及出库操作。存储过程ALTER procedure UpdateStorage i_Drive_ID CHAR(10) , i_InOutNumber INT , o_ErrMessage VARCHAR(256) OUTPUT ASDECLARESQL_ERR_CODE INT ,ERR_FLG INT BEGINIF NOT EXISTS( SELECT * FROM drivestorage WHERE 设备号= i_Drive_ID) BEGIN IF i_InOutNumber 0 BEGIN print 1 INSERT INTO drivestorage (设备号,现有库存量) VALUES( i_Drive_ID ,i_InOutNumber ) print 2 SET SQL_ERR_CODE = ERROR IF SQL_ERR_CODE 0 BEGIN SET ERR_FLG = -1 GOTO ERROR_RETURN END END ELSE BEGIN SET ERR_FLG = 1 GOTO ERROR_RETURN END ENDELSE BEGIN UPDATE drivestorage SET 现有库存量= CONVERT(CHAR,( CONVERT(INT,现有库存量) + i_InOutNumber ) ) WHERE 设备号= i_Drive_ID SET SQL_ERR_CODE = ERROR IF SQL_ERR_CODE 0 BEGIN SET ERR_FLG = -1 GOTO ERROR_RETURN END ENDENDNORMAL_RETURN:BEGIN RETURN 0ENDERROR_RETURN:BEGIN IF ERR_FLG = 1 BEGIN SET o_ErrMessage = 没有入库的设备不能出库 END ELSE IF ERR_FLG = -1 BEGIN SET o_ErrMessage = 系统错误 END RETURN ERR_FLGEND数据库的连接: 数据库连接的代码:string myConn = new SqlConnection( Data Source=.SQLEXPRESS;AttachDbFilename=C:Program Files (x86)Microsoft SQL ServerMSSQL.3MSSQLDatastorage_Data.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True);/建立连接 SqlConnection myConnection = new SqlConnection(connectionString); myConnection.Open();入库操作执行物资操作后,物资的相关数据就已经改变,所以跟设备相关的仓库、库存表、入库表都有相应的变化。典型代码如下:tryif( MyConn.State != ConnectionState.Open)MyConn.Open();if(this.textNum2.Enabled=true)this.textNum2.Enabled=false;ISReport = (CurrencyManager)this.BindingContextInStgInfo;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;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)/还库数量字段有新值了string number=this.textAmount.Text.Trim();int changeAmt=int.Parse(number)-int.Parse(oldtxtAmount);string driveID=this.textNum2.Text.Trim();SqlCommand driveStorageUpdateCommand = new SqlCommand();/更新库存表的现有库存driveStorageUpdateCommand.Connection = MyConn;/调用存储过程driveStorageUpdateCommand.Transaction = InStgTran;driveStorageUpdateCommand.CommandType = CommandType.StoredProcedure;driveStorageUpdateCommand.CommandText = UpdateStorage;driveStorageUpdateCommand.Parameters.Add(i_Drive_ID,SqlDbType.Char,10);driveStorageUpdateCommand.Parametersi_Drive_ID.Value =driveID; driveStorageUpdateCommand.Parameters.Add(i_InOutNumber,SqlDbType.Int);driveStorageUpdateCommand.Parametersi_InOutNumber.Value = changeAmt;driveStorageUpdateCommand.Parameters.Add(o_ErrMessage,SqlDbType.VarChar,256);driveStorageUpdateCommand.Parameterso_ErrMessage.Direction = ParameterDirection.Output;driveStorageUpdateCommand.ExecuteNonQuery();InStgTran.Commit();MessageBox.Show(成功!);elseMessageBox.Show(您没有修改任何信息);return;执行入库操作后,将显示入库表的情况,具体界面如下:图 入库界面出库操作出库操作同入库操作一样要更改与物资有关的信息,比如出库表、仓库及库存表。典型代码如下:private void OutStorage_Load(object sender, System.EventArgs e) MyConn.Open();/打开连接OutStgAdapter.SelectCommand.CommandText = SELECT * FROM storage_out; OutStgAdapter.SelectCommand.Connection = MyConn;OutStgAdapter.Fill(OutStgInfo);/填充数据集this.dataGrid1.DataSource = OutStgInfo.DefaultView;OSReport = (CurrencyManager) BindingContextOutStgInfo;DataGridTableStyle Out = new DataGridTableStyle(); this.DataBindingsFunction();Out.AlternatingBackColor = Color.Blue;/颜色设置Out.MappingName = OutStgInfo.TableName;this.dataGrid1.Select(0);/选定第一列this.textNum2.Enabled=false;private void DataBindingsFunction()/绑定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,备注);private void add_button_Click(object sender, System.EventArgs e)/增加记录tryOSReport = (CurrencyManager)this.BindingContextOutStgInfo;OSReport.AddNew();/增加新记录this.textDate.Text=DateTime.Now.ToString();this.textNum2.Enabled=true;this.change=true;/还库数量更改this.oldtxtAmount=0;this.textNum2.Focus();/焦点在第一个字段上catch( Exception ex )MessageBox.Show(ex.Message);private void send_button_Click(object sender, System.EventArgs e)/提交信息tryif( MyConn.State != ConnectionState.Open)MyConn.Open();if(this.textNum2.Enabled=true)this.textNum2.Enabled=false;OSReport = (CurrencyManager)this.BindingContextOutStgInfo;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;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); int cmdresults = 0;if(change)string driveID=this.textNum2.Text.Trim();string number=this.textAmount.Text.Trim();int outnumber=0-(int.Parse(number)+int.Parse(this.oldtxtAmount);SqlCommand driveStorageUpdateCommand = new SqlCommand();/更新库存表的现有库存driveStorageUpdateCommand.Connection = MyConn;/调用存储过程driveStorageUpdateCommand.Transaction = OutStgTran;driveStorageUpdateCommand.CommandType = CommandType.StoredProcedure;driveStorageUpdateCommand.CommandText = UpdateStorage;driveStorageUpdateCommand.Parameters.Add(i_Drive_ID,SqlDbType.Char,10);driveStorageUpdateCommand.Parametersi_Drive_ID.Value = driveID;driveStorageUpdateCommand.Parameters.Add(i_InOutNumber,SqlDbType.Int);driveStorageUpdateCommand.Parametersi_InOutNumber.Value = outnumber;driveStorageUpdateCommand.Parameters.Add(o_ErrMessage,SqlDbType.VarChar,256);driveStorageUpdateCommand.Parameterso_ErrMessage.Direction = ParameterDirection.Output;driveStorageUpdateCommand.Parameters.Add(o_Return,SqlDbType.Int);driveStorageUpdateCommand.Parameterso_Return.Direction = ParameterDirection.ReturnValue;cmdresults = driveStorageUpdateCommand.ExecuteNonQuery();cmdresults = Convert.ToInt16(driveStorageUpdateCommand.Parameterso_Return.Value);if( cmdresults != 0)MessageBox.Show(driveStorageUpdateCommand.Parameterso_ErrMessage.Value.ToString();OutStgTran.Rollback();elseMessageBox.Show(成功!);OutStgTran.Commit();return;elseMessageBox.Show(您没有修改任何信息);return;catch(Exception ex)MessageBox.Show(对不起,您输入的设备号错误!具体信息:+ex.ToString();if( OutStgTran != null )OutStgTran.Rollback();if( MyConn.State != ConnectionState.Closed)MyConn.Close();return;出库操作的界面:设备信息操作设备信息的添加删除修改操作:private void DataBindingsFunction()/绑定this.textNum.DataBindings.Add(Text,FacNumInfo,设备号);this.textName.DataBindings.Add(Text,FacNumInfo,设备名称);private void add_button_Click(object sender, System.EventArgs e)/增加记录tryFNReport = (CurrencyManager)this.BindingContextFacNumInfo;FNReport.AddNew();/增加新记录this.textNum.Focus();/焦点在第一个字段上catch( Exception ex )MessageBox.Show(ex.Message);private void del_button_Click(object sender, System.EventArgs e)/删除操作tryif (MessageBox.Show(您确定删除么?,提示,MessageBoxButtons.YesNo) = DialogResult.Yes)/提示FNReport = (CurrencyManager)this.BindingContextFacNumInfo;FNReport.RemoveAt(FNReport.Position);/删除FacNumAdapter.DeleteCommand.Connection=MyConn;/更新到数据库中FacNumAdapter.Update(FacNumInfo);MessageBox.Show(已成功删除);return;catch(Exception ex)MessageBox.Show(不能删除正在使用的数据, 提示);private void send_button_Click(object sender, System.EventArgs e)/提交信息FNReport = (CurrencyManager)this.BindingContextFacNumInfo;if (this.textNum.Text.Trim() = )/检查不能为空的字段MessageBox.Show(设备号不能为空!);return;for(int i=0;iFacNumInfo.Rows.Count;i+)this.numRow=FacNumInfo.Rowsi;if (numRow0.ToString().Trim()=this.textNum.Text.Trim()MessageBox.Show(设备号必须唯一!);this.FacNumInfo.RejectChanges();return;FNReport.EndCurrentEdit();if(FacNumInfo.GetChanges()!=null)/信息是否被重新编辑tryFacNumAdapter.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(Exception ex)MessageBox.Show(ex.Message );elseMessageBox.Show(您没有修改任何信息);return;设备信息操作界面:还库管理还库操作的代码如下:private void ReturnStg_Load(object sender, System.EventArgs e)MyConn.Open();/打开连接RetnAdapter.SelectCommand.CommandText = SELECT * FROM storage_retn; RetnAdapter.SelectCommand.Connection = MyConn;RetnAdapter.Fill(ReturnInfo);/填充数据集this.dataGrid1.DataSource = ReturnInfo.DefaultView;ReReport = (CurrencyManager) BindingContextReturnInfo;DataGridTableStyle Re = new DataGridTableStyle();this.DataBindingsFunction();Re.AlternatingBackColor = Color.Blue;/颜色设置Re.MappingName = ReturnInfo.TableName;this.dataGrid1.Select(0);/选定第一列this.textNum2.Enabled=false;private void DataBindingsFunction()/绑定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,归还部门);private void add_button_Click(object sender, System.EventArgs e)/增加记录tryReReport = (CurrencyManager)this.BindingContextReturnInfo;ReReport.AddNew();/增加新记录this.textNum2.Enabled=true;this.textDate.Text=DateTime.Now.ToString();this.change=true;/还库数量更改this.oldtxtAmount=0;this.textNum2.Focus();/焦点在第一个字段上catch( Exception ex )MessageBox.Show(ex.Message);private void send_button_Click(object sender, System.EventArgs e)/提交信息tryif( MyConn.State != ConnectionState.Open)MyConn.Open();if(this.textNum2.Enabled=true)this.textNum2.Enabled=false;ReReport = (CurrencyManager)this.BindingContextReturnInfo;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;elsechange=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)/还库数量字段有新值了string number=this.textAmount.Text.Trim();string drive
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 难点详解冀教版8年级下册期末测试卷带答案详解(培优B卷)
- 考点解析-四川峨眉第二中学7年级数学下册第六章 概率初步难点解析练习题(详解)
- 粮油食品检验人员综合提升测试卷(能力提升)附答案详解
- 南通师范高等专科学校单招《数学》试题附答案详解(巩固)
- 发动机概论课件
- 难点解析-京改版数学8年级上册期末试卷【模拟题】附答案详解
- Tubulin-polymerization-IN-79-生命科学试剂-MCE
- 难点解析人教版7年级数学上册期末试题及完整答案详解1套
- 环保产业园2025年循环经济模式绿色产业发展与产业结构调整报告
- 数字孪生视角下的2025年城市规划与建设智能化运营与管理报告
- 土地出租合同书电子版
- 《化妆品稳定性试验规范》
- 二氧化碳静态爆破施工方案样本
- 八年级年级主任工作计划
- 英汉互译单词练习打印纸
- 四川JS-004竣工验收报告
- 花卉栽植施工方案
- 水工闸门课件
- 全自动血液细胞分析仪产品技术要求深圳迈瑞
- 找对英语学习方法的第一本书
- 《诺丁山》经典台词
评论
0/150
提交评论