当前位置: 首页 > news >正文

springboot中药材进存销管理系统

 基于springboot+vue实现的中药材进存销管理系统  (源码+L文+ppt)4-079 

图片

4 系统总体设计  

4.1系统功能结构设计图  

根据需求说明设计系统各功能模块。采用模块化设计方法实现一个复杂结构进行简化,分成一个个小的容易解决的板块,然后再将小的板块继续分化成功能单一的更小模块。模块化设计方法使测试调试、维护更容易,减少模块间的干扰。各模块可以同时开发提高开发效率。本系统功能结构图:

图片

图 4-1系统功能结构图

4.2 数据库设计与实现  

在进行信息管理类型的系统的开发中,都是需要以数据库的设计为基础来进行详细的设计与开发的。

4.2.1  E-R模型简介  

一般在进行数据库结构的划分时,常使用到E-R图来进行直观的展示。在一个图中有三种元素,分别为实体、属性,以及两者之间的联系。    

(1)实体指的是一种具体的事务,可以是任何东西。

(2)联系指的是实体与它的属性之间的关系,可以有不同种类的联系。

(3)属性指的是一个实体本身的特点。

4.2.2  系统E-R图  

E-R图是由实体及其关系构成的图,通过E-R图可以清楚地描述系统涉及到的实体之间的相互关系。将“客户信息、供应商、中药材、员工、药材入库”等作为实体,它们的局部E-R图,如图4-2所示:

图片

图4-2局部E-R图

4.2.3 系统数据表设计  (共13张表)

数据库表的设计通常是根据业务逻辑设置的。数据库模型在数据库中设计,并根据模型创建数据库表。数据库包含以下数据表来实现对数据库的存储和调用。以下是每个数据表的字段名称、类型、长度、字段说明、主键和默认值。    

表4-1:客户信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

                        

主键

主键

                        

addtime

timestamp

                        

创建时间

                        

CURRENT_TIMESTAMP

kehubianhao

varchar

200

客户编号

                        

                        

kehumingcheng

varchar

200

客户名称

                        

                        

kehudizhi

longtext

4294967295

客户地址

                        

                        

fuzeren

varchar

200

负责人

                        

                        

lianxifangshi

varchar

200

联系方式

                        

                        

dengjishijian

datetime

                        

登记时间

                        

                        

kehuxiangqing

longtext

4294967295

客户详情

                        

                        

此处省略11张表。。。

表4-13:token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

                        

主键

主键

                        

userid

bigint

                        

用户id

                        

                        

username

varchar

100

用户名

                        

                        

tablename

varchar

100

表名

                        

                        

role

varchar

100

角色

                        

                        

token

varchar

200

密码

                        

                        

addtime        

timestamp

                        

新增时间

                        

CURRENT_TIMESTAMP

expiratedtime

timestamp

                        

过期时间

                        

CURRENT_TIMESTAMP

4.3小结  

本章刚开始总结了整个系统的总体功能,以树型图展示出来,使得看上去更加清晰明朗,而后介绍了每一个模型的属性和对数据库表的设计。

                

5 系统详细设计与实现  

按照软件工程的流程来说,在系统的详细设计与实现阶段,要把模块、视图、模板进行相应的组合完成一个个所需的功能,此章将会把设计中模块一一说明如何设计和实现的。

5.1系统注册登录功能实现  

在注册流程中,用户在Vue前端填写必要信息(如用户名、密码等)并提交。前端将这些信息通过HTTP请求发送到Java后端。后端处理这些信息,检查用户名是否唯一,并将新用户数据存入MySQL数据库。完成后,后端向前端发送注册成功的确认,前端随后通知用户完成注册。这个过程实现了新用户的数据收集、验证和存储。注册页面如图5-1所示:

图片

图5-1 系统注册界面

                

在登录流程中,用户首先在Vue前端界面输入用户名和密码。这些信息通过HTTP请求发送到Java后端。后端接收请求,通过与MySQL数据库交互验证用户凭证。如果认证成功,后端会返回给前端,允许用户访问系统。这个过程涵盖了从用户输入到系统验证和响应的全过程。如图5-2所示:    

图片

图5-2系统登录页面

5.2管理员功能实现  

管理员进入主页面,主要功能包括对个人中心、员工管理、供应商管理、客户信息管理、中药材类型管理、中药材管理、药材出库管理、药材入库管理、销售信息管理、采购信息管理、系统管理等进行操作。如图5-3所示。

图片

图5-3 管理员主界面

                

员工功能在视图层(view层)进行交互,比如点击“查询、添加或删除”按钮或填写员工表单。这些员工表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改或删除员工信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便员工功能可以看到最新的信息或相应的操作反馈。如图5-4所示:    

