仓储管理系统——软件工程报告(需求分析)②
需求分析
一、系统概况
仓库管理系统是一种基于互联网对实际仓库的管理平台,旨在提供一个方便、快捷、安全的存取货物和查询商品信息平台。该系统通过在线用户登录查询,可以线上操作线下具体出/入库操作、查询仓库商品信息、提高仓库运作效率,优化仓库使用流程等功能,实现了用户在网上对仓库操作的全流程。
二、系统目标
系统的目标是满足用户在使用仓库的过程中的需求,包括线上查询商品、线上操作出/入库商品、线上筛选、提高仓库运作效率、降低成本等环节,并保证在查询和出/入库操作的安全性和可靠性。同时,该系统还为用户提供了一个开放、简单的操作环境,上手难度低,操作环节简便清晰。
三、系统总体结构与子结构说明
(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> &…...

JS高频面试题(下)
11. 线程和进程的区别 进程是资源分配的最小单元,线程是代码执行的最小单元。 一个应用程序可能会开启多个进程,进程之间数据不共享,一个进程内部可以开启多个线程,线程之间的数据可以共享的,所以多线程的情况下&…...

单点登陆(SSO)基于CAS实现前后端分离的SSO系统开发「IDP发起」
关于其他前端常见登录实现单点登录方案,请见「前端常见登录实现方案 单点登录方案 」 前沿 单点登录(SSO),英文全称为 Single Sign On。 SSO 是指在多个应用系统中,用户只需要登录一次,就可以访问所有相互…...

二叉树
目录 1翻转二叉树 2对称二叉树 3二叉树的深度 最大深度 最小深度 4二叉树的结点数量 完全二叉树的结点数量 5平衡二叉树 6 中序 后序求前序 二叉树结构体如下: struct freenode {int data;struct freenode *lchild, *rchild;//左孩子 右孩子 }T; 1翻转二…...

边缘计算:挑战与机遇的平衡艺术
前言 边缘计算作为云计算的补充,通过在数据源近处进行数据处理,已经成为实现物联网(IoT)、自动驾驶、智慧城市等应用的重要技术。然而,边缘计算的发展和普及也面临不少挑战,同时也带来了巨大的机遇。 方向…...

Windows11 Copilot助手开启教程(免费GPT-4)
Windows11上开启Copilot助手教程踩坑指南 Copilot介绍Copilot开启步骤1、更新系统2、更改语言和区域3、下载 ViVeTool 工具4、开启Copilot 使用 Copilot介绍 Windows Copilot 是 Windows 11 中的一个新功能,它可以让你与一个智能助理进行对话,获取信息&…...

【Golang入门教程】如何使用Goland创建并运行项目
自然语言处理的发展 文章目录 自然语言处理的发展**前言**创建新项目编辑运行/调试配置编写并运行代码总结强烈推荐专栏集锦写在最后 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站: 人工…...

鸿蒙开发实战-手写文心一言AI对话APP
运行环境 (后面附有API9版本,可修改后在HarmonyOS4设备上运行) DAYU200:4.0.10.16 SDK:4.0.10.15 IDE:4.0.600 在DAYU200:4.0.10.16上运行 一、创建应用 1.点击File->new File->Create Progect 2.选择模版…...

鸿蒙常用UI效果及一些处理方式总结
前言: DevEco Studio版本:4.0.0.600 详细使用介绍 1、Text的一些常用设置 Text(this.message).fontSize(50)//字体大小.fontColor(Color.White)//字体颜色.fontWeight(FontWeight.Bold)//字体加粗.backgroundColor(Color.Black)//背景颜色.fontStyle(…...

dataGrip连接数据库mysql和intersystems的iris
intersystems公司的产品iris是cache的升级版本,目前绝大多数数据库工具都没法连接这个数据库 datagrip下载地址 https://download-cdn.jetbrains.com.cn/datagrip/datagrip-2023.3.3.exe 选择对应的数据库产品类型 新建数据库资源连接 填上对应的数据库连接和账…...

【51单片机】点亮第一个LED灯
目录 点亮第一个LED灯单片机 GPIO 介绍GPIO 概念GPIO 结构 LED简介软件设计点亮D1指示灯LED流水灯 橙色 点亮第一个LED灯 单片机 GPIO 介绍 GPIO 概念 GPIO(general purpose intput output) 是通用输入输出端口的简称, 可以通过软件来控制…...