基于Springboot+Vue实现前后端分离进销存管理系统

基于若依技术底座开发进销存系统 平台简介 基于若依微服务源码做一个集成docker脚本的小demo,原代码结构不变,只添加oms功能模块。 新增wms-oms模块 ##代码改动: nacos指令:startup -m standalone 本地运行先设置hosts 127.0.0.1 nacos 127.0.0.1 mysql 127.0.0.1 redis 127.0.0.1 wms-auth 127.0.0.1 wms-gateway 127.0.0.1 wms-system 127.0.0.1 wms-oms 阅读详情

作者主页:编程千纸鹤

作者简介:Java、前端、Pythone开发多年,做过高程,项目经理,架构师

主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享

项目编号:BS-XX-144

引言:

目前整个社会已经进入到一个商品异常丰富的商品时代,商业化的高度发展也加速了商品流通的速度,很多的生产企业和商贸公司也遍地开花似的蓬勃发展起来了。而如何去有效的管理这些琳琅满目的商品的采购、销售、库存信息,是面临的一大难题,传统的靠人工去管理的方式即效率低下,又容易出错,造成损耗,还无法及时统计信息。在当今信息化技术普遍应用的今天,如何利用信息化和数字化去管理商品的进销存信息,是一个值得研究的问题。

本次经过调研走访开发设计的这套进销存管理系统,它的设计与开发主要基于Java开发语言平台,采用Spring 全家桶技术中的轻量级Springboot框架技术,并结合JPA第三方持久层框架开发实现,前端页面使用ElementsUI进行页面的开发布局,并同时使用了Vue等前端技术进行页面美化和图形报表开发。进销存系统的业务数据存储则使用MySQL8数据库。系统使用Tomcat8.5.31来部署运行。

这套进销存管理系统的开发主要是采用产品设计开发的思路去做,尽量做的功能具有普遍适用性,经过走访调查,得出大多数商家的基本功能需求进而进行抽取整合,开发实现了这套进销存管理系统,它具有一定的社会推广性,对整个社会的商业化进行有着广泛而积极的意义。

一,项目简介

基于SpringBoot+Vue实现的一个比较全面的进销存管理系统。系统整体功能比较强大,操作人机交互性比较好,无论是从开发模式还是易用性和技术,都是比较优秀的一个项目,适合有些难度或要求较高的毕业设计项目使用。系统有着完备的权限管理控制,可以自行定义角色和用户并自由分配权限,不同的角色用户进入系统拥有的操作权限也不相同。主要完成的功能 有:

  1. 用户注册登陆
  2. 首页仪表盘信息统计功能
  3. 图形报表统计展示功能
  4. 系统管理模块
    1. 部门管理
    2. 用户管理
    3. 菜单管理
    4. 角色管理
    5. 商品分类管理
    6. 供应商管理
    7. 客户管理
  5. 采购管理模块
    1. 采购订单管理模块
    2. 采购入库管理模块
  6. 销售管理模块
    1. 销售订单管理模块
    2. 销售出库管理模块
  7. 库存管理模块
  8. 消息中心模块

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql8   Redis:redis5.0

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:Springboot+Mybatis-plus

前端开发技术:Nodejs+Vue+ElemenetUI

第三方技术:七牛云

三,系统展示

用户登陆

​

首页统计

​

​

消息管理

​

个人消息

​

采购订单

​

采购入库

​

销售订单

​

销售出库

​

库存管理

​

部门管理

​

菜单管理

​

角色管理

​

用户管理

​

商品分类管理

​

客户管理

​

供应商管理

​

四,核心代码展示

package cn.toesbieya.jxc.controller;

import cn.toesbieya.jxc.model.vo.LoginParam;
import cn.toesbieya.jxc.model.vo.PasswordUpdateParam;
import cn.toesbieya.jxc.model.vo.RegisterParam;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.service.AccountService;
import cn.toesbieya.jxc.util.SessionUtil;
import cn.toesbieya.jxc.util.IpUtil;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

@RestController
@RequestMapping("account")
public class AccountController {
    @Resource
    private AccountService service;

