基于Springboot+Vue的Java项目-校园周边美食探索及分享平台系统开发实战(附演示视频+源码+LW)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。

💞当前专栏:Java毕业设计

精彩专栏推荐👇🏻👇🏻👇🏻

🎀 Python毕业设计
🌎微信小程序毕业设计

开发环境

开发语言:Java
框架:Springboot+Vue
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7
数据库工具:Navicat12
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器

演示视频

springboot021校园周边美食探索及分享平台录像

原版高清演示视频:
https://pan.quark.cn/s/5cda95b17ee0

源码下载地址:

https://download.csdn.net/download/2301_76953549/89100220

LW目录

【如需全文请按文末获取联系】
在这里插入图片描述

目录

  • 开发环境
  • 演示视频
  • 源码下载地址:
  • LW目录
  • 一、项目简介
  • 二、系统设计
    • 2.1软件功能模块设计
    • 2.2数据库设计
  • 三、系统项目部分截图
    • 3.1前台首页功能模块
    • 3.2用户功能模块
    • 3.3管理员功能模块
    • 3.4系统管理员功能
  • 四、部分核心代码
    • 4.1 用户部分
  • 获取源码或论文

一、项目简介

本系统描绘了整个网上校园周边美食探索及分享平台的设计与实现,主要实现的功能有以下几点:管理员;首页、个人中心、用户管理、美食鉴赏管理、我的好友管理、我的收藏管理、系统管理,前台首页;首页、美食鉴赏、我的好友、个人中心、后台管理,用户后台;首页、个人中心、美食鉴赏管理、我的好友管理、我的收藏管理等功能,其具有简单的接口,方便的应用,强大的互动,完全基于互联网的特点。

二、系统设计

2.1软件功能模块设计

本校园周边美食探索及分享平台结构图如图3-2所示。

在这里插入图片描述

2.2数据库设计

(1)管理员信息实体属性图如下图3-3所示
在这里插入图片描述

(2)用户信息:用户名、姓名、手机、邮箱、身份证、照片实体属性如下图3-4所示
在这里插入图片描述
(3)我的好友管理实体属性如下图3-5所示
在这里插入图片描述
(4)美食鉴赏信息:发布时间、美食名称、美食类别、美食介绍、商品所在、推荐指数、美食照片、商品价格、用户名、姓名、美食介绍实体属性如下图3-6所示
在这里插入图片描述

三、系统项目部分截图

3.1前台首页功能模块

校园周边美食探索及分享平台,在系统首页可以查看首页、美食鉴赏、我的好友、个人中心、后台管理等内容,如图4-1所示。
在这里插入图片描述
用户登录、用户注册,在用户注册页面可以填写用户名、姓名、手机、邮箱、身份证等详细内容进行注册、登录,如图4-2所示。
在这里插入图片描述
美食鉴赏,在美食鉴赏页面查看发布时间、美食名称、美食类别、美食介绍、商品所在、推荐指数、美食照片、商品价格、用户名、姓名、美食介绍等信息进行点赞、评论,也可根据需要美食鉴赏名称进行搜索操作,如图4-3所示。
在这里插入图片描述

3.2用户功能模块

用户登录进入校园周边美食探索及分享平台可以查看首页、个人中心、美食鉴赏管理、我的好友管理、我的收藏管理等内容。如图4-5所示。
在这里插入图片描述
美食鉴赏管理,用户在美食鉴赏页面中可以添加发布时间、美食名称、美食类别、美食介绍、商品所在、推荐指数、美食照片、商品价格、用户名、姓名、美食介绍等信息内容,可进行修改或删除等其他详细操作,如图4-7所示。
在这里插入图片描述

3.3管理员功能模块

管理员登录进入校园周边美食探索及分享平台可以查看首页、个人中心、用户管理、美食鉴赏管理、我的好友管理、我的收藏管理、系统管理等信息。如图4-7所示。
管理员对个人中心进行操作填写原密码、新密码、确认密码并进行添加、删除、修改以及查看,如图4-10所示。
在这里插入图片描述
美食鉴赏管理,管理员在美食鉴赏信息页面中可以查看发布时间、美食名称、美食类别、美食介绍、商品所在、推荐指数、美食照片、商品价格、用户名、姓名、美食介绍等信息,并可根据需要对已有美食鉴赏信息进行新增、修改或删除等详细操作,如图4-13所示。
在这里插入图片描述

