基于Java网上点餐系统设计与实现

博主介绍: ✌至今服务客户已经1000+、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌
🍅 文末获取源码联系 🍅
👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到

Java项目精品实战专区icon-default.png?t=N7T8https://blog.csdn.net/java18343246781/category_12537229.htmlJava各种开发工具资源包网站icon-default.png?t=N7T8http://62.234.13.119:9000/html/visitor/softwareResourceList.html

软件安装+项目部署专区icon-default.png?t=N7T8https://blog.csdn.net/java18343246781/category_12539864.htmlv


系列文章目录

前言

一、运行环境

二、代码示例

三、系统展示


前言

  在快节奏的现代生活中,网上点餐系统成为了满足用户便捷用餐需求的重要工具。本文将为您介绍一款多功能而智能的网上点餐系统,为用户提供了全方位的用餐体验。该系统的前端设计涵盖了各类便捷功能,使得用户可以轻松浏览菜单、分类点菜、加入购物车、下单,同时享受查看订单、管理钱包、地址、留言等一系列便捷服务。同时,后端管理功能丰富,包括对菜单、用户、留言、订单、餐桌等的全面管理,为商家提供了高效的运营工具。

  用户可以通过系统直观而美观的界面,轻松浏览丰富的菜单,根据个人口味和需求分类点菜,并随时加入购物车,构建个性化的点餐体验。一键下单后,用户可以方便地查看自己的订单,进行支付,同时管理自己的钱包、地址等信息。系统还提供了投诉信息和留言功能,用户可以通过系统表达建议、意见和需求,促进用户与商家的有效沟通。

  对于商家而言,后端管理系统为其提供了高效的工具,可以对菜单进行灵活管理,维护用户信息,处理留言和投诉,以及有效管理订单和餐桌。这使得商家能够更好地把握经营状况,提高服务水平。

  希望这款网上点餐系统能够为用户和商家之间搭建起一座便捷而愉悦的沟通桥梁,为现代餐饮行业注入更多智能化、便捷化的元素。

一、运行环境

系统采用了JDK 1.8作为基础开发环境,并搭建在Spring Boot框架之上,实现了快速、简便的Java应用程序开发。数据库方面选择了MySQL,作为可靠的关系型数据库管理系统,用于存储和管理商品、用户以及订单等相关数据。持久层框架方面使用了MyBatis和MyBatis Plus,简化了数据访问层的开发,提供了便捷的操作和功能。

        在前端设计上,系统使用了Layui框架,为用户提供了直观而美观的界面,包括商城列表、购物车、订单列表等功能。同时,为了实现动态页面生成,系统引入了Thymeleaf技术,与Spring框架良好集成,使得前端页面与后端数据更加紧密地结合,提升了用户体验。

二、代码示例

