基于java+ssm+vue的餐厅点菜管理系统

项目介绍

网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此餐厅点菜信息的管理计算机化,系统化是必要的。设计开发餐厅点菜管理系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于餐厅点菜信息的维护和检索也不需要花费很多时间,非常的便利。

餐厅点菜管理系统是在MySQL中建立数据表保存信息,运用Vue框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。其管理员管理食物库存,菜品信息,管理预订和未预定餐桌,管理店内订单流水以及外卖订单。用户查看餐厅资讯,收藏菜品,下单购买菜品,查看外卖订单,用户也可以在餐厅内预订餐桌,对菜品进行点餐,查看店内订单记录。

餐厅点菜管理系统在让餐厅点菜信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升餐厅点菜管理系统提供的数据的可靠性,让系统数据的错误率降至最低。

4.2功能结构设计
前面所做的功能分析,只是本系统的一个大概功能,这部分需要在此基础上进行各个模块的详细设计。
设计的管理员的详细功能见下图,管理员登录进入本人后台之后,管理食物库存,菜品信息,管理预订和未预定餐桌,管理店内订单流水以及外卖订单。

在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序ue/爬虫/c#/asp.net

系统实现

5.1.1 食物库存管理
管理员权限中的食物库存管理,其运行效果见下图。管理员查看各种菜品的库存数量,可以根据菜品名称查询菜品库存,能够修改菜品库存,删除菜品库存信息。
在这里插入图片描述

图5.1 食物库存管理页面

5.1.2 菜品展示管理
管理员权限中的菜品展示管理,其运行效果见下图。管理员新增菜品信息,可以修改菜品名称,菜品图片,菜品单价等信息,可以删除菜品信息。
在这里插入图片描述

图5.2 菜品展示管理页面

5.1.3 未预定餐桌管理
管理员权限中的未预定餐桌管理,其运行效果见下图。管理员根据餐桌名称查询未预定餐桌信息,可以对未预定餐桌信息进行修改,删除。
在这里插入图片描述

图5.3 未预定餐桌管理页面

5.1.4 店内流水管理
管理员权限中的店内流水管理,其运行效果见下图。管理员查询店内流水信息,设置用户已支付的订单为已支付状态。
在这里插入图片描述

图5.4 店内流水管理页面

5.1.5 已支付订单
管理员权限中的已支付订单管理,其运行效果见下图。用户在前台下单购买的菜品,管理员需要在当前页面对已支付的菜品订单进行派送。
在这里插入图片描述

图5.5 已支付订单页面

5.2 用户功能实现
5.2.1 菜品信息
用户权限中的菜品信息,其运行效果见下图。用户在本页面可以操作的功能比较多,可以收藏本页面显示的菜品,可以直接购买,也能暂时加入购物车保存菜品。
在这里插入图片描述

图5.6 菜品信息页面

5.2.2 购物车
用户权限中的购物车,其运行效果见下图。购物车帮助用户暂时保存购买的菜品,方便用户一次性下单购买多种菜品。
在这里插入图片描述

图5.7 购物车页面

5.2.3 提交订单
用户权限中的提交订单,其运行效果见下图。用户下单支付前,收货地址和购买的菜品需要再次核对清楚,最后支付订单。
在这里插入图片描述

图5.8 提交订单页面

5.2.4 已支付订单
用户权限中的已支付订单,其运行效果见下图。用户对订单明细进行查看,可以选择对某些误购买的菜品进行退款。
在这里插入图片描述

图5.9 已支付订单页面

5.2.5 联系客服
用户权限中的联系客服,其运行效果见下图。用户在操作餐厅点菜管理系统过程中,遇到任何问题可以咨询客服,客服就负责回答用户咨询的问题。
在这里插入图片描述

图5.10 联系客服页面

5.2.6 菜品点餐
用户权限中的菜品点餐,其运行效果见下图。用户在已经预订餐桌的情况下,在本页面对需要的菜品登记点餐数量,最后提交点餐订单即可。
在这里插入图片描述

图5.11 菜品点餐页面

5.2.7 未预定餐桌
用户权限中的未预定餐桌,其运行效果见下图。用户选择未预定状态的餐桌进行预订。
在这里插入图片描述

图5.12 未预定餐桌页面

5.2.8 已预订餐桌
用户权限中的已预订餐桌,其运行效果见下图。用户可以查看已预订餐桌信息,可以取消已经预订的餐桌。
在这里插入图片描述

图5.13 已预订餐桌页面

5.2.9 订单记录
用户权限中的订单记录,其运行效果见下图。用户查看在该餐厅消费的订单明细。
在这里插入图片描述

图5.14 订单记录页面

核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.*;
import javax.servlet.http.HttpServletRequest;

import com.entity.CanzhuoEntity;
import com.service.CanzhuoService;
import com.service.YudingcanzhuoService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;

import com.entity.LiushuiEntity;

import com.service.LiushuiService;
import com.utils.PageUtils;
import com.utils.R;

