基于Java在线蛋糕店商城系统设计与实现(源码+部署文档)

news2025/2/28 15:41:40

博主介绍: ✌至今服务客户已经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


系列文章目录

前言

一、运行环境

二、代码示例

三、系统展示


前言

1) 系统首页:用户登录成功后可以看到左侧包含蛋糕分类,可以点击分类来查看对应的蛋糕。
2) 购物车信息:点击加入购物车后,用户可以点击购物车信息来查看当前加购的商品。
3) 下单:当勾选购物车中的商品点击下单后会跳转到下单页面。然后确认订单信息点击提交。
4) 下单记录:提交完订单后,自动跳转订单列表页面,可以查看当前订单信息。
5) 我的地址:管理自己的地址信息。当用户选择配送后默认回填该地址信息。
6) 我的钱包:用户下单后,自动扣减钱包内的金额。
7) 投诉信息:用户可以对商家进行投诉。并且可以查看历史投诉内容与商家处理的进度。
8) 用户管理:管理员可以管理系统的所有用户信息。可以后台重置用户登录密码。
9) 钱包管理:可以查看到用户的余额以及支付密码。
10) 菜单管理:对蛋糕的商品进行管理。具有查询、新增、修改等功能。支持图片上传。
11) 餐桌管理:用户如果在店就餐,可以选择餐桌位置。
12) 订单管理:可以查看所有订单信息。并分为四种状态未处理订单、订单处理中、已完成订单、已取消订单。
13) 留言管理:用户可以对商家进行留言,商家可以选择优质的留言信息展示在用户端。

一、运行环境

1) 运行环境jdk1.8
2) 运行工具:IDEA
3) 依赖:maven
4) 后端框架Springboot、mybatis
5) 前端HTMl、thymeleaf

二、代码示例

代码如下(示例):

//分页查询 根据餐桌名称查询
    @RequestMapping("page")
    public String page(String deskNumber, Model model, @RequestParam(defaultValue = "1") Integer pageNum,
                       @RequestParam(defaultValue = "6") Integer pageSize) {
        //获取所有餐桌信息
        List<Desk> deskList = deskService.selectAll();
        fleshDesks(deskList);
        Page<Desk> page = PageHelper.startPage(pageNum, pageSize);
        List<Desk> desks = deskService.selectDeskPage(deskNumber);
        model.addAttribute("desks", desks);
        model.addAttribute("page", page);
        return "admin/deskPage";
    }

    //删除餐桌信息
    @RequestMapping("delDesk/{deskId}")
    public String delDesk(@PathVariable Integer deskId) {
        boolean flag = deskService.delMenu(deskId);
        log.info("删除菜品信息:{}", flag);
        return "redirect:/desk/page";
    }

    //修改餐桌的信息
    @RequestMapping("editDesk/{deskId}")
    public String editDesk(@PathVariable("deskId") Integer deskId, Model model) {
        Desk desk = deskService.selectByDeskId(deskId);
        model.addAttribute("desk", desk);
        return "admin/editDeskPage";
    }

    //更新餐桌的信息
    @RequestMapping("updateDesk")
    public String updateDesk(Desk desk) {
        boolean flag = deskService.updateDesk(desk);
        log.info("修改餐桌信息:{}", flag);
        return "redirect:/desk/page";
    }
    //重置餐桌的信息
    @RequestMapping("resetDesk/{deskId}")
    public String resetDesk(@PathVariable("deskId") Integer deskId) {
        deskService.updateDeskState(deskId);
        return "redirect:/desk/page";
    }

    //添加餐桌页面
    @RequestMapping("toAddDesk")
    public String toAddDesk() {
        return "admin/addDeskPage";
    }

    //添加餐桌信息
    @RequestMapping("addDesk")
    @Transactional
    public String addDesk(Desk desk) throws IOException {
        String path =  FileUtil.saveImg(desk.getImg());
        desk.setPictureAddress(path);
        boolean flag = deskService.addDesk(desk);
        log.info("添加餐桌信息修改餐桌信息:{}", flag);
        return "redirect:/desk/page";
    }

    //刷新餐桌信息
    public void fleshDesks(List<Desk> deskList){
        //更新餐桌预定时间,预定时间超过,重置状态
        Date date = new Date();
        SimpleDateFormat reserveDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat reserveTimeFormat = new SimpleDateFormat("HH:mm");
        String nowDate = reserveDateFormat.format(date);
        String nowTime = reserveTimeFormat.format(date);
        for (Desk desk : deskList) {
            if (desk.getState()) {
                String reserveDate = desk.getReserveDate();
                if (nowDate.compareTo(reserveDate.toString()) > 0 ||(nowDate.compareTo(reserveDate.toString()) == 0 && nowTime.compareTo(desk.getOrdersEndTime())>=0)) {
                    deskService.updDesk(null,desk.getDeskNumber(), null, TableStateEnum.STATE_FALSE.getValue(), null,null,null);
                }
            }
        }
    }

    //预定餐桌页面
    @RequestMapping("toOrdersTable")
    public String toOrdersTable(Model model) {
        //获取所有餐桌信息
        List<Desk> deskList = deskService.selectAll();
        fleshDesks(deskList);
        //获取所有的最新餐桌信息
        deskList = deskService.selectAll();
        model.addAttribute("deskList", deskList);
        return "user/deskPage";
    }
    //修改预定餐桌页面
    @RequestMapping("toUpdOrdersTable")
    public String toUpdOrdersTable(Model model) {
        //获取所有餐桌信息
        List<Desk> deskList = deskService.selectAll();
        fleshDesks(deskList);
        //获取所有的最新餐桌信息
        deskList = deskService.selectAll();
        model.addAttribute("deskList", deskList);
        return "user/deskUpdPage";
    }

