仓库管理系统

news2024/12/29 10:49:14

仓库管理系统
项目环境要求
1.设备支持:Windows7、Windows8或Windows10;
2.数据库:Mysql 8.0;
3.软件支持:eclipse、navicat

需求分析
需求分析阶段的根本任务是要明确仓库管理系统功能需求,以便提出整个系统的总体方案。在需求分析中,主要采用业务流程图,数据流程图和数据字典来描述。
1.1 业务流程图
在分析了仓库管理系统应该具有的基本功能之后,我们确定了本系统分为三个主要模块,即:基本信息维护模块、一般用户功能、库存管理模块和安全管理模块四大模块。在这里插入图片描述
具体业务如下:
(1) 基本信息维护模块:基本信息维护模块用于系统的用户登录及身份验证。用户进入系统需要经过身份验证。
(2) 库存管理模块为系统的核心模块,其主要功能有:仓库信息的管理,产品入库登记、确认入库信息、删除库内信息、借出信息登记、产品分类管理、添加人员、删除人员、查询库内信息。
(3) 安全管理:人员权限区分、事件记录、数据警告、计划备份、即时备份、数据恢复。
(4) 一般用户功能:查询库内信息、查询出库信息、查询入库信息、修改本用户密码。

数据流图
在这里插入图片描述
一、项目名称:仓库管理系统

二、使用的数据库版本:Mysql 8.0