代码如下(示例):

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.wl.dto.OrdersDto;
import com.wl.enums.OrdersStateEnum;
import com.wl.enums.OrdersTypeEnum;
import com.wl.enums.TableStateEnum;
import com.wl.mapper.OrdersEntryMapper;
import com.wl.po.*;
import com.wl.service.*;
import org.apache.tomcat.util.buf.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;import javax.servlet.http.HttpSession;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;/*** 表现层控制类*/
@Controller
@RequestMapping("cart")
@Slf4j
public class ShoppingCartController {@Autowiredprivate ShoppingCartService shoppingCartService;@Autowiredprivate AddressService addressService;@Autowiredprivate WalletService walletService;@Autowiredprivate UserService userService;@Autowiredprivate DeskService deskService;@Autowiredprivate MenuService menuService;@Autowiredprivate OrdersService ordersService;@Autowiredprivate OrdersEntryService entryService;//加入购物车@ResponseBody@RequestMapping(value = "/addToCart", method = RequestMethod.GET)public String addToCart(String menuId, HttpSession session) {User user = comment(session);ShoppingCart cart = new ShoppingCart();cart.setUserId(Integer.parseInt(user.getId()));cart.setMenuId(Integer.parseInt(menuId));Integer count = shoppingCartService.selectCountByCart(cart);if (count == null || count == 0) {cart.setCount(1);shoppingCartService.addCart(cart);} else {cart.setCount(count + 1);shoppingCartService.updateCartCount(cart);}return "商品成功加入购物车";}//加入购物车@RequestMapping("addCart/{menuId}")public String addCart(@PathVariable("menuId") String menuId, HttpSession session) {User user = comment(session);ShoppingCart cart = new ShoppingCart();cart.setUserId(Integer.parseInt(user.getId()));cart.setMenuId(Integer.parseInt(menuId));Integer count = shoppingCartService.selectCountByCart(cart);if (count == null || count == 0) {cart.setCount(1);shoppingCartService.addCart(cart);} else {cart.setCount(count + 1);shoppingCartService.updateCartCount(cart);}return "redirect:/user/cart";}//批量删除购物车商品@RequestMapping("delAllCart")@ResponseBodypublic String delAllCart(String menuIds, HttpSession session) {String[] strings = null;String string = null;if (menuIds.contains("&")) {strings = menuIds.split("&");} else {string = menuIds;}User user = comment(session);if (string == null) {for (int i = 0; i < strings.length; i++) {ShoppingCart cart = new ShoppingCart();cart.setUserId(Integer.parseInt(user.getId()));cart.setMenuId(Integer.parseInt(strings[i]));shoppingCartService.delCart(cart);}} else {ShoppingCart cart = new ShoppingCart();cart.setUserId(Integer.parseInt(user.getId()));cart.setMenuId(Integer.parseInt(string));shoppingCartService.delCart(cart);}return "删除成功";}//购物车商品减一@RequestMapping("redCart/{menuId}")public String redCart(@PathVariable("menuId") String menuId, HttpSession session) {User user = comment(session);ShoppingCart cart = new ShoppingCart();cart.setUserId(Integer.parseInt(user.getId()));cart.setMenuId(Integer.parseInt(menuId));Integer count = shoppingCartService.selectCountByCart(cart);if (count > 1) {cart.setCount(count - 1);shoppingCartService.updateCartCount(cart);} else {shoppingCartService.delCart(cart);}return "redirect:/user/cart";}//单个商品下单详情页面@RequestMapping("choiceOrders")@ResponseBodypublic String choiceOrders(String menuIds, HttpSession session, Model model) {User user = comment(session);String[] strings = menuIds.split("&");//判断用户是否填写地址信息Address address = addressService.selectByUserId(user.getId());if (address.getAddress() == null || address.getName() == null || address.getPhoneNumber() == null) {return "地址信息未填写";}BigDecimal menuAllPrice = BigDecimal.ZERO;BigDecimal menuPrice;List<OrdersEntry> entryList = new ArrayList<>();for (int i = 0; i < strings.length; i++) {//购物车信息ShoppingCart cart = new ShoppingCart();cart.setUserId(Integer.parseInt(user.getId()));cart.setMenuId(Integer.parseInt(strings[i]));cart = shoppingCartService.selectCart(cart);//订单条目类Menu menu = menuService.selectByMenuId(Integer.parseInt(strings[i]));OrdersEntry entry = new OrdersEntry();entry.setCount(cart.getCount());entry.setDishName(menu.getDishName());entry.setPrice(menu.getPrice());menuPrice = menu.getPrice().multiply(new BigDecimal(cart.getCount()));entryList.add(entry);//累加计算订单总金额menuAllPrice = menuAllPrice.add(menuPrice);}//订单DTOOrdersDto ordersDto = new OrdersDto();ordersDto.setOrdersEntryList(entryList);ordersDto.setUserId(Integer.parseInt(user.getId()));ordersDto.setUserName(address.getName());ordersDto.setTotalPrice(menuAllPrice);ordersDto.setPhoneNumber(address.getPhoneNumber());ordersDto.setOrdersAddress(address.getAddress());ordersDto.setRemark(address.getRemark());ordersDto.setOrdersState(OrdersStateEnum.ORDERS_STATE_UNPROCESSED.getText());ordersDto.setOrdersType(OrdersTypeEnum.ORDERS_TYPE_ENTER.getText());model.addAttribute("ordersDto", ordersDto);session.setAttribute("choicePageSession", ordersDto);session.setAttribute("menuIdsSession", menuIds);return "true";}//单个下单,批量下单@ResponseBody@Transactional@RequestMapping("toOrdersOne")public String toOrdersOne(OrdersDto choiceDto, HttpSession session) {//判断的地址信息是否填写User user = comment(session);Address address = addressService.selectByUserId(user.getId());if (address.getAddress() == null || address.getName() == null || address.getPhoneNumber() == null) {return "地址信息未填写";}//下单前获取支付密码并判断输入密码是否正确Account account = (Account) session.getAttribute("account");Wallet wallet = walletService.selectWalletByAccountId(account.getId());OrdersDto dtoSession = (OrdersDto) session.getAttribute("choicePageSession");//余额判断if (dtoSession.getTotalPrice().compareTo(wallet.getMoney()) > 0) {return "余额不足";}if (!wallet.getPayPassword().equals(choiceDto.getPayPwd())) {return "密码错误";}//订单编号生成Date date = new Date();SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");String ordersNumber = format.format(date).concat(dtoSession.getUserId().toString());String menuIdsSession = (String) session.getAttribute("menuIdsSession");String[] strings = null;String string = null;if (menuIdsSession.contains("&")) {strings = menuIdsSession.split("&");} else {string = menuIdsSession;}//批量下单if (null == string) {for (String s : strings) {//购物车ShoppingCart cart = new ShoppingCart();cart.setUserId(dtoSession.getUserId());cart.setMenuId(Integer.parseInt(s));cart = shoppingCartService.selectCart(cart);//订单条目类Menu menu = menuService.selectByMenuId(Integer.parseInt(s));OrdersEntry entry = new OrdersEntry();entry.setCount(cart.getCount());entry.setDishName(menu.getDishName());entry.setOrdersNumber(ordersNumber);entry.setPrice(menu.getPrice());entryService.addEntry(entry);//订单生成后删除购物车中数据ShoppingCart cart1 = new ShoppingCart();cart1.setUserId(dtoSession.getUserId());cart1.setMenuId(Integer.parseInt(s));shoppingCartService.delCart(cart1);//商品销量加countmenu.setSale(menu.getSale() + cart.getCount());boolean b = menuService.updateDish(menu);}}//单个下单else {//购物车ShoppingCart cart = new ShoppingCart();cart.setUserId(dtoSession.getUserId());cart.setMenuId(Integer.parseInt(string));cart = shoppingCartService.selectCart(cart);//订单条目类Menu menu = menuService.selectByMenuId(Integer.parseInt(string));OrdersEntry entry = new OrdersEntry();entry.setCount(cart.getCount());entry.setDishName(menu.getDishName());entry.setOrdersNumber(ordersNumber);entry.setPrice(menu.getPrice());entryService.addEntry(entry);//订单生成后删除购物车中数据ShoppingCart cart1 = new ShoppingCart();cart1.setUserId(dtoSession.getUserId());cart1.setMenuId(Integer.parseInt(string));shoppingCartService.delCart(cart1);//商品销量加countmenu.setSale(menu.getSale() + cart.getCount());boolean b = menuService.updateDish(menu);}//订单Orders orders = new Orders();orders.setOrdersType(dtoSession.getOrdersType());//进店用餐 餐桌信息绑定if (dtoSession.getOrdersType().equals(OrdersTypeEnum.ORDERS_TYPE_ENTER.getText())) {orders.setOrdersTable(choiceDto.getOrdersTable());orders.setOrdersAddress(null);String reserveDate = choiceDto.getReserveDate();String ordersStartTime = choiceDto.getOrdersStartTime();String ordersEndTime = choiceDto.getOrdersEndTime();orders.setReserveDate(choiceDto.getReserveDate());orders.setOrdersStartTime(choiceDto.getOrdersStartTime());orders.setOrdersEndTime(choiceDto.getOrdersEndTime());deskService.updDesk(ordersNumber,choiceDto.getOrdersTable(), dtoSession.getUserId(), TableStateEnum.STATE_TRUE.getValue(), reserveDate,ordersStartTime,ordersEndTime);} else {//外卖配送 地址信息orders.setOrdersAddress(choiceDto.getOrdersAddress());orders.setOrdersTable(null);}orders.setPhoneNumber(choiceDto.getPhoneNumber());orders.setRemark(choiceDto.getRemark());orders.setUserId(dtoSession.getUserId());orders.setOrdersState(dtoSession.getOrdersState());orders.setOrdersType(dtoSession.getOrdersType());orders.setOrdersNumber(ordersNumber);orders.setUserName(dtoSession.getUserName());orders.setTotalPrice(dtoSession.getTotalPrice());ordersService.addOrders(orders);//钱包减BigDecimal subtract = wallet.getMoney().subtract(dtoSession.getTotalPrice());wallet.setMoney(subtract);walletService.updateWallet(wallet);return "下单成功";}//更新订单信息@ResponseBody@Transactional@RequestMapping("toUpdateOrders")public String toUpdateOrders(OrdersDto choiceDto, HttpSession session) {//下单前获取支付密码并判断输入密码是否正确Account account = (Account) session.getAttribute("account");//获取订单类型OrdersDto ordersDtoGetType = (OrdersDto)session.getAttribute("choicePageSession");//获取修改的订单编号String ordersNumberUpd = (String) session.getAttribute("ordersNumberUpd");Wallet wallet = walletService.selectWalletByAccountId(account.getId());if (!wallet.getPayPassword().equals(choiceDto.getPayPwd())) {return "密码错误";}//根据订单编号,更新订单信息Orders orders = new Orders();orders.setOrdersNumber(ordersNumberUpd);orders.setOrdersType(ordersDtoGetType.getOrdersType());//获取用户idUser user = userService.selectByAccountId(Integer.parseInt(account.getId()));//进店用餐if (orders.getOrdersType().equals(OrdersTypeEnum.ORDERS_TYPE_ENTER.getText())){orders.setOrdersAddress(null);orders.setOrdersTable(choiceDto.getOrdersTable());String reserveDate = choiceDto.getReserveDate();String ordersStartTime =choiceDto.getOrdersStartTime();String ordersEndTime = choiceDto.getOrdersEndTime();orders.setReserveDate(choiceDto.getReserveDate());orders.setOrdersStartTime(choiceDto.getOrdersStartTime());orders.setOrdersEndTime(choiceDto.getOrdersEndTime());deskService.updDesk(ordersNumberUpd,choiceDto.getOrdersTable(), Integer.parseInt(user.getId()), TableStateEnum.STATE_TRUE.getValue(), reserveDate,ordersStartTime,ordersEndTime);}//外卖配送else{orders.setOrdersAddress(choiceDto.getOrdersAddress());orders.setOrdersTable(null);}orders.setPhoneNumber(choiceDto.getPhoneNumber());orders.setRemark(choiceDto.getRemark());return ordersService.updateOrdersByNumber(orders);}//下单  订单类型@RequestMapping("ordersType/{type}")public String ordersType(@PathVariable("type") Integer type, HttpSession session,Model model) {String ordersType = "进店用餐";if (type == 1) {ordersType = "外卖配送";}OrdersDto choicePageSession = (OrdersDto) session.getAttribute("choicePageSession");choicePageSession.setOrdersType(ordersType);session.removeAttribute("choicePageSession");session.setAttribute("choicePageSession", choicePageSession);model.addAttribute("ordersDto", choicePageSession);return "user/choicePage";}//订单修改  订单类型@RequestMapping("ordersUpdType/{type}")public String ordersUpdType(@PathVariable("type") Integer type, HttpSession session,Model model) {String ordersType = "进店用餐";if (type == 1) {ordersType = "外卖配送";}OrdersDto choicePageSession = (OrdersDto) session.getAttribute("choicePageSession");choicePageSession.setOrdersType(ordersType);session.removeAttribute("choicePageSession");session.setAttribute("choicePageSession", choicePageSession);model.addAttribute("ordersDto", choicePageSession);return "user/editOrdersPage";}@RequestMapping("zhuan")public String zhuan(HttpSession session, Model model) {OrdersDto choicePageSession = (OrdersDto) session.getAttribute("choicePageSession");model.addAttribute("ordersDto", choicePageSession);return "user/choicePage";}//公共方法private User comment(HttpSession session) {Account account = (Account) session.getAttribute("account");return userService.selectByAccountId(Integer.parseInt(account.getId()));}}

三、系统展示

系统首页:可以通过餐品类别进行筛选。同时可以看到留言板,也可以进行留言。

基本信息:可更改自己的基本信息。

购物车信息:可以查看购物车的菜品,可以进行删除、下单。

菜品下单:可以备注预约餐桌与时间。支持进店用餐和外卖配送。

订单信息:查看订单详情,支持添加商品、修改信息、取消订单。

地址管理:如需外卖配送需要填写配送地址。

我的钱包:可以进行重置与更改密码。

投诉信息:可以对商家进行投诉。

后台管理员登录页面。

用户管理:可以重置用户密码。

钱包管理:查看用户钱包剩余金额。

菜品管理:可以新增、删除、修改。

餐桌管理:支持用户进店就餐。

订单管理:分为四种订单未处理、处理中、已完成、已取消订单。

留言管理:可以选择优质留言在首页进行展示。

投诉管理:商家可看到投诉信息并进行处理。

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

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

相关文章

静物摄影在UE5里运用几点记要

被摄体&#xff0c;相机与光源的关系&#xff0c;要增强立体感&#xff0c;摄像机与光源的位置关系要错开&#xff1b;b的立体感要更强 漫反射与点光源&#xff0c;UE5太阳光属于漫反射&#xff0c;整体比较柔和&#xff0c;但是阴影处比较黑&#xff1b;摄影棚会用反光板来增亮…

vscode 支持c,c++编译调试方法

概述&#xff1a;tasks.jason launch.json settings.json一定要有&#xff0c;没有就别想跑。还有就是c 和c配置有区别&#xff0c;切记&#xff0c;下文有说 1.安装扩展插件。 2.安装编译器&#xff0c;gcc.我用的是x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z &#xf…

【SpringCloud】-OpenFeign实战及源码解析、与Ribbon结合

一、背景介绍 二、正文 OpenFeign是什么&#xff1f; OpenFeign&#xff08;简称Feign&#xff09;是一个声明式的Web服务客户端&#xff0c;用于简化服务之间的HTTP通信。与Nacos和Ribbon等组件协同&#xff0c;以支持在微服务体系结构中方便地进行服务间的通信&#xff1b…

STM32CubeMX教程8 TIM 通用定时器 - 输出比较

目录 1、准备材料 2、实验目标 3、实验流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.1、时钟树配置 3.1.2、外设参数配置 3.1.3、外设中断配置 3.2、生成代码 3.2.1、外设初始化函数调用流程 3.2.2、外设中断函数调用流程 3.2.3、添加其他必要代码 4、常用函数 5…

ssm基于JavaEE的智能实时疫情监管服务平台的设计与实现+jsp论文

摘 要 社会发展日新月异&#xff0c;用计算机应用实现数据管理功能已经算是很完善的了&#xff0c;但是随着移动互联网的到来&#xff0c;处理信息不再受制于地理位置的限制&#xff0c;处理信息及时高效&#xff0c;备受人们的喜爱。本次开发一套智能实时疫情监管服务平台有管…

vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)

