商超仓库管理系统

摘要

随着全球经济和互联网技术的快速发展,依靠互联网技术的各种管理系统逐渐应用到社会的方方面面。各行业的有识之士都逐渐开始意识到过去传统的人工管理模式已经逐渐成为企业发展的绊脚石,不再适应现代企业的发展需要。企业想要得到更好的发展,就要紧跟时代的潮流,通过互联网等高新技术找到适合自己的管理模式。商场超市以往大多也应用传统的仓库管理模式,传统的商超仓库的管理模式一般通过人工进行入库、出库记录,缺点比较明显。针对传统仓库管理的缺点,结合自身所学的知识以及相关参考资料,设计了本套商超仓库管理系统。本套系统使仓库管理更加标准化、规范化,可以让仓库的管理人员从之前繁琐的数据录入登记和查询以及数据统计中解脱出来,大大降低管理人员的工作量,提高了管理人员的工作效率。因此,设计商超仓库管理系统具有现实意义。
本套仓库管理系统有八大功能模块,包括资料管理、采购管理、销售管理、库存管理、统计信息、权限管理、个人信息管理、以及日志信息管理,在各模块下还有相应的子功能。本系统的开发平台是IntelliJ IDEA,前端页面部分主要通过Vue框架实现,后端数据库使用的是MySQL数据库,开发出的是一个基于JavaWeb技术的B/S结构的仓库管理系统,具体框架方面使用的是SpringBoot+MybatisPlus集成框架。
本系统具有开发成本低、易用性高等特点。考虑到系统的安全性,系统添加了日志管理功能,用以记录操作人员和操作时间,防止出现系统信息被恶意篡改却难以追责的情况发生。为了防止用户密码被破解,本系统还在密码上设计了DH5加密,考虑到当下DH5加密破解难度不高,本系统还在DH5加密的基础上增加了盐,大大提高了密码的安全性。在系统设计实现后对本系统进行了测试,确定了该系统符合预定目标,能够满足使用者的需求。

关键词:商超仓库管理;B/S架构;SpringBoot;MybatisPlus;Vue

章节安排

论文共分五部分。
第一部分:绪论,主要介绍了本论文的背景与意义、国内外相关技术的发展状况及未来趋势、论文所做工作及思路以及论文各章节的安排。
第二部分:相关技术介绍,对实现系统的核心技术进行了介绍。主要介绍了SpringBoot、MybatisPlus、vue和MySql数据库等技术。
第三部分:系统分析,包括可行性分析、需求分析、功能分析等。
第四部分:系统设计与实现,包括总体设计、数据库设计、详细设计。数据库设计包括概念结构设计、E_R图、表设计。详细设计包括主要功能模块的时序图、运行结果图。
第五部分:系统测试,包括测试方法、测试过程、测试结果。对系统的主要功能模块进行测试并画出测试结果表。

用例分析

仓库管理信息系统其实就是将仓库业务管理流程信息化的过程,这个系统的建立既要满足仓库工作人员的真正需求,同时也要满足仓库管理员的真正需求,要能够解决他们的实际问题。需求用例图如图3-1所示,具体功能需求解析如下:
1、仓库中货物数据量多,信息量大且十分繁杂,数据需要保证绝对的安全,所以,操作起来相对麻烦。因为系统中有多个角色,所以,需要给不同类型的用户设置不同的操作权限。
2、仓库管理系统主要是针对日常库存信息的管理,主要是要实现出入库管理、仓库剩余库存的查询和对仓库里物品基本情况的操作。
图3-1 需求用例图
在这里插入图片描述

功能性需求分析

