NET开发仓库管理系统资料.docx
- 文档编号:4660255
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:23
- 大小:508.96KB
NET开发仓库管理系统资料.docx
《NET开发仓库管理系统资料.docx》由会员分享,可在线阅读,更多相关《NET开发仓库管理系统资料.docx(23页珍藏版)》请在冰豆网上搜索。
NET开发仓库管理系统资料
PINGDINGSHANUNIVERSITY
.NET开发实训报告
题
目:
仓库管理系统
专业年级:
计算机科学与技术
姓
学
名:
号:
***
***********
2015年07月03日
1需求分析
本仓库管理系统属于中小型仓库管理系统,可以有效的对中小型仓库货物进库,出库进行管理。
本系统应达到以下目标:
(1)系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。
(2)能够对仓库的使用情况进行有效的管理。
(3)能够对使用本系统的管理员进行权限设置,工作人员的详细信息进行有效的管理。
(4)能够准确、详细的记录货物的进库出库的详细情况。
(5)能够直观的显示历史货物使用情况的明细表,以及打印文件备份。
(6)能够对系统数据进行备份和恢复。
(7)对于用户输入的数据,进行严格的数据检验,尽可能地避免人为错误。
系统应最大限度地实现易维护性和易操作性。
2系统设计
2.1系统目标
仓库信息模块:
实现对仓库信息进行查询,增加,删除,修改,保存等功能。
职员信息模块:
实现对职员信息进行查询,增加,删除,修改,保存等功能。
货物入库模块:
实现对货物的入库,删除,入库详细信息的打印等功能。
货物出库模块:
实现对货物的出库,删除,入库详细信息的打印等功能。
货物信息查询模块:
实现了根据选择特定的条件对当前的仓库进行相关的信
息查询。
系统维护模块:
实现对系统数据的备份和恢复,设置管理员的权限等功能。
系统设置模块:
实现对管理员登陆系统的密码设置及对系统的锁定。
辅助功能模块:
实现日历,记事本,计算器等功能.
2.2系统功能结构
仓库管理系统是由基础信息,库存管理,系统维护,系统设置,辅助功能这几个功能模块组成。
(1)基础信息模块分为仓库信息和职工信息两个小模块,分别实现对仓库信息和职员信息进行查询,增加,删除,修改等功能。
(2)仓库管理模块分为货物入库、货物出库和货物信息查询三个小模块,分别实现对用户进行增加,删除,权限设置及修改用户密码等功能。
(3)系统维护模块分为权限管理、数据备份、数据恢复三个小模块,分别实现了设置管理员权限,数据备份与恢复等功能。
(4)系统设置模块分为密码重置和锁定系统两个小模块,分别实现设置管理员的密码,对当前的系统加密等功能。
(5)辅助工具模块分为日历、记事本、计算器三个小模块,分别实现了对当前时间查看,事件记录,计算等功能。
图1系统功能结构图
3系统实现(各自模块)
3.1员工信息模块设计与实现
1货物入库模块概述
在仓库管理的过程中,必然会进行货物入库的工作流程,对不同的货物进
行分类管理,通过编号,放在不同的仓库都会提高在今后工作中的效率。
在数据库中建立一个入库信息表,用于存储入库货物的信息。
通过货物入库这个模块可以实现对仓库货物的增加,删除,以及本次入库详细信息的打印备份等功能。
2货物入库模块设计
货物入库实体的E-R图如图2所示:
图2货物入库实体E-R图
表Table_IN用于存储货物入库的详细信息,该表的结构如表1所示:
表1货物入库表
GoodsID货物编号
GoodsName货物名称
RKGoodsNum数量
GoodsallPrice单价
WorkerName
收货员
GoodsBZ备注
datetime
进货时间
3货物入库模块实现过程
privatevoidGetData()
{SqlConnectionconn=BaseClass.DBConn.CyCon();
SqlDataAdaptersda=newSqlDataAdapter("select
GoodsID,GoodsName,RKGoodsNum,GoodsallPrice,WorkerName,GoodsBZ,datetimefromTable_INorderbyIDdesc",conn);
DataSetds=newDataSet();
sda.Fill(ds);
dataGridView1.DataSource=ds.Tables[0];}
通过SqlConnection对象连接数据库,创建一个SqlDataAdapters数据适配器对象获取员工信息,并用Fill方法将查询到的数据填充到DataSet中。
最后将查询到的员工信息显示在dataGridView1控件中。
privatevoidfrmRK_Load_1(objectsender,EventArgse)
{TreeNodenewnode1=treeView1.Nodes.Add("五金");
TreeNodenewnode2=treeView1.Nodes.Add("服装");
......//通过TreeNodenewnode设置根节点
SqlConnectionconn=BaseClass.DBConn.CyCon();
conn.Open();
SqlCommandcmd=newSqlCommand("select*from
Table_RKInfowhereGoodsty='1'",conn);
SqlDataReadersdr=cmd.ExecuteReader();
while(sdr.Read())
{newnode1.Nodes.Add(sdr[3].ToString().Trim());}
sdr.Close();
......//在TreeView里显示同一根节点下的所有叶子节点
cmd=newSqlCommand("select*fromTable_Worker",conn);sdr=cmd.ExecuteReader();
while(sdr.Read())
{SHName.Items.Add(sdr["WorkerName"].ToString().Trim());}
SHName.SelectedIndex=0;
sdr.Close();
GetData();
treeView1.ExpandAll();}
3.2用户管理模块设计与实现
1货物出库管理模块概述
在仓库管理的过程中,必然会进行货物出库的工作流程,对不同的货物进行分类管理,通过编号,放在不同的仓库都会提高在今后工作中的效率。
在数据库中建立一个出库信息表,用于存储出库货物的信息。
通过货物入库这个模块可以实现对仓库货物的增加,删除,以及本次出库详细信息的打印备份等功能。
2货物出库管理模块设计
货物出库实体的E-R图如图3所示:
图3
货物出库实体E-R图
表Table_OUT用于存储货物出库的详细信息,该表的结构如表2所示:
表2货物出库表表
在货物出库表中
GoodsID货物编号
GoodsName货物名称
RKGoodsNum数量
GoodsallPrice单价
WorkerName
收货员
GoodsBZ备注
datetime
进货时间
3货物出库管理模块实现过程
通过if语句对Text控件内的内容进行判断,确保
GoodsName.Text,GoodsID.Text,GoodsJhPrice.Text内容不为空,然后判断货物的数量是否为空,如果为空的话,通过MessageBox提示“请输入货物数量”消息。
{SqlConnectionconn=BaseClass.DBConn.CyCon();
conn.Open();
SqlCommandcmd=newSqlCommand("insertinto
Table_OUT(GoodsID,GoodsName,CKGoodsNum,GoodsallPrice,WorkerName,GoodsBZ,datetime)values('"+GoodsID.Text.Trim()+"','"+GoodsName.Text.Trim()+"','"+RKGoodsNum.Text.Trim()+"','"+Convert.ToDecimal(textallPrice.Text.Trim())+"','"+SHName.SelectedItem.ToString()+"','"+BZ.Text.Trim()+"','"+DateTime.Now.ToString()+"')",conn);
cmd.ExecuteNonQuery();
conn.Close();
GetData();
}
通过SqlConnection对象连接数据库,运用insert语句将进货的相关信息差遇到进货信息表中,最后将查询到的员工信息显示在dataGridView1控件中。
3.3打印模块设计与实现
1打印货物入库出库信息模块概述
为了方便管理人员对仓库中货物入库和出库的记录,防止因为某些不可避免的原因造成的数据的丢失,在货物入库和出库中设置了打印货物出库入库的详细情况表。
2货物信息模块设计
货物信息表实体的E-R图如图4所示:
图4
货物信息表实体E-R图
表Table_RKInfo用于存储包房信息,该表的结构如表3所示:
表3
货物信息表
在货物信息表中
GoodsID货物编号
GoodsName货物名称
RKGoodsNum数量
GoodsallPrice单价
WorkerName
收货员
GoodsBZ备注
datetime
进货时间
3打印功能模块实现过程
在printDocument的PrintPage事件中来实现将需要打印的文本属兔到PrintDocument中,通过for循环一次打印在dataGridView1中显示的每一行。
for(i=0;i<=6;i++)
{
e.Graphics.DrawString(dataGridView1.Columns[i].Name.ToString(),newFont("宋体",30,FontStyle.Regular),Brushes.Black,60,400+60*i);
e.Graphics.DrawString(dataGridView1.SelectedCells[i].Value.ToString(),newFont("宋体",30,FontStyle.Regular),Brushes.Black,300,400+60*i);
}//通过for循环一次打印在dataGridView1中显示的每一行
}
privatevoidbuttonPrint_Click(objectsender,EventArgse)
{
printDialog1.ShowDialog();
printPreviewDialog1.Document=this.printDocument1;
printPreviewDialog1.ShowDialog();
}//执行打印窗体内的数据操作
4实训总结
在本次实训的过程中,行确认好课题后开始认真地准备学习相关的知识,结合老师讲授的专业知识,灵活的应用到本次的实训课题中。
完成实训课题的过程也是自我完善的过程,遇到过各种自己当时无法解决的问题,无法正常运行,出现没有处理过的错误。
不过通过查阅书籍,与同学们相互交流后问题会越来越少,学到的知识越来越多,对c#这门课程不断的加深理解。
另一方面就是学会自己主动的学习新的知识,不断的寻求创新点,在以后的学习中我会不断的加强自己的创新意识,主动学习的积极性,不断提高自己的专业素养。
附录
程序源码:
publicpartialclassfrmRK:
Form
{
publicfrmRK()
{
InitializeComponent();
}
privatevoidGetData()
{
SqlConnectionconn=BaseClass.DBConn.CyCon();
SqlDataAdaptersda=newSqlDataAdapter("select
GoodsID,GoodsName,RKGoodsNum,GoodsallPrice,WorkerName,GoodsBZ,datetimefromTable_INorderbyIDdesc",conn);
DataSetds=newDataSet();
sda.Fill(ds);
dataGridView1.DataSource=ds.Tables[0];
}
privatevoidfrmRK_Load_1(objectsender,EventArgse)
{
TreeNodenewnode1=treeView1.Nodes.Add("五金");
TreeNodenewnode2=treeView1.Nodes.Add("服装");
TreeNodenewnode3=treeView1.Nodes.Add("食品");
TreeNodenewnode4=treeView1.Nodes.Add("办公用品");
SqlConnectionconn=BaseClass.DBConn.CyCon();
conn.Open();
SqlCommandcmd=newSqlCommand("select*fromTable_RKInfowhere
Goodsty='1'",conn);
SqlDataReadersdr=cmd.ExecuteReader();
while(sdr.Read())
{
newnode1.Nodes.Add(sdr[3].ToString().Trim());
}
sdr.Close();
cmd=newSqlCommand("select*fromTable_RKInfowhereGoodsty='2'",
conn);
sdr=cmd.ExecuteReader();
while(sdr.Read())
{
newnode2.Nodes.Add(sdr[3].ToString().Trim());
}
sdr.Close();
cmd=newSqlCommand("select*fromTable_RKInfowhereGoodsty='3'",
conn);
sdr=cmd.ExecuteReader();
while(sdr.Read())
{
newnode3.Nodes.Add(sdr[3].ToString().Trim());
}
sdr.Close();
cmd=newSqlCommand("select*fromTable_RKInfowhereGoodsty='4'",
conn);
sdr=cmd.ExecuteReader();
while(sdr.Read())
{
newnode4.Nodes.Add(sdr[3].ToString().Trim());
}
sdr.Close();
cmd=newSqlCommand("select*fromTable_Worker",conn);
sdr=cmd.ExecuteReader();
while(sdr.Read())
{
SHName.Items.Add(sdr["WorkerName"].ToString().Trim());
}
SHName.SelectedIndex=0;
sdr.Close();
GetData();
treeView1.ExpandAll();
}
privatevoidtreeView1_DoubleClick(objectsender,EventArgse)
{
stringGoodsname=treeView1.SelectedNode.Text;
if(Goodsname=="五金"||Goodsname=="服装"||Goodsname=="食
品"||Goodsname=="办公用品")
{
}
else
{
SqlConnectionconn=BaseClass.DBConn.CyCon();
conn.Open();
SqlCommandcmd=newSqlCommand("select*fromTable_RKInfo
whereGoodsName='"+Goodsname+"'",conn);
SqlDataReadersdr=cmd.ExecuteReader();
sdr.Read();
GoodsID.Text=sdr["GoodsID"].ToString().Trim();
GoodsName.Text=Goodsname;
GoodsJhPrice.Text=sdr["GoodsJhPrice"].ToString().Trim();
if(RKGoodsNum.Text=="")
{
MessageBox.Show("数量不能为空");
return;
}
else
{
textallPrice.Text=
Convert.ToString(Convert.ToInt32(GoodsJhPrice.Text)*
Convert.ToInt32(RKGoodsNum.Text));
}
conn.Close();
}
}
privatevoidRKGoodsNum_TextChanged(objectsender,EventArgse)
{
if(RKGoodsNum.Text=="")
{
MessageBox.Show("数量不能为空");
return;
}
else
{
if(Convert.ToInt32(RKGoodsNum.Text)<1)
{
MessageBox.Show("不能为小于1的数字");
return;
}
else
{
textallPrice.Text=
Convert.ToString(Convert.ToInt32(GoodsJhPrice.Text)*
Convert.ToInt32(RKGoodsNum.Text));
}
}
}
privatevoidRKGoodsNum_KeyPress(objectsender,KeyPressEventArgse)
{
if((e.KeyChar!
=8&&!
char.IsDigit(e.KeyChar))&&e.KeyChar!
=13){
MessageBox.Show("请输入数字");
e.Handled=true;
}
}
privatevoidbuttonDelete_Click_1(objectsender,EventArgse)
{
if(dataGridView1.SelectedRows.Count>0)
{
stringnames=dataGridView1.SelectedCells[0].Value.ToString();
SqlConnectionconn=BaseClass.DBConn.CyCon();
conn.Open();
SqlCommandcmd=newSqlCommand("deletefromTable_INwhere
GoodsID='"+dataGridView1.SelectedCells[0].Value.ToString()+"'",conn);
cmd.ExecuteNonQuery();
conn.Close();
GetData();
}
}
privatevoidbuttonExit_Click_1(objectsender,EventArgse)
{
this.Close();
}
privatevoidbuttonSave_Click(objectsender,EventArgse)
{
if(GoodsName.Text==""||GoodsID.Text==""||
GoodsJhPrice.Text=="")
{
MessageBox.Show("请选择货物名称");
return;
}
else
{
if(RKGoodsNum.Text=="")
{
MessageBox.Show("数量不能为空");
return;
}
else
{
if(Convert.ToInt32(RKGoodsNum.Text)<=0)
{
MessageBox.Show("请输入消费数量");
return;
}
else
{
SqlConnectionconn=BaseClass.DBConn.CyCon();
conn.Open();
SqlCommandcmd=newSqlCommand("insertinto
Table_IN(GoodsID,GoodsName,RKGoodsNum,GoodsallPrice,WorkerName,GoodsBZ,datetime)values('"+GoodsID.Text.Trim()+"','"+GoodsName.Text.Trim()+"','"+RKGoodsNum.Text.Trim()+"','"+Convert.ToDecimal(textallPrice.Text.Trim())+"','"+SHName.SelectedItem.ToString()+"','"+BZ.Text.Trim()+"','"+DateTime.Now.ToString()+"')",conn);
cmd.ExecuteNonQuery();
conn.Close();
GetData();
}
}
}
}
privatevoidprintDocument1_PrintPage(objectsender,
System.Drawing.Printing.PrintPageEventArgse)
{
inti;
for(i=0;i<=6;i++)
{
e.Graphics.DrawString(dataGridView1.Columns[i].Name.ToString(),
newFont("宋体",30,FontStyle.Regular),Brushes.Black,60,400+60*i);
e.Graphics.DrawString(dataGridView1.SelectedCells[i].Val
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NET 开发 仓库 管理 系统 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)