下载安装HBuilder X编辑器 https://www.dcloud.io/hbuilderx.html 新建 5APP 项目 打开 HBuilder X&#xff0c;新建项目 此处项目名以 ‘test’ 为例 含跨域代理的vue项目改造 若 vue 项目中含跨域代理&#xff0c;如 vue.config.js module.exports {publicPath: "./&…

《分布式事务理论基础:CAP定理 BASE理论》

目录 学习目标 1.分布式事务理论基础 1.1.本地事务 1.2.分布式事务 分布式事务产生的原因&#xff1f; 哪些场景会产生分布式事务&#xff1f; 单体系统会产生分布式事务问题吗&#xff1f; 只有一个库&#xff0c;会产生分布式事务问题吗&#xff1f; 分布式事务举…

跨进程通信 macOS XPC 创建实例

一&#xff1a;简介 XPC 是 macOS 里苹果官方比较推荐和安全的的进程间通信机制。 集成流程简单&#xff0c;但是比较绕。 主要需要集成 XPC Server 这个模块&#xff0c;这个模块最终会被 apple 的根进程 launchd 管理和以独立进程的方法唤起和关闭&#xff0c; 我们主app 进…

DotNet 命令行开发

DotNet 命令行开发 下载安装下载 SDK安装 SDK绿色版下载绿化脚本 常用命令创建 dotnet new运行 dotnet run发布应用 dotnet publish更多命令 VSCode 调试所需插件调试 CS 配置项目.csproj排除依赖关系 launch.jsontasks.json 参考资料 下载安装 下载 SDK 我们就下最新的好&am…