3.4系统管理员功能

系统管理:管理员通过系统管理页面查看轮播图进行上传图片进行添加、删除、修改以及查看并对整个系统进行维护等操作。,如图4-15所示。
在这里插入图片描述

四、部分核心代码

4.1 用户部分

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.MeishijianshangEntity;
import com.entity.view.MeishijianshangView;import com.service.MeishijianshangService;
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-03-12 20:57:00*/
@RestController
@RequestMapping("/meishijianshang")
public class MeishijianshangController {@Autowiredprivate MeishijianshangService meishijianshangService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,MeishijianshangEntity meishijianshang,@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Date fabushijianstart, @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Date fabushijianend,HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yonghu")) {meishijianshang.setYonghuming((String)request.getSession().getAttribute("username"));}EntityWrapper<MeishijianshangEntity> ew = new EntityWrapper<MeishijianshangEntity>();if(fabushijianstart!=null) ew.ge("fabushijian", fabushijianstart);if(fabushijianend!=null) ew.le("fabushijian", fabushijianend);PageUtils page = meishijianshangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, meishijianshang), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,MeishijianshangEntity meishijianshang, HttpServletRequest request){EntityWrapper<MeishijianshangEntity> ew = new EntityWrapper<MeishijianshangEntity>();PageUtils page = meishijianshangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, meishijianshang), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( MeishijianshangEntity meishijianshang){EntityWrapper<MeishijianshangEntity> ew = new EntityWrapper<MeishijianshangEntity>();ew.allEq(MPUtil.allEQMapPre( meishijianshang, "meishijianshang")); return R.ok().put("data", meishijianshangService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(MeishijianshangEntity meishijianshang){EntityWrapper< MeishijianshangEntity> ew = new EntityWrapper< MeishijianshangEntity>();ew.allEq(MPUtil.allEQMapPre( meishijianshang, "meishijianshang")); MeishijianshangView meishijianshangView =  meishijianshangService.selectView(ew);return R.ok("查询美食鉴赏成功").put("data", meishijianshangView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){MeishijianshangEntity meishijianshang = meishijianshangService.selectById(id);meishijianshang.setClicknum(meishijianshang.getClicknum()+1);meishijianshang.setClicktime(new Date());meishijianshangService.updateById(meishijianshang);return R.ok().put("data", meishijianshang);}/*** 前端详情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){MeishijianshangEntity meishijianshang = meishijianshangService.selectById(id);meishijianshang.setClicknum(meishijianshang.getClicknum()+1);meishijianshang.setClicktime(new Date());meishijianshangService.updateById(meishijianshang);return R.ok().put("data", meishijianshang);}/*** 赞或踩*/@RequestMapping("/thumbsup/{id}")public R vote(@PathVariable("id") String id,String type){MeishijianshangEntity meishijianshang = meishijianshangService.selectById(id);if(type.equals("1")) {meishijianshang.setThumbsupnum(meishijianshang.getThumbsupnum()+1);} else {meishijianshang.setCrazilynum(meishijianshang.getCrazilynum()+1);}meishijianshangService.updateById(meishijianshang);return R.ok("投票成功");}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody MeishijianshangEntity meishijianshang, HttpServletRequest request){meishijianshang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(meishijianshang);meishijianshangService.insert(meishijianshang);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody MeishijianshangEntity meishijianshang, HttpServletRequest request){meishijianshang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(meishijianshang);meishijianshangService.insert(meishijianshang);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody MeishijianshangEntity meishijianshang, HttpServletRequest request){//ValidatorUtils.validateEntity(meishijianshang);meishijianshangService.updateById(meishijianshang);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){meishijianshangService.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<MeishijianshangEntity> wrapper = new EntityWrapper<MeishijianshangEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yonghu")) {wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));}int count = meishijianshangService.selectCount(wrapper);return R.ok().put("count", count);}/*** 前端智能排序*/@IgnoreAuth@RequestMapping("/autoSort")public R autoSort(@RequestParam Map<String, Object> params,MeishijianshangEntity meishijianshang, HttpServletRequest request,String pre){EntityWrapper<MeishijianshangEntity> ew = new EntityWrapper<MeishijianshangEntity>();Map<String, Object> newMap = new HashMap<String, Object>();Map<String, Object> param = new HashMap<String, Object>();Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();while (it.hasNext()) {Map.Entry<String, Object> entry = it.next();String key = entry.getKey();String newKey = entry.getKey();if (pre.endsWith(".")) {newMap.put(pre + newKey, entry.getValue());} else if (StringUtils.isEmpty(pre)) {newMap.put(newKey, entry.getValue());} else {newMap.put(pre + "." + newKey, entry.getValue());}}params.put("sort", "clicknum");params.put("order", "desc");PageUtils page = meishijianshangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, meishijianshang), params), params));return R.ok().put("data", page);}}