    @PostMapping("login")
    public R login(HttpServletRequest request, @Valid @RequestBody LoginParam param) {
        return service.login(param, IpUtil.getIp(request));
    }

    @GetMapping("logout")
    public R logout(HttpServletRequest request) {
        UserVo user = SessionUtil.get(request);
        return service.logout(user, IpUtil.getIp(request));
    }

    @PostMapping("register")
    public R register(@Valid @RequestBody RegisterParam param) {
        return service.register(param);
    }

    @PostMapping("updatePwd")
    public R updatePwd(@RequestBody PasswordUpdateParam param) {
        UserVo user = SessionUtil.get();
        param.setId(user.getId());

        String errMsg = validateUpdatePwdParam(param);
        if (errMsg != null) return R.fail(errMsg);

        return service.updatePwd(param);
    }

    @GetMapping("updateAvatar")
    public R updateAvatar(@RequestParam String key) throws UnsupportedEncodingException {
        if (StringUtils.isEmpty(key)) return R.fail("参数错误");

        return service.updateAvatar(SessionUtil.get(), URLDecoder.decode(key, "utf-8"));
    }

    @GetMapping("validate")
    public R validate(@RequestParam String pwd) {
        UserVo current = SessionUtil.get();

        if (!pwd.equals(current.getPwd())) {
            return R.fail("校验失败");
        }

        return R.success("校验通过");
    }

    @GetMapping("checkLoginName")
    public R checkLoginName(@RequestParam(required = false) Integer id, @RequestParam String name) {
        if (StringUtils.isEmpty(name)) {
            return R.success();
        }

        return R.success(service.isLoginNameExist(name, id) ? "该登录名已存在" : null);
    }

    @GetMapping("checkNickName")
    public R checkNickName(@RequestParam(required = false) Integer id, @RequestParam String name) {
        if (StringUtils.isEmpty(name)) {
            return R.success();
        }

        return R.success(service.isNickNameExist(name, id) ? "该昵称已存在" : null);
    }

    private String validateUpdatePwdParam(PasswordUpdateParam vo) {
        if (vo.getId() == null) return "修改失败,参数错误";
        if (StringUtils.isEmpty(vo.getOldPwd())) return "修改失败,原密码不能为空";
        if (StringUtils.isEmpty(vo.getNewPwd())) return "修改失败,新密码不能为空";
        if (vo.getOldPwd().equals(vo.getNewPwd())) return "修改失败,新密码不得与旧密码相同";
        if (vo.getNewPwd().length() != 32) return "修改失败,密码参数有误";
        return null;
    }
}
package cn.toesbieya.jxc.controller;

import cn.toesbieya.jxc.model.vo.search.StockSearch;
import cn.toesbieya.jxc.service.BizStockService;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;

@RestController
@RequestMapping("stock/current")
public class BizStockController {
    @Resource
    private BizStockService service;

    @PostMapping("search")
    public R search(@RequestBody StockSearch vo) {
        return R.success(service.search(vo));
    }

    @GetMapping("getDetail")
    public R getDetail(@RequestParam String cids) {
        if (StringUtils.isEmpty(cids)) return R.fail("参数错误");
        return R.success(service.getDetail(cids));
    }

    @GetMapping("getDetailById")
    public R getDetailById(@RequestParam String ids) {
        if (StringUtils.isEmpty(ids)) return R.fail("参数错误");
        return R.success(service.getDetailById(ids));
    }

    @PostMapping("export")
    public void export(@RequestBody StockSearch vo, HttpServletResponse response) throws Exception {
        service.export(vo, response);
    }
}
package cn.toesbieya.jxc.controller.sys;

import cn.toesbieya.jxc.model.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.search.CategorySearch;
import cn.toesbieya.jxc.service.sys.SysCategoryService;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

@RestController
@RequestMapping("system/category")
public class CategoryController {
    @Resource
    private SysCategoryService service;

    @GetMapping("getAll")
    public R getAll() {
        return R.success(service.getAll());
    }

    @PostMapping("search")
    public R search(@RequestBody CategorySearch vo) {
        return R.success(service.search(vo));
    }