draw.io学习笔记

1、链接 1.1、自动连接图形 鼠标放在图形上&#xff0c;点击出现的箭头&#xff0c;会自动出常用图形 1.2、固定连接 如果拖动其中一个图形的话&#xff0c;固定链接的形状会是曲线连过去。 方法&#xff1a;不要点击左边图形鼠标放在边框上面左边出现绿圆点鼠标左键点击图形的…

LTPI协议的理解——2、LTPI实现的底层架构

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 LTPI协议的理解——2、LTPI实现的底层架构 前言一、体系结构三、实现细节四、物理接口信号传输方法总结 前言 前面讲了LTPI的定义和大概结构&#xff0c;接下来继续理解LTPI…

【Linux系统编程二十五】:线程概念(Linux中的轻量级进程)

【Linux系统编程二十五】&#xff1a;线程概念(Linux中的轻量级进程&#xff09; 一.线程的概念1.地址空间是资源窗口 二.线程初步理解1.进程执行分支(内部运行)2.执行粒度更细3.重构进程概念&#xff1a;系统资源分配的基本实体4.重构线程概念&#xff1a;系统调度的基本单位5…

Kubernetes 学习总结(43)—— Kubernetes 从提交 deployment 到 pod 运行的全过程

当用户向 Kubernetes 提交了一个创建 deployment 的请求后&#xff0c;Kubernetes 从接收请求直至创建对应的 pod 运行这整个过程中都发生了什么呢&#xff1f; kubernetes 架构简述 在搞清楚从 deployment 提交到 pod 运行整个过程之前&#xff0c;我们有先来看看 Kubernete…

