仓储管理系统——软件工程报告(需求分析)②
需求分析
一、系统概况
仓库管理系统是一种基于互联网对实际仓库的管理平台,旨在提供一个方便、快捷、安全的存取货物和查询商品信息平台。该系统通过在线用户登录查询,可以线上操作线下具体出/入库操作、查询仓库商品信息、提高仓库运作效率,优化仓库使用流程等功能,实现了用户在网上对仓库操作的全流程。
二、系统目标
系统的目标是满足用户在使用仓库的过程中的需求,包括线上查询商品、线上操作出/入库商品、线上筛选、提高仓库运作效率、降低成本等环节,并保证在查询和出/入库操作的安全性和可靠性。同时,该系统还为用户提供了一个开放、简单的操作环境,上手难度低,操作环节简便清晰。
三、系统总体结构与子结构说明
(1)系统总体结构说明
仓库管理系统的总体结构包括前端应用程序、后端服务器和数据库三部分。
1>前端应用程序:是用户直接可以接触到的部分,包括网站界面、手机客户端等。它主要负责与用户的交互和展示用户存入商品、商品数量、存取记录等。
2>后端服务器:是系统的核心部分,主要负责处理用户请求、业务逻辑和数据存储等。它包括用户管理、商品管理、物流管理、评论管理等子系统
3>数据库:数据库是系统的基础部分,主要负责存储和管理所有的数据。它包括用户信息表、管理员信息表、商品分类表、仓库库存信息表等多个数据表。
(2)子系统结构说明
仓库管理系统的子系统结构包括用户管理、商品管理、出/入库操作管理、信息查询管理等四个子系统。
1>用户管理子系统:负责用户注册、登录、修改密码、查询用户信息等操作。
2>商品管理子系统:负责对仓库的商品种类的区分、数量的记录、信息的修改等操作
3>出/入库操作管理子系统:对每次的出入库操作做相应的记录、完成线上和线下的实事操控管理、修改商品原本的数据等操作。
4>信息查询管理子系统:负责将用户的查询请求进行分析处理,使用户能实事的查询到自己在仓库中商品的具体情况信息。
四、形式化方法
1)基于模型的方法:使用状态表示系统的运行步骤,通过状态之间的转换来表示 运行时的变化与操作。基于模型的方法可以很好地表达表示非功能性需求(比 如时间需求),但是,这种方法不容易描述并发系统的特点。如:描述计算机 软硬件的 Z 语言;
2) 基于逻辑的方法:系统的性能约束、时间要求、分支条件约束等可以采用逻辑 的方法来描述,不同的逻辑都有对应的公理证明系统来验证描述的正确性。如: 模态逻辑,时序逻辑等。
五、需求分析阶段成果
5.1数据流图
1、组成数据流图的元素信息
| 源点/终点 | 处理 |
| 用户 仓库管理员 | 出/入库登记 产生报表 |
| 数据流 | 数据存储 |
| 登记信息 用户ID 用户姓名 处理时间 商品编号 商品名称 商品数量 管理员姓名 管理员ID 商品报表 商品编号 商品名称 出/入库数量 主要供应商 | 出/入库信息 库存清单* 商品编号 仓库临界值* 用户信息 用户名 用户操作时间 商品编号 商品名称 管理员信息 管理员id 管理员姓名 管理员处理时间 商品数量 商品编号 库存信息 (见商品报表) |
2、数据流模型
(1)第0层数据流图

(2) 第1层数据流图

(2)第2层数据流图

5.2实体-联系图(ER图)

5.3状态转换图

