仓储管理系统——软件工程报告(需求分析)②
需求分析
一、系统概况
仓库管理系统是一种基于互联网对实际仓库的管理平台,旨在提供一个方便、快捷、安全的存取货物和查询商品信息平台。该系统通过在线用户登录查询,可以线上操作线下具体出/入库操作、查询仓库商品信息、提高仓库运作效率,优化仓库使用流程等功能,实现了用户在网上对仓库操作的全流程。
二、系统目标
系统的目标是满足用户在使用仓库的过程中的需求,包括线上查询商品、线上操作出/入库商品、线上筛选、提高仓库运作效率、降低成本等环节,并保证在查询和出/入库操作的安全性和可靠性。同时,该系统还为用户提供了一个开放、简单的操作环境,上手难度低,操作环节简便清晰。
三、系统总体结构与子结构说明
(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> &…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...