仓库管理系统
项目环境要求
1.设备支持:Windows7、Windows8或Windows10;
2.数据库:Mysql 8.0;
3.软件支持:eclipse、navicat
需求分析
需求分析阶段的根本任务是要明确仓库管理系统功能需求,以便提出整个系统的总体方案。在需求分析中,主要采用业务流程图,数据流程图和数据字典来描述。
1.1 业务流程图
在分析了仓库管理系统应该具有的基本功能之后,我们确定了本系统分为三个主要模块,即:基本信息维护模块、一般用户功能、库存管理模块和安全管理模块四大模块。
具体业务如下:
(1) 基本信息维护模块:基本信息维护模块用于系统的用户登录及身份验证。用户进入系统需要经过身份验证。
(2) 库存管理模块为系统的核心模块,其主要功能有:仓库信息的管理,产品入库登记、确认入库信息、删除库内信息、借出信息登记、产品分类管理、添加人员、删除人员、查询库内信息。
(3) 安全管理:人员权限区分、事件记录、数据警告、计划备份、即时备份、数据恢复。
(4) 一般用户功能:查询库内信息、查询出库信息、查询入库信息、修改本用户密码。
数据流图
一、项目名称:仓库管理系统
二、使用的数据库版本:Mysql 8.0
三、项目的主要功能简介:
仓库管理系统主要有两个功能,根据不同用户有着不同的功能,分为:普通用户和高级用户功能。具体功能如下:
-
用户登录界面
对于普通用户和高级用户两种登陆用户,有着各自的方式。每个用户都只能用自己的密码登录到系统中 。究于此系统是专门给个人设计的,鉴于隐私问题,个人相关的信息不希望别人看到,因此登录的身份就只准用户登录。且管理员拥有全部的权限。 -
普通用户界面
(1)个人信息查询界面
主要负责:普通用户通过过个人信息查询界面查询或修改到自己的相关信息,含:姓名,地址,邮箱。
(2)出库界面
主要负责:用户输入商品供应商、商品名称、商品数量、商品价格等信息进行出库操作。此外用户还可以更改出库信息,查询出库信息,删除出库信息。
(3)入库界面
主要负责:用户输入供应商、商品名称、商品数量、商品价格等信息进行入库操作。
此外,用户可以进行查找入库信息,更改入库,删除入库的操作。
3.高级用户界面
(1)账号管理界面
主要负责:用户可以增加员工账号,或者删除员工账号,还可以进行个人信息修改,含:员工账号,账号密码,用户名字,地址和邮箱。方便修改个人信息和增加或删除员工。
(2)商品入库界面
主要负责:用户输入供应商、商品名称、商品数量、商品价格等信息进行入库操作。此外,还可以进行查询入库,更改入库,删除入库的操作。
本界面上方通过点击查找入库用户可以进行查找入库信息。
(3)商品出库界面
主要负责:用户输入商品供应商、商品名称、商品数量、商品价格等信息进行出库操作。此外用户还可以更改出库信息,查询出库信息,删除出库信息。
在本界面的上方,通过点击查找出库用户可以进行查找出库信息。
(4)添加供应商界面
主要负责:用户输入供应商,进行添加供应商操作。此外用户还可以删除供应商,添加供应商旗下子产品。
在本界面的上方,通过点击旗下子产品用户可以进行删除供应商旗下子产品。选择供应商,通过点添加击旗下子产品用户可以进行添加供应商旗下子产品,可以保存数据或重置。
(5)查询记录
主要负责:用户输入订单号,进行查找入库、出库操作。
在本界面的上方,通过点击查找入库信息、查找记录可以查询入库信息。通过点击查找出库信息、查找记录可以查询出库信息。
(6)进库数据统计界面
主要负责:根据入库商品名称、数量、供货商生成柱状图。
(7)出库数据统计界面
主要负责:根据出库商品名称、数量、供货商生成柱状图。
(8)盈亏数据统计
主要负责:根据出入库出库信息生成扇形统计图。
(9)货物流动曲线
主要负责:根据信息生成仓库流动曲线图
在此界面,用户通过选择入库或出库,通过点击查看近三个月或查看历来数据按钮,可在图表中显示仓库货物流动情况。
四、系统用户及密码
系统管理员:(高级用户)
用户名:root 密码:root
五、普通用户及密码
普通用户:abc
密码:root
ER图
项目截图
① 建查询入库视图
select instock
.ID
AS id
,instock
.supname
AS supname
,instock
.stockname
AS stockname
,instock
.intime
AS intime
,instock
.num
AS num
,instock
.pric
AS pric
,product
.stock
AS stock
from (instock
join product
)
where ((product
.supname
= instock
.supname
) and (product
.name
= instock
.stockname
))
(3)创建存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `finonemes`(in IDs int)
BEGIN
select instock.id,instock.supname,instock.stockname,instock.intime,instock.num,
instock.pric,product.stock from instock,product
where product.supname=instock.supname
and product.name
=instock.stockname
and instock.id=IDs;
end
(4)创建触发器
六个触发器如图:
① 建立入库库存更新过程
CREATE TRIGGER addindata
BEFORE INSERT ON instock
FOR EACH ROW BEGIN
update product set stock=stock+new.num where product.name
=new.stockname and product.supname=new.supname;
end
②更改出货
CREATE TRIGGER updateindata
BEFORE UPDATE ON instock
FOR EACH ROW begin
select stock INTO @stockn from product where name
=old.stockname and supname=old.supname;
if (old.stockname!=new.stockname or old.stockname=new.stockname ) and old.supname!=new.supname then
begin
if @stockn-old.num>=0 then
update product set stock=stock-old.num where product.name
=old.stockname and product.supname=old.supname;
update product set stock=stock-new.num where product.name
=new.stockname and product.supname=new.supname;
else
set @msg = “仓库库存不足不能进行更改出货”;
SIGNAL SQLSTATE ‘HY000’ SET MESSAGE_TEXT = @msg;
end if ;
end;
elseif old.stockname=new.stockname and old.supname=new.supname and @stockn-old.num>=0 then
update product set stock=stock-old.num+new.num where product.name
=new.stockname and product.supname=new.supname;
end if ;
end ;;
③删除订单
CREATE TRIGGER delindata
BEFORE DELETE ON instock
FOR EACH ROW BEGIN
select stock INTO @stockn from product where name
=old.stockname and supname=old.supname;
if @stockn-old.num>=0 then
update product set stock=stock-old.num where product.name
=old.stockname and product.supname=old.supname;
else
set @msg = “仓库库存不足不能删除此订单”;
SIGNAL SQLSTATE ‘HY000’ SET MESSAGE_TEXT = @msg;
end if;
end ;;
④仓库出货
DROP TRIGGER IF EXISTS addoutdata
;
delimiter ;;
CREATE TRIGGER addoutdata
BEFORE INSERT ON outstock
FOR EACH ROW BEGIN
select stock INTO @stockn from product where name
=new.stockname and supname=new.supname;
if @stockn-new.num>=0 then
update product set stock=stock-new.num where product.name
=new.stockname and product.supname=new.supname;
else
set @msg = “仓库库存不足不能进行出货”;
SIGNAL SQLSTATE ‘HY000’ SET MESSAGE_TEXT = @msg;
end if;
end
;;
delimiter ;
⑤出库表更改出货
DROP TRIGGER IF EXISTS updateoutdata
;
delimiter ;;
CREATE TRIGGER updateoutdata
BEFORE UPDATE ON outstock
FOR EACH ROW BEGIN
select stock INTO @stockn from product where name
=new.stockname and supname=new.supname;
if (old.stockname!=new.stockname or old.stockname=new.stockname ) and old.supname!=new.supname then
BEGIN
update product set stock=stock+old.num where product.name
=old.stockname and product.supname=old.supname;
if @stockn-new.num>=0 then
update product set stock=stock-new.num where product.name
=new.stockname and product.supname=new.supname;
else
set @msg = “仓库库存不足不能进行更改出货”;
SIGNAL SQLSTATE ‘HY000’ SET MESSAGE_TEXT = @msg;
end if ;
end;
elseif old.stockname=new.stockname and old.supname=new.supname then
BEGIN
select stock INTO @stockn from product where name
=new.stockname and supname=new.supname;
if @stockn-new.num>=0 then
update product set stock=stock-old.num+new.num where product.name
=old.stockname and product.supname=old.supname;
else
set @msg = “仓库库存不足不能进行更改出货”;
SIGNAL SQLSTATE ‘HY000’ SET MESSAGE_TEXT = @msg;
end if ;
end;
end if;
end
;;
delimiter ;
⑥更新库存
DROP TRIGGER IF EXISTS delloutdata
;
delimiter ;;
CREATE TRIGGER delloutdata
BEFORE DELETE ON outstock
FOR EACH ROW BEGIN
update product set stock=stock+old.num where product.name
=old.stockname and product.supname=old.supname;
end;;
delimiter ;