/**
 * 流水表
 * 后端接口
 * @author
 * @email
 * @date 
*/
@RestController
@Controller
@RequestMapping("ushui")
public class LiushuiController {
    private static final Logger logger = LoggerFactory.getLogger(LiushuiController.class);

    @Autowired
    private LiushuiService liushuiService;

    @Autowired
    private CanzhuoService canzhuoService;

    @Autowired
    private YudingcanzhuoService yudingcanzhuoService;

    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("Controller:"+this.getClass().getName()+",page方法");
        PageUtils page = null;
        if(!request.getSession().getAttribute("role").equals("管理员")){
            params.put("yh",request.getSession().getAttribute("userId"));
            page = liushuiService.queryPage(params);
        }else{
            page = liushuiService.queryPage(params);
        }
        return R.ok().put("data", page);
    }
    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        logger.debug("Controller:"+this.getClass().getName()+",info方法");
        LiushuiEntity liushui = liushuiService.selectById(id);
        if(liushui!=null){
            return R.ok().put("data", liushui);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("ve")
    public R save(@RequestBody LiushuiEntity liushui, HttpServletRequest request){
        logger.debug("Controller:"+this.getClass().getName()+",save");
        Wrapper<LiushuiEntity> queryWrapper = new EntityWrapper<LiushuiEntity>()
            .eq("odd", liushui.getOdd())
            .eq("cz_types", liushui.getCzTypes())
            .eq("yh_types", liushui.getYhTypes())
            .eq("sf_types", liushui.getSfTypes())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        LiushuiEntity liushuiEntity = liushuiService.selectOne(queryWrapper);
        if(liushuiEntity==null){
            liushuiService.insert(liushui);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody LiushuiEntity liushui, HttpServletRequest request){
        logger.debug("Controller:"+this.getClass().getName()+",update");
        //根据字段查询是否有相同数据
        Wrapper<LiushuiEntity> queryWrapper = new EntityWrapper<LiushuiEntity>()
            .notIn("id",liushui.getId())
            .eq("odd", liushui.getOdd())
            .eq("cz_types", liushui.getCzTypes())
            .eq("yh_types", liushui.getYhTypes())
            .eq("sf_types", liushui.getSfTypes())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        LiushuiEntity liushuiEntity = liushuiService.selectOne(queryWrapper);
        if(liushuiEntity==null){
            liushuiService.updateById(liushui);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


    /**
    * 删除
    */
    @RequestMapping("/gaiwei")
    public R gaiwei(Integer ids){
        LiushuiEntity liushuiEntity = liushuiService.selectById(ids);
        if(liushuiEntity.getSfTypes() == 1){
            return R.error("这个订单已经支付过了,请不要重复支付");
        }
        if(liushuiEntity== null){
            return  R.error();
        }
        CanzhuoEntity canzhuoEntity = canzhuoService.selectById(liushuiEntity.getCzTypes());
        if(canzhuoEntity ==null){
            return R.error();
        }
        liushuiEntity.setSfTypes(1);
        canzhuoEntity.setSfTypes(2);
        yudingcanzhuoService.delete(new EntityWrapper().eq("cz_types",canzhuoEntity.getId()));
        canzhuoService.updateById(canzhuoEntity);
        liushuiService.updateById(liushuiEntity);
        return R.ok();
    }

    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        logger.debug("Controller:"+this.getClass().getName()+",delete");
        liushuiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

论文参考

在这里插入图片描述

目 录
1 绪论 1
1.1 选题背景 1
1.2 选题意义 1
1.3 研究内容 2
2 系统开发技术 3
2.1 Java语言 3
2.2 SSM框架 3
2.3 MYSQL数据库 4
2.4 Vue框架 4
3 系统分析 5
3.1可行性研究 5
3.1.1经济可行性 5
3.1.2时间可行性 5
3.1.3操作可行性 5
3.2系统性能分析 6
3.2.1系统易用性 6
3.2.2系统健壮性 6
3.2.3系统安全性 6
3.3 系统流程分析 6
3.4系统功能分析 9
4 系统设计 12
4.1系统目标 12
4.2功能结构设计 13
4.3数据库设计 14
4.3.1数据库E-R图 14
4.3.2 数据库表结构 17
5 系统实现 22
5.1 管理员功能实现 22
5.1.1 食物库存管理 22
5.1.2 菜品展示管理 22
5.1.3 未预定餐桌管理 23
5.1.4 店内流水管理 23
5.1.5 已支付订单 24
5.2 用户功能实现 24
5.2.1 菜品信息 24
5.2.2 购物车 25
5.2.3 提交订单 25
5.2.4 已支付订单 26
5.2.5 联系客服 27
5.2.6 菜品点餐 27
5.2.7 未预定餐桌 28
5.2.8 已预订餐桌 28
5.2.9 订单记录 29
6系统测试 30
6.1 系统测试的类型 30
6.2 功能测试 31
6.3 可用性测试 31
6.4 测试结果分析 31
结 论 32
参考文献 34
致 谢 35

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_3306428634

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

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

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

打赏作者

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

抵扣说明:

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

余额充值