资源描述
数据库课程设计汇报
课 题: 仓库管理系统
专业班级: 计算机科学和技术
学 号: 09041232
姓 名: 王 昊 齐
指导老师: 王 强
学 院: 信息工程学院
日 期: 6月20日
目 录
1 课程设计目标和意义 2
2 需求分析 2
3数据库系统设计 3
4.程序代码实现 6
5.系统用户界面设计 14
6 总结 15
7.附录 20
一、课程设计目标和意义
仓库在现实生活中用途十分广泛,多种商城、超市要利用仓库存放物资,药房、医院等要利用仓库存放药品,企业、工厂等要利用仓库存放原材料、生产成品,所以仓库管理成了一项十分关键工作。
人工管理仓库既费时又费力,而且轻易造成混乱,严重时会影响商城、企业正常运作,造成恶劣后果。伴随信息技术发展,办公自动化普及,怎样快速,高效,便捷管理仓库受到了高度关注。
本系统模拟仓库管理,系统关键针对于日常库存信息管理,包含物资管理、仓库管理、入库操作、入库查询统计、出库操作、出库查询统计、库存查询统计等处理情况。用户能够经过对应模块,对仓库里物品基础情况和库存数量进行查询,管理员经过简单操作即可轻松管理仓库,查询各项相关信息,并能进行入库和出库操作等。 经过仓库管理系统设计和实现,使我们巩固和加深对数据库基础理论和基础知识了解,深入掌握了使用数据库进行软件设计基础思想和方法,提升了利用数据库理论处理实际问题能力,锻炼了实际动手能力、创新能力,培养了调查研究、查阅技术文件、资料、手册和编写文档能力。
二、需求分析
系统开发总体任务是实现多种信息系统化、规范化和自动化。系统功效分析是在系统开发总体任务基础上完成。本仓库管理系统需要完成功效关键有:
●用户登录。实现依据不一样用户权限进行登录,并转到对应权限操作。
●用户管理。实现管理人员添加、修改、删除用户;通常见户修改信息等功效。
●货物管理。实现管理人员对货物进库、退库添加、修改、删除等功效。
●入库和出库管理。实现管理人员对货物进行入库、出库操作,并可查询对应货物出入库信息。
●监控管理。在货物管理中加入最高贮备和最低贮备字段,对仓库中产品实现监控和报警。
三、数据库系统设计
1.数据库逻辑设计
用户
用户名
密码
用户权限
入库信息
入库编号
货物编号
单价
....
货物信息
货物编号
货物名称
....
出库信息
出库编号
货物编号
数量
....
权限
系统管理员
一般管理员
操作员
图4.1 数据库逻辑结构图
2.数据流图
图4.2 管理员数据流图
图4.3 用户数据流图
3. 数据库表设计
3.1表汇总
表名
类型
说明
用户信息表(EmpInfo)
基础表
集中保留系统中用户帐号、密码等信息
货物信息表(KcGoods)
基础表
集中存放货物相关信息
销售商信息表(Company)
基础表
存放销售商角色)信息
入库信息表(JhGoodsInfo)
基础表
集中存放入库货物相关信息
出库信息表(SellGoods)
基础表
集中存放出库货物相关信息
退货信息表(ThGoodsInfo)
基础表
集中存放退货相关信息
3.2 具体表设计
用户表:[EmpInfo]
字段
类型
长度
说明
约束
EmpId
文本
50
职员编号
主键
EmpName
文本
10
角色名称
权限
EmpLoginName
文本
50
密码
EmpSex
文本
2
性别
EmpBrithday
日期
50
出生日期
EmpDept
文本
10
所属部门
EmpPost
文本
10
职务
EmpPhone
文本
20
联络电话
EmpPhoneM
文本
20
传真
EmpAddress
文本
20
地址
EmpRemark
文本
50
备注
货物表:[KcGoods]
字段
类型
长度
说明
约束
GoodsID
文本
50
货物编号
主键
KcGoodsName
文本
50
货物名称
KcNum
文本
50
货物数量
KcDeptName
文本
50
存放仓库
KcUnit
文本
50
存放单位
KcTime
文本
50
存放时间
KcRemark
文本
50
备注
销售商表:[Company]
字段
类型
长度
说明
约束
CompanyName
文本
50
企业名称
主键
CompanyDirect
文本
10
企业责任人
CompanyPhone
文本
10
企业电话
CompanyFax
文本
10
企业传真
CompanyAddress
文本
50
企业地址
Remark
文本
50
备注
入库信息表:[JhGoodsInfo]
字段
类型
长度
说明
约束
GoodsID
文本
50
入库编号
主键
EmpID
文本
50
进货职员编号
GoodsNum
文本
50
入库数量
GoodsJhPrice
文本
50
入库单价
DoodsNeedPrice
文本
50
入库总值
DoodTime
日期
50
入库时间
DepotName
文本
50
存入仓库
Remark
文本
50
备注
出库信息表:[SellGoods]
字段
类型
长度
说明
约束
GoodsID
文本
50
出库编号
主键
EmpID
文本
50
货职员编号
SellGoodsNum
文本
50
出库数量
Sellprice
文本
50
出库单价
SellNeedPrice
文本
50
出库总值
SellGoodsTime
日期
50
出库时间
SellRemark
文本
50
备注
四、程序代码实现
1.系统全部类汇总
类名
说明
frm.cs
程序主模块
frmCompanyInfo.cs
查询修改添加删除销售商信息
frmDataBack.cs
数据备份
frmDataReole.cs
数据还原
frmEmpInfo.cs
查询修改添加删除职员信息
frmFindGood.cs
查询货物信息
frmGonYingShang.cs
选择供给商信息
frmGoodID.cs
选择商品名称
frmJhGoodsInfo.cs
进货信息
frmKcGoodFind.cs
选择查询条件
frmKcGoods.cs
查询库存信息及设置警报数量
frmLogin.cs
用户登录
frmMain.cs
程序主界面
frmSellGoodInfo.cs
商品销售信息
frmSellGoods.cs
修改添加删除商品销售信息
frmThGoodsInfo.cs
查询修改添加删除商品销售信息
Program.cs
应用程序主入口点
2.相关类具体设计
2.1 添加入库信息实现
添加入库信息设计:
进入主界面后,点击【进货管理】----【商品进货信息】即可打开添加入库界面。
下面给出完成添加功效关键代码:
public partial class frmJhGoodsInfo : Form
{
public frmJhGoodsInfo()
{
InitializeComponent();
}
public frmJhGoodsInfo(int intCdo)
{
InitializeComponent();
}
tb_JhGoodsInfo jhGood=new tb_JhGoodsInfo();
tb_JhGoodsInfoMenthod jhMenthod=new tb_JhGoodsInfoMenthod();
public static int intFalg = 0;
private void ControlStatus()
{
this.toolSave.Enabled = !this.toolSave.Enabled;
this.toolAdd.Enabled = !this.toolAdd.Enabled;
this.toolCancel.Enabled = !this.toolCancel.Enabled;
this.toolAmend.Enabled = !this.toolAmend.Enabled;
this.tollDelete.Enabled = !this.tollDelete.Enabled;
}
2.2 库存查询类实现
库存查询界面:
进入主界面后,选择【库存管理】---【库存查询】即可进入入库信息查询界面。
本系统共提供两种查询方法,分别是商品编号查询、商品名称查询查询,选择任意一个查询方法并输入要查询值,点击【查询】按钮,系统会依据输入查询值和选择查询方法在数据库中进行检索,并将查询结果显示在界面下方空白区域。
完成库存查询功效关键代码:
namespace CHEXC
{
public partial class frmKcGoodFind : Form
{
public frmKcGoodFind()
{
InitializeComponent();
}
tb_KcGoodsMenthod tb_GoodMenthd = new tb_KcGoodsMenthod();
tb_KcGoods kcgood = new tb_KcGoods();
private void button1_Click(object sender, EventArgs e)
{
if (comboBox1.Text == "")
{
MessageBox.Show("请选择查询条件!");
return;
}
if (txtkey.Text == "")
{
MessageBox.Show("请输入查询信息");
return;
}
switch (comboBox1.Text)
{
case "商品编号"://"商品编号":
kcgood.strGoodsID = txtkey.Text;
tb_GoodMenthd.tb_ThGoodsFind(dataGridView1,1,kcgood);
break;
case "商品名称"://商品名称"
kcgood.strKcGoodsName = txtkey.Text;
tb_GoodMenthd.tb_ThGoodsFind(dataGridView1, 2, kcgood);
break;
}
}
private void frmKcGoodFind_Load(object sender, EventArgs e)
{
}
}
}
五、系统用户界面设计
1.界面总体设计
主界面:菜单栏、工作区、状态栏等。
功效界面:全部为主界面子界面,并完成相互独立功效。
2.系统界面及功效概述
2.1登陆界面:
功效介绍:系统登陆界面,输入正确用户名和密码,单击【确定】,程序会依据输入用户所属角色,分配给其适宜权限,并进入对应程序主界面;假如账号或密码错误则会弹犯错误提醒,要求用户重新输入。
2.2用户主界面:
2.3添加用户界面:
2.4商品退货界面:
2.5商品销售信息界面:
2.6商品库存界面:
2.7供给商信息界面:
六、总结
计算机技术快速发展大大推进了现代人工作生活改变,越来越多行业开始应用计算机来增强管理,提升效益。
计算机软件作为计算机系统两大组成部分之一,看起来更靠近一般用户;在设计一个软件系统时候需要考虑到原因很多,不过最关键莫过于功效和界面,功效直接关系着软件系统是否能完成用户需求,而界面则直接面对用户,大家总是更倾向于使用一个操作方便软件系统。
在设计仓库管理系统时候,便是从以上两个方面入手,首要实现功效性需求,再设计一个相对方便操作用户界面。在这两个方面集成开发环境(IDE)作用显得十分突出,Microsoft Visual Studio 是一套很强大开发套件,利用它能够快速开发出界面友好,功效强大软件系统。
此次完成仓库管理系统能够完全适应中小型仓库管理需求,它含有用户管理、物资管理、出入库管理、库存管理等功效,能够方便快捷进行添加、删除、查询等操作,且系统运行比较稳定。
在完成毕业设计过程中也碰到了很多问题,关键是因为自己对高级语言编程和数据库方面知识了解不够深刻,平时动手做软件不多;不过在指导老师悉心指导下,经过查阅资料基础上全部能比很好处理碰到问题,最终比较顺利完成了此次毕业设计。在这个过程中我也学到了很多东西,对C#,数据库全部有了更深入了解,能够较熟练地使用VS开发软件,也增强了分析问题、处理问题能力,总来说这次毕业设计使我受益颇多。
谢 辞
在论文完成之际,向我老师王强老师表示深深敬意!
本设计是在王强老师悉心指导、谆谆教育下完成,在此感谢王老师在设计期间对我指导,和在我学习过程中,碰到困难时对我帮助,使我学到了好多知识,学会了能够透彻分析问题处理问题能力。
同时,感谢在我大学期间给和我帮助全部老师,培养了我热爱学习、勤学好问、创新探索能力,让我学到了不少知识,使我受益非浅,还培养了我处理问题和处理问题能力,为我在以后工作和生活中打下了基础。
附 录
附录一:商品进货信息代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using CHEXC.ClassInfo;
using CHEXC.GoodMenhod;
using System.Data.SqlClient;
namespace CHEXC
{
public partial class frmJhGoodsInfo : Form
{
public frmJhGoodsInfo()
{
InitializeComponent();
}
public frmJhGoodsInfo(int intCdo)
{
InitializeComponent();
}
tb_JhGoodsInfo jhGood=new tb_JhGoodsInfo();
tb_JhGoodsInfoMenthod jhMenthod=new tb_JhGoodsInfoMenthod();
public static int intFalg = 0;
private void ControlStatus()
{
this.toolSave.Enabled = !this.toolSave.Enabled;
this.toolAdd.Enabled = !this.toolAdd.Enabled;
this.toolCancel.Enabled = !this.toolCancel.Enabled;
this.toolAmend.Enabled = !this.toolAmend.Enabled;
this.tollDelete.Enabled = !this.tollDelete.Enabled;
}
public void ClearContorl()
{
txtGoodsNum.Text = "";
txtGoodsRemark.Text = "";
txtGoodsSellPrice.Text = "";
txtJhCompName.Text = "";
txtGoodsNoPrice.Text = "";
txtGoodsNeedPrice.Text = "";
txtGoodsName.Text = "";
txtGoodsJhPrice.Text = "";
txtGoodsID.Text = "";
txtEmpId.Text = "";
cmbDepotName.Text = "";
}
public int getIntCount()
{
int intReslut = 0;
if (intFalg == 1)
{
if (txtGoodsID.Text == "")
{
MessageBox.Show("商品编号不能为空!");
return intReslut;
}
if (txtGoodsName.Text == "")
{
MessageBox.Show("商品名称不能为空!");
return intReslut;
}
if (txtJhCompName.Text == "")
{
MessageBox.Show("供给商名称不能为空!");
return intReslut;
}
if (txtEmpId.Text == "")
{
MessageBox.Show("进货人姓名不能为空!");
return intReslut;
}
if (txtGoodsNum.Text == "")
{
MessageBox.Show("数量不能为空!");
return intReslut;
}
if (txtGoodsName.Text == "")
{
MessageBox.Show("进货单价不能为空!");
return intReslut;
}
}
if (intFalg == 2)
{
if (txtGoodsID.Text == "")
{
MessageBox.Show("商品编号不能为空!,选择要修改统计","提醒");
return intReslut;
}
}
if (intFalg == 3)
{
if (txtGoodsID.Text == "")
{
MessageBox.Show("商品编号不能为空!,选择要删除统计", "提醒");
return intReslut;
}
}
jhGood.strGoodsID = txtGoodsID.Text;
jhGood.strEmpId = txtEmpId.Text;
jhGood.strJhCompName = txtGoodsName.Text;
jhGood.strDepotName = cmbDepotName.Text;
jhGood.strGoodsNum = Convert.ToInt32(txtGoodsNum.Text);
jhGood.strGoodsName = txtGoodsName.Text;
jhGood.strGoodsUnit = cmbGoodsUnit.Text;
jhGood.deGoodsJhPrice = txtGoodsJhPrice.Text;
jhGood.deGoodsNeedPrice = txtGoodsNeedPrice.Text;
jhGood.deGoodsNoPrice = txtGoodsNoPrice.Text;
jhGood.deGoodsSellPrice = txtGoodsSellPrice.Text;
jhGood.strGoodsRemark = txtGoodsRemark.Text;
jhGood.DaGoodTime = dateTimePicker1.Value;
if (intFalg != 3)
{
jhGood.Falg = 0;
}
else
{
jhGood.Falg = 1;
}
intReslut = 1;
return intReslut;
}
private void frmJhGoodsInfo_Load(object sender, EventArgs e)
{
jhMenthod.tb_JhGoodsInfoFind("", 5, dataGridView1);
}
private void FillControls()
{
try
{
SqlDataReader sqldr = jhMenthod.tb_JhGoodsInfoFind(this.dataGridView1[0, this.dataGridView1.CurrentCell.RowIndex].Value.ToString(),1);
sqldr.Read();
if (sqldr.HasRows)
{
txtEmpId.Text=sqldr[1].ToString();
txtGoodsName.Text=sqldr[4].ToString();
cmbDepotName.Text = sqldr[3].ToString();
txtGoodsNum.Text=sqldr[5].ToString();
cmbGoodsUnit.Text=sqldr[6].ToString();
txtGoodsJhPrice.Text=sqldr[7].ToString();
txtGoodsNeedPrice.Text=sqldr[9].ToString();
txtGoodsNoPrice.Text=sqldr[10].ToString();
txtGoodsSellPrice.Text=sqldr[8].ToString();
txtGoodsRemark.Text=sqldr[11].ToString();
txtJhCompName.Text = sqldr[2].ToString();
txtGoodsID.Text = sqldr[0].ToString();
txtGoodsID.Enabled = false;
}
}
catch (Exception ee)
{
MessageBox.Show(ee.ToString());
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void toolAdd_Click(object sender, EventArgs e)
{
ControlStatus();
ClearContorl();
intFalg = 1;//添加标识
txtGoodsID.Text = jhMenthod.JhGoodsID();
txtGoodsID.Enabled = false;
}
private void toolAmend_Click(object sender, EventArgs e)
{
ControlStatus();
ClearContorl();
intFalg = 2;//添加标识
}
private void toolrefulsh_Click(object sender, EventArgs e)
{
ControlStatus();
ClearContorl();
}
private void toolExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void toolCancel_Click(object sender, EventArgs e)
{
ControlStatus();
ClearContorl();
}
private void toolSave_Click(object sender, EventArgs e)
{
if (getIntCount() == 1)
{
if (intFalg == 1)
{
if (jhMenthod.tb_JhGoodsInfoMenthodAdd(jhGood)==2)
{
MessageBox.Show("添加成功","提醒");
intFalg = 0;
jhMenthod.tb_JhGoodsInfoFind("",5,dataGridView1);
ControlStatus();
ClearContorl();
}
else
{
MessageBox.Show("添加失败", "提醒");
intFalg = 0;
jhMenthod.tb_JhGoodsInfoFind("", 5, dataGridView1);
ControlStatus();
ClearContorl();
}
}
if (intFalg == 2)
{
if (jhMenthod.tb_JhGoodsInfoMenthodUpdate(jhGood)==1)
{
MessageBox.Show("修改成功", "提醒");
intFalg = 0;
jhMenthod.tb_JhGoodsInfoFind("", 5, dataGridView1);
ControlStatus();
ClearContorl();
}
else
{
MessageBox.Show("修改失败", "提醒");
intFalg = 0;
jhMenthod.tb_JhGoodsInfoFind("", 5, dataGridView1);
展开阅读全文