三、系统展示

系统首页:用户登录成功后可以看到左侧包含蛋糕分类,可以点击分类来查看对应的蛋糕。

购物车信息:点击加入购物车后,用户可以点击购物车信息来查看当前加购的商品。

下单:当勾选购物车中的商品点击下单后会跳转到下单页面。然后确认订单信息点击提交。

下单记录:提交完订单后,自动跳转订单列表页面,可以查看当前订单信息。

我的地址:管理自己的地址信息。当用户选择配送后默认回填该地址信息。

我的钱包:用户下单后,自动扣减钱包内的金额。

投诉信息:用户可以对商家进行投诉。并且可以查看历史投诉内容与商家处理的进度。

用户管理:管理员可以管理系统的所有用户信息。可以后台重置用户登录密码。

钱包管理:可以查看到用户的余额以及支付密码。

菜单管理:对蛋糕的商品进行管理。具有查询、新增、修改等功能。支持图片上传。

餐桌管理:用户如果在店就餐,可以选择餐桌位置。

订单管理:可以查看所有订单信息。并分为四种状态未处理订单、订单处理中、已完成订单、已取消订单。

留言管理:用户可以对商家进行留言,商家可以选择优质的留言信息展示在用户端。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【八股文】面向对象基础

【八股文】面向对象基础 面向对象和面向过程的区别 面向过程把解决问题的过程拆成一个个方法&#xff0c;通过一个个方法的执行解决问题。面向对象会先抽象出对象&#xff0c;然后用对象执行方法的方式解决问题。 创建一个对象用什么运算符?对象实体与对象引用有何不同? …

[AIGC] JVM内存结构

JVM内存结构 Java虚拟机&#xff08;JVM&#xff09;内存结构是Java内存管理的基础&#xff0c;并且与JVM的运行机制紧密相关。下面是一个JVM内存结构的示意图&#xff1a; JVM内存主要包括以下几个部分&#xff1a; 方法区&#xff08;Method Area&#xff09; 方法区也被称…

计算机视觉基础知识(十四)--深度学习开源框架

深度学习框架 Caffetensorflow框架是深度学习的库;编程时需要import 应用优势 框架的出现降低了入门的门槛;不需要从复杂的神经网络开始编写代码;根据需要,使用已有的模型;模型的参数经过训练得到;可以在已有的模型基础上增加自己的layer;在顶端选择自己的分类器和优化算法;…

2024最新版Redis安装使用指南

2024最新版Redis安装使用指南 Installation and Usage Guide to the Latest Redis in 2024 By JacksonML 1. 什么是Redis? The open-source, in-memory data store used by millions of developers as a cache, vector database, document database, streaming engine, an…

Linux 常用命令100+

Linux 运维/开发/测试 常用命令100 线上查询及帮助命令(2个) 命令功能说明示例man 命令查看普通命令帮助&#xff0c;命令的词典&#xff0c;更复杂的还有info&#xff0c;但不常用。rootbrLinux ~]#man lshelp 命令查看Linux内置命令的帮助&#xff0c;比如cd命令。[rootbrL…

【C++】初始化列表、static成员、友元、匿名对象、附练习题

文章目录 前言一、构造函数【初始化列表】1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字 二、static成员2.1 概念2.2 特性 三、友元3.1 友元函数3.2 内部类 四、匿名对象4.1 拷贝对象时的一些编译器优化 五、再次理解类和对象六、练习题6.1 求123...n&#xff0c;要求不…

面试:正确率能很好的评估分类算法吗

