基于springboot的美食推荐菜谱教程管理系统-开题免费【论文、源码】

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎​百套小程序APP项目实战持续更新中~​

🔎​千套JAVA项目实战持续更新中~​

🔎​百套Python实战项目持续更新中~​
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,帮你完成文档

⚠️文末联系方式获取完整资料⚠️

4 系统软件的总体设计

4.1系统的基本要求

(1)功能要求:管理人员可以管理自己的个人中心,对用户管理、营养师管理、预约订单管理、饮食计划管理、美食分类管理、热门美食管理、美食教程管理、美食店铺管理、美食社区、系统管理等进行管理 [3]。

(2)性能:可以准确无误的在不同的操作系统中登录到用户、营养师或者管理员的相应界面进行轻松的操作[4]。

(3)环境要求:支持不同的操纵系统和不同的平台,可用于Windows系列、Vista系统等多种操作系统。

4.2 系统开发目标

本美食推荐管理系统的主要开发目标如下:

(1)减少后台管理人员的工作量,对营养师的信息进行系统的管理;

(2)必须要方便快捷的查看搜索信息并管理信息;

(3)用户是具有多样性的,所以界面要设置的简单明了,操作更要方便快捷。

4.3 系统总体架构设计

本系统使用的数据库为MySQL数据库[10],选择该数据库的原因是因为该数据库开源、免费,且相对简便,且由于使用人数众多,在处理问题上会得到更多已知的帮助。本系统作为一个美食推荐管理系统,其体量并不会很大,也很适合MySQL数据库的特点。综上所述,本项目采用MySQL作为本项目的数据库和进行数据表的设计。

如图4-1是该系统软件的总体功能结构图:

4-1 总体功能结构图

4.4 系统数据库的设计

4.4.1数据库设计原则

要学习程序设计,如果您想了解数据库管理系统或根据需要开发的系统接口,则必须创建一个数据库管理系统模型来存储数据。这样就不需要在应用程序编程期间将信息加载到操作系统页面中,从而提高了整个系统的效率。信息数据库管理系统中存储着大量的数据,可以说是管理信息系统建设的中心和基础。该信息库管理系统还提供了管理信息系统建设中添加、删除、修改和搜索的操作功能,使管理信息系统建设可以快速查询所需数据,而不是直接从程序代码中查找。信息库管理系统将信息表的各个组成部分按照具体的方法进行组合,准确地组合、分类并构成信息库管理系统。

4.4.2数据库E/R图

ER图是由实体及其关系构成的图,通过E/R图可以清楚地描述系统涉及到的实体之间的相互关系。在系统中对一些主要的几个关键实体如下图:

(1) 美食店铺实体属性图如下所示:

图4-2美食店铺实体属性

 (2) 美食社区实体属性图如下所示:

图4-3美食社区实体属性

(3) 饮食计划实体属性图如下所示:

图4-4饮食计划实体属性

(4) 营养师实体属性图如下所示:

图4-5营养师实体属性

(5) 热门美食实体属性图如下所示:

4.4.3 数据库表

该系统采用的数据库是MySQL,根据该系统的数据存储特点进行数据库关系表的设计。下面是该系统中关键部分关系表的详细信息。

表4-1美食分类

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

fenlei

varchar

200

分类

表4-2美食店铺

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

dianpumingcheng

varchar

200

店铺名称

tupian

varchar

200

图片

yingyeshijian

varchar

200

营业时间

fuzeren

varchar

200

负责人

lianxidianhua

varchar

200

联系电话

dianpudizhi

varchar

200

店铺地址

dianpujieshao

longtext

4294967295

店铺介绍

jingdiancaipin

longtext

4294967295

经典菜品

thumbsupnum

int

0

crazilynum

int

0

表4-3美食社区

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

帖子标题

content

longtext

4294967295

帖子内容

parentid

bigint

父节点id

userid

bigint

用户id

username

varchar

200

用户名

avatarurl

varchar

200

头像

isdone