1、登录登出功能:登录时用户需凭借账号密码登录,系统进行验证,如账号密码不正确,则提示输入正确的账号密码。可以通过id修改密码。
2、资料管理功能:管理供应商和客户资料,实现按照输入的供应商名称、经营范围动态查询供应商,根据id查询供应商信息,根据供应商id修改供应商负责人名字和电话号码,供应商添加要实现可以普通添加和批量添加。客户管理亦要实现如供应商管理一样的功能。
3、采购管理:要实现查询所有的供应商,查询当前采购员采购车的信息,通过id修改采购价格、数量,通过采购车id移除商品,添加商品。将采购商品入库,根据供应商id或者名称入库。实现采购信息查询,动态分页查询订单,通过输入的条件动态查询采购订单,返回分页对象。通过订单id查询订单信息及明细信息。
4、销售管理:要实现销售出库和销售信息查询功能,销售出库要实现查询所有的客户、通过销售员查询即将出库的物品、通过输入的商品名称、类别动态条件分页查询销售价,将需要出库的物品添加到销售车的功能。销售信息查询功能要实现通过输入的客户名称,起始日期,结束日期动态查询出库订单表、通过销售订单id查询详情功能。
5、库存管理:实现库存一览功能,根据输入的条件动态的查询库存信息。通过库存id查询库存商品对象,通过库存id修改销售价格。
6、销售统计:根据指定的时间段统计每个类别的销售额,输入起始结束日期,根据起始日期,结束日期统计每个类别的销售额,输出销售统计对象(name,value)。根据指定的时间段统计每个品牌每个类别的销售额。统计指定年份,每个类别商品每个月的销售数量。
7、权限管理:根据用户名动态分页查询用户表,添加用户时,用户名不能重复,添加用户信息,同时添加该用户拥有的角色信息,删除用户同时删除角色信息,查询用户时通过id查询用户信息,同时查询该用户拥有的角色集合,权限集合(四表来联,用户表,角色表,用户角色中间表,权限表,权限角色)。通过角色id数组查询角色权限,去除重复权限。可以实现用户角色的修改。
8.角色管理:需实现分页查询角色表集合、通过角色id删除角色、添加角色、修改角色权限、查看角色信息、查询所有的权限信息。

总体设计

在架构选择上,本系统选择了B/S架构,之所以选择B/S架构,首先考虑的是使用便捷性,与C/S架构相比,B/S架构无需安装任何专门的客户端应用程序,电脑上有浏览器就可以远程使用系统。在B/S架构下,客户端只是电脑上的浏览器,无需专门进行维护。如果后期使用客户规模扩大,也不用担心维护升级工作的工作量会大大增加。其次,B/S架构是建立在广域网上,面向不同地域、不同用户群体的,这是C/S架构不具备的优点。B/S架构还具有与操作平台关系较小的特点,系统的功能扩展非常容易。从商超仓库管理系统的扩展性和维护成本以及仓库本身的规模来说,本系统采用B/S(浏览器/服务器)的软件系统架构体系最为合适。
使用B/S模式的系统,服务器维护升级方便而且客户端无需专门下载应用程序,同时具有较好的网络扩展性,可以支持TCP/IP协议直接连接Internet。对于该模式而言,数据和程序的物理位置的重要性已经大幅度降低,使用者只需要知道它的网址即可,所以可以相信B/S模式能够满足该系统的设计需求。
本套仓库管理系统有八大功能模块,包括:销售管理、资料管理、库存管理、采购管理、统计信息、权限管理、个人信息管理、以及日志信息管理,在各模块下还有相应的子功能。资料管理下有供应商管理和客户端管理两个子功能,采购管理下有采购入库和采购信息管理两个子功能,销售管理下有销售出库和销售信息查询两个子功能,库存管理下有库存一览一个子功能,统计管理下有销售统计、月销售统计两个子功能,权限管理下有用户管理、角色管理两个子功能、个人信息管理下有修改密码一个子功能、日志信息管理下有日志一览一个子功能。总体功能图如图4-1所示。
在这里插入图片描述

E_R图

