资源描述
仓库管理信息系统设计与实现
作 者:袁培龙
指导老师:张 坤
摘要:在各大超市、商场、企业内部都涉及到仓库管理,仓库管理信息系统对提高仓库管理效率,减少劳动量,优化资源配置起到重要的作用。本文主要介绍如何利用c#语言和SQL Server2005数据库开发出功能完善,简单易用的仓库管理信息系统。该系统主要包括货物的入库、出库、仓库信息盘点和数据的备份还原等操作,为用户提供一个友好的操作平台,实现仓库信息管理的现代化。
关键字:SQL Server数据库,C#,仓库管理
0 引言
21世纪是信息化的时代,信息是引领当今时代潮流的最贴切的词语,无论在什么事情上都要求信息化,时效性强,高质量。所以现在市场上迫切需要有人开发出适合从事信息管理的人来操作的管理系统,既能帮助他们有效的管理,又能为其提供简单、友好的界面,使他们操作起来简易方便。仓库管理是一种既麻烦又单调的工作,每天都是重复记录一些货物的存入与取出,而且货物的种类繁多,存取有很大的随机性,这样为工作人员带来了很大的不便,在操作过程中,由于人为的计算出错率很高,一旦出错改正也很困难,这样简单繁重的工作要很多人来做,为经营者增加了很多成本。所以开发一个可行的仓库管理系统是十分必要的。
1 课题简介
课题:仓库管理信息系统
任务:开发仓库管理系统,主要为减轻仓库管理人员的负担,使货物的存入记录与取出记录相对完善,便于货物的增加与减少,降低出错率,使管理更加合理、科学,也为经营者节省开支。在系统中应实现货物的入库、出库、货物信息盘点等操作,由于在仓库管理的过程中会涉及到大量的数据操作,如数据的添加、删除、修改和保存等,因此在系统中应充分完善这些功能的实现,为避免数据的误操作或其它原因造成的数据损坏在系统中数据的备份和还原必不可少。该系统正是在此基础上开发出来的。
功能概述:该系统界面友好,操作简便,能完成用户的注册,用户信息管理,供应商信息管理,仓库信息管理,货物入库、出库、和盘点管理,数据的备份和还原等一系列仓库管理功能,开发本系统的总体任务是实现仓库信息管理的系统化和自动化,帮助管理人员更好更高效地完成仓库管理工作。本着实用性和介绍性的原则,整个系统由五大模块组成,每个大的模块又包括二至三个小的模块。
(1)用户管理部分:包括个人信息管理、注册信息管理和退出;其功能是实现对个人信息的查询、修改和注销,完成新用户注册以及推出系统等操作。
(2)基本信息管理部分:包括供应商基本信息和商品基本信息管理,其功能是实现对供应商和商品信息的添加和修改、删除和查询等操作。
(3)仓库管理部分:包括货物的入库、出库和盘点管理,其功能是实现货物的入库和删除历史记录,自动查询要出库的货物并记录出库信息,查询需盘点的货物的信息并进行货物盘点等操作。
(4)系统维护部分:包括数据的备份和还原两项功能,实现仓库信息的定期备份和还原。
(5)帮助部分:设置关于和使用帮助使用户了解系统的基本信息。
系统具有高效、易操作、易维护等特点,并且系统结构清晰、界面友好,功能较为齐全,能有效地协助管理人员进行仓库管理工作。如果要真正把它用到仓库的自动化管理中,还需要对该系统进行一步的完善工作。
2 系统需求分析
2.1 可行性分析
可行性研究就是预开发软件系统的总体目标,给出它的功能、性能、可靠性以及其他方面的要求。其目的是用最小的代价在尽可能短的时间内确定问题是否能够解决、是否值得去解决。
下面从三个方面分析本系统的可行性:
⑴ 技术可行性
采用SQL Server进行后台数据库的管理、操作和维护,用Visual Studio 2005进行前台界面设计、实现后台数据库的接口、数据的录入、查询、浏览等功能。根据Visual Studio 2005的特点及其强大、方便、快捷的开发工具,以及他们当前的广泛应用,充分说明在技术方面可行。
⑵ 经济可行性
经济可行性分析(能否赢利),是从经济的角度分析系统的规划方案有无实现的可能和开发的价值;分析系统所带来的经济效益是否超过开发和维护网站所需要的费用。此仓库管理系统在实际的生活中应用非常的广泛,存在着很大的利益,而且使用和维护也非常的方便,费用不高,所以有着很好的经济可行性。
⑶ 开发环境可行性
本系统对设备的软硬件的要求都不高,我们只需长有Windows XP,Visual Studio 2005以及SQL 2005以上软件的电脑都可以达到我们的要求,而目前这种配置已经很普遍了。
2.2 开发工具和运行环境
Visual Studio 2005提供了一个方便实用的可视化界面操作,集成环境会生成大量的框架代码,节省了很多工作,另外它还有动态程序提示功能,为设计这减少了很多任务。此外它支持VB、C#、VC++等设计语言以及程序设计的可扩展性,页面缓存技术等,对程序设计者来说是很好的选择。
SQL Server是微软推出的大型关系数据库系统,是为ADO.NET和大量数据存储量身定做的,所以本系统选择了SQL Server作为后台数据库,而没有选择Access数据库,是为了能有更好的效率去查询和操作数据库以及满足仓库管理的大量数据操作。
2.3 研究设计中要解决的问题
仓库管理系统主要功能是货物的入库、出库、货物盘点和数据的备份还原等功能,因此在设计的过程中要满足这些功能的需求:
(1)如果用户没有注册是不能使用该系统的,在注册的过程中管理员的编号和所在仓库号不能是随便填写的,在数据库中必须有仓库信息才能选取相应的仓库编号,此外如果用户注册的编号已被注册过则要自动提示用户不能注册此编号;在个人信息管理中应有用户信息的修改和注销等功能。
(2)供应商信息和仓库信息作为与仓库管理联系紧密的基本信息,应设置完善的添加、删除、修改和查询等功能以满足对这些基本信息的管理。
(3)货物的入库、出库和盘点是仓库管理的主要部分,这个部分设计最复杂最容易出错;在入库时不但要记录货物入库时的详细信息以供查询历史记录使用,还要完成库存货物的更新,如:如果库存中没有此货物,应将货物信息记录入库存中,若已有该货物的信息存在则只需更改该货物的库存数量和进货价钱即可;同样在货物出库时应完成类似操作,记录出库时货物的详细信息并完成库存货物的信息更新;库存盘点应完成货物当前的库存状况,主要解决货物的查询和保存记录等功能。以上功能对数据库的设计要求较高,各表之间的关联相对比较复杂,这给数据库和系统的设计带来了一定的难度。
(4)数据的备份和还原对系统的维护起到关键的作用,一旦数据由于人为操作出现难以挽回的问题或其他原因造成的数据损坏后果将不堪设想,因此在系统中我们必需设计有数据的备份和还原的功能以确保系统出现的不可预料的结果。
3 系统总体设计
3.1 系统设计相关原理
目前,网络应用软件运行的模式主要有二类:Client/Server模式,Browser/Server模式。前者重要用于局域网后者主要用于广域网,考虑到仓库管理一般不需要在网络上进行所以我们没有采用这种方式,这样可以降低开发成本,同时又能充分的满足用户的需要。
3.2 系统功能结构
本系统有用户信息注册,个人信息管理,供应商信息管理,仓库信息管理,入库管理,出库管理,库存管理,数据备份,数据还原等重要功能,为仓库管理提供了方便实用的途径。整个系统分为五大模块,具体模块功能如下:
用户管理
仓库管理信息系统
基本信息
仓库管理
系统维护
帮助
个人信息管理
注册信息管理
供应商信息管理
仓库信息管理
货物入库管理
货物出库管理
货物盘点管理
数据备份
数据还原
关于
使用帮助
图1 系统结构功能图
3.3 系统数据流程
数据流程图(Data Flow DFD)是描述实际业务管理系统工作流程的一种图形表示法。它描绘系统的逻辑模型图,其中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。因为数据流图是逻辑系统的图形表示,即使不是专业的计算机技术人员也容易理解,所以是极好的通信工具。此外,设计数据流图只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体地实现这些功能,所以它也是软件设计的很好的出发点。《仓库管理信息系统》主要是为了对货物入库,出库,盘点和数据信息等进行计算机管理。下面就是对各个功能模块的流程分析:
(1)用户管理基本信息流程
分析:用户首先注册然后输入账号密码登陆系统,可以查看和修改个人信息。
(2)仓库管理基本信息流程
分析:按找货物编号实施查询货物信息后可以进行入库、出库和货物盘点的管理
系统流程图如下:
系统登录
是否登录
系统主题窗口
用户管理
基本信息
帮助
仓库管理
系统维护
退出系统
是
否
注册
图2 系统流程图
4 系统数据库设计
4.1 数据库需求分析
本系统用到的数据库名为Store_Management的数据库,各张表的设计情况如下:
表1 仓管信息表(CgInfor)
字段名
数据类型
长度
主键
描述
CkId
varchar
20
否
仓库编号(not null)
CgId
varchar
20
是
仓管编号(not null)
Psw
varchar
50
否
密码(not null)
CgName
varchar
50
否
仓管姓名(null)
Birth
datetime
否
生日(null)
Sex
char
10
否
性别(null)
Phone
Char
20
否
电话(null)
Email
Varchar
50
否
电子邮箱(null)
CgRemark
Nvarchar
200
否
备注(null)
Image
image
否
照片(null)
表2 仓库信息表(CkInfor)
字段名
数据类型
长度
主键
描述
CkId
varchar
20
是
仓库编号(not null)
CkName
varchar
20
否
仓库名称(not null)
CkAdress
varchar
20
否
仓库地址(not null)
Manager
varchar
50
否
经理(not null)
Phone
Char
20
否
电话(not null)
CkRemark
nvarchar
200
否
备注(not null)
表3 库存信息表(KcInfor)
字段名
数据类型
长度
主键
描述
GoodsId
varchar
20
是
货物编号(not null)
GoodsName
varchar
50
否
货物名称(null)
ProviderName
varchar
50
否
供应商名称(null)
CkId
varchar
20
否
仓库编号(null)
CgId
varchar
20
否
仓管编号(null)
KcNum
Decimal
(18,2)
否
库存数量(null)
GoodsUnit
char
10
否
计量单位(null)
GoodsInPrice
money
否
进货单价(null)
CheckDate
datetime
否
盘点日期(null)
KcRemark
nvarchar
200
否
备注(null)
表4 货物盘点信息表(CheckGoods)
字段名
数据类型
长度
主键
描述
GoodsId
varchar
20
是
货物编号(not null)
GoodsName
varchar
50
否
货物名称(null)
ProviderName
varchar
50
否
供应商名称(null)
CkId
varchar
20
否
仓库编号(null)
CgId
varchar
20
否
仓管编号(null)
KcNum
Decimal
(18,2)
否
库存数量(null)
GoodsUnit
char
10
否
计量单位(null)
GoodsInPrice
money
否
进货单价(null)
CheckDate
datetime
否
盘点日期(null)
KcRemark
nvarchar
200
否
备注(null)
表5 供应商信息表(ProviderInfor)
字段名
数据类型
长度
主键
描述
ProviderId
Varchar
20
是
供应商编号(not null)
ProviderName
Varchar
50
否
供应商名称(null)
LinkmanName
Varchar
50
否
联系人姓名(null)
Phone
Char
20
否
电话(null)
Adress
Varchar
50
否
地址(null)
RgtDate
Datetime
否
注册日期(null)
ProviderRemark
nvarchar
200
否
备注(null)
表6 货物入库信息表(GoodsInInfor)
字段名
数据类型
长度
主键
描述
GoodsId
varchar
20
否
货物编号( not null)
GoodsName
varchar
50
否
货物名称(null)
ProviderName
varchar
50
否
供应商名称(null)
CkId
varchar
20
否
仓库编号(null)
CgId
varchar
20
否
仓管编号(null)
GoodsInNum
decimal
(18,2)
否
入库数量(null)
GoodsUnit
Char
10
否
计量单位(null)
GoodsInPrice
Money
否
进货单价(null)
AllPrice
Money
否
总价(null)
GoodsInTime
Datetime
否
入库时间(null)
GoodsInRemark
nvarchar
200
否
备注(null)
表7 货物出库信息表(GoodsOutInfor)
字段名
数据类型
长度
主键
描述
GoodsId
varchar
20
否
货物编号( not null)
GoodsName
varchar
50
否
货物名称(null)
ProviderName
varchar
50
否
供应商名称(null)
CkId
varchar
20
否
仓库编号(null)
CgId
varchar
20
否
仓管编号(null)
GoodsOutNum
decimal
(18,2)
否
入库数量(null)
GoodsUnit
Char
10
否
计量单位(null)
GoodsOutPrice
Money
否
进货单价(null)
AllPrice
Money
否
总价(null)
GoodsOutTime
Datetime
否
入库时间(null)
GoodsOutRemark
nvarchar
200
否
备注(null)
4.2 实体E-R图
仓库
库存
售出
出库
盘点
供应
买进
统计
入库
盘点
供应商
仓管
管理
N
1
N
1
1
1
1
1
1
1
N
N
图3 仓库管理E_R模型
实体:
仓管
仓管编号
仓库编号
备注
密码
仓管姓名
生日
性别
电话
Email
照片
图4 仓管实体
其他实体…………
4.3 公共类
本系统建立了一个Dbcon.cs公共类用于系统和数据库的连接,主要代码如下:
class 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 系统登录界面
系统登录界面如上图所示,主要实现功能为用户的注册,用户登录和推出仓库管理系统。点击注册按钮能够实现新用户的注册,输入正确的用户名和密码能登录系统主界面,否则系统会提示你相关出错信息。主要代码如下所示:
//以下代码实现判断用户名密码是否正确和登录系统
if (TxtName.Text == "" || TxtPsw.Text == "")
{//判断用户名和密码是否为空
MessageBox.Show("用户名和密码不能为空!", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
}
else
{ SqlConnection constr = new SqlConnection(Dbcon.con);
constr.Open();
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() == dr["Psw"].ToString().Trim())
{
Dbcon.userId = dr["CgId"].ToString().Trim();
Dbcon.userName = dr["CgName"].ToString().Trim();
Dbcon .thisCkId =dr["CkId"].ToString ().Trim ();
FrmMain FrmMain1 = new FrmMain();
FrmMain1.Show();
this.Hide();
}
}
5.2 用户管理的设计与实现
5.2.1个人信息管理
图6 个人信息管理界面
个人信息管理主要进行对个人信息的修改和注销个人信息,在界面启动时会显示你的详细信息,可再次修改你的密码等信息,如果员工不在工作也可注销此用户。主要代码如下:
//sql语句完成用户信息的修改功能
SqlConnection strcon = new SqlConnection(Dbcon .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 .txtCgId .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);
strcon.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 = "insert 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 + "','" + (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 ProviderId='" + 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(ProviderId,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()) +
"','" + this.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控件信息更新的代码:
SqlCommand cmd = new SqlCommand(sql, strcon);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{ string[] str1 = new string[] { dr["CkId"].ToString(), dr["CkName"].ToString(), dr["CkAdress"].ToString(), dr["Manager"].ToString(),dr["Phone"].ToString (),dr["CkRemark"].ToString () };
lvCkInfor.Items.Add(new ListViewItem (str1 ));
}
//以下代码为实现信息修改的主要代码
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 .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 入库信息管理界面
该界面主要实现货物入库信息的记录和删除以及向仓库中添加货物信息和更新。主要代码如下:
//以下为实现货物入库信息记录的代码
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) 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 +"','"+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='" + this.txtGoodsId .Text.Trim() + "'";
SqlCommand cmd = new SqlCommand(sql, strcon);
if (cmd.ExecuteNonQuery() == 1)
{
MessageBox.Show("删除成功");
this.qingkong();
展开阅读全文