    @PostMapping("add")
    public R add(@RequestBody SysCategory category) {
        String errMsg = validateCategoryCreateParam(category);
        if (errMsg != null) return R.fail(errMsg);

        category.setId(null);
        category.setCtime(System.currentTimeMillis());
        return service.add(category);
    }

    @PostMapping("update")
    public R update(@RequestBody SysCategory category) {
        String errMsg = validateCategoryUpdateParam(category);
        if (errMsg != null) return R.fail(errMsg);

        return service.update(category);
    }

    @PostMapping("del")
    public R del(@RequestBody SysCategory category) {
        if (category.getId() == null) return R.fail("删除失败,参数错误");
        return service.del(category);
    }

    private String validateCategoryCreateParam(SysCategory category) {
        if (category.getPid() == null) return "创建失败,参数错误";
        if (StringUtils.isEmpty(category.getName())) return "创建失败,分类名称不能为空";
        return null;
    }

    private String validateCategoryUpdateParam(SysCategory category) {
        if (category.getId() == null) return "修改失败,参数错误";
        if (category.getPid() == null) return "创建失败,参数错误";
        if (StringUtils.isEmpty(category.getName())) return "创建失败,分类名称不能为空";
        return null;
    }
}

package cn.toesbieya.jxc.controller.sys;

import cn.toesbieya.jxc.model.entity.SysCustomer;
import cn.toesbieya.jxc.model.vo.search.CustomerSearch;
import cn.toesbieya.jxc.service.sys.SysCustomerService;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

@RestController
@RequestMapping("system/customer")
public class CustomerController {
    @Resource
    private SysCustomerService service;

    @GetMapping("getLimitRegion")
    public R getLimitRegion() {
        return R.success(service.getLimitRegion());
    }

    @PostMapping("search")
    public R search(@RequestBody CustomerSearch vo) {
        return R.success(service.search(vo));
    }

    @PostMapping("add")
    public R add(@RequestBody SysCustomer customer) {
        String errMsg = validateCreateParam(customer);
        if (errMsg != null) return R.fail("创建失败," + errMsg);

        customer.setId(null);
        customer.setCtime(System.currentTimeMillis());

        return service.add(customer);
    }

    @PostMapping("update")
    public R update(@RequestBody SysCustomer customer) {
        String errMsg = validateUpdateParam(customer);
        if (errMsg != null) return R.fail("修改失败," + errMsg);

        return service.update(customer);
    }

    @PostMapping("del")
    public R del(@RequestBody SysCustomer customer) {
        if (customer.getId() == null) return R.fail("删除失败,参数错误");
        return service.del(customer);
    }

    private String validateCreateParam(SysCustomer customer) {
        if (StringUtils.isEmpty(customer.getName())) return "客户名称不能为空";
        if (StringUtils.isEmpty(customer.getRegion())) return "客户行政区域不能为空";
        if (StringUtils.isEmpty(customer.getAddress())) return "客户地址不能为空";
        if (StringUtils.isEmpty(customer.getLinkman())) return "客户联系人不能为空";
        if (StringUtils.isEmpty(customer.getLinkphone())) return "客户联系电话不能为空";
        return null;
    }

    private String validateUpdateParam(SysCustomer customer) {
        if (customer.getId() == null) return "参数错误";
        return validateCreateParam(customer);
    }
}
package cn.toesbieya.jxc.controller.sys;

import cn.toesbieya.jxc.model.entity.RecUserAction;
import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.search.UserSearch;
import cn.toesbieya.jxc.util.ThreadUtil;
import cn.toesbieya.jxc.service.sys.SysUserService;
import cn.toesbieya.jxc.model.vo.R;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;

@RestController("sysUserController")
@RequestMapping("system/user")
public class UserController {
    @Resource
    private SysUserService service;

    @PostMapping("search")
    public R search(@RequestBody UserSearch vo) {
        return R.success(service.search(vo));
    }

    @PostMapping("add")
    public R add(@RequestBody SysUser user) {
        String errMsg = validateUserCreateParam(user);
        if (errMsg != null) {
            return R.fail(errMsg);
        }
        return service.add(user);
    }