E_R图是数据库设计中必不可少的部分,它关系着数据是否具有完整性。E_R图是否完整决定着实体是否具有完整性,实体是否完整又决定着数据是否完整。实体的完整性是用来对照虚拟操作和现实业务的。实体关系图标示着各数据库间的关联关系。
系统的总体E_R图如图4-2所示,共4个对象,分别是供应商、货物、仓库和用户管理员。供应商有供应商名称、负责人、联系方式、地址、经营范围等属性,货物有商品编号、商品名称、品牌、类别、采购价等属性。用户管理员有角色、用户名、密码、真实姓名、权限等属性,仓库有库存、出库、入库等属性。供应商和货物的关系是供应商供应货物,供应商和用户管理员的关系是用户管理员需要供应商供货,仓库和货物的关系是仓库储存货物。
在这里插入图片描述

系统实现

登录模块实现
用户在登录页面输入账号密码,点击登录后,系统会在数据库中先比对账号是否存在,如果不存在就会提示异常信息,如果账号存在则继续判断密码是否正确,错误就会提示异常信息,正确则登录成功,运行结果如图4-4、4-5所示。
在这里插入图片描述
在这里插入图片描述
采购管理模块
采购管理模块主要是完成商品采购入库功能,具体操作步骤如下:首先选择已有供应商,其次输入商品信息,如商品名称、品牌、采购价和采购数量等,然后系统判断信息是否合法,如果不合法则提示异常,需重新输入,合法则提交信息到数据库,最后给出数据提交结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
销售出库模块
销售出库模块主要是完成商品销售出库功能,出库功能具体操作步骤如下:首先选择已有客户,其次输入商品信息,如商品名称、建议零售价、出库数量等,然后点击出库,由系统判断信息是否合法,如果不合法则提示异常,需重新输入,合法则系统会操作数据库减少该种商品的数量,最后给出数据提交结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
权限管理模块
权限管理模块主要是用来区分不同用户的不同权限,通过判定账号的权限确定该账号可以使用系统的那些功能。该模块有用户管理和角色管理两个子功能。
在这里插入图片描述
在这里插入图片描述
库存管理模块
库存管理模块的主要功能是查看整个仓库的库存,从而能更清晰的做出采购和销售的决策,该模块下有库存一览一个子功能,库存一览中可以修改商品单价,还可以通过商品名称和商品数量范围搜索仓库中的商品。
在这里插入图片描述
在这里插入图片描述
由于时间有限,没有细描述。如需要参考,可以联系!下方有联系方式!

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

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

相关文章

FreeRtos-13资源管理

一、临界资源是什么 要独占式地访问临界资源,有3种方法: 1.公平竞争:比如使用互斥量,谁先获得互斥量谁就访问临界资源,这部分内容前面讲过。 谁要跟我抢,我就灭掉谁: 2.中断要跟我抢?我屏蔽中断 3.其他任务要跟我抢?我禁止调度器,不运行任务切换 二、暂停调度器…

【C语言】自定义类型

目录 一、结构体: 1、结构体的声明: 2、结构体的自引用: 3、结构体变量的定义和初始化: 4、结构体内存对齐: 5、结构体传参: 6、位段: 二、枚举类型: 三、联合体&#xff1a…

网络安全:什么是SQL注入

文章目录 网络安全:什么是SQL注入引言SQL注入简介工作原理示例代码 攻击类型为什么SQL注入危险结语 网络安全:什么是SQL注入 引言 在数字化时代,数据安全成为了企业和个人最关心的问题之一。SQL注入(SQL Injection)是…

【LLM之RAG】RAT论文阅读笔记

研究背景 近年来,大型语言模型(LLMs)在各种自然语言推理任务上取得了显著进展,尤其是在结合大规模模型和复杂提示策略(如链式思维提示(CoT))时。然而,LLMs 在推理的事实…

C++的智能指针 RAII