正确率&#xff08;accuracy&#xff09; 正确率是我们最常见的评价指标&#xff0c;accuracy (TPTN)/(PN)&#xff0c;正确率是被分对的样本数在所有样本数中的占比&#xff0c;通常来说&#xff0c;正确率越高&#xff0c;分类器越好。 不同算法有不同特点&#xff0c;在不同…

算法项目(1)—— LSTM+CNN+四种注意力对比的股票预测

本文包含什么? 项目运行的方式(包教会)项目代码(在线运行免环境配置)不通注意力的模型指标对比一些效果图运行有问题? csdn上后台随时售后.项目说明 本项目实现了基于CNN+LSTM构建模型,然后对比不同的注意力机制预测股票走势的效果。首先看一下模型结果的对比: 模型MS…

十、计算机视觉-腐蚀操作

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、什么是腐蚀二、如何实现腐蚀三、腐蚀的原理 一、什么是腐蚀 在我们生活中常会见到腐蚀&#xff0c;比如金属表面受到氧化或其他化学物质的侵蚀&#xff0c;导致…

uniapp不同平台获取文件内容以及base64编码特征

前言 文件图片上传&#xff0c;客户端预览是很正常的需求&#xff0c;获取文件的md5特征码也是很正常的&#xff0c;那么&#xff0c;在uniapp中三种环境&#xff0c;h5, 小程序以及 app环境下&#xff0c;如何实现的&#xff1f; 参考&#xff1a; 如何在uniapp中读取文件Arr…

电动汽车充电负荷时空分布预测(matlab)

目录 1 主要内容 交通网-配电网交互模型 动态交通路网模型 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考《基于动态交通信息的电动汽车充电负荷时空分布预测》和《基于动态交通信息的电动汽车充电需求预测模型及其对配网的影响分析》文献模型&#xff0c;考虑…

Py之ydata-profilin:ydata-profiling的简介、安装、使用方法之详细攻略

Py之ydata-profilin&#xff1a;ydata-profiling的简介、安装、使用方法之详细攻略 目录 ydata-profiling的简介 1、主要特点 2、案例应用 (1)、比较数据集、对时序数据集进行分析、对大型数据集进行分析、处理敏感数据、数据集元数据和数据字典、自定义报告的外观、不同类型…

yolov5-tracking-xxxsort yolov5融合六种跟踪算法(一)--环境配置CPU版本

本次开源计划主要针对大学生无人机相关竞赛的视觉算法开发。 开源代码仓库链接&#xff1a;https://github.com/zzhmx/yolov5-tracking-xxxsort.git 如果需要配置GPU版本环境可以查看我的这篇博客&#xff1a;yolov5-tracking-xxxsort yolov5融合六种跟踪算法&#xff08;一&am…

动态表格 点击单元格查看完整内容

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>分享收藏</title><script src"https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script><style…

Java零基础 - 逻辑运算符

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

[word] word带圈数字20以上 #笔记#笔记

word带圈数字20以上 办公中有时候需要用到带圈数字&#xff0c;超过20的数字就不能直接编辑了&#xff0c;那么20以上带圈数字要怎么输入呢&#xff1f;其实通过小技巧就能完成的&#xff0c;接下来就给大家介绍下呢&#xff0c;一起看看吧&#xff01; 20以上带圈数字输入技巧…

LaunchPad 市场的复苏,Penpad 成新兴生力军

以 Fair Launch 为主要启动方式的铭文市场的爆发&#xff0c;推动了 LaunchPad 市场的复苏&#xff0c;绝多数所铭文项目都能通过 Fairr Launch 的方式筹集资金实现启动&#xff0c;该赛道的爆发不仅推动了数百亿美元的热钱开始在链上不断涌动&#xff0c;同时也进一步形成了新…

String为什么是不可变的?

一、String字符串类型的数据结构 首先&#xff0c;String类是由 final 关键字修饰&#xff0c;这说明String 不可被继承。其次&#xff0c;由源代码可以看出String的成员字段value是一个char[ ]数组&#xff0c;在后面所有的String方法里都不提供修改Array数组的方法&#xff0…

torch.manual_seed(233333)

torch.manual_seed&#xff08;233333&#xff09; 介绍报错信息解决问题总结 介绍 这是在使用GPT-SoVITS时运行缺失pytorch导致报的错 报错信息 Traceback (most recent call last): File “D:\vits\GPT-SoVITS-beta\GPT-SoVITS-beta0217\webui.py”, line 10, in torch.m…

文件上传漏洞--Upload-labs--Pass17--条件竞争

一、条件竞争原理&#xff08;结合代码审计&#xff09; 1、首先进行代码审计&#xff0c;查看源代码。 我们可知&#xff0c;将文件上传至服务器后&#xff0c;不会被立即删除&#xff0c;而是做短暂的停留&#xff0c;中间会有一小部分时间差&#xff0c;这部分时间差是代码…