    @PostMapping("update")
    public R update(@RequestBody SysUser user) {
        String errMsg = validateUserUpdateParam(user);
        if (errMsg != null) {
            return R.fail(errMsg);
        }
        return service.update(user);
    }

    @PostMapping("del")
    public R del(@RequestBody SysUser user) {
        if (user.getId() == null) {
            return R.fail("删除失败");
        }
        return service.del(user);
    }

    @PostMapping("kick")
    public R kick(@RequestBody List<SysUser> users) {
        if (users == null || users.isEmpty()) {
            return R.fail("参数错误");
        }
        RecUserAction action = ThreadUtil.getAction();
        List<String> names = users.stream().map(SysUser::getLoginName).collect(Collectors.toList());
        action.setAction("踢出用户:【" + String.join(",", names) + "】");

        return service.kick(users);
    }

    @PostMapping("resetPwd")
    public R resetPwd(@RequestBody SysUser user) {
        if (user.getId() == null || StringUtils.isEmpty(user.getLoginName())) {
            return R.fail("参数错误");
        }
        return service.resetPwd(user);
    }

    private String validateUserCreateParam(SysUser user) {
        if (user.getId() != null) return "创建失败,参数错误";
        if (StringUtils.isEmpty(user.getLoginName())
                ||StringUtils.isEmpty(user.getNickName())) {
            return "创建失败,用户名称不能为空";
        }
        if (user.getRole() == null) return "创建失败,用户角色不能为空";
        return null;
    }

    private String validateUserUpdateParam(SysUser user) {
        if (user.getId() == null) return "修改失败,参数错误";
        if (StringUtils.isEmpty(user.getLoginName())
                ||StringUtils.isEmpty(user.getNickName())) {
            return "创建失败,用户名称不能为空";
        }
        if (user.getRole() == null) return "修改失败,用户角色不能为空";
        return null;
    }
}

五,项目总结

数字化和信息化是近年来各行业的发展趋势。各种规模的公司正在迅速崛起。许多从事生产经营管理的企业都有自己的产品生产和销售,其中有代表性的就是各大超市与食品工厂。这些超市和工厂的食品需要存放在仓库中。对于每个超市和工厂来说,随着规模的不断扩大和产品数量的急剧增加,产品的种类将不断更新和发展,关于产品的信息量也将成倍增长。面对海量的产品信息,如何有效地管理库存产品对这些超市和工厂来说非常重要。仓库管理的重点是销售信息能否及时反馈,从而保证超市和工厂的运营效率。在当今的数字时代,为了加快仓库管理员的管理,我们必须依靠计算机,使货物数据的管理更加简单和到位。基于以上原因,迫切需要开发一套进销存管理系统。本文是基于计算机对仓库中的大量数据进行处理和处理的研究。

进销存管理涉及产品进出仓库、销售人员和客户等各个方面。如何管理这些信息数据是一项复杂的系统工程,它充分考验着仓库管理员的工作能力。可以想象,工作量很重。因此,需要设计出一套进销存管理系统来提高库存管理的效率,这对于规范管理、数据统计、快速查询信息、减少管理工作量、调动员工积极性、提高生产效率具有重要的现实意义。

在我国,从二十世纪七十年代计算机得以应用后,国内企业才逐渐配合该技术产生相应进销存管理应用,然而受当时软硬件水平局限该类系统也仅支持完成那些较简单性的管理操作。直到八十年代,沈阳一家鼓风机厂率先引进COPICS系统(由IBM公司开发)才打破此种僵局,拉开在我国畜牧业应用MRPII系统的序幕[10]。

到上世纪末,受计算机技术发展及863计划双重影响,我国大量企业开始引进使用外国先进系统来完善自身企业管理。

    本世纪以来,在我国实施信息化带动工业化政策响应下,更多外国先进知名企业开始青睐我国市场,在我国加设办事处。不仅增大了我国市场还激发了国有化产品的研发.进度,也给我国进销存管理应用软件行业带来了新的契机促进其高速发展。一时之间我国的联想、华为等许多知名企业基于其所引进的外国先进软件结合自身实际情况与市.场需要,开发出了许多更加适合我国实际问题的应用商品,并在推出后取得极好的市场反映。

