基于SpringBoot+Vue的美食分享平台
随着中国餐饮业发展迅猛,城市生活节奏加快,人们已不满足于饮食选择的多样化,更要讲究饮食的优化和文化。而发展日益成熟的互联网也已经影响到我们生活的方方面面,因此,互联网与餐饮业的有效结合,美食推荐系统的出现,恰到好处的弥补了这个空白。美食推荐系统致力于为用户提供一个可同时拥有美食介绍、吃客推荐、优惠团购等多方面的综合平台,目的真正成为餐饮市场的“红娘”。本系统以网络为平台,以美食为主要内容,以团购为
✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌
🍅文末获取项目下载方式🍅
一、项目背景介绍:
随着中国餐饮业发展迅猛,城市生活节奏加快,人们已不满足于饮食选择的多样化,更要讲究饮食的优化和文化。而发展日益成熟的互联网也已经影响到我们生活的方方面面,因此,互联网与餐饮业的有效结合,美食推荐系统的出现,恰到好处的弥补了这个空白。美食推荐系统致力于为用户提供一个可同时拥有美食介绍、吃客推荐、优惠团购等多方面的综合平台,目的真正成为餐饮市场的“红娘”。本系统以网络为平台,以美食为主要内容,以团购为主打,运用计算机技术,提供一个针对各地美食全方位搜罗的互动型系统。与此同时,本系统支持网络营销这一重要手段,不仅为消费者找餐厅,同时又为餐厅找市场、找顾客,使之真正成为可实现双向沟通的交流平台,从而获得持续的良性发展。
二、项目技术简介:
- JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
- Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。
Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。 - Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
- SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
- Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。
三、系统功能模块介绍:
四、数据库设计:
1:‘管理员’(admin)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
user_name | varchar | NULL | 用户名(select) |
pass_word | varchar | NULL | 密码 |
head_img | varchar | NULL | 头像(img) |
nick_name | varchar | NULL | 姓名 |
create_time | datetime | NULL | 创建时间 |
2:‘美食评价表’(food_comment)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
comment_info | text | NULL | 评价内容 |
user_id | bigint | NULL | 用户ID |
foods_id | bigint | NULL | 美食ID |
create_time | datetime | NULL | 创建时间 |
3:‘美食分类’(food_type)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
type_name | varchar | NULL | 分类名称 |
create_time | datetime | NULL | 创建时间 |
4:‘用户表’(food_user)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
account | varchar | NULL | 账号 |
password | varchar | NULL | 密码 |
nick_name | varchar | NULL | 姓名 |
head_img | varchar | NULL | 头像 |
create_time | datetime | NULL | 创建时间 |
5:‘美食表’(foods)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
food_name | varchar | NULL | 美食名称 |
food_info | text | NULL | 美食简介 |
banner_img | varchar | NULL | 封面图片 |
video_url | text | NULL | 介绍视频 |
create_time | datetime | NULL | 创建时间 |
type_id | bigint | NULL | 美食分类 |
6:‘美食图片’(foods_img)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
img_url | varchar | NULL | 图片地址 |
food_id | bigint | NULL | 美食ID |
五、功能模块:
-
美食管理:管理员可以在后台添加一些需要分享出去的美食,其中包括简介地址图片,视频等一些基本信息,用户即可在前台页面查看相关信息
-
美食评价:用户在看完美食的相关信息之后,可以在评论区对美食进行评价或者留言讨论,后台管理员则可以对评论进行对应的管理,不合适的评论进行删除等操作
-
美食分类管理:主要对不同的美食进行不同的分类,方面用户进行搜索查询
六、代码示例:
美食管理
@GetMapping("/all/foodType")
public ReturnMsg allFoodType() {
List<BaseSelectEntity> list = new ArrayList<>();
List<FoodTypeDTO> dtos = foodTypeService.list();
for (FoodTypeDTO dto : dtos) {
BaseSelectEntity baseSelectEntity = new BaseSelectEntity();
baseSelectEntity.setKey(dto.getId());
baseSelectEntity.setValue(dto.getTypeName());
list.add(baseSelectEntity);
}
return ReturnMsg.ok(list);
}
美食评价
@GetMapping("/all/{foodsId}")
public ReturnMsg all(@PathVariable("foodsId") Long foodsId) {
return ReturnMsg.ok(baseService.all(foodsId));
}
美食分类管理
package com.dhz.food.controller;
import com.dhz.food.common.BaseController;
import com.dhz.food.common.ReturnMsg;
import com.dhz.food.dto.FoodTypeDTO;
import com.dhz.food.service.FoodTypeService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.dhz.food.common.BaseSelectEntity;
import cn.hutool.core.collection.CollectionUtil;
/**
* @description: 美食分类管理对外接口层
* @author: dhz
* @create: 2023.02.06 10:47:37
*/
@RestController
@RequestMapping("/foodType")
public class FoodTypeController extends BaseController<FoodTypeService, FoodTypeDTO> {
@Override
@Resource(name = "foodTypeService")
protected void setBaseService(FoodTypeService foodTypeService) {
this.baseService = foodTypeService;
}
/**
* 默认分页查询
*
* @param foodTypeDTO
* @return
*/
@PostMapping("/page")
public ReturnMsg page(@RequestBody FoodTypeDTO foodTypeDTO) {
return ReturnMsg.ok(baseService.basePage(foodTypeDTO));
}
@Override
protected void beforeSave(FoodTypeDTO entity) throws Exception {
entity.setCreateTime(new Date());
super.beforeSave(entity);
}
}
七、项目总结:
采用Java+Mysql的方式设计制作的在美食分享平台系统,在功能上可以满足管理人员对于信息的管理需求;在界面的设计上,尽最大努力用自身的美工知识做到界面美观简洁。在操作方面上,让系统可以方便操作,同时对用户常见的误操作行为进行分析总结,并尽力在系统中避免同样的由于用户的误操作所带来的错误现象。
作为毕业设计,分配给本系统的设计与制作时间还是不足的,所以,美食分享平台还有许多需要完善的地方。
第一个就是本系统的编程代码问题,各个程序文件的代码存在冗余的地方非常多,导致代码不够简洁,同时对代码的注释也比较麻烦。编码期间,对于很多页面可以共享的函数与方法都没有单独列出来,而是在需要用到函数和方法的页面上都重新编写了代码,通过后期的技术学习,以及对编码过程的分析总结,发现可以把共用的函数或方法编写在同一个页面上,在之后的页面中,需要使用此函数的页面,则可以直接调用函数,无需再编写代码了,这样可以简化代码,也能节省时间和存储空间。
第二个就是对数据库的设计不够好,在数据处理中,影响程序运行速度。因此需要对数据库的性能进行优化。通过这方面知识的学习,在某个开发技术类的博客中,发现可以用数据库连接池技术来解决数据库的性能问题,另外还需规范数据库里面的关系模式,降低数据库的冗余率,提高运行速度。
如果说平时的作业也是检查对知识的掌握情况,那么制作毕业设计,将是对自身所有知识的一个全面检测。因为系统能够制作完成则是经历了很多阶段,正如文中所展示的那样,先有可行性分析,对功能的分析,对功能的设计,对数据库的设计,对程序功能的编码实现,对完成编码程序的测试等,这些环节缺一不可,而且还都需要认真对待,大学学到的所有知识在制作系统时,才会发现不够用。所以这个项目制作,在检测自身能力的同时,也对问题分析,资料搜集,问题解决等能力进行了培养。
八、源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻
链接点击直达:下载链接
更多推荐
所有评论(0)