仓储管理系统——软件工程报告(需求分析)②

需求分析

一、系统概况

仓库管理系统是一种基于互联网对实际仓库的管理平台,旨在提供一个方便、快捷、安全的存取货物和查询商品信息平台。该系统通过在线用户登录查询,可以线上操作线下具体出/入库操作、查询仓库商品信息、提高仓库运作效率,优化仓库使用流程等功能,实现了用户在网上对仓库操作的全流程。

二、系统目标

系统的目标是满足用户在使用仓库的过程中的需求,包括线上查询商品、线上操作出/入库商品、线上筛选、提高仓库运作效率、降低成本等环节,并保证在查询和出/入库操作的安全性和可靠性。同时,该系统还为用户提供了一个开放、简单的操作环境,上手难度低,操作环节简便清晰。

三、系统总体结构与子结构说明

(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

名称: 仓库管理员

别名: 管理者

简述: 能管理商品报表和进入系统为用户生成商品清单

从外部实体输入:  用户查询请求

向外部实体输出:  具体商品清单

备注:能直接与系统交互,对外部用户是透明的,通过查询请求为用户提供商品清单

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/641130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shell脚本概述

将命令写到脚本里面,利用路径或者解释器去执行。简要来说脚本其实就是命令的集合。 例如:echo $? 自定义变量,查看上次命令执行是否正确 linux常用的shell 脚本的构成: 1.解释器 (脚本是用什么语言写的…

10个常用python自动化脚本

大家好,Python凭借其简单和通用性,能够为解决每天重复同样的工作提供最佳方案。本文将探索10个Python脚本,这些脚本可以帮助自动化完成任务,提高工作效率。无论是开发者、数据分析师还是仅仅想简化工作流程的普通用户,…

【数据结构】二叉树算法讲解(定义+算法原理+源码)

博主介绍:✌全网粉丝喜爱、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战✌有需要可以联系作者我哦! 🍅附上相关C语言版源码讲解🍅 &#x1f44…

Java - 深入四大限流算法:原理、实现与应用

文章目录 Pre概述简单计数器原理实现测试优缺点 滑动窗口算法原理实现测试优缺点 漏桶算法原理实现测试优缺点 令牌桶算法原理实现测试优缺点 小结 Pre 深入理解分布式技术 - 限流 并发编程-25 高并发处理手段之消息队列思路 应用拆分思路 应用限流思路 SpringBoot - 优雅…

画眉(京东科技设计稿转代码平台)介绍

前言 随着金融App业务的不断发展,为了满足不同场景下的用户体验及丰富的业务诉求,业务产品层面最直接体现就是大量新功能的上线及老业务的升级,随之也给研发带来了巨大的压力,所以研发效率的提升就是当前亟需解决的问题&#xff…

QGIS生成热力图

目录 1 QGIS介绍 2 实现效果 3 具体步骤 3.1 获取北京市地图(区县级) 3.1.1 方法一:直接找到北京市地图 3.1.2 方法二:若没有单独的北京市地图,从中国地图上提取 3.2 获取数据 3.3 导入数据 1 QGIS介绍…

1148. 秘密的牛奶运输 (次小生成树)

1148. 秘密的牛奶运输 - AcWing题库 农夫约翰要把他的牛奶运输到各个销售点。 运输过程中,可以先把牛奶运输到一些销售点,再由这些销售点分别运输到其他销售点。 运输的总距离越小,运输的成本也就越低。 低成本的运输是农夫约翰所希望的。…

知识笔记(九十六)———在vue中使用echarts

1、安装 npm install echarts --save 2、在vue中引入(全局引入) // 引入echarts import echarts from echarts Vue.prototype.$echarts echarts3、在vue中的使用 需要用到echart的地方先设置一个div的id、宽高 提示: 可以在一个页面中引…

数据结构之使用顺序表写出通讯录

前言 昨天我们踏入了数据结构的深山,并且和顺序表battle了一番,虽说最后赢了,但同时也留下了一个问题:如何从顺序表的增删查改加强到通讯录的的增删查改,别急,今天就带你一探究竟。 一.回顾与思考 我们昨…

geemap学习笔记053:纹理特征

前言 纹理特征通常描述了遥感影像中像素之间的空间关系和变化,对于地物分类、目标检测以及图像分割等遥感应用非常有价值。本节将会介绍Earth Engine中提供的一些纹理特征计算方法,包括熵和灰度共生矩阵。 1 导入库并显示数据 import ee import geema…

【UE5】第一次尝试项目转插件(Plugin)的时候,无法编译

VS显示100条左右的错误,UE热编译也不能通过。原因可能是[名字.Build.cs]文件的错误,缺少一些内容,比如说如果要写UserWidget类,那么就要在 ]名字.Build.cs] 中加入如下内容: public class beibaoxitong : ModuleRules …

