仓储管理系统——软件工程报告(需求分析)②
需求分析
一、系统概况
仓库管理系统是一种基于互联网对实际仓库的管理平台,旨在提供一个方便、快捷、安全的存取货物和查询商品信息平台。该系统通过在线用户登录查询,可以线上操作线下具体出/入库操作、查询仓库商品信息、提高仓库运作效率,优化仓库使用流程等功能,实现了用户在网上对仓库操作的全流程。
二、系统目标
系统的目标是满足用户在使用仓库的过程中的需求,包括线上查询商品、线上操作出/入库商品、线上筛选、提高仓库运作效率、降低成本等环节,并保证在查询和出/入库操作的安全性和可靠性。同时,该系统还为用户提供了一个开放、简单的操作环境,上手难度低,操作环节简便清晰。
三、系统总体结构与子结构说明
(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> &…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
linux设备重启后时间与网络时间不同步怎么解决?
linux设备重启后时间与网络时间不同步怎么解决? 设备只要一重启,时间又错了/偏了,明明刚刚对时还是对的! 这在物联网、嵌入式开发环境特别常见,尤其是开发板、树莓派、rk3588 这类设备。 解决方法: 加硬件…...
篇章一 论坛系统——前置知识
目录 1.软件开发 1.1 软件的生命周期 1.2 面向对象 1.3 CS、BS架构 1.CS架构编辑 2.BS架构 1.4 软件需求 1.需求分类 2.需求获取 1.5 需求分析 1. 工作内容 1.6 面向对象分析 1.OOA的任务 2.统一建模语言UML 3. 用例模型 3.1 用例图的元素 3.2 建立用例模型 …...