基于Springboot+Vue实现前后端分离进销存管理系统_系统计划采用spring boot、vue为主要开发技术,基于web开发,前后端分离开发模 语言环境:Java: jdk1.8数据库:Mysql: mysql8 Redis:redis5.0应用服务器:Tomcat: tomcat8.5.31开发工具:IDEA或eclipse后台开发技术:Springboot+Mybatis-plus前端开发技术:Nodejs+Vue+ElemenetUI第三方技术:七牛云。 阅读详情

相关推荐

进销存管理系统(vue+antd vue+node+sql)

1.采用的是Vue2.0版本 2.采用的组件库是 antdv desigin vue 和 element-ui 3.页面基础的搭建采用的是 element-ui 4.页面的组件和功能采用的是 antdv 5.系统是单个路由页面进行搭建 6.页面与页面之间不存在,很强的联系(容易看懂,并且附带注释),可以用于毕业设计,本人是用来进行毕设使用的 8.后台部分请联系我,后期会有完整的内容!!!!!!!!!!!!!!,目前我会一直去更新此系统!!!!!!有想法的同学可以联系我一起开发,你们也可以拉取 希望可以帮到大家!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

若依框架----进销存系统(一)

结合若依框架进销存系统数据库配置

2706

基于Java和RuoYi二次开发的KS进销存系统设计源码

本资源提供了一套基于Java和RuoYi二次开发的KS进销存系统设计源码,包含936个文件,其中包括304个Java源代码文件,149个JavaScript脚本文件,101个Vue组件文件,90个PNG图片文件,88个SVG矢量文件,46个GIF图片文件,39个XML配置文件,28个HTML页面文件,以及20个CSS样式文件。此外,还包括13个VM虚拟机文件。该系统是一个进销存系统,其采购、销售、库存功能与业务流程简洁清晰,非常适合小型经销商系统转型。与传统的专业性非常强的进销存系统不同,该系统的流程更贴近小公司,在流程高效的同时,也满足小型经销商的需求。

基于SpringBoot+Vue的汽车配件进销存管理系统的设计与实现(代码+LW文档+远程运行)

Spring Boot 是基于 Spring 框架的快速开发框架,它通过简化配置、自动装配和开箱即用的特性,极大地提高了Java后端开发的效率。其核心理念是“约定优于配置”,让开发者能够专注于业务逻辑的实现,而不必过多关注复杂的框架配置。Spring Boot 的最大优势之一是快速开发。它集成了大量常用的第三方库和Spring组件,如Spring MVC、Spring Data JPA、Spring Security等,并提供了默认配置,使开发者可以快速构建出功能完善的Web应用或微服务系统。

程序员mxj的博客 737

基于Vue+SpringBoot进销存管理系统源码.zip

基于Vue+SpringBoot进销存管理系统源码.zip

基于springboot+vue实现进销存管理系统前后端分离(springboot+vue+mybatis+JWT+shiro)

系统功能如下: ┌─销售管理 │ ├─销售报价 │ ├─销售订单 │ └─销售统计 ├─采购管理 │ ├─采购申请 │ ├─采购询价 │ ├─采购报价 │ ├─采购比价 │ ├─采购订单 │ ├─采购预付申请 │ ├─采购付款申请 │ └─采购统计 ├─库存管理 │ ├─入库管理 │ ├─出库管理 │ ├─其他管理 │ ├─即时库存 │ └─出入库统计 ├─应收与收款 │ ├─应收管理 │ ├─预收管理 │ ├─收款管理 │ └─应收统计 ├─应付与付款 │ ├─应付管理 │ ├─预付管理 │ ├─付款管理 │ └─应付统计 ├─发票登记 ├─基础资料 ├─业务监控 │ ├─系统管理 ├─代码生成器 ├─系统监控

springboot基于SpringBoot+Vue的汽车用品进销存管理系统