4. 云原生之kubesphere基础服务搭建

文章目录 安装kubesphere插件服务暴露NodePort方式LoadBalancer方式安装 OpenELB部署eip资源配置网关启动网关创建路由测试网关路由ingress高级功能在服务中配置LoadBalancer 基础设施部署服务部署建议helm仓库添加helm仓库 运维相关部署gitlab部署nexus3部署harbor 研发相关 安…

【c语言】飞机大战(1)

提前准备好游戏要的素材&#xff0c;可以到爱给网去找&#xff0c;飞机大战我们需要的是一个我方战机图片&#xff0c;一个背景图&#xff0c;三个敌方战机的图&#xff0c;我方战机的图片&#xff0c;敌方战机的图片&#xff0c;并且将图片和.cpp放在同一文件夹下. 这里创建.…

回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 &#xff08;…

vue+element+springboot实现多张图片上传

1.需求说明 2.实现思路 3.el-upload组件主要属性说明 4.前端传递MultipartFile数组与服务端接收说明 5.完整代码 1.需求说明 动态模块新增添加动态功能,支持多张图片上传.实现过程中对el-upload组件不是很熟悉,踩了很多坑,当然也参考过别的文章,发现处理很…

2023总结与展望--Empirefree

今年一篇博客都没写过了&#xff0c;好像完全在忙在工作和生活上面了&#xff0c;珍惜自我&#xff0c;保持热情&#xff0c;2024对我好点 文章目录 &#x1f525;1. 年终总结1.1.学习工作计划1.2. 生活计划1.3 个人总结 &#x1f525;2. 未来展望 &#x1f525;1. 年终总结 1…

Windows Server 2012一键安装PHP5.4.45环境-护卫神

Windows Server 2012一键安装PHP环境&#xff08;PHP5.4FastCGI模式&#xff09; (hws.com)护卫神PHP套件|mysql安装|php环境|安装php (hws.com) 护卫神PHP套件|mysql安装|php环境|安装php

【无标题】《巴黎图书馆》,又发现一本书

我喜愛看的书(https://img-blog.csdnimg.cn/8cd84d33e6724f09a46831f75abe6464.jpg)在这里插入图片描述