1、资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。仓库管理信息系统设计与实现作 者: 袁培龙指导老师: 张 坤摘要: 在各大超市、 商场、 企业内部都涉及到仓库管理, 仓库管理信息系统对提高仓库管理效率, 减少劳动量, 优化资源配置起到重要的作用。本文主要介绍如何利用c#语言和SQL Server 数据库开发出功能完善, 简单易用的仓库管理信息系统。该系统主要包括货物的入库、 出库、 仓库信息盘点和数据的备份还原等操作, 为用户提供一个友好的操作平台, 实现仓库信息管理的现代化。关键字: SQL Server数据库, C#, 仓库管理0 引言21世纪是信息化的时代, 信息是引领当今时代
2、潮流的最贴切的词语, 无论在什么事情上都要求信息化, 时效性强, 高质量。因此现在市场上迫切需要有人开发出适合从事信息管理的人来操作的管理系统, 既能帮助她们有效的管理, 又能为其提供简单、 友好的界面, 使她们操作起来简易方便。仓库管理是一种既麻烦又单调的工作, 每天都是重复记录一些货物的存入与取出, 而且货物的种类繁多, 存取有很大的随机性, 这样为工作人员带来了很大的不便, 在操作过程中, 由于人为的计算出错率很高, 一旦出错改正也很困难, 这样简单繁重的工作要很多人来做, 为经营者增加了很多成本。因此开发一个可行的仓库管理系统是十分必要的。1 课题简介课题: 仓库管理信息系统任务: 开
3、发仓库管理系统, 主要为减轻仓库管理人员的负担, 使货物的存入记录与取出记录相对完善, 便于货物的增加与减少, 降低出错率, 使管理更加合理、 科学, 也为经营者节省开支。在系统中应实现货物的入库、 出库、 货物信息盘点等操作, 由于在仓库管理的过程中会涉及到大量的数据操作, 如数据的添加、 删除、 修改和保存等, 因此在系统中应充分完善这些功能的实现, 为避免数据的误操作或其它原因造成的数据损坏在系统中数据的备份和还原必不可少。该系统正是在此基础上开发出来的。功能概述: 该系统界面友好, 操作简便, 能完成用户的注册, 用户信息管理, 供应商信息管理, 仓库信息管理, 货物入库、 出库、 和
4、盘点管理, 数据的备份和还原等一系列仓库管理功能, 开发本系统的总体任务是实现仓库信息管理的系统化和自动化, 帮助管理人员更好更高效地完成仓库管理工作。本着实用性和介绍性的原则, 整个系统由五大模块组成, 每个大的模块又包括二至三个小的模块。( 1) 用户管理部分: 包括个人信息管理、 注册信息管理和退出; 其功能是实现对个人信息的查询、 修改和注销, 完成新用户注册以及推出系统等操作。( 2) 基本信息管理部分: 包括供应商基本信息和商品基本信息管理, 其功能是实现对供应商和商品信息的添加和修改、 删除和查询等操作。( 3) 仓库管理部分: 包括货物的入库、 出库和盘点管理, 其功能是实现货
5、物的入库和删除历史记录, 自动查询要出库的货物并记录出库信息, 查询需盘点的货物的信息并进行货物盘点等操作。( 4) 系统维护部分: 包括数据的备份和还原两项功能, 实现仓库信息的定期备份和还原。 ( 5) 帮助部分: 设置关于和使用帮助使用户了解系统的基本信息。系统具有高效、 易操作、 易维护等特点, 而且系统结构清晰、 界面友好, 功能较为齐全, 能有效地协助管理人员进行仓库管理工作。如果要真正把它用到仓库的自动化管理中, 还需要对该系统进行一步的完善工作。2 系统需求分析2.1 可行性分析可行性研究就是预开发软件系统的总体目标, 给出它的功能、 性能、 可靠性以及其它方面的要求。其目的是
6、用最小的代价在尽可能短的时间内确定问题是否能够解决、 是否值得去解决。下面从三个方面分析本系统的可行性: 技术可行性采用SQL Server进行后台数据库的管理、 操作和维护, 用Visual Studio 进行前台界面设计、 实现后台数据库的接口、 数据的录入、 查询、 浏览等功能。根据Visual Studio 的特点及其强大、 方便、 快捷的开发工具, 以及她们当前的广泛应用, 充分说明在技术方面可行。 经济可行性经济可行性分析( 能否赢利) , 是从经济的角度分析系统的规划方案有无实现的可能和开发的价值; 分析系统所带来的经济效益是否超过开发和维护网站所需要的费用。此仓库管理系统在实际
7、的生活中应用非常的广泛, 存在着很大的利益, 而且使用和维护也非常的方便, 费用不高, 因此有着很好的经济可行性。 开发环境可行性本系统对设备的软硬件的要求都不高, 我们只需长有Windows XP, Visual Studio 以及SQL 以上软件的电脑都能够达到我们的要求, 而当前这种配置已经很普遍了。2.2 开发工具和运行环境Visual Studio 提供了一个方便实用的可视化界面操作, 集成环境会生成大量的框架代码, 节省了很多工作, 另外它还有动态程序提示功能, 为设计这减少了很多任务。另外它支持VB、 C#、 VC+等设计语言以及程序设计的可扩展性, 页面缓存技术等, 对程序设计
8、者来说是很好的选择。SQL Server是微软推出的大型关系数据库系统, 是为ADO.NET和大量数据存储量身定做的, 因此本系统选择了SQL Server作为后台数据库, 而没有选择Access数据库, 是为了能有更好的效率去查询和操作数据库以及满足仓库管理的大量数据操作。2.3 研究设计中要解决的问题仓库管理系统主要功能是货物的入库、 出库、 货物盘点和数据的备份还原等功能, 因此在设计的过程中要满足这些功能的需求: ( 1) 如果用户没有注册是不能使用该系统的, 在注册的过程中管理员的编号和所在仓库号不能是随便填写的, 在数据库中必须有仓库信息才能选取相应的仓库编号, 另外如果用户注册的
9、编号已被注册过则要自动提示用户不能注册此编号; 在个人信息管理中应有用户信息的修改和注销等功能。( 2) 供应商信息和仓库信息作为与仓库管理联系紧密的基本信息, 应设置完善的添加、 删除、 修改和查询等功能以满足对这些基本信息的管理。( 3) 货物的入库、 出库和盘点是仓库管理的主要部分, 这个部分设计最复杂最容易出错; 在入库时不但要记录货物入库时的详细信息以供查询历史记录使用, 还要完成库存货物的更新, 如: 如果库存中没有此货物, 应将货物信息记录入库存中, 若已有该货物的信息存在则只需更改该货物的库存数量和进货价钱即可; 同样在货物出库时应完成类似操作, 记录出库时货物的详细信息并完成
10、库存货物的信息更新; 库存盘点应完成货物当前的库存状况, 主要解决货物的查询和保存记录等功能。以上功能对数据库的设计要求较高, 各表之间的关联相对比较复杂, 这给数据库和系统的设计带来了一定的难度。( 4) 数据的备份和还原对系统的维护起到关键的作用, 一旦数据由于人为操作出现难以挽回的问题或其它原因造成的数据损坏后果将不堪设想, 因此在系统中我们必须设计有数据的备份和还原的功能以确保系统出现的不可预料的结果。3 系统总体设计3.1 系统设计相关原理当前, 网络应用软件运行的模式主要有二类: Client/Server模式, Browser/Server模式。前者重要用于局域网后者主要用于广域
11、网, 考虑到仓库管理一般不需要在网络上进行因此我们没有采用这种方式, 这样能够降低开发成本, 同时又能充分的满足用户的需要。3.2 系统功能结构本系统有用户信息注册, 个人信息管理, 供应商信息管理, 仓库信息管理, 入库管理, 出库管理, 库存管理, 数据备份, 数据还原等重要功能, 为仓库管理提供了方便实用的途径。整个系统分为五大模块, 具体模块功能如下: 用户管理仓库管理信息系统基本信息仓库管理系统维护帮助个人信息管理注册信息管理供应商信息管理仓库信息管理货物入库管理货物出库管理货物盘点管理数据备份数据还原关于使用帮助图1 系统结构功能图3.3 系统数据流程 数据流程图( Data Fl
12、ow DFD) 是描述实际业务管理系统工作流程的一种图形表示法。它描绘系统的逻辑模型图, 其中没有任何具体的物理元素, 只是描绘信息在系统中流动和处理的情况。因为数据流图是逻辑系统的图形表示, 即使不是专业的计算机技术人员也容易理解, 因此是极好的通信工具。另外, 设计数据流图只需考虑系统必须完成的基本逻辑功能, 完全不需要考虑如何具体地实现这些功能, 因此它也是软件设计的很好的出发点。仓库管理信息系统主要是为了对货物入库, 出库, 盘点和数据信息等进行计算机管理。下面就是对各个功能模块的流程分析: ( 1) 用户管理基本信息流程分析: 用户首先注册然后输入账号密码登陆系统, 能够查看和修改个
13、人信息。( 2) 仓库管理基本信息流程分析: 按找货物编号实施查询货物信息后能够进行入库、 出库和货物盘点的管理系统流程图如下: 系统登录是否登录系统主题窗口用户管理基本信息帮助仓库管理系统维护退出系统是否注册图2 系统流程图4 系统数据库设计4.1 数据库需求分析本系统用到的数据库名为Store_Management的数据库, 各张表的设计情况如下: 表1 仓管信息表( CgInfor) 字段名数据类型长度主键描述CkIdvarchar20否仓库编号(not null)CgIdvarchar20是仓管编号(not null)Pswvarchar50否密码(not null)CgNamevar
14、char50否仓管姓名(null)Birthdatetime否生日(null)Sexchar10否性别(null)PhoneChar20否电话(null)EmailVarchar50否电子邮箱(null)CgRemarkNvarchar200否备注(null)Imageimage否照片(null)表2 仓库信息表( CkInfor) 字段名数据类型长度主键描述CkIdvarchar20是仓库编号(not null)CkNamevarchar20否仓库名称(not null)CkAdressvarchar20否仓库地址(not null)Managervarchar50否经理(not null)
15、PhoneChar20否电话(not null)CkRemarknvarchar200否备注(not null)表3 库存信息表( KcInfor) 字段名数据类型长度主键描述GoodsIdvarchar20是货物编号(not null)GoodsNamevarchar50否货物名称(null)ProviderNamevarchar50否供应商名称(null)CkIdvarchar20否仓库编号(null)CgIdvarchar20否仓管编号(null)KcNumDecimal (18,2)否库存数量(null)GoodsUnitchar10否计量单位(null)GoodsInPricemon
16、ey否进货单价(null)CheckDatedatetime否盘点日期(null)KcRemarknvarchar200否备注(null)表4 货物盘点信息表( CheckGoods) 字段名数据类型长度主键描述GoodsIdvarchar20是货物编号(not null)GoodsNamevarchar50否货物名称(null)ProviderNamevarchar50否供应商名称(null)CkIdvarchar20否仓库编号(null)CgIdvarchar20否仓管编号(null)KcNumDecimal (18,2)否库存数量(null)GoodsUnitchar10否计量单位(nu
17、ll)GoodsInPricemoney否进货单价(null)CheckDatedatetime否盘点日期(null)KcRemarknvarchar200否备注(null)表5 供应商信息表( ProviderInfor) 字段名数据类型长度主键描述ProviderIdVarchar20是供应商编号(not null)ProviderNameVarchar50否供应商名称(null)LinkmanNameVarchar50否联系人姓名(null)PhoneChar20否电话(null)AdressVarchar50否地址(null)RgtDateDatetime否注册日期(null)Prov
18、iderRemarknvarchar200否备注(null)表6 货物入库信息表( GoodsInInfor) 字段名数据类型长度主键描述GoodsIdvarchar20否货物编号( not null)GoodsNamevarchar50否货物名称(null)ProviderNamevarchar50否供应商名称(null)CkIdvarchar20否仓库编号(null)CgIdvarchar20否仓管编号(null)GoodsInNumdecimal(18,2)否入库数量(null)GoodsUnitChar10否计量单位(null)GoodsInPriceMoney否进货单价(null)A
19、llPriceMoney否总价(null)GoodsInTimeDatetime否入库时间(null)GoodsInRemarknvarchar200否备注(null)表7 货物出库信息表( GoodsOutInfor) 字段名数据类型长度主键描述GoodsIdvarchar20否货物编号( not null)GoodsNamevarchar50否货物名称(null)ProviderNamevarchar50否供应商名称(null)CkIdvarchar20否仓库编号(null)CgIdvarchar20否仓管编号(null)GoodsOutNumdecimal(18,2)否入库数量(null
20、)GoodsUnitChar10否计量单位(null)GoodsOutPriceMoney否进货单价(null)AllPriceMoney否总价(null)GoodsOutTimeDatetime否入库时间(null)GoodsOutRemarknvarchar200否备注(null)4.2 实体E-R图仓库库存售出出库盘点供应买进统计入库盘点供应商仓管管理N1N1111111NN图3 仓库管理E_R模型实体: 仓管仓管编号仓库编号备注密码仓管姓名生日性别电话Email照片图4 仓管实体其它实体4.3 公共类本系统建立了一个Dbcon.cs公共类用于系统和数据库的连接, 主要代码如下: cla
21、ss Dbcon public static string con = Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Store_Management;Data Source=.; public static string userId; public static string userName; public static string thisCkId; 5系统详细设计与实现5.1系统登陆的设计与实现图5 系统登录界面系统登录界面如上图所示, 主要实现功能为用户的注册, 用户登录和推出仓库管理系统
22、。点击注册按钮能够实现新用户的注册, 输入正确的用户名和密码能登录系统主界面, 否则系统会提示你相关出错信息。主要代码如下所示: /以下代码实现判断用户名密码是否正确和登录系统if (TxtName.Text = | TxtPsw.Text = ) /判断用户名和密码是否为空 MessageBox.Show(用户名和密码不能为空! , 提示信息, MessageBoxButtons.YesNo, MessageBoxIcon.Information); else SqlConnection constr = new SqlConnection(Dbcon.con); constr.Open()
23、; string sqlstr = select * from CgInfor where CgId= + TxtName.Text + ; SqlCommand cmd = new SqlCommand(sqlstr, constr); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read() if (TxtPsw.Text.Trim() = drPsw.ToString().Trim() Dbcon.userId = drCgId.ToString().Trim(); Dbcon.userName = drCgName.ToString()
24、.Trim(); Dbcon .thisCkId =drCkId.ToString ().Trim (); FrmMain FrmMain1 = new FrmMain(); FrmMain1.Show(); this.Hide(); 5.2 用户管理的设计与实现5.2.1个人信息管理图6 个人信息管理界面个人信息管理主要进行对个人信息的修改和注销个人信息, 在界面启动时会显示你的详细信息, 可再次修改你的密码等信息, 如果员工不在工作也可注销此用户。主要代码如下: /sql语句完成用户信息的修改功能 SqlConnection strcon = new SqlConnection(Dbcon
25、 .con ); strcon.Open(); String sql=update CgInfor set psw=+this.txtNewPsw .Text .Trim ()+,Birth=+DateTime .Parse ( this.dtBirth .Text .Trim ()+,Phone=+this.txtPhone .Text .Trim ()+,Email= +this.txtEmail .Text .Trim ()+,Sex=+ boSex.Text +,CgRemark=+this.rtxtRemark .Text .Trim ()+where CgId=+this .txt
26、CgId .Text .Trim ()+; SqlCommand cmd = new SqlCommand(sql, strcon); if (cmd.ExecuteNonQuery() = 1) MessageBox.Show(修改成功! ! , 提示信息); else MessageBox.Show(不好意思, 修改失败! ! ); strcon.Close(); 5.2.2 注册信息管理图7 注册信息界面该界面主要完成新用户的注册功能, 主要代码如下: /检测是否注册编号已存在 SqlConnection strcon = new SqlConnection(Dbcon.con); st
27、rcon.Open(); string sql = select CgId from CgInfor where CgId= + this.txtCgId.Text.Trim() + ; SqlCommand cmd = new SqlCommand(sql, strcon); SqlDataReader dr = cmd.ExecuteReader(); if(dr.Read () /判断是否已有此编号 MessageBox.Show(不好意思, 此管理员编号已存在, 请重新输入! ); this.qingkong(); /以下sql语句完成新用户的注册string sql1 = inser
28、t into CgInfor(CkId,CgId,Psw,CgName,Birth,Sex,Phone,Email,CgRemark)values( + (string )boCkId.Text + , + (string )this.txtCgId.Text + , + this.txtPsw.Text + , + (string )this.txtCgName.Text + , + DateTime.Parse(this.dtBirth.Text.Trim() + , + (string )boSex.Text + , + (string )this.txtPhone.Text + , +
29、 (string )this.txtEmail.Text + , + (string )this.rtxtRemark.Text + ); SqlCommand cmd1 = new SqlCommand(sql1, strcon);5.3 基本信息管理的设计与实现5.3.1 供应商信息管理图8 供应商信息管理界面该界面主要完成按供应商编号和供应商名对供应商信息进行检索, 实现供应商信息的添加, 删除, 修改和删除功能。部分代码如下: /以下sql语句实现按供应商编号查询供应商信息 string sql = select * from ProviderInfor where ProviderI
30、d= + this.toolStripComboBox1.Text.Trim() + ;/以下sql语句实现按供应商名查询供应商信息string sql1 = select * from ProviderInfor where ProviderName= + this.toolStripComboBox1.Text.Trim() + ;/以下代码主要实现供应商信息的添加SqlConnection strcon = new SqlConnection(Dbcon.con);strcon.Open();string sql = insert into ProviderInfor(ProviderI
31、d,ProviderName,LinkmanName,Phone,Adress,RgtDate,ProviderRemark) values( + this.txtProviderId.Text.Trim() + , + this.txtProviderName.Text.Trim() + , + this.txtLinkman.Text.Trim() + , + this.txtPhone.Text.Trim() + , + this.txtAddress.Text.Trim() + , + DateTime.Parse(this.dtRgtDate.Text.Trim() + , + th
32、is.rtxtRemark.Text.Trim() + ); SqlCommand cmd = new SqlCommand(sql, strcon); if (cmd.ExecuteNonQuery() != 0) MessageBox.Show(恭喜你, 添加成功! ); this.qingkong(); else MessageBox.Show(不好意思, 添加失败, 请重试! ); 5.3.2 仓库信息管理图9 仓库信息管理界面该界面主要完成按仓库编号查询仓库的详细信息, 并对仓库信息进行添加, 删除, 修改等功能。部分代码如下: /以下为实现ListView控件信息更新的代码: Sq
33、lCommand cmd = new SqlCommand(sql, strcon); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read() string str1 = new string drCkId.ToString(), drCkName.ToString(), drCkAdress.ToString(), drManager.ToString(),drPhone.ToString (),drCkRemark.ToString () ; lvCkInfor.Items.Add(new ListViewItem (str1 );
34、 /以下代码为实现信息修改的主要代码 SqlConnection strcon = new SqlConnection(Dbcon.con); strcon.Open(); string sql = update CkInfor set CkId=+this .txtCkId .Text .Trim ()+,CkName=+this .txtCkName .Text .Trim ()+,CkAdress= +this .txtAdress .Text .Trim()+,Manager=+this .txtManager .Text .Trim ()+,Phone=+this .txtPhone
35、 .Text .Trim ()+,CkRemark= +this .rtxtRemark .Text .Trim ()+where CkId=+this .txtCkId .Text .Trim ()+; SqlCommand cmd=new SqlCommand (sql,strcon ); if (cmd .ExecuteNonQuery ()=1) MessageBox .Show (更新成功! ); this.qingkong(); else MessageBox .Show (更新失败, 请查找原因! ); 5.4 仓库信息管理的设计与实现5.4.1 入库管理图10 入库信息管理界面
36、该界面主要实现货物入库信息的记录和删除以及向仓库中添加货物信息和更新。主要代码如下: /以下为实现货物入库信息记录的代码SqlConnection strcon = new SqlConnection(Dbcon.con); strcon.Open();/将入库商品信息加入到StoreInInfor中 string sql = insert into StoreInInfor(GoodsId,GoodsName,ProviderName,CkId,CgId,GoodsInNum,GoodsUnit,GoodsInPrice,AllPrice,GoodsInTime,GoodsInRemark)
37、 values( +this .txtGoodsId .Text .Trim ()+,+this .txtGoodsName .Text .Trim ()+,+this .comboProvider .Text .Trim ()+,+this .txtCkId .Text .Trim () +,+this .txtCgId .Text .Trim () +, +this.txtGoodsInNum .Text +,+this .comboGoodsUnit .Text .Trim ()+,+this .txtInPrice .Text+,+this .txtAllPrice .Text +,+
38、DateTime .Parse (this .dtInTime .Text .Trim ()+, +this.txtRemark .Text .Trim ()+); SqlCommand cmd=new SqlCommand (sql,strcon ); if (cmd .ExecuteNonQuery() =1) MessageBox .Show (入库成功! ); this.Fulllistview();/以下为实现删除历史记录的代码: SqlConnection strcon = new SqlConnection(Dbcon.con); strcon.Open(); string sql = delete from StoreInInfor where GoodsId= +