摘要:本文介绍了一个基于SpringBoot+Vue的汽车用品进销存管理系统,旨在解决传统管理方式效率低下、数据易丢失等问题。系统采用前后端分离架构,后端使用SpringBoot框架实现高效数据处理,前端使用Vue.js构建交互界面。功能涵盖采购、销售、库存管理和财务分析等核心业务流程,支持条码扫描、多端数据同步等现代化操作。开发工具选用Eclipse,数据库采用MySQL,系统具有模块化、可扩展性强等特点,可帮助企业实现数字化管理转型,提升运营效率。

weixin_63982010的博客 731

基于OpenAI Agents构建多智能体工作流:从原理到实战

多智能体系统(Multi-Agent System)是人工智能领域的重要分支,它通过多个智能体(Agent)的协作与交互,解决单一智能体难以处理的复杂任务。其核心原理在于将任务分解、分配与协调,每个智能体具备特定能力,通过通信机制实现信息共享与决策协同。在工程实践中,多智能体框架的价值在于提升任务处理效率、增强系统鲁棒性,并支持模块化开发。典型的应用场景包括自动化工作流编排、复杂问题求解以及人机协同交互。本文以OpenAI Agents SDK为例,深入探讨如何利用其提供的智能体(Agent)、会话(Ses

weixin_28725959的博客 603

基于SpringBoot+Vue的前后端分离进销存管理系统的设计与实现-毕业设计

开发环境 JAVA8、MySQL5.7、SpringBoot2.1.0、Vue、ElementUI、JPA 主要功能 供应商管理:供应商、地区/ 地址/ 入库管理:商品编码,数量/金额等 出库管理:商品编码/数量/金额/操作员等/ 库存管理:商品名称,库存数量/ 商品类别管理:商品名称/单价/等 商品管理:商品名称、仓库、库存、定价、状态 用户管理:用户名、密码、状态、创建时间、登录时间、角色 角色管理:角色名称、操作权限 菜单管理:父级标题、标题名称、排序、创建时间 系统实现 供应商管理 入库管理 出

a10534126的博客 772

【EtherCAT实践篇一】TwinCAT 3安装、使用

FULL(XAE)安装包:包含了XAR的功能,并能进行多种语言的编程和硬件组态,通常安装在编程电脑上;XAR安装包:包含了ADS的功能,是实时运行环境,对 TwinCAT 模块进行加载、执行、管理、实时运行与调用,通常安装在PLC中;RM安装包:在装了高版本的TwinCAT 3后,发现PLC中的TwinCAT版本较低,就需要安装相应低版本的RM安装包切换版本使用(注:4024无法使用RM安装包切换到低于4022的版本,如4020/4018/4016版本。

JXES智能生态系统 5128

Arduino ESP32S3 基础入门教学大纲

ESP32环境、Arduino

追梦 3547

基于SpringBoot+Vue的汽车用品进销存管理系统

Spring Boot 是基于 Spring 框架的快速开发框架,它通过简化配置、自动装配和开箱即用的特性,极大地提高了Java后端开发的效率。其核心理念是“约定优于配置”,让开发者能够专注于业务逻辑的实现,而不必过多关注复杂的框架配置。Spring Boot 的最大优势之一是快速开发。它集成了大量常用的第三方库和Spring组件,如Spring MVC、Spring Data JPA、Spring Security等,并提供了默认配置,使开发者可以快速构建出功能完善的Web应用或微服务系统。

程序员mxj的博客 645

【AI智能体】最强AI编程利器 Claude Code 从部署到项目实战详解

最强AI编程利器 Claude Code 从部署到项目实战详解

congge 4511

Springboot红胜超市进销存管理系统prt2c(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

项目功能:销售员,供应商信息,商品信息,客户信息,采购订货,采购退货,库存信息,入库信息,出库信息,库存盘点,商品零售,商品批发,商品退货,发票信息,商品收款单,商品付款单,收款类型,付款类型,收银汇总,采购员,职务类型,采购收款单,采购付款单。

weixin_41924130的博客 687

手把手教你学Simulink——基础储能管理场景实例:基于Simulink的压缩空气储能(CAES)系统简化模型仿真

本文介绍了基于Simulink的压缩空气储能(CAES)系统简化模型仿真方法。CAES作为大规模长时储能方案,相比锂电池具有成本低、寿命长等优势。文章详细讲解了AA-CAES系统组成、热力学建模理论,以及Simulink实现流程,包括储气室、压缩机、膨胀机等核心模块的建模方法。通过8小时充电(50MW)和6小时放电(40MW)的仿真,验证了系统可实现60%往返效率。该模型为理解CAES系统运行机制提供了实用工具,并指出热管理、储气室特性等工程实践要点,为新型电力系统储能规划提供了仿真基础。

MHD0815的博客 171

Spine骨骼动画查看器 - Skeleton Viewer

骨骼动画是现代游戏和动画制作中常用的技术之一。Spine骨骼动画查看器(Skeleton Viewer)是一个官方提供的工具,用于查看和调试Spine骨骼动画。本文将介绍Skeleton Viewer的功能和使用方法,并提供相应的源代码示例。通过Skeleton Viewer,开发者可以直观地查看和调试Spine骨骼动画,包括骨骼结构、动画播放和事件触发等。这有助于提高骨骼动画的质量和效果,并加速开发过程。以上代码演示了如何使用Skeleton Viewer查看和播放Spine骨骼动画。

HsvvDatabase的博客 3462

基于springboot+vue超市进销存管理系统

本文介绍了基于Spring Boot+Vue开发的超市进销存管理系统。系统采用前后端分离架构,包含进货管理、销售管理、库存管理、数据统计和系统管理五大核心模块,实现了采购、销售、库存全流程数字化管控。通过该系统,超市运营效率显著提升:采购审批周期缩短至4小时,库存准确率达99%,滞销商品清理效率提高60%。系统解决了传统人工管理模式下数据混乱、效率低下等问题,为超市提供了科学决策依据,推动运营从"经验驱动"向"数据驱动"转型,具有较高的实用价值和推广意义。

wqq_992250277的博客 833

go实现MQTT broker(附完整源码)

go实现MQTT broker(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 577

基于javaweb和mysql的springboot进销存管理系统(前后端分离+java+vue+springboot+ssm+mysql+maven+redis)

项目技术: Springboot + Maven + Mybatis-plus+ Vue + Redis + Shiro + Druid + logback 组成,B/S模萤;基于javaweb和mysql的springboot进销存管理系统(前后端分离+java+vue+springboot+ssm+mysql+maven+redis)基于javaweb的SpringBoot进销存管理系统(前后端分离+java+vue+springboot+ssm+mysql+maven+redis)

私信-在线源码及调试交流 418

YOLOv11与CLIP融合的零样本目标检测技术:原理、实现与创新实践

YOLO(You Only Look Once)系列作为单阶段检测器的代表,以其实时高效的特性在工业界获得广泛应用。YOLOv11作为该系列的最新演进,引入了多项架构创新: C3K2模块:采用双小卷积核替代传统大卷积核,在保持感受野的同时减少计算量。当参数c3k=False时退化为YOLOv8的C2F模块,提供灵活的精度-效率权衡。 C2PSA(Convolutional block with Parallel Spatial Attention):通过并行空间注意力机制增强对微小目标的特征提取能力,这对

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1068

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SpringBoot源码企业公司ERP进销存管理系统JavaWeb项目前后端分离Vue实现方案

随着企业信息化管理的需求日益增长,ERP(企业资源计划)系统成为企业提升管理效率、优化资源分配的重要工具。本项目旨在开发一套基于SpringBoot的源码企业公司ERP进销存管理系统,实现JavaWeb项目前后端分离,前端采用Vue框架,以满足企业对于进销存管理的需求。通过以上方案,我们可以开发出一套功能完善、性能稳定的SpringBoot源码企业公司ERP进销存管理系统,实现JavaWeb项目前后端分离,满足企业的进销存管理需求。二、技术选型与架构设计。三、系统功能与模块设计。

2500_94292699的博客 624

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: Springboot+Nodejs+Vue实现前后端分离校园二手交易平台
下一篇: 基于Springboot+Vue开发前后端端分离农产品进销存系统
编程千纸鹤
博客等级 码龄5年 2万+粉丝 1353原创
评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程千纸鹤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值