varchar

200

状态

表4-4预约订单

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yuyuedanhao

varchar

200

预约单号

zhanghao

varchar

200

账号

xingming

varchar

200

姓名

yuyuefei

int

预约费

dianhua

varchar

200

电话

yuyueshijian

datetime

预约时间

xiadanshijian

datetime

下单时间

yonghuzhanghao

varchar

200

用户账号

yonghuxingming

varchar

200

用户姓名

xingbie

varchar

200

性别

nianling

int

年龄

shouji

varchar

200

手机

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

ispay

varchar

200

是否支付

未支付

表4-5营养师评论表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

refid

bigint

关联表id

userid

bigint

用户id

avatarurl

varchar

200

头像

nickname

varchar

200

用户名

content

longtext

4294967295

评论内容

reply

longtext

4294967295

回复内容

表4-6用户

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yonghuzhanghao

varchar

200

用户账号

yonghuxingming

varchar

200

用户姓名

mima

varchar

200

密码

touxiang

varchar

200

头像

xingbie

varchar

200

性别

nianling

int

年龄

shouji

varchar

200

手机

表4-7热门美食评论表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

refid

bigint

关联表id

userid

bigint

用户id

avatarurl

varchar

200

头像

nickname

varchar

200

用户名

content

longtext

4294967295

评论内容

reply

longtext

4294967295

回复内容

表4-8饮食计划

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yonghuzhanghao

varchar

200

用户账号

yonghuxingming

varchar

200

用户姓名

zaocandapei

longtext

4294967295

早餐搭配

wucandapei

longtext

4294967295

午餐搭配

wancandapei

longtext

4294967295

晚餐搭配

jihuaxiangqing

longtext

4294967295

计划详情

zhanghao

varchar

200

账号

xingming

varchar

200

姓名

表4-9用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-10美食教程评论表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

refid

bigint

关联表id

userid

bigint

用户id

avatarurl

varchar

200

头像

nickname

varchar

200

用户名

content

longtext

4294967295

评论内容

reply

longtext

4294967295

回复内容

表4-11token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

userid

bigint

用户id

username

varchar

100

用户名

tablename

varchar

100

表名

role

varchar

100

角色

token

varchar

200

密码

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

expiratedtime

timestamp

过期时间

CURRENT_TIMESTAMP

表4-12营养师

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

zhanghao

varchar

200

账号

xingming

varchar

200

姓名

mima

varchar

200

密码

zhaopian

varchar

200

照片

xingbie

varchar

200

性别

yuyuefei

int

预约费

dianhua

varchar

200

电话

表4-13美食店铺评论表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

refid

bigint

关联表id

userid

bigint

用户id

avatarurl

varchar

200

头像

nickname

varchar

200

用户名

content

longtext

4294967295

评论内容

reply

longtext

4294967295

回复内容

表4-14收藏表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

refid

bigint

商品id

tablename

varchar

200

表名

name

varchar

200

名称

picture

varchar

200

图片

type

varchar

200

类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注)

1

inteltype

varchar

200

推荐类型

remark

varchar

200

备注

表4-15配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表4-16热门美食

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

meishimingcheng

varchar

200

美食名称

fenlei

varchar

200

分类

tupian

varchar

200

图片

cailiao

varchar

200

材料

meishitese

longtext

4294967295

美食特色

thumbsupnum

int

0

crazilynum

int

0

clicktime

datetime

最近点击时间

clicknum

int

点击次数

0

表4-17美食资讯

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

introduction

longtext

4294967295

简介

picture

varchar

200

图片

content

longtext

4294967295

内容

表4-18美食教程

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

meishimingcheng

varchar

200

美食名称

fenlei

varchar

200

分类

tupian

varchar

200

图片

yongliao

varchar

200

用料

pengrenfangfa

varchar

200

烹饪方法

pengrenshizhang

varchar

200

烹饪时长

meishitese

longtext

4294967295

美食特色

xiaotieshi

longtext

4294967295

