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

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...