图片

图5-4员工界面

                

供应商功能在视图层(view层)进行交互,比如点击“查询、添加或删除”按钮或填写供应商信息表单。这些供应商信息动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改或删除供应商信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便供应商功能可以看到最新的信息或相应的操作反馈。如图5-5所示:    

图片

图5-5供应商界面

客户信息功能在视图层(view层)进行交互,比如点击“查询、添加或删除”按钮或填写客户信息表单。这些客户信息动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改或删除客户信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便客户信息功能可以看到最新的信息或相应的操作反馈。如图5-6所示:

图片

图5-6客户信息界面

                

中药材类型功能在视图层(view层)进行交互,比如点击“查询、添加或删除”按钮或填写中药材类型信息表单。这些中药材类型信息动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改或删除中药材类型信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便中药材类型信息功能可以看到最新的信息或相应的操作反馈。如图5-7所示:    

图片

图5-7中药材类型界面

                

中药材功能在视图层(view层)进行交互,比如点击“查询、添加或删除”按钮或填写中药材信息表单。这些中药材信息动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改或删除中药材信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便中药材信息功能可以看到最新的信息或相应的操作反馈。如图5-8所示:    

图片

图5-8中药材界面

5.3员工功能实现  

员工进入主页面,主要功能包括对个人中心、中药材管理、药材出库管理、药材入库管理、销售信息管理、采购信息管理等进行操作。如图5-9所示。

图片

图5-9员工主界面 

点击领取源码

相关文章:

springboot中药材进存销管理系统

基于springbootvue实现的中药材进存销管理系统 (源码L文ppt)4-079 4 系统总体设计 4.1系统功能结构设计图 根据需求说明设计系统各功能模块。采用模块化设计方法实现一个复杂结构进行简化,分成一个个小的容易解决的板块,然…...

GitHub上图像超分开源项目推荐【持续更新】

SRCNN 介绍:SRCNN(Super-Resolution Convolutional Neural Network)是一种用于图像超分辨率的卷积神经网络。它由Dong等人在2014年提出,是早期的深度学习方法之一,用于提高图像的分辨率。SRCNN通过学习低分辨率&#…...

浅谈软件测试的基础知识(1)

文章目录 一、什么是测试1.1、生活中的测试案例1.2、为什么需要进行软件测试 二、测试和开发的区别2.1、调试和测试的区别 四、测试人员需具备哪些素质五、软件的生命周期六、软件测试的生命周期七、设计测试用例的方法[!]7.1、什么是测试用例7.2、测试用例作用 八、走测试岗位…...

Mac 上哪个剪切板增强工具比较好用? 好用剪切板工具推荐

在日常文字编辑中,我们经常需要重复使用复制的内容。然而,新内容一旦复制,旧内容就会被覆盖。因此,选择一款易用高效的剪贴板工具成为了许多人的需求。本文整理了一些适用于 macOS 系统的优秀剪贴板增强工具,欢迎大家下…...

基于opencv的车牌检测和识别系统(代码+教程)

车牌检测与识别技术详解 车牌检测和识别(License Plate Recognition, LPR)是一项重要的计算机视觉任务,它在交通管理、安全监控以及智能门禁系统等多个领域都有着广泛的应用。随着深度学习技术的发展,LPR系统的准确性和鲁棒性得到…...

list(二) (list模拟实现)

首先进行大框架 先写基本的结点类 有data next prev template<class T>class ListNode//或者使用struct 就不用在写public声明公有{public://这里不仅仅是成员函数 成员变量也要公有化 ListNode<T>* _next;ListNode<T>* _prev;T _data;}之后是链表list类…...

[Linux]从零开始的泰山派系统安装与远程教程

一、前言 泰山派买回来也有一阵子了&#xff0c;最近慢慢开始研究。当然&#xff0c;学习这种Linux的开发板的第一步就是安装系统&#xff0c;对于RK系列的芯片系统安装有专门的软件&#xff0c;所有在系统安装方面比较简单。更多的还是我们应该怎么去编译系统&#xff0c;这一…...

Python国产新 ORM 框架 fastzdp_sqlmodel 快速入门教程

创建模型 from typing import Optional from sqlmodel import Field, SQLModel import fastzdp_sqlmodel as fasmclass Hero(SQLModel, tableTrue):id: Optional[int] Field(defaultNone, primary_keyTrue)name: strsecret_name: strage: Optional[int] None创建表 from ty…...

面试速通宝典——3

