仓库管理系统

​仓库管理系统

小组成员:王光明,张旭,王恩熙,杜宇彤
项目名称:仓库管理系统:        

开发语言:python        

开发平台:Pycharm+MySQL

项目背景


     随着我国经济的飞速发展,各种类型、规模的企业迅速崛起,很多从事生产和经营管理的企业都有生产或销售的产品,而这些产品都需要储存在仓库中。随着企业规模的不断扩大,产品数量的急剧增加,所生产产品的种类也会不断更新与发展,与产品有关的各种信息数据也会成倍地增长,大型企业一般都会建立自己的仓库管理中心(仓储中心)。如何进行有效的仓库管理,对一个仓库管理中心来说是非常重要的。管理仓库的库房、人员及物资出入库数据,是一项非常复杂的系统工程,如果仅依靠手工管理,工作量庞大且容易出错,效率也会低下,因此需要建立仓库管理系统来提高工作效率,这对信息的规范管理、科学统计和快速查询,减少管理的工作量,提高生产效率等,具有十分重要的现实意义。


需求概述

  1. 产品入库管理

    • 功能:填写入库单,确认产品入库。
    • 需求:能够记录入库单号、货物编号、仓库编号、入库量、管理员编号、入库时间等信息。
  2. 产品出库管理

    • 功能:填写出库单,确认出库。
    • 需求:能够记录出库单号、货物编号、仓库编号、出库量、客户信息、管理员编号、出库时间等信息。
  3. 借出管理

    • 功能:凭借条借出,然后能够还库。
    • 需求:能够记录借货编号、货物编号、仓库编号、借货量、借入人、管理员编号、借出日期、归还日期等信息。
  4. 仓库库存设置

    • 功能:设置库存的初始值,更改库存的上下限值。
    • 需求:能够记录货物编号、仓库编号、最小库存量、最大库存量等信息。
  5. 盘库管理

    • 功能:进行盘库,按货物分类、仓库分类和按货号和仓库查找。
    • 需求:能够按货物编号、仓库编号、盘点日期记录盘点结果。
  6. 查询管理

    • 功能:查询产品入库情况、出库情况、当前库存情况;可以按仓库、出库单、入库单、产品、时间进行查询。
    • 需求:综合使用入库表、出库表、库存表等进行查询。
  7. 货物管理

    • 功能:查询、添加、删除货物信息。
    • 需求:能够记录和管理货物编号、货物名称、货物类型、供应商编号等信息。
  8. 仓库管理员信息管理

    • 功能:管理仓库管理员信息,禁止删除初始管理员。
    • 需求:能够记录管理员编号、姓名、电话、密码等信息,且初始管理员信息不能被删除。

流程顺序

1.产品入库管理流程
  1. 填写入库单
    • 用户输入货物编号、仓库编号、入库量、管理员编号、入库时间等信息。
  2. 确认入库
    • 系统验证输入信息的合法性和完整性。
    • 系统更新库存表,增加相应仓库和货物的库存量。
    • 系统在入库表中记录入库信息。
2. 产品出库管理流程
  1. 填写出库单
    • 用户输入货物编号、仓库编号、出库量、客户信息、管理员编号、出库时间等信息。
  2. 确认出库
    • 系统验证输入信息的合法性和完整性。
    • 系统检查库存是否充足。
    • 系统更新库存表,减少相应仓库和货物的库存量。
    • 系统在出库表中记录出库信息。
3.借出管理流程
  1. 填写借货单
    • 用户输入货物编号、仓库编号、借货量、借入人、管理员编号、借出日期等信息。
  2. 确认借出
    • 系统验证输入信息的合法性和完整性。
    • 系统检查库存是否充足。
    • 系统更新库存表,减少相应仓库和货物的库存量。
    • 系统在借货表中记录借出信息。
  3. 归还货物
    • 用户输入借货编号、归还日期等信息。
    • 系统验证输入信息的合法性和完整性。
    • 系统更新库存表,增加相应仓库和货物的库存量。
    • 系统在借货表中更新归还日期。