自己本机Video retalking制作数字人

首先需要注意的是,这个要求你的笔记本显存和内存都比较大。我的电脑内存是64G,显卡是8G,操作系统是Windows 11,勉强能够运行出来,但是效果不是很好。 效果如下,无法上传视频,只能通过图片展示出…

[分章:阅读]《我的第一本算法书》

第一章数据结构 1.链表 1、数据结构之一,线性排列数据,指针链接数据;访问O(n),删除/添加O(1) 2、类似链条。 2.数组 1、线性排列数据,含数据下标(即索引&…

C++如何在0和1之间取随机数

在C中&#xff0c;你可以使用 <random> 库来生成0和1之间的随机数。这个库提供了各种生成随机数的方法&#xff0c;包括均匀分布的随机数。 下面是一个简单的例子&#xff0c;展示如何使用 <random> 库来生成0和1之间的随机数&#xff1a; cpp复制代码 #include…

二、docker的常用命令(持续补充img)

目录 一、启动相关1.设置容器开机启动 二、查询相关1.查询所有容器&#xff08;包括停止的&#xff09; 三、修改相关1.指定容器开机自启动 一、启动相关 1.设置容器开机启动 在我们使用镜像run一个容器的时候&#xff0c;希望这个容器随着docker的启动而启动&#xff08;我的…

Ubuntu20.04.3LTS桌面版与Window10双系统并存

Ubuntu20.04.3LTS桌面版与Window10双系统并存 文章目录 Ubuntu20.04.3LTS桌面版与Window10双系统并存1.分区与安装1. 硬盘分区1. 一般用途2. 服务器用 2. 操作系统版本及分区信息3. 安装时创建用户4. 安装后修改root设置用户密码&#xff1a;3. 安装时指定ip4. 设置静态IP 2. 安…

【leetcode100-051到054】【图论】四题合集

【岛屿数量】 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设…

Java线程池七大参数详解和配置(面试重点)

一、corePoolSize核心线程数 二、maximunPoolSize最大线程数 三、keepAliveTime空闲线程存活时间 四、unit空闲线程存活时间的单位 五、workQueue线程工作队列 1、ArrayBlockingQueue FIFO有界阻塞队列 2、LinkedBlockingQueue FIFO无限队列 3、PriorityBlockingQueue V…

【代码随想录】刷题笔记Day54

前言 差单调栈就结束代码随想录一刷啦&#xff0c;回家二刷打算改用python补充进博客&#xff0c;小涛加油&#xff01;&#xff01;&#xff01; 647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 双指针法 中心点外扩&#xff0c;注意中心点可能有一个元素可能有两个…

neo4j jdk17下 dump 报错

更换jdk版本 只需要改下bin目录下的neo4j.bat, 把set "JAVA_HOMEXXXX"加入进去就行 windows SET "JAVA_HOMEc:\...." linux bin目录下 neo4j 在首行添加JAVA_HOME/usr/local/jdk文件夹即可 tomcat 指定jdk 找到bin下的setclasspath.bat文件&#xff1b;在…