获取源码或论文

如需对应的LW或源码,以及其他定制需求,也可以通过我的个人简介联系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/820963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测

上一篇文章中&#xff0c;我们详细介绍了构建 Apifox Cli 的 Docker 镜像的步骤&#xff0c;并通过简单的示例演示了如何利用 GitLab 的 CI/CD 功能&#xff0c;将构建好的镜像利用在自动化测试作业中。在今天的文章中&#xff0c;我们将重点讨论如何构建 JMeter 的 Docker 镜像…

Vitis HLS 学习笔记--readVec2Stream 函数-探究

目录 1. 高效内存存取的背景 2. readVec2Stream() 参数 3. 函数实现 4. 总结 1. 高效内存存取的背景 在深入研究《Vitis HLS 学习笔记--scal 函数探究》一篇文章之后&#xff0c;我们对于scal()函数如何将Y alpha * X这种简单的乘法运算复杂化有了深刻的理解。本文将转向…

ctf.show_web13

上传一句话木马 1.php文件&#xff0c;显示 再改后缀为.jpg&#xff0c;显示错误文件大小 用dirsearch扫一下 备份文件.bak 下载文件源码 <?php header("content-type:text/html;charsetutf-8");$filename $_FILES[file][name];$temp_name $_FILES[file][tm…

Intel 大批高端 CPU 停产,下代主板确认换接口

最近 Intel 出席了 Embedded World 2024 嵌入式世界大会&#xff0c;虽然针对的不是消费领域&#xff0c;可也有不少有意思的产品和信息。 比如&#xff0c;在会上 Intel 公布了新的 Edge 产品组合&#xff1a;Core Ultra Meteor Lake PS、Core Raptor Lake PS 等处理器。 从名…

CDC类下的画线函数

本文仅供学习交流&#xff0c;严禁用于商业用途&#xff0c;如本文涉及侵权请及时联系将于24小时内删除 目录 1.实验原理(后续再补写) 2.实验步骤 3.运行代码 4.运行结果 1.实验原理(后续再补写) MoveTo(); LineTo(); 2.实验步骤 2.1在对话框中添加如下布局控件 2.2绑定…

Git版本管理软件的安装及使用方法(Sourcetree)

1 安装软件 官网下载Sourcetree软件并安装 Sourcetree官网&#xff1a;https://www.sourcetreeapp.com/ 打开软件登陆账号,登录成功后后全部默认下一步即可 不加载SSH密钥 2 创建仓库 添加仓库-->选择地址-->确认创建 提示弹出选择是 3 保存与读取 创建成功后&#x…

类的加载,反射和注解详解

文章目录 类的加载概述类加载器作用分类获取类加载器的方式 双亲委派机制3种加载器的关系工作机制 类加载器的应用 反射概述关键获取类对象获取构造器对象获取方法对象获取成员变量对象作用 注解概述作用自定义注解格式属性类型 元注解常见的元注解 注解解析概述方法技巧 类的加…

腾讯EdgeOne产品测评体验——多重攻击实战验证安全壁垒:DDoS攻击|CC压测|Web漏洞扫描|SQL注入

