SpringBoot基于大数据的自助餐厅菜品供应优化与分析系统
🍅 作者主页:Selina .a
🍅 简介:Java领域优质创作者🏆、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。
主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。
🍅文末获取源码联系🍅
目录
课题的提出
随着人们生活水平的提高和生活节奏的加快,自助餐厅以其丰富多样的菜品选择和自由的用餐方式受到广大消费者的喜爱。然而,在竞争激烈的餐饮市场中,如何实现高效的菜品供应管理成为自助餐厅亟待解决的问题。大数据和信息技术的蓬勃发展,为解决这一问题提供了新的途径和方法,借助先进技术优化菜品供应已成为提升自助餐厅运营水平的关键。
本自助餐厅菜品供应优化与分析系统基于B/S开发模式构建。采用springboot框架,充分发挥其快速开发、易于部署和高扩展性的优势,保障系统后端的稳定运行。利用Hadoop技术对餐厅产生的海量数据,如销售记录、库存信息、顾客评价等进行高效存储和处理。以Java语言作为主要开发语言,实现系统的各项功能。系统赋予管理员全面的管理权限,不仅能对用户进行管理,如注册审核、权限分配等,还能对分析数据进行深度挖掘,包括菜品的受欢迎程度、销售趋势等。同时,系统可依据历史数据和算法模型对未来菜品需求进行精准预测。
该系统的应用对自助餐厅的发展意义重大。它有助于餐厅合理规划菜品供应,减少食材浪费,降低运营成本。通过深入了解顾客需求和偏好,餐厅可以优化菜品组合,提升服务质量,增强顾客的满意度和忠诚度,从而在激烈的市场竞争中脱颖而出,实现可持续发展。
功能角色描述
自助餐厅菜品供应优化与分析系统是基于Web服务模式,采用面向对象的程序设计方法,实现一个具有通用功能的模型结构。使用该系统的条件仅是需要具备连上互联网的能力,并能够通过移动设备登录系统。系统用户分管理员和用户。管理员可操作系统首页、管理用户、分析及预测数据、访问个人中心;用户能浏览系统首页、分析数据,使用个人中心功能。它展示了系统不同用户的功能模块构成,具体实现的系统功能结构图如图4.1所示:

系统界面展示
管理员在自助餐厅菜品供应优化与分析系统后台网站的登录界面中,首先需要进行身份验证。详细的管理员登录界面如图5.1所示:

图5.1管理员登录界面图
管理员主要分为多个模块,分别是系统首页、用户、分析数据、预测数据、个人中心等。具体的管理员首页如下图5.2所示。

图5.2管理员首页界面图
管理员可以在用户界面进行用户信息的管理,包括添删改查操作,可以根据用户账号、用户姓名,搜索到相应的用户信息,并进行添删改查操作。该模块实现的界面如图5.3所示:

图5.3用户界面图
管理员可以在分析数据界面进行分析数据的管理,包括添删改查操作,可以根据菜品名称、菜品类别、菜品口味、天气情况,搜索到相应的顾客ID、消费时间、消费频率、菜品名称、菜品类别、菜品价格、菜品成分、菜品口味、销售数量等信息,并进行添删改查等操作。该模块实现的界面如图5.4所示:

图5.4分析数据界面图
管理员可以在预测数据界面进行预测数据的管理,包括添删改查操作,可以根据菜品名称、天气情况,搜索到相应的消费时间、消费频率、菜品名称、菜品价格等信息,并进行添删改查操作。该模块实现的界面如图5.5所示:

图5.5预测数据界面图
5.2用户功能模块实现
用户在自助餐厅菜品供应优化与分析系统后台网站的注册登录界面中,首先需要进行身份验证。详细的用户注册登录界面如图5.6所示

图5.6用户注册登录界面图
用户主要分为多个模块,分别是系统首页、分析数据、个人中心等。具体的用户首页如下图5.7所示


基于大数据的自助餐厅菜品供应优化与分析系统看板展示在数据展示上:左侧区域,菜品名称以文字云形式呈现,字体大小或反映菜品热度;评价占比用环形图展示不同评价维度占比,能直观了解顾客反馈倾向;评价数量用横条堆叠图呈现,可对比不同菜品受关注程度。中间列出多种分析维度及对应数值、占比,用于深度剖析菜品相关数据。销量曲线可观察销量随时间的变化趋势。右侧天气占比用饼图展示天气对销售的影响;库存量以柱状图呈现库存情况;采购成本曲线显示成本随时间的波动,助力成本管控。
整个界面借助丰富多样的可视化图表,集成多维度数据,为餐厅菜品供应优化提供全面、直观的数据支持。界面如图5.8所示:

关键代码
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.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();
}
}
专栏推荐
Spring Boot+Vue+CSS+JavaScript+HTML等技术项目专栏推荐
推荐项目
基于Node.js+Vue+MySQL的小型企业工资管理系统
基于Spring Boot+Android+MySQL的记录生活管理系统
源码获取
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
更多推荐
所有评论(0)