三、项目的主要功能简介:
仓库管理系统主要有两个功能,根据不同用户有着不同的功能,分为:普通用户和高级用户功能。具体功能如下:

  1. 用户登录界面
    对于普通用户和高级用户两种登陆用户,有着各自的方式。每个用户都只能用自己的密码登录到系统中 。究于此系统是专门给个人设计的,鉴于隐私问题,个人相关的信息不希望别人看到,因此登录的身份就只准用户登录。且管理员拥有全部的权限。

  2. 普通用户界面
    (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 ;

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1404663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mapbox加载浙江省天地图服务和数据处理

1. 加载影像服务 通过浙江省天地图官网申请所需服务,使用token获取服务数据 由于浙江省天地图使用的坐标系是 cgcs2000,需要使用 的框架对应为 cgcs2000/mapbox-gl,通过cdn引入或npm下载 影像服务地址为: ‘https://ditu.zjzw…

2024年 复习 HTML5+CSS3+移动web 笔记 之CSS遍

第一天第二天第三天 1.1 引入方式 1.2 选择器 1.3 画盒子 1.4 文字控制 1.5 综合案例 一 新闻详情 2.1 复合选择器 2.2 伪类选择器 2.3 CSS 特性 2.4 Emmet 写法 2.5 背景属性 2.6 显示模式 2.6 综合案例 一 热词 (设计稿?) 2.7 综合案例 一…

优化用户体验测试应用领域:提升产品质量与用户满意度

在当今数字化时代,用户体验测试应用已经成为确保产品质量、提升用户满意度的关键工具。随着技术的不断发展,用户的期望也在不断演变,因此,为了保持竞争力,企业必须将用户体验置于产品开发的核心位置。本文将探讨用户体…

耳鸣是怎么回事呢?

什么是耳鸣? 耳鸣是指在没有任何客观声响的情况下,个人主观上却感觉听到声音,有些人甚至觉得声音来自头部。耳鸣的感觉因人而异,声音多种多样。比如明明没有开任何电器,但却可以感觉到电流声,明明旁边没有…

如何使用固定公网地址访问多个本地Nginx服务搭建的网站

文章目录 1. 下载windows版Nginx2. 配置Nginx3. 测试局域网访问4. cpolar内网穿透5. 测试公网访问6. 配置固定二级子域名7. 测试访问公网固定二级子域名 本文主要介绍如何在Windows系统对Nginx进行配置,并结合cpolar内网穿透工具实现固定公网地址远程访问多个本地站…

leaflet学习笔记-带过滤的图例(九)

前言 图例不只能够帮助我们在查看地图的时候更加方便容易地分辨不同颜色代表的要素,本文要介绍的图例组件还可以按需求过滤掉不用显示的要素,使地图的更能清晰的显示我们需要显示的内容 技术核心 说到过滤要素,第一时间想到的就是滑块组件…

burp靶场--业务逻辑漏洞

burp靶场–业务逻辑漏洞 https://portswigger.net/web-security/logic-flaws#what-are-business-logic-vulnerabilities ### 什么是业务逻辑漏洞? 业务逻辑漏洞是应用程序设计和实现中的缺陷,允许攻击者引发意外行为。这可能使攻击者能够操纵合法功能来…

德思特干货|如何使用SBench 6对数字化仪采集信号进行处理?(三)——快速傅立叶变换(FFT)

来源:德思特测量测试 德思特干货|如何使用SBench 6对数字化仪采集信号进行处理?(三)——快速傅立叶变换(FFT) 原文链接:https://mp.weixin.qq.com/s/mYS1iDXFNVfReCGGtF78mw 欢迎关…

Ubuntu用gparted重新分配空间

ubuntu系统使用过程中安装系统时预先留的空间不够使用怎么办? 这么办! 首先 使用df -h 查看当前空间使用情况 已经分配的空间重新规划 ? 先将已分配的空间中的多余空间分离出来; 假设我想将挂载点/home下的一部分空间分给挂载…

用户资源(菜单)控制学习使用

效果图 第一步 需要再定义常量资源 //信访听证 资源前缀public static final String RESPREFIX_MODULE_XINFTZ_"module_xinftz_";//听证专家库public static final ConstantItem RES_MODULE_XINFTZ_TINGZZJK new ConstantItem(RESPREFIX_MODULE_XINFTZ_ "tin…

SpringCloud中服务间通信(应用间通信)-亲测有效-源码下载-连载2

1、微服务概述 本案例主要解决微服务之间的相互调用问题 如果已经理解什么是微服务,可以直接跳到实战。 本案例采用springBoot3.1.7springCloud2022.0.4版本测试 本案例使用springboot2.7.x版本测试代码相同 1、微服务是分布式架构,那么为什么要需要…

Unity中URP下的SimpleLit的 BlinnPhong高光反射计算

文章目录 前言一、回顾Blinn-Phong光照模型1、Blinn-Phong模型: 二、URP下的SimpleLit的 BlinnPhong1、输入参数2、程序体计算 前言 在上篇文章中,我们分析了 URP下的SimpleLit的 Lambert漫反射计算。 Unity中URP下的SimpleLit的 Lambert漫反射计算 我…

计算机网络自顶向下Wireshark labs1-Intro

Wireshark labs1 实验文档:http://www-net.cs.umass.edu/wireshark-labs/Wireshark_Intro_v8.0.pdf 介绍 加深对网络协议的理解通常可以通过观察协议的运行和不断调试协议来大大加深,具体而言,就是观察两个协议实体之间交换的报文序列&…

DEB方式安装elastic search7以及使用

参考:https://www.cnblogs.com/anech/p/15957607.html 1、安装elastic search7 #手动下载安装 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.1-amd64.deb wget https://artifacts.elastic.co/downloads/elasticsearch/elastics…

R语言简介

1.R语言 R语言是一种数学编程语言,主要用于统计分析、绘图和数据挖掘。 2.R语言特点 免费、开源,兼容性好(Windows、MacOS或Linux)。具有多种数据类型,如向量、矩阵、因子、数据集等常用数据结构。多用于交互式数据分析&#x…

Linux配置yum源以及基本yum指令

文章目录 一、yum介绍二、什么是软件包三、配置yum源四、一键配置yum源【三步走】五、yum指令搜索软件安装软件卸载软件 六、其他yum指令更新内核更新软件更新指定软件显示所有可更新的软件清单卸载指定包并自动移除依赖包删除软件包,以及软件包数据和配置文件 一、…

灵眸边缘计算产品学习

EASY EAI灵眸科技 | 让边缘AI落地更简单 (easy-eai.com) 产品简介 支持4路1080P30fps视频流采集,四核CPU1.5GHz与2Tops AI边缘算力能力。集成有以太网、Wi-Fi、4G等网络通信外设;RS232、RS485、UART等本地通信接口。HDMI显示屏接口、音频输入输出等交互…

打造出色的 Prometheus 监控系统,看完后薪资翻倍?

一、监控概念&误区 监控是管理基础设施和业务的核心工具,监控应该和应用程序一起构建和部署,没有监控,将无法了解你的系统运行环境,进行故障诊断,也无法阻止提供系统性的性能、成本和状态等信息。 误区&#xff1…

【江科大】STM32:(超级详细)定时器输出比较

文章目录 输出比较单元特点 高级定时器:均有4个通道 PWM简介PWM(Pulse Width Modulation)脉冲宽度调制输出比较通道PWM基本结构基本定时器 参数计算捕获/比较通道的输出部分详细介绍如下: 舵机介绍硬件电路 直流电机介绍&#xff…

C# 使用System.Threading.Timer 实现计时器

写在前面 以往一般都是用 System.Timers.Timer 来做计时器,而 System.Threading.Timer 也可以实现计时器功能,并且还可以配置首次执行间隔,在功能上比System.Timers.Timer更加丰富;根据这个特性就可以实现按指定时间间隔对委托进…