基于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 {

    @Autowired
    private ShoppingCartService shoppingCartService;

    @Autowired
    private AddressService addressService;

    @Autowired
    private WalletService walletService;

    @Autowired
    private UserService userService;

    @Autowired
    private DeskService deskService;

    @Autowired
    private MenuService menuService;

    @Autowired
    private OrdersService ordersService;

    @Autowired
    private 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")
    @ResponseBody
    public 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")
    @ResponseBody
    public 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);
        }
        //订单DTO
        OrdersDto 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);
                //商品销量加count
                menu.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);
            //商品销量加count
            menu.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());
        //获取用户id
        User 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()));
    }

}

三、系统展示

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

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

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

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

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

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

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

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

后台管理员登录页面。

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

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

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工业4G 物联网网关——机房动环监控系统应用方案介绍

机房动环监控系统是什么&#xff1f;机房动环监控系统的全称为机房动力环境监控系统&#xff0c;是一套安装在机房内的监控系统&#xff0c;可以对分散在机房各处的独立动力设备、环境和安防进行实时监测&#xff0c;统计和分析处理相关数据&#xff0c;第一时间侦测到故障发生…

实时获取小红书笔记详情的API使用与解析

一、背景介绍 小红书是一个以分享消费经验、生活方式为主的社交平台&#xff0c;拥有大量的用户和内容。为了更好地了解用户在小红书上的行为和内容&#xff0c;许多开发者选择使用小红书开放平台提供的API接口。本文将介绍如何通过小红书笔记详情API实现实时数据获取&#xf…

Openslide安装

文章目录 安装open-slide python下载openslide二进制文件解压到Anaconda的library目录下配置环境变量在py文件中添加以下语句即可 官网链接 安装open-slide python 表面上这样就可以导入了但事实上会遇到 Couldn’t locate OpendSlide DLL的问题&#xff0c;openslide必须独立安…

svg学习

概念 svg 可缩放矢量图形 svg 使用xml格式定义图像 svg 形状 矩形 <rect> <?xml version"1.0" standalone"no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd&q…

conda环境下Could not build wheels for dlib解决方法

1 问题描述 在安装模型运行的conda环境时&#xff0c;出现如下问题&#xff1a; Building wheels for collected packages: basicsr, face-alignment, dlib, ffmpy, filterpy, futureBuilding wheel for basicsr (setup.py) ... doneCreated wheel for basicsr: filenamebasi…

mysql树查询和时间段查询

本文目录 文章目录 案例1&#xff1a;MySQL树形结构查询案例2&#xff1a;MySQL查询一段时间内的所有日期 摘要 案例1&#xff1a;MySQL树形结构查询 在页面开发过程中&#xff0c;如图一所示的树形控件很常见&#xff0c;而大多数情况下&#xff0c;树形控件中需要显示的数据…

【温故而知新】vue运用之探讨下单页面应用(SPA)与多页面应用(MPA)

一、概念 1.单页面应用SPA(Single page application) Vue单页面应用是一种采用Vue.js框架开发的Web应用程序,它仅有一个HTML文件,通过前端路由实现页面的切换和渲染。与传统的多页面应用相比,Vue单页面应用在用户体验和开发效率方面有着明显的优势。 在Vue单页面应用中…

【微服务核心】MyBatis Plus