51. 野指针和内存泄漏是什么&#xff1f;如何避免&#xff1f; ‌‌‌‌  内存泄漏&#xff1a;是指程序中以动态分配的堆内存由于某种原因程序未释放或无法释放&#xff0c;造成系统内存的浪费&#xff0c;导致程序运行速度减慢甚至系统崩溃等严重后果。 ‌‌‌‌  避免&…...

每天一个数据分析题(四百七十三)- 元数据

下列哪些元素属于元数据内容&#xff1f; &#xff08;&#xff09; A. 名称 B. 长度 C. 类型 D. 取值范围 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python&#xff0c;SQL&#xff0c;统计学…...

产品经理面试整理-练习常见面试问题

练习常见面试问题是准备产品经理面试的重要环节。掌握这些问题的回答思路,不仅能帮助你在面试中更加自信,还能展示你对产品管理的深入理解。以下是一些常见的产品经理面试问题,以及如何高效准备这些问题的指南。 1. 常见面试问题及回答思路 1.1 你如何定义产品成功? ●...

一步到位的智慧:BI可视化大屏在复杂环境中如何精准拾取目标

在可视化设计器中实现良好的组件拾取功能&#xff0c;是提升用户体验和设计效率的关键。它们不仅能够提升用户体验和操作效率&#xff0c;还能够增强设计的灵活性和精度&#xff0c;促进设计创新&#xff0c;并最终提升设计的质量和价值。因此&#xff0c;在可视化设计过程中&a…...

前端开发迎来新机会,全栈转型就靠这个!

在如今的开发世界&#xff0c;全栈开发者已成为许多前端开发者的新目标。随着技术的不断演进&#xff0c;前端不再局限于写页面和样式&#xff0c;而是逐渐向后端延伸&#xff0c;甚至触及数据库和云服务。如果你想在职业道路上更进一步&#xff0c;向全栈开发者靠拢&#xff0…...

关于less的基本使用

1、介绍及概述 1.1、解释 less 是方便开发人员书写CSS的一门预处理语言。浏览器只认识html /css /js格式的文件&#xff0c;所以直接引入.less文件&#xff0c;没有任何的效果&#xff0c;需要把less文件转换成css文件 1.2、概述 CSS弊端&#xff1a; 没有逻辑性、变量、函…...

python 将 aac 转为 mp3,保持原有目录结构

需要提前安装 FFmpeg import os import subprocess import time from concurrent.futures import ThreadPoolExecutor, as_completeddef convert_file(input_path, output_path):command [ffmpeg,-y, # 自动覆盖现有文件-i, input_path,-acodec, libmp3lame,-b:a, 192k,outpu…...

考研数据结构——C语言实现折半查找

首先定义了一个有序数组a&#xff0c;然后计算出数组的长度n。接着定义了一个要查找的元素x&#xff0c;值为79。binarySearch函数实现了二分查找算法&#xff0c;它接受数组、左右边界和目标值作为参数&#xff0c;通过不断缩小搜索范围来查找目标值。如果找到了目标值&#x…...

【游戏引擎】C++自制游戏引擎 Lunar Game Engine

Lunar-Game Engine 仓库位置 Lunar Game Engine Lunar GameEngie是几个渣渣业余写的基于C的游戏引擎。 相比于比较成熟的引擎&#xff0c;该引擎的特点如下 结构,标准混乱bug众多根本不能用&#xff01; 最后的最后 To The Moon and Beyond! 简介 Luna Engine基于 C 和…...

使用【Sa-Token】实现Http Basic 认证

使用Sa-Token开源架构快速实现Http Basic 认证&#xff0c;如上图 1、springboot环境下直接添加starter即可 <!-- Sa-Token 权限认证&#xff0c;在线文档&#xff1a;https://sa-token.cc --> <dependency><groupId>cn.dev33</groupId><artifactI…...

layui table中的checkbox禁用问题

在项目开发中遇到table框已经选择过的数据不支持二次选择从而要禁用复选框不许选中&#xff0c;但会导致复选框全选时layui的table组件源码中赋值时是根据全部复选框的下标顺序来赋值到数组中返回给你&#xff0c;这样已被禁用复选框的数据也会被push到数组中导致数据错乱&…...

102.SAPUI5 sap.ndc.BarcodeScannerButton调用摄像头时,localhost访问正常,使用IP访问失败

目录 原因 解决办法 1.修改谷歌浏览器的setting 2.在tomcat中配置https访问 参考 使用SAPUI5的sap.ndc.BarcodeScannerButton调用摄像头时&#xff0c;localhost访问正常&#xff0c;使用IP访问时&#xff0c;一直打不开摄像头&#xff0c;提示getUserMedia()问题。 原因…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...