4.仓库库存设置流程
  1. 设置初始库存
    • 用户输入货物编号、仓库编号、最小库存量、最大库存量等信息。
    • 系统在库存设置表中记录初始库存设置。
  2. 更改库存上下限值
    • 用户输入货物编号、仓库编号、新的最小库存量和最大库存量等信息。
    • 系统在库存设置表中更新相应记录。
5.盘库管理流程
  1. 进行盘点
    • 通过输入仓库号,查看该仓库中的货物信息
    • 通过输入货物号,查询该货物都分布在哪个仓库中
    • 通过盘库视图,查看盘库记录
6.查询管理流程
  1. 查询入库情况
    • 用户选择查询条件(如仓库、入库单号、货物、时间等)。
    • 系统根据条件查询入库表,并返回结果。
  2. 查询出库情况
    • 用户选择查询条件(如仓库、出库单号、货物、时间等)。
    • 系统根据条件查询出库表,并返回结果。
  3. 查询当前库存情况
    • 用户选择查询条件(如仓库、货物等)。
    • 系统根据条件查询库存表,并返回结果。
7.货物管理流程
  1. 添加货物信息
    • 用户输入货物编号、货物名称、货物类型、供应商编号等信息。
    • 系统验证输入信息的合法性和完整性。
    • 系统在货物表中记录新货物信息。
  2. 查询货物信息
    • 用户选择查询条件(如货物编号、货物名称等)。
    • 系统根据条件查询货物表,并返回结果。
  3. 删除货物信息
    • 用户输入货物编号。
    • 系统验证货物是否可以删除(如是否有库存、是否有历史记录等)。
    • 系统删除货物表中的相应记录。
8.仓库管理员信息管理流程
  1. 添加管理员信息
    • 用户输入管理员编号、姓名、电话、密码等信息。
    • 系统验证输入信息的合法性和完整性。
    • 系统在管理员表中记录新管理员信息。
  2. 查询管理员信息
    • 用户选择查询条件(如管理员编号、姓名等)。
    • 系统根据条件查询管理员表,并返回结果。
  3. 删除管理员信息
    • 用户输入管理员编号。
    • 系统验证管理员是否可以删除(初始管理员不能删除)。
    • 系统删除管理员表中的相应记录。

总结

以上流程描述了仓库管理系统的主要业务流程及其顺序,从产品入库、出库、借出管理,到库存设置、盘库、查询、货物管理和管理员信息管理。每个流程都包括具体的操作步骤和系统处理步骤,确保数据的一致性和完整性,同时满足业务需求。


管理员登录结构图


概念结构设计

E-R图

整体E-R图

​出入库E-R图

借还E-R图


逻辑结构设计

管理员:(管理员编号,姓名,密码,电话)

供应商:(供应商编号,姓名,电话,地址)

