计算机毕业设计选题推荐-便捷外卖点餐系统-Java项目实战

作者主页:IT研究室✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

一、前言

随着科技的发展和互联网的普及,外卖行业正在迅速崛起,成为餐饮业中的重要组成部分。据统计,全球外卖市场年增长速度已经超过百分之十,显示出其巨大的潜力和机遇。然而,随着外卖行业的快速发展,如何提高外卖点餐工作的效率和质量,以及如何实现餐厅信息、菜品信息、订单管理等功能的实时监控和管理,成为了亟待解决的问题。因此,本研究旨在设计并实现一个便捷的外卖点餐系统,以解决现有外卖点餐工作中存在的问题,提高工作效率和质量,增进外卖行业的健康发展。
目前,虽然已有一些外卖点餐系统可供使用,但它们仍存在一些问题。首先,餐厅信息录入过程复杂,需要人工逐一填写,效率低下且容易出错。其次,菜品信息管理缺乏分类和检索机制,导致用户难以找到所需的菜品。再次,订单管理功能较弱,无法实现实时监控和管理,一旦出现订单错误或配送问题,处理效率低下。因此,需要一种新的外卖点餐系统来解决这些问题。
本开题旨在设计并实现一个便捷的外卖点餐系统,以解决现有外卖点餐工作中存在的问题。该系统将具备以下功能:
餐厅信息录入:通过简单的操作流程,快速准确地录入餐厅信息。
菜品信息管理:建立分类和检索机制,使用户能够轻松查找所需的菜品。
订单管理:实时监控和管理订单状态,及时处理异常情况,提高订单处理的效率和准确性。
数据统计与分析:通过对历史数据的统计和分析,为餐厅提供营销策略的依据。
本课题的意义在于提高外卖点餐工作的效率和质量,增进外卖行业的健康发展。通过便捷的外卖点餐系统,用户可以更加方便快捷地进行点餐操作,同时餐厅也可以更加便捷的进行订单处理和营销策略制定。这将有助于提升用户体验,提高外卖行业的效率和品质水平,进一步推动外卖行业的健康发展。此外,该研究还可以为其他类似行业提供有价值的参考和启示,推动整个社会的数字化转型和发展。

二、开发环境

  • 开发语言:Java
  • 数据库:MySQL
  • 系统架构:B/S
  • 后端:SpringBoot
  • 前端:Vue

三、系统界面展示

  • 便捷外卖点餐系统界面展示:
    便捷外卖点餐系统-菜品信息
    便捷外卖点餐系统-商家信息
    便捷外卖点餐系统-商品订单
    便捷外卖点餐系统-购物车
    便捷外卖点餐系统-菜品管理
    便捷外卖点餐系统-菜品评价管理

四、代码参考

  • Java项目实战代码参考:
/**
 * 地址簿管理
 */
@Slf4j
@RestController
@RequestMapping("/addressBook")
public class AddressBookController {

    @Resource
    private AddressBookService addressBookService;

    /**
     * 新增
     */
    @PostMapping
    public R<AddressBook> save(@RequestBody AddressBook addressBook) {
        addressBook.setUserId(BaseContext.getCurrentId());
        log.info("addressBook:{}", addressBook);
        addressBookService.save(addressBook);
        return R.success(addressBook);
    }

    /**
     * 设置默认地址
     */
    @PutMapping("default")
    public R<AddressBook> setDefault(@RequestBody AddressBook addressBook) {
        log.info("addressBook:{}", addressBook);
        LambdaUpdateWrapper<AddressBook> wrapper = new LambdaUpdateWrapper<>();
        wrapper.eq(AddressBook::getUserId, BaseContext.getCurrentId());
        wrapper.set(AddressBook::getIsDefault, 0);
        //SQL:update address_book set is_default = 0 where user_id = ?
        addressBookService.update(wrapper);

        addressBook.setIsDefault(1);
        //SQL:update address_book set is_default = 1 where id = ?
        addressBookService.updateById(addressBook);
        return R.success(addressBook);
    }

    /**
     * 根据id查询地址
     */
    @GetMapping("/{id}")
    public R get(@PathVariable Long id) {
        AddressBook addressBook = addressBookService.getById(id);
        if (addressBook != null) {
            return R.success(addressBook);
        } else {
            return R.error("没有找到该对象");
        }
    }

    /**
     * 查询默认地址
     */
    @GetMapping("default")
    public R<AddressBook> getDefault() {
        LambdaQueryWrapper<AddressBook> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(AddressBook::getUserId, BaseContext.getCurrentId());
        queryWrapper.eq(AddressBook::getIsDefault, 1);

        //SQL:select * from address_book where user_id = ? and is_default = 1
        AddressBook addressBook = addressBookService.getOne(queryWrapper);

        if (null == addressBook) {
            return R.error("没有找到该对象");
        } else {
            return R.success(addressBook);
        }
    }