MyBatis Plus 文章目录 MyBatis Plus1. 简介2. 入门使用3. 核心功能3.1 CRUD 接口3.1.1 Mapper CRUD 接口3.1.2 Service CRUD 接口 3.2 条件构造器3.3 分页插件3.4 Mybatis-Plus 注解 4. 拓展4.1 逻辑删除4.2 MybatisX快速开发插件 5. 插件5.1 [分页插件](#page)5.2 乐观锁插件…

从0到1快速入门ETLCloud

一、ETLCloud的介绍 ETL是将业务系统的数据经过抽取&#xff08;Extract&#xff09;、清洗转换&#xff08;Transform&#xff09;之后加载&#xff08;Load&#xff09;到数据仓库的过程&#xff0c;目的是将企业中的分散、凌乱、标准不统一的数据整合到一起&#xff0c;为企…

[AI编程]AI辅助编程助手-亚马逊AI 编程助手 Amazon CodeWhisperer

亚马逊AI 编程助手 Amazon CodeWhisperer 是一种基于人工智能技术的编程辅助工具&#xff0c;旨在帮助开发人员更高效地编写代码。它可以提供实时的代码建议、自动补全和错误检查&#xff0c;帮助优化代码质量和提高编程效率。 Amazon CodeWhisperer 使用了自然语言处理和机器…

Redis管道

问题引出 Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤&#xff1a; 1 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果)&#xff0c;并监听Socket返回&#xff0c;通常以阻塞模式等待服务端响应。 2 服务端…

Ubuntu20.04 上启用 VCAN 用作本地调试

目录 一、启用本机的 VCAN​ 编辑 1.1 加载本机的 vcan 1.2 添加本机的 vcan0 1.3 查看添加的 vcan0 1.4 开启本机的 vcan0 1.5 关闭本机的 vcan0 1.6 删除本机的 vcan0 二、测试本机的 VCAN 2.1 CAN 发送数据 代码 2.2 CAN 接收数据 代码 2.3 CMakeLists.…

PgSQL技术内幕 - ereport ERROR跳转机制

PgSQL技术内幕 - ereport ERROR跳转机制 使用客户端执行SQL的时候经常遇到报ERROR错误&#xff0c;然后SQL语句就退出了。当然&#xff0c;事务也会回滚掉。本文我们看下它是如何做到退出SQL语句并回滚事务的。 1、以insert一个numeric类型值为例 表一个字段为numeric(10,2)类型…

电脑报错“kernelbase.dll”文件缺失,软件游戏无法启动的解决方法

很多小伙伴留言说&#xff0c;每次自己要游戏或软件的时候&#xff0c;电脑就会弹出报错框&#xff0c;不知道应该怎么办&#xff1f; 其实&#xff0c;Windows报错提示已经说明了&#xff0c;程序找不到名为“kernelbase.dll”的文件&#xff0c;需要重新安装修复这个问题。 …

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

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

C#中的Attribute详解(上)

C#中的Attribute详解&#xff08;上&#xff09; 一、Attribute是什么二、Attribute的作用三、Attribute与注释的区别四、系统Attribute范例1、如果不使用Attribute&#xff0c;为了区分这四类静态方法&#xff0c;我们只能通过注释来说明&#xff0c;但这样做会给系统带来很多…

VD6283TX环境光传感器(2)----移植闪烁频率代码

VD6283TX环境光传感器----2.移植闪烁频率代码 闪烁定义视频教学样品申请源码下载参考代码硬件准备开发板设置生成STM32CUBEMX串口配置IIC配置X-CUBE-ALSADC使用定时器触发采样KEIL配置FFT代码配置app_x-cube-als.c需要添加函数演示结果 闪烁定义 光学闪烁是指人造光源产生的光…

极智嘉加快出海发展步伐,可靠产品方案获客户认可

2023年&#xff0c;国内本土企业加快出海征程&#xff0c;不少企业在出海发展中表现出了优越的集团实力与创新的产品优势&#xff0c;有力彰显了我国先进的科技研发实力。作为全球仓储机器人引领者&#xff0c;极智嘉&#xff08;Geek&#xff09;也在不断加快出海发展步伐&…

Talk | 北京大学博士生汪海洋:通向3D感知大模型的前置方案

本期为TechBeat人工智能社区第559期线上Talk。 北京时间12月28日(周四)20:00&#xff0c;北京大学博士生—汪海洋的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “通向3D感知大模型的前置方案”&#xff0c;介绍了他的团队在3D视觉大模型的前置方…

2023中国企业级存储市场:整体韧性成长,领域此消彼长

多年之后回头看&#xff0c;2023年也许是中国企业级存储市场标志性的一年。 后疫情时代的开启&#xff0c;中国数字经济快速发展、数据产业方兴未艾&#xff0c;为数据存储市场带来了前所未有的活力&#xff1b;与此同时&#xff0c;外部环境的不确定性骤增&#xff0c;人工智…