目录 产生原因 RAII思想 C11的智能指针 智能指针的拷贝与赋值 shared_ptr的拷贝构造 shared_ptr的赋值重置 shared_ptr的其它成员函数 weak_ptr 定制删除器 简单实现 产生原因 产生原因:抛异常等原因导致的内存泄漏 int div() {int a, b;cin >> a…

手机usb共享网络电脑没反应的方法

适用于win10电脑,安卓手机上可以 开启usb网络共享选择,如果选择后一直跳,让重复选择usb选项的话,就开启 开发者模式,进到 开发者模式 里设置 默认usb 共享网络 选项 ,就不会一直跳让你选。 1.先用数据线 连…

八大经典排序算法

前言 本片博客主要讲解一下八大排序算法的思想和排序的代码 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:排序_普通young man的博客-CSDN博客 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 目录 …

HTTP详细总结

概念 HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 特点 基于TCP协议: 面向连接,安全 TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在…

Linux管道与重定向

管道 是进程通信的方法之一,在Linux中用命令1|命令2的形式表示,将前一个命令的结果作为后续命令的参数进行输入,也有tee管道,可以进行多次筛选,即多次使用|过滤命令。 重定向 文件描述符FD Linux中输入输出分为三种…

C语言变量、指针的内存关系

1. type p ? 表示从内存地址p开始,开辟一段内存,内存大小为类型type规定的字节数,然后把等号右边的值写入到这段内存中。 因此,这块内存起点位置是p,结束是ptype字节数-1。 2. type* p ?表示从内存地址p开始&…

SpingBoot快速入门下

响应HttpServietResponse 介绍 将ResponseBody 加到Controller方法/类上 作用:将方法返回值直接响应,如果返回值是 实体对象/集合,将会自动转JSON格式响应 RestController Controller ResponseBody; 一般响应 统一响应 在实际开发中一般…

Python学习打卡:day11

day11 笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了 目录 day1183、自定义 Python 包创建包导入包方式1方式2方式3方式4 84、安装第三方包安装第三方包——pippip的网络优化 安装第三方包——PyCharm 85、…

代码随想录-Day36

452. 用最少数量的箭引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂…

基于WPF技术的换热站智能监控系统16--动态数据绑定

1、实现思路 1)实时读取到的数据绑定到前台UI控件上,这个通过MVVM模式实现,同时注意实时读取必须通过任务task异步方式,这就需要读取PLC数据。 2)UI控件的动作,如开或关水泵,必定能够将值写入…

Python | Leetcode Python题解之第169题多数元素

题目: 题解: class Solution:def majorityElement(self, nums: List[int]) -> int:count 0candidate Nonefor num in nums:if count 0:candidate numcount (1 if num candidate else -1)return candidate

Java | Leetcode Java题解之第171题Excel表列序号

题目: 题解: class Solution {public int titleToNumber(String columnTitle) {int number 0;int multiple 1;for (int i columnTitle.length() - 1; i > 0; i--) {int k columnTitle.charAt(i) - A 1;number k * multiple;multiple * 26;}ret…

《Windows API每日一练》5.2 按键消息

上一节中我们得知,Windows系统的按键消息有很多类型,大部分按键消息都是由Windows系统的默认窗口过程处理的,我们自己只需要处理少数几个按键消息。这一节我们将详细讲述Windows系统的所有按键消息及其处理方式。 本节必须掌握的知识点&…

wsl2平台鸿蒙全仓docker编译环境快速创建方法

文章目录 1 文章适用范围:2 WSL环境安装3 镜像迁移非C盘4 Docker环境准备4.1 docker用户组和用户创建4.2 Docker环境配置4.2.1 Ubuntu下安装docker工具4.2.2 鸿蒙Docker环境安装4.2.3 鸿蒙全仓代码拉取编译 5 鸿蒙全仓代码的更新策略6 参考文献7 FAQ7.1 缺头文件xcr…

每天写java到期末考试(6.21)--集合4--练习--6.20

练习1&#xff1a; 正常写集合 bool类 代码&#xff1a; import QM_Fx.Student;import java.util.ArrayList;public class test {public static void main(String[] args) {ArrayList<Student> listnew ArrayList<>();//2.创建学生对象Student s1new Student(&quo…

【面试干货】throw 和 throws 的区别

【面试干货】throw 和 throws 的区别 1、throw1.1 示例 2、throws2.1 示例 3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java中&#xff0c;throw和throws都与异常处理紧密相关&#xff0c;但它们在使用和含义上有明显的区别。…