    /**
     * 查询指定用户的全部地址
     */
    @GetMapping("/list")
    public R<List<AddressBook>> list(AddressBook addressBook, HttpSession session) {
        long userid = (long) session.getAttribute("user");
        addressBook.setUserId(userid);
        log.info("addressBook:{}", addressBook);
        //条件构造器
        LambdaQueryWrapper<AddressBook> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(AddressBook::getUserId,userid);
        queryWrapper.orderByDesc(AddressBook::getUpdateTime);
            List<AddressBook> list= addressBookService.list(queryWrapper);
        //SQL:select * from address_book where user_id = ? order by update_time desc
        return R.success(list);
    }
    /**
     * 修改地址
     */
    @PutMapping
    public R<String> put(@RequestBody AddressBook addressBook){
        if (addressBook!=null){
            addressBookService.updateById(addressBook);
        }
        return R.success("ok");
    }
    @DeleteMapping
    public R<String> delete(Long ids){
         addressBookService.removeById(ids);
         return R.success("ok");
    }
}
/**
 * 分类管理
 */
@RestController
@RequestMapping("/category")
public class CategoryController {
    @Resource
    private CategoryService categoryService;
    @Resource
    private DishService dishService;
     @Resource
     private SetmealService setmealService;
    /**
     * 新增菜品分类
     * @param category
     * @return
     */
 @PostMapping
 public R<String>category(@RequestBody Category category){
     System.out.println(category);
        if (category==null) {
               return R.error("添加异常!");
        }
     categoryService.save(category);

     return R.success("添加成功!");
 }

    /**
     * 分页查询
     * @param page
     * @param pageSize
     * @return
     */
   @GetMapping("/page")
    public R<Page> page(int page,int pageSize) {
          Page<Category> pa = new Page<>(page,pageSize);
          LambdaQueryWrapper<Category>wrap=new LambdaQueryWrapper<>();
          wrap.orderByAsc(Category ::getSort);
          categoryService.page(pa,wrap);
         return R.success(pa);
    }

    /**
     * 根据id删除分类
     * @param
     * @return
     */
   @DeleteMapping
    public R<String> delete( Long ids) {
       Category category = categoryService.getById(ids);
        if (category.getType()==2){
            List<Setmeal> setmeal = setmealService.list(new LambdaQueryWrapper<Setmeal>().eq(Setmeal::getCategoryId, ids));
             if (setmeal.size()> 0) {
                 return R.error("删除失败,套餐还有绑定套餐");
             }
            setmealService.removeById(ids);
        }else if (category.getType() == 1){
            List<Dish> dishList = dishService.list(new LambdaQueryWrapper<Dish>().eq(Dish::getCategoryId, ids));
            if (dishList.size() > 0){
                return R.error("删除失败,菜品还有绑定菜品");
            }
            dishService.removeById(ids);
        }
       return R.error("删除成功!");
   }

    /**
     * 根据id修改分类信息
     * @param category
     * @return
     */
@PutMapping
     public R<String> updateCategory(@RequestBody Category category){
          if (category == null) {
               return R.error("修改异常");
          }
          categoryService.updateById(category);
          return R.success("修改成功!");
}
    /**
     *
     * 根据条件查询分类数据
     */
    @GetMapping("/list")
    public R<List<Category>> list(Category category) {
         LambdaQueryWrapper<Category>wrapper = new LambdaQueryWrapper<>();
         if (category.getType()!=null){
               wrapper.eq(Category ::getType,category.getType());
         }
        List<Category> list = categoryService.list(wrapper);
        return R.success(list);
    }

}
/**
 菜品
 */
@RestController
@Slf4j
@RequestMapping("/dish")
public class DishController {

    @Resource
    private DishService dishService;
    @Resource
    private DishFlavorService dishFlavorService;
    @Resource
    private CategoryService categoryService;
    @Resource
    private SetmealService setmealService;
    @Resource
    private SetmealDishService setmealDishService;