小贴士

faburiqi

date

发布日期

yonghuzhanghao

varchar

200

用户账号

yonghuxingming

varchar

200

用户姓名

thumbsupnum

int

0

crazilynum

int

0

5 系统软件功能的具体实现

5.1系统功能实现

当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到系统的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图5-1所示

图5-1 系统首页界面

营养师:在营养师页面的输入栏中输入账号和姓名进行查询,可以查看到营养师详细信息,并根据需要进行预约、评论或收藏操作;营养师页面如图5-2所示:

图5-2营养师详细页面

美食教程:在美食教程页面的输入栏中输入美食名称、用料、用户账号和选择分类进行查询,可以查看到美食教程详细信息,并根据需要进行评论或收藏操作;美食教程页面如图5-3所示:

图5-3美食教程详细页面

美食店铺:在美食店铺页面的输入栏中输入店铺名称和店铺地址进行查询,可以查看到美食店铺详细信息,并进行评论或收藏操作,美食店铺页面如图5-4所示:

图5-4美食店铺详细页面

个人中心:在个人中心页面可以对个人中心、我的发布、我的收藏和我的关注进行详细操作;

个人中心:在个人中心页面通过填写个人资料进行信息更新操作;如图5-5所示:

图5-5个人中心界面

5.2后台模块实现

后台用户登录,在登录页面选择需要登录的角色,在正确输入用户名和密码后,进入操作系统进行操作;如图5-6所示。                               

图5-6 后台登录界面

5.2.1管理员模块实现

管理员进入主页面,主要功能包括对个人中心、用户管理、营养师管理、预约订单管理、饮食计划管理、美食分类管理、热门美食管理、美食教程管理、美食店铺管理、美食社区、系统管理等进行操作。管理员主页面如图5-7所示:

图5-7 管理员主界面

JAVA后端代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

 🔎​百套小程序APP项目实战持续更新中~​

🔎​千套JAVA项目实战持续更新中~​

🔎​百套Python实战项目持续更新中~​

👇下方有我的微信名片👇

  • 26
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于SpringBoot框架的美食发现系统是一个能够让用户方便查找美食资源、了解美食文化、获取美食新闻的平台。其系统设计与实现主要分为以下几个方面。 1.功能需求分析:首先明确系统功能需求,包括用户注册、登录、浏览食谱、点赞、评论、收藏等。并要充分考虑用户体验,在系统设计时保证简洁易用、快速响应、数据及时准确。 2.技术选型:基于SpringBoot的框架、MyBatis的ORM映射技术、MySQL的关系型数据库、Redis的缓存技术、AOP的切面编程技术等,保证系统的稳定性、性能和安全性。 3.数据模型设计:使用ER模型来设计系统实体关系,如用户、食谱、评论、收藏等,明确表结构、字段和约束、主外键关系等。使用MySQL数据库建表,并进行合理的索引设计,保证系统查询效率和速度。 4.系统架构设计:采用分层架构设计,包括Web层、Service层、Repository层、Redis缓存层等,各层之间通过Spring的依赖注入来协同工作。另外采用RESTful API风格来设计系统接口,保证系统的接口稳定,易扩展和维护。 5.系统功能实现:通过开发各种API接口、Filter、Listener, Interceptor等实现用户的登录、注册、浏览食谱、点赞、评论、收藏等功能。同时,对于用户个人资料采用JWT-Token技术进行加密传输,保证用户安全性。所有API均可以响应JSON格式数据,同时通过Spring的AOP技术进行日志记录和事务管理。 6.部署和测试:对于系统总体架构采用微服务的部署方式,分模块进行独立部署,提高系统的可靠性和响应速度。同时采用单元测试、功能测试、压力测试等多种测试方法,确保系统良好运行。 以上是基于SpringBoot框架的美食发现系统的设计与实现,其中涉及到的技术和环节有许多,都需要严谨的操作和优秀的技能才能实现一个高品质的、稳定的、高性能的美食发现系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值