一、前言

随着移动互联网的普及和人们生活水平的提高,线上点餐已经成为了日常生活中不可或缺的一部分。然而,目前市场上的线上点餐平台存在着一些问题,如用户体验不佳等,这些问题严重影响了用户的使用体验和商家的经营效益。因此,开发一款便捷、安全的餐厅线上点餐微信小程序/安卓APP具有重要的现实意义。

目前,一些餐厅线上点餐平台已经采用了小程序或APP的形式,但是这些平台存在一些问题。首先,部分平台的用户体验不佳,页面设计不美观、操作流程繁琐等问题影响了用户的使用体验;其次,部分平台的功能不够完善,无法满足用户个性化需求。这些问题都严重影响了线上点餐平台的效果和质量。

本课题的研究目的是设计并实现一款基于微信小程序/安卓APP的餐厅线上点餐平台,以提高平台的效率和质量。具体来说,该工具可以实现以下功能:

  1. 提供便捷的商品信息展示和管理功能,方便用户进行信息查询和选择;
  2. 实现订单管理和个性化需求满足,让用户得到更好的服务体验;
  3. 提供售后服务和投诉处理功能,确保用户的权益得到保障。
    通过以上功能的实现,可以有效解决现有解决方案存在的问题,提高线上点餐平台的效果和质量。

本课题的研究具有重要的现实意义和应用价值。首先,它可以提高餐厅的经营效益,增加销售额和客户满意度;其次,它可以提升用户的使用体验,方便用户进行线上点餐和支付;最后,它可以推动数字化经济的发展,促进数字经济与传统产业的融合。

二、开发环境

  • 开发语言:Java
  • 数据库:MySQL
  • 系统架构:移动端
  • 后端:SpringBoot
  • 前端:微信小程序+uniapp+Vue

三、系统界面展示

  • 餐厅线上点餐微信小程序/安卓APP界面展示:
    计算机毕业设计选题推荐-餐厅线上点餐微信小程序/安卓APP-项目实战-LMLPHP
    计算机毕业设计选题推荐-餐厅线上点餐微信小程序/安卓APP-项目实战-LMLPHP
    计算机毕业设计选题推荐-餐厅线上点餐微信小程序/安卓APP-项目实战-LMLPHP
    计算机毕业设计选题推荐-餐厅线上点餐微信小程序/安卓APP-项目实战-LMLPHP
    计算机毕业设计选题推荐-餐厅线上点餐微信小程序/安卓APP-项目实战-LMLPHP
    计算机毕业设计选题推荐-餐厅线上点餐微信小程序/安卓APP-项目实战-LMLPHP
    计算机毕业设计选题推荐-餐厅线上点餐微信小程序/安卓APP-项目实战-LMLPHP

四、部分代码设计

  • 餐厅线上点餐微信小程序/安卓APP项目实战-代码参考:
/**
 * 地址簿管理
 */
@Slf4j
@RestController
@RequestMapping("/addressBook")
public class AddressBookController {

    @Autowired
    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) {
        addressBook.setUserId(BaseContext.getCurrentId());
        log.info("addressBook:{}", addressBook);

        //条件构造器
        LambdaQueryWrapper<AddressBook> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(null != addressBook.getUserId(), AddressBook::getUserId, addressBook.getUserId());
        queryWrapper.orderByDesc(AddressBook::getUpdateTime);

        //SQL:select * from address_book where user_id = ? order by update_time desc
        return R.success(addressBookService.list(queryWrapper));
    }
}
/*
    分类管理
 */
@Slf4j
@RestController
@RequestMapping("/category")
public class CategoryController {
    @Autowired
    private CategoryService categoryService;


    @PostMapping
    //新增分类
    public R<String> save(@RequestBody Category category){
        log.info("category{}",category);
        categoryService.save(category);
        return R.success("新增分类成功");
    }

    //分页查询
    @GetMapping("/page")
    public R<Page> page(int page,int pageSize){
        log.info(page+"  "+pageSize);
        //创建分页查询对象
        Page<Category> pageInfo = new Page<>(page,pageSize);
        //条件构造器
        LambdaQueryWrapper<Category> lambdaQueryWrapper =new LambdaQueryWrapper<>();
        //添加排序条件
        lambdaQueryWrapper.orderByAsc(Category::getSort);

        //进行分页查询
        categoryService.page(pageInfo,lambdaQueryWrapper);
        //返回分页数据
        return R.success(pageInfo);
    }


    //根据id删除
    @DeleteMapping
    public R<String> delete(Long ids){
//        categoryService.removeById(ids);

        categoryService.remove(ids);

        return R.success("分类信息删除成功");
    }

    //根据id修改
    @PutMapping
    public R<String> update(@RequestBody Category category){
        log.info(String.valueOf(category));
        categoryService.updateById(category);
        return R.success("修改分类信息成功");
    }