    /**
     * 菜品管理展示
     */
    @GetMapping("/page")
    public R<Page> page(int page,int pageSize,String name){
        Page<Dish> p=new Page<>(page, pageSize);
        Page<DishDto>p1=new Page<>();
        LambdaQueryWrapper<Dish> wrapper = new LambdaQueryWrapper<>();
         if (name != null) {
              wrapper.like(Dish::getName,name);
         }
         wrapper.orderByDesc(Dish::getPrice);
         dishService.page(p,wrapper);
         //对象拷贝
        BeanUtils.copyProperties(p,p1,"records");
        List<Dish> records = p.getRecords();
        List<DishDto> list= records.stream().map((item)->{
            DishDto dishDto = new DishDto();
            BeanUtils.copyProperties(item,dishDto);
            //分类id
            Long categoryId = item.getCategoryId();
            Category category = categoryService.getById(categoryId);
            if (category != null) {
                String name1 = category.getName();
                dishDto.setCategoryName(name1);
            }
          return dishDto;
        }).collect(Collectors.toList());
        p1.setRecords(list);
        return R.success(p1);
    }
    /**
     * 添加菜品
     */
    @PostMapping
    public R<String> save(@RequestBody DishDto dishDto) {
        dishService.saveWithDishFlavor(dishDto);
        return R.success("新增菜品成功!");
    }

    /**
     * 添加菜品
     */
    @PutMapping
    public R<String> update(@RequestBody DishDto dishDto) {
        Dish dish = new Dish();
        dishService.updateById(dishDto);
        LambdaQueryWrapper<DishFlavor> lambda = new LambdaQueryWrapper<>();
        lambda.eq(DishFlavor::getDishId, dishDto.getId());
        dishFlavorService.remove(lambda);
        List<DishFlavor> flavors = dishDto.getFlavors();
        flavors = flavors.stream().map((item) -> {
            item.setDishId(dishDto.getId());
            return item;
        }).collect(Collectors.toList());
        dishFlavorService.saveBatch(flavors);
        return R.success("修改成功!");
    }

    /**
     * 批量删除
     */
    @DeleteMapping
    public R<String> delete(long[] ids) {
        for (long id : ids) {
            dishService.removeById(id);
        }

         return R.success("批量删除成功!");
    }

    /**
     *
     * 批量停售和批量起售
     */
    @PostMapping("/status/{status}")
    public R<String> status(long [] ids,@PathVariable int status){
         for (long id : ids) {
             LambdaQueryWrapper<Dish> eq =new LambdaQueryWrapper<>();
              eq.eq(Dish::getId,id);
              Dish dish = dishService.getOne(eq);
              dish.setStatus(status);
             dishService.updateById(dish);

                 LambdaQueryWrapper<SetmealDish>wrapper=new LambdaQueryWrapper<>();
                 wrapper.eq(SetmealDish::getDishId,dish.getId());
                 List<SetmealDish> setmealDishes = setmealDishService.list(wrapper);
                 setmealDishes.forEach(dish11 -> {
                     Setmeal setmeal = setmealService.getById(dish11.getSetmealId());
                     if (setmeal != null) {
                         setmeal.setStatus(status);
                         setmealService.updateById(setmeal);
                     }
                 });
         }

        return R.success("批量修改成功!");
    }
    /**
     * id查询菜品返回前端
     */
    @GetMapping("/{id}")
    public R<DishDto> id(@PathVariable long id) {
        DishDto dishDto= dishService.getDishDto(id);
         return R.success(dishDto);
    }
    /**
     * 根据分类id查询所以的菜品
     */
//@GetMapping("/list")
//     public R<List<Dish>> list(Dish dish){
//    List<Dish> list = dishService.list(new QueryWrapper<Dish>().eq("category_id",
//            dish.getCategoryId()).eq("status",1));
//    return R.success(list);
//}
    /**
     * 根据分类id查询所以的菜品
     */
    @GetMapping("/list")
    public R<List<DishDto>> list(Dish dish){
        List<Dish> list = dishService.list(new QueryWrapper<Dish>().eq("category_id",
        dish.getCategoryId()).eq("status",1));
        List<DishDto>dtoList=null;
        dtoList=list.stream().map((item)->{
            DishDto dishDto = new DishDto();
            BeanUtils.copyProperties(item,dishDto);
            Long categoryId = item.getCategoryId();
           Category category = categoryService.getById(categoryId);
            if (category != null) {
                String categoryName = category.getName();
                dishDto.setCategoryName(categoryName);
            }
            //菜品id
            Long dishId = item.getId();
            List<DishFlavor> flavorList =
                    dishFlavorService.list(new LambdaQueryWrapper<DishFlavor>().eq(DishFlavor::getDishId, dishId));
            dishDto.setFlavors(flavorList);
            return dishDto;
        }).collect(Collectors.toList());
        return R.success(dtoList);
    }


}

五、论文参考

  • 计算机毕业设计选题推荐-便捷外卖点餐系统论文参考:
    计算机毕业设计选题推荐-便捷外卖点餐系统论文参考

六、系统视频

便捷外卖点餐系统项目视频:

计算机毕业设计选题推荐-便捷外卖点餐系统-Java项目实战

结语

计算机毕业设计选题推荐-便捷外卖点餐系统-Java项目实战
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我

精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT研究室

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

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

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

打赏作者

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

抵扣说明:

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

余额充值