博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址
4.2系统功能结构设计
下图就是系统功能结构图。
图4.1 系统功能结构图
4.3数据库设计
4.3.1数据库E-R图设计
程序设计是离不开对应数据库的设计操作的,这样的做法就是减少数据对程序的依赖性,所以数据库的设计也是需要花费大量的日常时间来进行设计的,在设计中对程序开发需要存储的数据信息进行实体划分,先确认实体,然后设计实体的属性等操作,这种设计就是数据库设计里面不能少的必须有的E-R模型设计。为了降低程序设计的对应的数据库设计难度,开发人员也可以使用相应的工具来进行E-R模型设计,现在市面上设计E-R模型的工具有PowerDesigner建模工具,Navicat制作工具,还有微软的Visio绘图工具。为了简便起见,本程序在设计E-R模型的时候,就选用了微软的Visio这款功能强大,操作便利的绘图工具。
下面就展示厨艺交流平台的实体E-R图。
4.3.2 数据库表结构设计
本次程序开发选用的数据库管理工具是MySQL数据管理工具,使用它存放数据也需要创建程序对应的数据库文件,并命名刚创建的数据库文件,有了数据库也需要创建各种数据表来充实数据库,在数据表的创建中,不仅需要对数据表命名,也需要对数据表的字段进行设计,包括每个数据表里面需要设置的字段名称,字段对应的数据类型信息,字段的主键设置这个也是不可缺少的,因为每个数据表里面的主键就是标记着这个数据表跟其他数据表相区分的唯一标志。就相当于生活中的每个人都有姓名,但是上网搜索自己的名字,会发现全国上下有很多人的名字跟自己的名字一模一样,包括姓氏以及名字,区分每个人的唯一信息就是每个人的身份证号信息,主键在数据表里面也是起着这样的重要作用。下面就介绍本次开发的程序厨艺交流平台的数据表结构信息。
表4.1 菜谱分类
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
caipufenlei | varchar(200) | 否 | 菜谱分类 |
表4.2 菜谱信息
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
caipinbianhao | varchar(200) | 是 | NULL | 菜品编号 |
caipinmingcheng | varchar(200) | 是 | NULL | 菜品名称 |
caipufenlei | varchar(200) | 是 | NULL | 菜谱分类 |
kouwei | varchar(200) | 是 | NULL | 口味 |
nandu | varchar(200) | 是 | NULL | 难度 |
pengrenshizhang | varchar(200) | 是 | NULL | 烹饪时长 |
tupian | varchar(200) | 是 | NULL | 图片 |
yuancailiao | longtext | 是 | NULL | 原材料 |
caipinjieshao | longtext | 是 | NULL | 菜品介绍 |
thumbsupnum | int(11) | 是 | 0 | 赞 |
crazilynum | int(11) | 是 | 0 | 踩 |
clicknum | int(11) | 是 | 0 | 点击次数 |
表4.3 购物车表
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
tablename | varchar(200) | 是 | shangpinxinxi | 商品表名 |
userid | bigint(20) | 否 | 用户id | |
goodid | bigint(20) | 否 | 商品id | |
goodname | varchar(200) | 是 | NULL | 商品名称 |
picture | varchar(200) | 是 | NULL | 图片 |
buynumber | int(11) | 否 | 购买数量 | |
price | float | 是 | NULL | 单价 |
discountprice | float | 是 | NULL | 会员价 |
表4.4 健康文章
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
wenzhangbiaoti | varchar(200) | 是 | NULL | 文章标题 |
wenzhangfengmian | varchar(200) | 是 | NULL | 文章封面 |
wenzhangleixing | varchar(200) | 是 | NULL | 文章类型 |
fabushijian | datetime | 是 | NULL | 发布时间 |
wenzhangneirong | longtext | 是 | NULL | 文章内容 |
表4.5 美食日志
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
rizhibianhao | varchar(200) | 是 | NULL | 日志编号 |
rizhibiaoti | varchar(200) | 是 | NULL | 日志标题 |
rizhifengmian | varchar(200) | 是 | NULL | 日志封面 |
yonghuzhanghao | varchar(200) | 是 | NULL | 用户账号 |
yonghuxingming | varchar(200) | 是 | NULL | 用户姓名 |
fabushijian | datetime | 是 | NULL | 发布时间 |
meishirizhi | longtext | 是 | NULL | 美食日志 |
thumbsupnum | int(11) | 是 | 0 | 赞 |
crazilynum | int(11) | 是 | 0 | 踩 |
表4.6 订单
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
orderid | varchar(200) | 否 | 订单编号 | |
tablename | varchar(200) | 是 | shangpinxinxi | 商品表名 |
userid | bigint(20) | 否 | 用户id | |
goodid | bigint(20) | 否 | 商品id | |
goodname | varchar(200) | 是 | NULL | 商品名称 |
picture | varchar(200) | 是 | NULL | 商品图片 |
buynumber | int(11) | 否 | 购买数量 | |
price | float | 否 | 0 | 价格/积分 |
discountprice | float | 是 | 0 | 折扣价格 |
total | float | 否 | 0 | 总价格/总积分 |
discounttotal | float | 是 | 0 | 折扣总价格 |
type | int(11) | 是 | 1 | 支付类型 |
status | varchar(200) | 是 | NULL | 状态 |
address | varchar(200) | 是 | NULL | 地址 |
tel | varchar(200) | 是 | NULL | 电话 |
consignee | varchar(200) | 是 | NULL | 收货人 |
表4.7 商品分类
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
shangpinfenlei | varchar(200) | 否 | 商品分类 |
表4.8 商品信息
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
shangpinmingcheng | varchar(200) | 是 | NULL | 商品名称 |
shangpinbianhao | varchar(200) | 是 | NULL | 商品编号 |
shangpinfenlei | varchar(200) | 是 | NULL | 商品分类 |
tupian | varchar(200) | 是 | NULL | 图片 |
shangpinxiangqing | longtext | 是 | NULL | 商品详情 |
price | float | 否 | 价格 | |
onelimittimes | int(11) | 是 | -1 | 单限 |
alllimittimes | int(11) | 是 | -1 | 库存 |
表4.9 食材分类
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
shicaifenlei | varchar(200) | 否 | 食材分类 |
表4.10 食材信息
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
shicaimingcheng | varchar(200) | 是 | NULL | 食材名称 |
shicaichandi | varchar(200) | 是 | NULL | 食材产地 |
shicaididian | varchar(200) | 是 | NULL | 食材地点 |
shicaireliang | varchar(200) | 是 | NULL | 食材热量 |
fabushijian | datetime | 是 | NULL | 发布时间 |
shicaifengmian | varchar(200) | 是 | NULL | 食材封面 |
shiyongyiji | longtext | 是 | NULL | 食用宜忌 |
xuangoujiqiao | longtext | 是 | NULL | 选购技巧 |
thumbsupnum | int(11) | 是 | 0 | 赞 |
crazilynum | int(11) | 是 | 0 | 踩 |
表4.11 收藏表
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
userid | bigint(20) | 否 | 用户id | |
refid | bigint(20) | 是 | NULL | 收藏id |
tablename | varchar(200) | 是 | NULL | 表名 |
name | varchar(200) | 否 | 收藏名称 | |
picture | varchar(200) | 否 | 收藏图片 |
表4.12 管理员信息表
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
username | varchar(100) | 否 | 用户名 | |
password | varchar(100) | 否 | 密码 | |
role | varchar(100) | 是 | 管理员 | 角色 |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 新增时间 |
表4.13 用户
字段 | 类型 | 空 | 默认 | 注释 |
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
yonghuzhanghao | varchar(200) | 否 | 用户账号 | |
yonghuxingming | varchar(200) | 否 | 用户姓名 | |
mima | varchar(200) | 否 | 密码 | |
xingbie | varchar(200) | 是 | NULL | 性别 |
nianling | int(11) | 是 | NULL | 年龄 |
lianxidianhua | varchar(200) | 是 | NULL | 联系电话 |
dianziyouxiang | varchar(200) | 是 | NULL | 电子邮箱 |
money | float | 是 | 0 | 余额 |
5 系统实现
5.1食材分类管理
管理员管理食材分类,可以添加,修改,删除食材分类信息。下图就是食材分类管理页面。
图5.1 食材分类管理页面
5.2 用户信息管理
管理员管理用户信息,可以添加,修改,删除用户信息信息。下图就是用户信息管理页面。
图5.2用户信息管理页面
package com.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
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.annotation.IgnoreAuth;
import com.entity.DiscusscaipuxinxiEntity;
import com.entity.view.DiscusscaipuxinxiView;
import com.service.DiscusscaipuxinxiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 菜谱信息评论表
* 后端接口
* @author
* @email
* @date 2021-04-30 10:01:54
*/
@RestController
@RequestMapping("/discusscaipuxinxi")
public class DiscusscaipuxinxiController {
@Autowired
private DiscusscaipuxinxiService discusscaipuxinxiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,DiscusscaipuxinxiEntity discusscaipuxinxi,
HttpServletRequest request){
EntityWrapper<DiscusscaipuxinxiEntity> ew = new EntityWrapper<DiscusscaipuxinxiEntity>();
PageUtils page = discusscaipuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, discusscaipuxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,DiscusscaipuxinxiEntity discusscaipuxinxi,
HttpServletRequest request){
EntityWrapper<DiscusscaipuxinxiEntity> ew = new EntityWrapper<DiscusscaipuxinxiEntity>();
PageUtils page = discusscaipuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, discusscaipuxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( DiscusscaipuxinxiEntity discusscaipuxinxi){
EntityWrapper<DiscusscaipuxinxiEntity> ew = new EntityWrapper<DiscusscaipuxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( discusscaipuxinxi, "discusscaipuxinxi"));
return R.ok().put("data", discusscaipuxinxiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(DiscusscaipuxinxiEntity discusscaipuxinxi){
EntityWrapper< DiscusscaipuxinxiEntity> ew = new EntityWrapper< DiscusscaipuxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( discusscaipuxinxi, "discusscaipuxinxi"));
DiscusscaipuxinxiView discusscaipuxinxiView = discusscaipuxinxiService.selectView(ew);
return R.ok("查询菜谱信息评论表成功").put("data", discusscaipuxinxiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
DiscusscaipuxinxiEntity discusscaipuxinxi = discusscaipuxinxiService.selectById(id);
return R.ok().put("data", discusscaipuxinxi);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
DiscusscaipuxinxiEntity discusscaipuxinxi = discusscaipuxinxiService.selectById(id);
return R.ok().put("data", discusscaipuxinxi);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody DiscusscaipuxinxiEntity discusscaipuxinxi, HttpServletRequest request){
discusscaipuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(discusscaipuxinxi);
discusscaipuxinxiService.insert(discusscaipuxinxi);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody DiscusscaipuxinxiEntity discusscaipuxinxi, HttpServletRequest request){
discusscaipuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(discusscaipuxinxi);
discusscaipuxinxiService.insert(discusscaipuxinxi);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody DiscusscaipuxinxiEntity discusscaipuxinxi, HttpServletRequest request){
//ValidatorUtils.validateEntity(discusscaipuxinxi);
discusscaipuxinxiService.updateById(discusscaipuxinxi);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
discusscaipuxinxiService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<DiscusscaipuxinxiEntity> wrapper = new EntityWrapper<DiscusscaipuxinxiEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = discusscaipuxinxiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
5.3 菜谱分类管理
管理员管理菜谱分类,可以添加,修改,删除菜谱分类信息。下图就是菜谱分类管理页面。
图5.3 菜谱分类管理页面
5.4菜谱信息管理
管理员管理菜谱信息,可以添加,修改,删除菜谱信息信息。下图就是菜谱信息管理页面。
图5.4 菜谱信息管理页面
5.5食材信息管理
管理员管理食材信息,可以添加,修改,删除食材信息信息。下图就是食材信息管理页面。
图5.5 食材信息管理页面
源码下载地址:
springboot093基于springboot的厨艺交流平台的设计与实现代码.zip计算机毕业设计资源-CSDN文库
大家点赞、收藏、关注、评论啦 其他的定制服务 商务合作 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者