腾讯EdgeOne产品测评体验——实战验证安全壁垒&#xff1a;DDoS攻击|CC压测|Web漏洞扫描|SQL注入 写在最前面一、产品概述1.1 什么是边缘安全加速平台 EO&#xff1f;1.2 EdgeOne产品功能 二、准备工作2.1 选择&#xff1a;NS&#xff08;Name Server&#xff09;接入模式或 CN…

【教学类-52-05】20240417动物数独(4宫格)黏贴卡片需要至少几张?难度1-9 打印版

作品展示&#xff1a; 背景需求&#xff1a; 实际打印的是以下代码生成的动物数独&#xff08;2*2&#xff09;学具 【教学类-52-03】20240412动物数独&#xff08;4宫格&#xff09;难度1-9 打印版-CSDN博客文章浏览阅读1.1k次&#xff0c;点赞30次&#xff0c;收藏17次。【教…

打开Visual Studio后出现Visual Assist报错弹窗

安装了新的VA插件后发现无论如何清理打开VS都会报这个旧版VA报错弹窗&#xff0c;修复VS、重装VA都解决不了 后来进到VS安装目录&#xff0c;删掉一个可疑文件后弹窗再也不出现了

秘塔和Kimi AI在资料查询和学习中的使用对比

一、引言 最近老猿在网上查资料时&#xff0c;基本上都使用Kimi AI进行查询&#xff0c;发现其查询资料后总结到位&#xff0c;知识点的准确度较高。今天早上收到一个消息&#xff0c;说新推出的秘塔AI比Kimi更新进&#xff0c;老猿利用在学习的《统计知识学习》简单对比试用了…

电商技术揭秘九:搜索引擎中的SEO数据分析与效果评估

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台的个性…

数字世界的王国:揭秘Facebook的全球影响力

Facebook&#xff0c;作为全球最大的社交媒体平台&#xff0c;已经成为一个数字世界的重要组成部分&#xff0c;拥有数十亿的用户和庞大的影响力。在这篇文章中&#xff0c;我们将深入探讨Facebook的起源、发展、影响力及其在全球数字生态中的地位&#xff0c;以及它如何影响我…

25. 【Android教程】列表控件 ListView

在学习了 ScrollView 及 Adapter 两节内容之后&#xff0c;大家应该对 ListView 有了一些基本的了解&#xff0c;它是一个列表样式的 ViewGroup&#xff0c;将若干 item 按行排列。ListView 是一个很基本的控件也是 Android 中最重要的控件之一。它可以帮助我们完成多个 View 的…

字典树(Trie树)详解

字典树&#xff08;Trie树&#xff09;详解 理论模块&#xff1a; trie 树 字典树是一种用于实现字符串快速检索的多叉树结构 trie 的每个节点都拥有若干个字符指针&#xff0c;若在插入或检索字符串时扫描到一个字符 c c c 就沿着当前节点的 c c c 字符指针&#xff0c…

【Qt 学习笔记】QWidget的windowOpacity属性 | cursor属性 | font属性

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ QWidget的windowOpacity属性 | cursor属性 | font属性 文章编号&#…

leetcode hot100_day20

4/14/2024 128.最长连续序列 自己的 这是前两天做一半的题目了。这题给我的教训就是用哈希表的时候一定一定要考虑重复元素的问题&#xff01;&#xff01;&#xff01;&#xff01; 这题让我想到了最长递增子序列&#xff0c;只是名字有点像。子序列和子数组还不一样一个连续…

算法练习第18天|111.二叉树的最小深度

111.二叉树的最小深度 111. 二叉树的最小深度 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/minimum-depth-of-binary-tree/description/ 题目描述&#xff1a; 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最…

Unity 左右折叠显示与隐藏UI的简单实现

要实现一个简单的UI左右折叠显示与隐藏&#xff0c;可以结合遮罩&#xff0c;通过代码控制UI区块的宽度和位移来实现。 具体可以按以下步骤实现&#xff1a; 1、新建一个Image组件&#xff0c;并添加精灵&#xff0c;调整大小后&#xff0c;复制一份作为该UI的父物体&#xf…