仓库管理系统
小组成员:王光明,张旭,王恩熙,杜宇彤
项目名称:仓库管理系统:
开发语言:python
开发平台:Pycharm+MySQL
项目背景
随着我国经济的飞速发展,各种类型、规模的企业迅速崛起,很多从事生产和经营管理的企业都有生产或销售的产品,而这些产品都需要储存在仓库中。随着企业规模的不断扩大,产品数量的急剧增加,所生产产品的种类也会不断更新与发展,与产品有关的各种信息数据也会成倍地增长,大型企业一般都会建立自己的仓库管理中心(仓储中心)。如何进行有效的仓库管理,对一个仓库管理中心来说是非常重要的。管理仓库的库房、人员及物资出入库数据,是一项非常复杂的系统工程,如果仅依靠手工管理,工作量庞大且容易出错,效率也会低下,因此需要建立仓库管理系统来提高工作效率,这对信息的规范管理、科学统计和快速查询,减少管理的工作量,提高生产效率等,具有十分重要的现实意义。
需求概述
产品入库管理
- 功能:填写入库单,确认产品入库。
- 需求:能够记录入库单号、货物编号、仓库编号、入库量、管理员编号、入库时间等信息。
产品出库管理
- 功能:填写出库单,确认出库。
- 需求:能够记录出库单号、货物编号、仓库编号、出库量、客户信息、管理员编号、出库时间等信息。
借出管理
- 功能:凭借条借出,然后能够还库。
- 需求:能够记录借货编号、货物编号、仓库编号、借货量、借入人、管理员编号、借出日期、归还日期等信息。
仓库库存设置
- 功能:设置库存的初始值,更改库存的上下限值。
- 需求:能够记录货物编号、仓库编号、最小库存量、最大库存量等信息。
盘库管理
- 功能:进行盘库,按货物分类、仓库分类和按货号和仓库查找。
- 需求:能够按货物编号、仓库编号、盘点日期记录盘点结果。
查询管理
- 功能:查询产品入库情况、出库情况、当前库存情况;可以按仓库、出库单、入库单、产品、时间进行查询。
- 需求:综合使用入库表、出库表、库存表等进行查询。
货物管理
- 功能:查询、添加、删除货物信息。
- 需求:能够记录和管理货物编号、货物名称、货物类型、供应商编号等信息。
仓库管理员信息管理
- 功能:管理仓库管理员信息,禁止删除初始管理员。
- 需求:能够记录管理员编号、姓名、电话、密码等信息,且初始管理员信息不能被删除。
流程顺序
1.产品入库管理流程
- 填写入库单:
- 用户输入货物编号、仓库编号、入库量、管理员编号、入库时间等信息。
- 确认入库:
- 系统验证输入信息的合法性和完整性。
- 系统更新库存表,增加相应仓库和货物的库存量。
- 系统在入库表中记录入库信息。
2. 产品出库管理流程
- 填写出库单:
- 用户输入货物编号、仓库编号、出库量、客户信息、管理员编号、出库时间等信息。
- 确认出库:
- 系统验证输入信息的合法性和完整性。
- 系统检查库存是否充足。
- 系统更新库存表,减少相应仓库和货物的库存量。
- 系统在出库表中记录出库信息。
3.借出管理流程
- 填写借货单:
- 用户输入货物编号、仓库编号、借货量、借入人、管理员编号、借出日期等信息。
- 确认借出:
- 系统验证输入信息的合法性和完整性。
- 系统检查库存是否充足。
- 系统更新库存表,减少相应仓库和货物的库存量。
- 系统在借货表中记录借出信息。
- 归还货物:
- 用户输入借货编号、归还日期等信息。
- 系统验证输入信息的合法性和完整性。
- 系统更新库存表,增加相应仓库和货物的库存量。
- 系统在借货表中更新归还日期。
4.仓库库存设置流程
- 设置初始库存:
- 用户输入货物编号、仓库编号、最小库存量、最大库存量等信息。
- 系统在库存设置表中记录初始库存设置。
- 更改库存上下限值:
- 用户输入货物编号、仓库编号、新的最小库存量和最大库存量等信息。
- 系统在库存设置表中更新相应记录。
5.盘库管理流程
- 进行盘点:
- 通过输入仓库号,查看该仓库中的货物信息
- 通过输入货物号,查询该货物都分布在哪个仓库中
- 通过盘库视图,查看盘库记录
6.查询管理流程
- 查询入库情况:
- 用户选择查询条件(如仓库、入库单号、货物、时间等)。
- 系统根据条件查询入库表,并返回结果。
- 查询出库情况:
- 用户选择查询条件(如仓库、出库单号、货物、时间等)。
- 系统根据条件查询出库表,并返回结果。
- 查询当前库存情况:
- 用户选择查询条件(如仓库、货物等)。
- 系统根据条件查询库存表,并返回结果。
7.货物管理流程
- 添加货物信息:
- 用户输入货物编号、货物名称、货物类型、供应商编号等信息。
- 系统验证输入信息的合法性和完整性。
- 系统在货物表中记录新货物信息。
- 查询货物信息:
- 用户选择查询条件(如货物编号、货物名称等)。
- 系统根据条件查询货物表,并返回结果。
- 删除货物信息:
- 用户输入货物编号。
- 系统验证货物是否可以删除(如是否有库存、是否有历史记录等)。
- 系统删除货物表中的相应记录。
8.仓库管理员信息管理流程
- 添加管理员信息:
- 用户输入管理员编号、姓名、电话、密码等信息。
- 系统验证输入信息的合法性和完整性。
- 系统在管理员表中记录新管理员信息。
- 查询管理员信息:
- 用户选择查询条件(如管理员编号、姓名等)。
- 系统根据条件查询管理员表,并返回结果。
- 删除管理员信息:
- 用户输入管理员编号。
- 系统验证管理员是否可以删除(初始管理员不能删除)。
- 系统删除管理员表中的相应记录。
总结
以上流程描述了仓库管理系统的主要业务流程及其顺序,从产品入库、出库、借出管理,到库存设置、盘库、查询、货物管理和管理员信息管理。每个流程都包括具体的操作步骤和系统处理步骤,确保数据的一致性和完整性,同时满足业务需求。
管理员登录结构图
概念结构设计
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