    //根据条件查询分类数据
    @GetMapping("/list")
    public R<List<Category>> list(Category category){
        LambdaQueryWrapper<Category> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        //添加条件
        lambdaQueryWrapper.eq(category.getType()!=null,Category::getType,category.getType());
        //添加排序条件
        lambdaQueryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);

        List<Category> list = categoryService.list(lambdaQueryWrapper);

        return R.success(list);
    }
}
@RestController
@RequestMapping("/shoppingCart")
@Slf4j
public class ShoppingCartController {

    @Autowired
    private ShoppingCartService shoppingCartService;


    //菜品添加
    @PostMapping("/add")
    public R<ShoppingCart> add(@RequestBody ShoppingCart shoppingCart){
        log.info("{}",shoppingCart);

        //设置用户id,指定当前是哪个用户的购物车
        Long userId = BaseContext.getCurrentId();
        shoppingCart.setUserId(userId);
        LambdaQueryWrapper<ShoppingCart> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(ShoppingCart::getUserId,shoppingCart.getUserId());

        //查询当前菜品/套餐是否在购物车中
        if(shoppingCart.getDishId()!=null){
            //添加的是菜品
            lambdaQueryWrapper.eq(ShoppingCart::getDishId,shoppingCart.getDishId());

        }else {
            //套餐
            lambdaQueryWrapper.eq(ShoppingCart::getSetmealId,shoppingCart.getSetmealId());
        }
        ShoppingCart cartServiceOne = shoppingCartService.getOne(lambdaQueryWrapper);
        if(cartServiceOne!=null){
            //已经存在,原来数量基础上加一
            Integer number = cartServiceOne.getNumber();
            cartServiceOne.setNumber(++number);
            shoppingCartService.updateById(cartServiceOne);
        }else {
            //不存在则加入购物车,熟练默认为1
            shoppingCart.setNumber(1);
            shoppingCart.setCreateTime(LocalDateTime.now());
            shoppingCartService.save(shoppingCart);
            cartServiceOne=shoppingCart;
        }
        return R.success(cartServiceOne);
    }


    //菜品删除
    @PostMapping("/sub")
    public R<ShoppingCart> sub(@RequestBody ShoppingCart shoppingCart){
        Long dishId = shoppingCart.getDishId();
        Long setmealId = shoppingCart.getSetmealId();
        Long currentId = BaseContext.getCurrentId();
        LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ShoppingCart::getUserId,currentId);

        ShoppingCart shoppingCart1 = new ShoppingCart();

        if(dishId!=null){
            queryWrapper.eq(ShoppingCart::getDishId,dishId);
            ShoppingCart cart = shoppingCartService.getOne(queryWrapper);
            Integer number = cart.getNumber();
            if(number>1){
                cart.setNumber(number-1);
                shoppingCartService.updateById(cart);
                shoppingCart1 = cart;
            }else {
                shoppingCartService.removeById(cart);
            }
        }else {
            queryWrapper.eq(ShoppingCart::getSetmealId,setmealId);
            ShoppingCart cart = shoppingCartService.getOne(queryWrapper);
            Integer number = cart.getNumber();
            if(number>1){
                cart.setNumber(number-1);
                shoppingCartService.updateById(cart);
                shoppingCart1 = cart;
            }else {
                shoppingCartService.removeById(cart);
            }
        }
        return R.success(shoppingCart1);
    }


    //菜品清空
    @DeleteMapping("/clean")
    public R<String> clean(){
        Long currentId = BaseContext.getCurrentId();
        LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ShoppingCart::getUserId,currentId);
        shoppingCartService.remove(queryWrapper);
        return R.success("清空成功 ");
    }


    //查看购物车
    @GetMapping("/list")
    public R<List<ShoppingCart>> list(){

        LambdaQueryWrapper<ShoppingCart> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(ShoppingCart::getUserId,BaseContext.getCurrentId());
        lambdaQueryWrapper.orderByAsc(ShoppingCart::getCreateTime);
        List<ShoppingCart> list = shoppingCartService.list(lambdaQueryWrapper);
        return R.success(list);
    }

}

五、论文参考

  • 计算机毕业设计选题推荐-餐厅线上点餐微信小程序/安卓APP-论文参考:
    计算机毕业设计选题推荐-餐厅线上点餐微信小程序/安卓APP-项目实战-LMLPHP

六、系统视频

餐厅线上点餐微信小程序/安卓APP-项目视频:

计算机毕业设计选题推荐-餐厅线上点餐微信小程序/安卓APP

结语

计算机毕业设计选题推荐-餐厅线上点餐微信小程序/安卓APP-项目实战
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我

10-31 02:38