5.4数据字典
1、符号定义
| 符号 | 含义 | 举例说明 |
| = | 被定义为 | |
| + | 与 | X = a + b 表示X由a 和 b 组成 |
| [ … |… ] | 或 | X = [a | b ] 表示X由a或b组成 |
| { … } | 重复 | X = { a } 表示X由0个或多个a组成 |
| ( … ) | 可选 | X = ( a ) 表示a可在X中出现,也可不出现 |
| m{…}n | 重复 | X = m{a}n 表示由m-n个a组成 |
| *…* | 注释 | *xxx* xxx表示对改行的描述 |
2、数据项
| 数据项: | 仓库管理员姓名 |
| 别名: | 管理员 |
| 数据类型: | varchar |
| 数据长度: | 1-20Byte |
| 描述: | 记录每次处理系统事务的管理员的姓名 |
| 定义: | 仓库管理员姓名=1{字符}8 |
| 位置: | 管理员信息表 |
S
| 数据项: | 仓库管理员ID |
| 别名: | 管理员编号 |
| 数据类型: | Char |
| 数据长度: | 8Byte |
| 描述: | 在管理员信息表中充当该表的主键,用于为一确定管理员身份 |
| 定义: | 仓库管理员ID={字符} |
| 位置: | 管理员信息表 |
| 数据项: | 仓库管理员处理时间 |
| 别名: | 系统操作时间 |
| 数据类型: | DATATIME |
| 数据长度: | 8Byte |
| 描述: | 记录管理员每次处理系统的具体时间 |
| 定义: | YYYY-MM-DD HH:MM:SS *混合日期和时间值* |
| 位置: | 仓库库存信息表 |
| 数据项: | 仓库编号 |
| 别名: | 暂无 |
| 数据类型: | Int |
| 数据长度: | 4Byte |
| 描述: | 唯一标识是那个仓库 |
| 定义: | 仓库管理员姓名 = n *n为int型整数* |
| 位置: | 仓库库存信息表 |
| 数据项: | 仓库容量 |
| 别名: | 暂无 |
| 数据类型: | float |
| 数据长度: | 4Byte |
| 描述: | 描述一个仓库中某种商品最多可以存放多上容积 |
| 定义: | 仓库容量 = n |
| 位置: | 仓库库存信息表 |
| 数据项: | 商品位置 |
| 别名: | 暂无 |
| 数据类型: | Char |
| 数据长度: | 8Byte |
| 描述: | 用于精准的在仓库中定位到所需要的商品的位置 |
| 定义: | 商品位置 = {字符} |
| 位置: | 商品分类表 |
| 数据项: | 商品库存 |
| 别名: | 商品剩余量 |
| 数据类型: | Float |
| 数据长度: | 4Byte |
| 描述: | 用于记录在仓库中已经存放的商品的剩余量为多少 |
| 定义: | 商品库存 = n *n为float型数据* |
| 位置: | 商品分类表 |
| 数据项: | 商品名称 |
| 别名: | 商品名 |
| 数据类型: | Char |
| 数据长度: | 8Byte |
| 描述: | 用于表示出每个商品的具体名字 |
| 定义: | 商品名称 = {字符} |
| 位置: | 商品分类表 + 仓库库存信息表 |
| 数据项: | 商品ID |
| 别名: | 商品编号 |
| 数据类型: | Char |
| 数据长度: | 20Byte |
| 描述: | 用于唯一表示某商品 |
| 定义: | 商品ID = {字符} |
| 位置: | 商品分类表 + 仓库库存信息表 |
| 数据项: | 商品种类 |
| 别名: | 暂无 |
| 数据类型: | Char |
| 数据长度: | 8Byte |
| 描述: | 用于区分不同种类商品,以便对商品进行分区存储 |
| 定义: | 商品种类 = {字符} |
| 位置: | 商品分类表 |
| 数据项: | 商品数量 |
| 别名: | 存放量,取出量 |
| 数据类型: | Float |
| 数据长度: | 4Byte |
| 描述: | 用于标识每次参加操作的仓品的具体数量 |
| 定义: | 商品位置 = {字符} |
| 位置: | 商品分类表 + 仓品库存信息表 |
| 数据项: | 用户ID |
| 别名: | 账号 |
| 数据类型: | Char |
| 数据长度: | 8 Byte |
| 描述: | 用于唯一标识用户并且是用户进入系统时所需要使用的号码 |
| 定义: | 用户ID = {字符} |
| 位置: | 用户信息表 |
| 数据项: | 用户密码 |
| 别名: | 密码 |
| 数据类型: | Char + int |
| 数据长度: | 8 – 20 Byte |
| 描述: | 当用户登录系统的时候,作为用户访问的私有性而由用户自己设置的密码,体现出安全性 |
| 定义: | 用户ID = a + n *a 为字符 n 为int型整数* |
| 位置: | 用户信息表 |
| 数据项: | 用户姓名 |
| 别名: | 暂无 |
| 数据类型: | Char |
| 数据长度: | 8 Byte |
| 描述: | 用户进行实名认证之后的姓名。 |
| 定义: | 用户姓名 = {字符} |
| 位置: | 用户信息表 |
| 数据项: | 用户操作时间 |
| 别名: | 操作记录 |
| 数据类型: | DATATIME |
| 数据长度: | 8 Byte |
| 描述: | 用于记录用户的每次操作的具体时间 |
| 定义: | YYYY-MM-DD HH:MM:SS *混合日期和时间值* |
| 位置: | 商品报表 |
3、数据结构
| 编号: 1 |
| 名称: 用户信息 |
| 别名: 操作情况 |
| 组成: 用户ID + 用户名 + 操作时间 + (商品信息) + 具体操作 |
| 作用: 用户访问系统是对用户信息的记录和处理 |
| 备注: 对应数据流图中的D1 |
| 编号: 2 |
| 名称: 出/入库信息 |
| 别名: 出入库操作 |
| 组成: 商品ID + 商品数量 + 仓库容量 + 商品名称 |
| 作用: 对用户对仓库的出库和入库操作提供具体的信息 |
| 备注: 对应数据流图中的D2 |
| 编号: 3 |
| 名称: 管理员信息 |
| 别名: 管理员 |
| 组成: 管理员ID + 管理员姓名 + 处理时间 + (商品信息) + 具体操作 |
| 作用: 管理员收到用户的查询请求后对系统进行操作时对管理员的具体信息进行登记记录 |
| 备注: 对应数据流图中的D3 |
| 编号: 4 |
| 名称: 库存信息 |
| 别名: 暂无 |
| 组成: 商品分类表 + 仓库库存信息表 |
| 作用: 处理出用户所查询的仓库商品信息产生商品清单应答给用户 |
| 备注: 对应数据流图中的D4 |
4、数据流
| 编号:11 |
| 数据流名: 登录界面 |
| 数据流来源: 用户 |
| 数据流去向: 仓库管理系统 |
| 组成:用户 + 登录账号 + 登录密码 |
| 作用: 使用户可以正常的登录该系统 |
| 编号:12 |
| 数据流名: 查询请求 |
| 数据流来源: 用户 |
| 数据流去向: 仓库管理员 |
| 组成:用户 + 功能选择 + 仓库管理员 |
| 作用: 将用户想要查询的商品具体信息传给仓库管理员,由仓库管理员访问系统进行操作 |
| 编号:13 |
| 数据流名: 出/入库请求 |
| 数据流来源: 用户 |
| 数据流去向: 商品报表 |
| 组成:仓库库存表 + 商品分类表 + 出/入库信息 + 用户 |
| 作用: 将用户的出/入库信息经处理产生商品报表送给管理员,并实事完成相应操作 |
| 编号:14 |
| 数据流名: 产生商品清单 |
| 数据流来源: 管理员 |
| 数据流去向: 用户 |
| 组成:仓库库存表 + 商品分类表 + 用户 + 仓库管理员 |
| 作用: 仓库管理员接收到用户的查询请求后通过该系统产生相应的商品清单反馈给用户 |
5、加工逻辑
| 编号: 21 |
| 名称: 登录app |
| 别名: 登录界面 |
| 输入: 用户账号 , 用户密码 |
| 输出:进入功能选择界面或重新输入/找回密码 |
| 加工逻辑: IF 用户输入正确的用户账号和用户密码 THEN 进入功能选择界面 ELSE 注册/找回密码 |
| 备注: 使用户正确的进入仓库管理系统中 |
| 编号: 22 |
| 名称: 功能选择 |
| 别名: 暂无 |
| 输入: 对应的功能 |
| 输出:重新选择或进入识别系统 |
| 加工逻辑: IF 用户输入正确的功能进行功能匹配 THEN 进入识别系统 ELSE 重新选择 |
| 备注:用户通过对功能的选择正确的进入识别系统 |
| 编号: 23 |
| 名称: 出/入库操作 |
| 别名: 暂无 |
| 输入: 正确的商品信息 |
| 输出:更新出/入库信息,更新库存,产生商品报表 |
| 加工逻辑: IF 用户输入正确的功能进行功能匹配 THEN 进入识别系统 IF 仓库已满 / 为空 THEN 无法完成操作(不合法) ELSE 产生商品报表,完成操作 ELSE 重新选择 |
| 备注:完成用户所选择的出/入库操作 |
6、外部实体
| 编号:31 |
| 名称: 用户 |
| 别名: 暂无 |
| 简述: 能使用该系统的基本功能 |
| 从外部实体输入: 对应的操作 向外部实体输出: 商品报表 |
| 备注: 能通过本系统,用户能通过功能选择在本系统中完成相应的出/入库和查询操作 |
| 编号: 32 |
| 名称: 仓库管理员 |
| 别名: 管理者 |
| 简述: 能管理商品报表和进入系统为用户生成商品清单 |
| 从外部实体输入: 用户查询请求 向外部实体输出: 具体商品清单 |
| 备注:能直接与系统交互,对外部用户是透明的,通过查询请求为用户提供商品清单 |
相关文章:
仓储管理系统——软件工程报告(需求分析)②
需求分析 一、系统概况 仓库管理系统是一种基于互联网对实际仓库的管理平台,旨在提供一个方便、快捷、安全的存取货物和查询商品信息平台。该系统通过在线用户登录查询,可以线上操作线下具体出/入库操作、查询仓库商品信息、提高仓库运作效率ÿ…...
立创EDA学习:PCB布局
参考内容 【PCB布线教程 | 嘉立创EDA专业版入门教程(11)】 https://www.bilibili.com/video/BV1mW4y1Z7kb/?share_sourcecopy_web&vd_sourcebe33b1553b08cc7b94afdd6c8a50dc5a 单路布线 遵循顺序 先近后远,先易后难 可以拖动让拐角缩小…...
tomcat与Apache---一起学习吧之服务器
Apache和Tomcat都是Web服务器,但它们有一些重要的区别。 Apache服务器是普通服务器,本身只支持HTML即普通网页。不过可以通过插件支持PHP,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资…...
Vue3的优势
Vue3和Vue2之间存在以下主要区别: 1. 性能优化:Vue3在内部进行了重写和优化,采用了新的响应式系统(Proxy),相较于Vue2中的Object.defineProperty,更具性能优势。Vue3还对编译和渲染进行了优化&…...
鸿蒙开发案例002
1、目标需求 界面有增大字体按钮,每次点击增大字体按钮,“Hello ArkTS”都会变大 2、源代码 Entry Component struct Page {textValue: string Hello ArkTSState textSize: number 50myClick():void{this.textSize 4}build() {Row() {Column() {//…...
Git学习笔记(第9章):国内代码托管中心Gitee
目录 9.1 简介 9.1.1 Gitee概述 9.1.2 Gitee帐号注册和登录 9.2 VSCode登录Gitee账号 9.3 创建远程库 9.4 本地库推送到远程库(push) 9.5 导入GitHub项目 9.6 删除远程库 9.1 简介 9.1.1 Gitee概述 众所周知,GitHub服务器在国外,使用GitHub作为…...
使用k8s 配置 RollingUpdate 滚动更新实现应用的灰度发布
方案实现方式: RollingUpdate 滚动更新机制 当某个服务需要升级时,传统的做法是,先将要更新的服务下线,业务停止后再更新版本和配置,然后重新启动服务。 如果业务集群规模较大时,这个工作就变成了一个挑战…...
MATLAB知识点:mode :计算众数
讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。 MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章 3.4.1节 mode :计算众数 众数是指一…...
【JavaWeb】MVC架构模式
文章目录 MVC是什么?一、M :Model 模型层二、V:View 视图层三、C:Controller 控制层四、非前后端分离MVC五、前后端分离MVC总结 MVC是什么? MVC(Model View Controller)是软件工程中的一种**软件…...
【Unity学习笔记】创建人物控制器
人物左右移动 1 导入模型,如果没有模型,则在 窗口-资产商店-free sample 找到人物模型 2 在 窗口-包管理中 导入自己的模型 3 在自己的资产文件夹中找到Prefabs Base HighQuality MaleFree1模型,导入到场景中 4 Assets中创建C#项目 写入如下…...
HCIP:不同VLAN下实现网络互相通信
配置pc1 配置pc2 配置pc3 将sw1划分到vlan3 将sw3划分到vlan3 在sw1上进行缺省 将sw1上(g0/0/1)的untagged改成 1 3 则在pc1上ping pc2可通 在sw1上进行缺省 在sw3上(e0/0/1)打标记 则在pc1上ping pc3可通(实现互通&am…...
07 队列
目录 1.队列 2.实现 3.OJ题 1. 队列 只允许在一段进行插入数据操作,在另一端进行数据删除操作的特殊线性表,队列具有先进先出FIFO(First In Firtst Out),插入操作的叫队尾,删除操作的叫队头 2. 实现 队列…...
产品面试题2
39.产品经理在与 开发团队合作时,以下哪个角色负责将产品需求转化为可执行的任务? a) 技术经理 b) 交互设计师 c) 项目经理 d) 开发工程师 答案:c 40.以下哪个方法适用于评估产品的用户满意度和体验? a) 用户访谈 b) 用户调研问卷…...
[NSSCTF]-Web:[SWPUCTF 2021 新生赛]easy_md5解析
先看网页 大致就是输入name和password的值,只要他俩的值不一样,然后经过md5函数之后一样就能出flag。 解法一(利用php的科学计数法): 在php中,假设a,b为数字,那科学计数法可以用ae…...
嵌入式解惑——串口通信中的流控制有什么作用?
在串口通信中,流控制(Flow Control)是一个非常重要的概念。它主要是用来协调发送端和接收端的数据传输速率,以防止接收端流量过大导致的数据丢失问题。 串口通信的特点是数据是以串行方式,一位一位的进行传输。如果…...
Kubernetes-Taint (污点)和 Toleration(容忍)
目录 一、Taint(污点) 1.污点的组成 2.污点的设置、查看和去除 3.污点实验: 二、Toleration(容忍) 1.容忍设置的方案 2.容忍实验: Taint 和 toleration 相互配合,可以用来避免 pod 被分配…...
python三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1…...
uniapp 用css animation做的鲤鱼跃龙门小游戏
第一次做这种小游戏,刚开始任务下来我心里是没底的,因为我就一个‘拍黄片’的,我那会玩前端的动画啊,后面尝试写了半天,当即我就给我领导说,你把我工资加上去,我一个星期给你做出来,…...
JeecgBoot 3.6.1实现Modal对话框,以为审核数据为例
JeecgBoot 3.6.1实现Modal对话框 vue使用的是3.0版本 文章目录 JeecgBoot 3.6.1实现Modal对话框前言一、列表页面关键代码示例二、textAuditModal.vue代码示例三、test.api.ts总结 前言 在工作中,有一个需求,要求,在数据列表页,…...
Spring基于dynamic-datasource实现MySQL多数据源
目录 多数据源实现 引入依赖 yml配置文件 业务代码 案例演示 多数据源实现 引入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>dynamicdatasourcespringbootstarter</artifactId><version>3.5.0</version> &…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...