物资:(物资编号,物资名称,物资类型,供应商编号

仓库:(仓库编号,仓库名称,仓库地址)

入库:(入库单号仓库编号,物资编号,入库量,管理员编号,入库时间)

出库:(出库单号仓库编号,物资编号,出库量,客户号,管理员编号,出库时间)

借还:(借条号仓库编号,物资编号,借还数量,管理员编号,借还人员,借出日期,归还日期)

库存:(物资编号,仓库编号,库存量)

库存设置:(物资编号,仓库编号,最小值,最大值)


流程图设计


视图设计

1.查询当前库存视图

2.查询产品入库视图

3.查询产品出库视图

4.查询货物借出情况视图

5.查询库存上下限设置视图

6.查询盘点情况视图


触发器设计

1.入库触发器

CREATE TRIGGER 更新库存入库
AFTER INSERT ON 入库
FOR EACH ROW
BEGIN
    DECLARE v_库存量 INT;
    -- 查询当前库存量
    SELECT 库存量 INTO v_库存量
    FROM 库存
    WHERE 货物编号 = NEW.货物编号 AND 仓库编号 = NEW.仓库编号;
    
    -- 如果库存记录不存在,则插入一条新的库存记录
    IF v_库存量 IS NULL THEN
        INSERT INTO 库存 (货物编号, 仓库编号, 库存量)
        VALUES (NEW.货物编号, NEW.仓库编号, NEW.入库量);
    ELSE
        -- 否则,更新库存量
        UPDATE 库存
        SET 库存量 = 库存量 + NEW.入库量
        WHERE 货物编号 = NEW.货物编号 AND 仓库编号 = NEW.仓库编号;
    END IF;
END;
 

2.出库触发器

CREATE TRIGGER 更新库存出库
AFTER INSERT ON 出库
FOR EACH ROW
BEGIN
    -- 更新库存量
    UPDATE 库存
    SET 库存量 = 库存量 - NEW.出库量
    WHERE 货物编号 = NEW.货物编号 AND 仓库编号 = NEW.仓库编号;
END;
 

3借货触发器

CREATE TRIGGER 更新库存借货
AFTER INSERT ON 借货
FOR EACH ROW
BEGIN
    -- 更新库存量
    UPDATE 库存
    SET 库存量 = 库存量 - NEW.借货量
    WHERE 货物编号 = NEW.货物编号 AND 仓库编号 = NEW.仓库编号;
END;
 

4归还触发器

CREATE TRIGGER 更新库存归还
AFTER UPDATE ON 借货
FOR EACH ROW
BEGIN
    -- 检查是否更新了归还日期
    IF NEW.归还日期 IS NOT NULL THEN
        -- 更新库存量
        UPDATE 库存
        SET 库存量 = 库存量 + NEW.借货量
        WHERE 货物编号 = NEW.货物编号 AND 仓库编号 = NEW.仓库编号;
    END IF;
END;
 


数据库设计

表清单

实体名称

表的含义

admin

管理员表

Supplier

供应商表

material

物资表

Warehouse

仓库表

inbound_records

入库

outbound_records

出库

loan_records

借还

inventory

库存

projset

库存设置

表设计

管理员表

管理员编号(adid) char (5) Not NULL

姓名(adname) Varchar(10)Not NULL

电话(adph)Varchar(20)Not NULL

密码(adpw)Varchar(20)NULL

供应商表

供应商编号(suid)char(5)Not NULL

姓名(suname)Varchar(10)Not NULL

电话(suph)Varchar(20)NULL

地址(suaddr)Varchar(20)NULL

物资表

物资编号(pjid)char(5)Not NULL

物资类型(pjtype)Varchar(10)Not NULL

物资名称(pjname)Varchar(10)NULL

供应商编号(suid)char(5)NULL

仓库表

仓库编号(whid)char(5)Not NULL

仓库名称(whname)Varchar(10)NULL

仓库地址(whaddr)Varchar(10)NULL

入库

入库单号(rkid)Varchar(10)Not NULL

仓库编号(whid)char(5)Not NULL

物资编号(pjid)char(5)Not NULL

入库量(rjnum)Int  Not NULL

管理员编号(adid)char(5)NULL

入库时间(rktime)datetime  NULL

出库

出库单号(ckid)Varchar(10)Not NULL

仓库编号(whid)char(5)Not NULL

物资编号(pjid)char(5)Not NULL

出库量(cknum)Int  Not NULL

客户号(cust)Varchar(5)NULL

管理员编号(adid)char(5)NULL

出库时间(cktime)datetime  NULL

借还

借条号 (jhid)Varchar(10)Not NULL

仓库编号(whid)char(5)Not NULL

物资编号(pjid)char(5)Not NULL

借还量(jhnum)Int Not NULL

管理员编号(adid)char(5)NULL

借入人(adname)Varchar(10)NULL

借出日期(jtime)datetime  NULL

归还日期(htime)datetime  NULL

库存

物资编号(pjid)char(5)Not NULL

仓库编号(whid)char(5)Not NULL

库存量(pjsum)Int  NULL

库存设置

物资编号(pjid)char(5)Not NULL

仓库编号(whid)char(5)Not NULL

最小值(minn)Int  NULL

最大值(maxn)Int  NULL

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值