Springboot+Vue项目-基于Java+MySQL的个人云盘管理系统(附源码+演示视频+LW)

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

💞当前专栏:Java毕业设计

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

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

开发环境

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

演示视频

springboot276个人云盘管理系统的设计与实现录像

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

源码下载地址:

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

LW目录

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

目录

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

一、项目简介

个人云盘管理系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现个人云盘管理系统的功能。

二、系统设计

2.1软件功能模块设计

为了让系统的编码可以顺利进行,特意对本系统功能进行细分设计,设计的系统功能结构见下图。
在这里插入图片描述

2.2数据库设计

(1)下图是论坛实体和其具备的属性。
在这里插入图片描述
(2)下图是用户实体和其具备的属性。
在这里插入图片描述

(3)下图是博客信息实体和其具备的属性。
在这里插入图片描述
(4)下图是博客信息收藏实体和其具备的属性。
在这里插入图片描述
(7)下图是书籍信息实体和其具备的属性。
在这里插入图片描述
(9)下图是视频信息实体和其具备的属性。
在这里插入图片描述

三、系统项目部分截图

3.1用户信息管理

如图5.1显示的就是用户信息管理页面,此页面提供给管理员的功能有:用户信息的查询管理,可以删除用户信息、修改用户信息、新增用户信息,
还进行了对用户名称的模糊查询的条件
在这里插入图片描述

3.2 博客信息管理

如图5.2显示的就是博客信息管理页面,此页面提供给管理员的功能有:查看已发布的博客信息数据,修改博客信息,博客信息作废,即可删除,还进行了对博客信息名称的模糊查询 博客信息信息的类型查询等等一些条件。
在这里插入图片描述

3.3视频信息管理

如图5.3显示的就是视频信息管理页面,此页面提供给管理员的功能有:根据视频信息进行条件查询,还可以对视频信息进行新增、修改、查询操作等等。
在这里插入图片描述

3.4论坛信息管理

如图5.4显示的就是论坛信息管理页面,此页面提供给管理员的功能有:根据论坛信息进行新增、修改、查询操作等等。
在这里插入图片描述

四、部分核心代码

4.1 用户部分


package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 博客信息* 后端接口* @author* @email
*/
@RestController
@Controller
@RequestMapping("/boke")
public class BokeController {private static final Logger logger = LoggerFactory.getLogger(BokeController.class);@Autowiredprivate BokeService bokeService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DictionaryService dictionaryService;//级联表service@Autowiredprivate YonghuService yonghuService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永不会进入");else if("用户".equals(role))params.put("yonghuId",request.getSession().getAttribute("userId"));if(params.get("orderBy")==null || params.get("orderBy")==""){params.put("orderBy","id");}PageUtils page = bokeService.queryPage(params);//字典表数据转换List<BokeView> list =(List<BokeView>)page.getList();for(BokeView c:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put("data", page);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);BokeEntity boke = bokeService.selectById(id);if(boke !=null){//entity转viewBokeView view = new BokeView();BeanUtils.copyProperties( boke , view );//把实体数据重构到view中//级联表YonghuEntity yonghu = yonghuService.selectById(boke.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody BokeEntity boke, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,boke:{}",this.getClass().getName(),boke.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");else if("用户".equals(role))boke.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));Wrapper<BokeEntity> queryWrapper = new EntityWrapper<BokeEntity>().eq("boke_name", boke.getBokeName()).eq("boke_types", boke.getBokeTypes()).eq("yonghu_id", boke.getYonghuId()).eq("zan_number", boke.getZanNumber()).eq("cai_number", boke.getCaiNumber()).eq("clicknum", boke.getClicknum()).eq("insert_time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()));logger.info("sql语句:"+queryWrapper.getSqlSegment());BokeEntity bokeEntity = bokeService.selectOne(queryWrapper);if(bokeEntity==null){boke.setInsertTime(new Date());boke.setCreateTime(new Date());bokeService.insert(boke);return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody BokeEntity boke, HttpServletRequest request){logger.debug("update方法:,,Controller:{},,boke:{}",this.getClass().getName(),boke.toString());String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            boke.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));//根据字段查询是否有相同数据Wrapper<BokeEntity> queryWrapper = new EntityWrapper<BokeEntity>().notIn("id",boke.getId()).andNew().eq("boke_name", boke.getBokeName()).eq("boke_types", boke.getBokeTypes()).eq("yonghu_id", boke.getYonghuId()).eq("zan_number", boke.getZanNumber()).eq("cai_number", boke.getCaiNumber()).eq("clicknum", boke.getClicknum()).eq("insert_time", new SimpleDateFormat("yyyy-MM-dd").format(boke.getInsertTime()));logger.info("sql语句:"+queryWrapper.getSqlSegment());BokeEntity bokeEntity = bokeService.selectOne(queryWrapper);if("".equals(boke.getBokePhoto()) || "null".equals(boke.getBokePhoto())){boke.setBokePhoto(null);}if(bokeEntity==null){bokeService.updateById(boke);//根据id更新return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());bokeService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 批量上传*/@RequestMapping("/batchInsert")public R save( String fileName){logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);try {List<BokeEntity> bokeList = new ArrayList<>();//上传的东西Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段Date date = new Date();int lastIndexOf = fileName.lastIndexOf(".");if(lastIndexOf == -1){return R.error(511,"该文件没有后缀");}else{String suffix = fileName.substring(lastIndexOf);if(!".xls".equals(suffix)){return R.error(511,"只支持后缀为xls的excel文件");}else{URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径File file = new File(resource.getFile());if(!file.exists()){return R.error(511,"找不到上传文件,请联系管理员");}else{List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行,因为第一行是提示for(List<String> data:dataList){//循环BokeEntity bokeEntity = new BokeEntity();
//                            bokeEntity.setBokeName(data.get(0));                    //博客标题 要改的
//                            bokeEntity.setBokeTypes(Integer.valueOf(data.get(0)));   //博客类型 要改的
//                            bokeEntity.setBokePhoto("");//照片
//                            bokeEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            bokeEntity.setZanNumber(Integer.valueOf(data.get(0)));   //赞 要改的
//                            bokeEntity.setCaiNumber(Integer.valueOf(data.get(0)));   //踩 要改的
//                            bokeEntity.setClicknum(Integer.valueOf(data.get(0)));   //点击次数 要改的
//                            bokeEntity.setInsertTime(date);//时间
//                            bokeEntity.setBokeContent("");//照片
//                            bokeEntity.setCreateTime(date);//时间bokeList.add(bokeEntity);//把要查询是否重复的字段放入map中}//查询是否重复bokeService.insertBatch(bokeList);return R.ok();}}}}catch (Exception e){return R.error(511,"批量插入数据异常,请联系管理员");}}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));// 没有指定排序字段就默认id倒序if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){params.put("orderBy","id");}PageUtils page = bokeService.queryPage(params);//字典表数据转换List<BokeView> list =(List<BokeView>)page.getList();for(BokeView c:list)dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段return R.ok().put("data", page);}/*** 前端详情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);BokeEntity boke = bokeService.selectById(id);if(boke !=null){//entity转viewBokeView view = new BokeView();BeanUtils.copyProperties( boke , view );//把实体数据重构到view中//级联表YonghuEntity yonghu = yonghuService.selectById(boke.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody BokeEntity boke, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,boke:{}",this.getClass().getName(),boke.toString());Wrapper<BokeEntity> queryWrapper = new EntityWrapper<BokeEntity>().eq("boke_name", boke.getBokeName()).eq("boke_types", boke.getBokeTypes()).eq("yonghu_id", boke.getYonghuId()).eq("zan_number", boke.getZanNumber()).eq("cai_number", boke.getCaiNumber()).eq("clicknum", boke.getClicknum());logger.info("sql语句:"+queryWrapper.getSqlSegment());BokeEntity bokeEntity = bokeService.selectOne(queryWrapper);if(bokeEntity==null){boke.setInsertTime(new Date());boke.setCreateTime(new Date());bokeService.insert(boke);return R.ok();}else {return R.error(511,"表中有相同数据");}}}

获取源码或论文

如需对应的LW或源码,以及其他定制需求,也可以点我头像查看个人简介联系。

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

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

相关文章

神经网络的基础:从感知机到复杂网络的进化

文章目录 一、神经网络的例子二、理解神经信号的传递2.1 感知机的结构和功能2.2 优化函数2.3 明确表示偏置 三、理解感知机和激活函数的作用3.1 基础感知机模型3.2 激活函数的引入 一、神经网络的例子 理解感知机 在探索神经网络之前&#xff0c;我们首先回顾了感知机的基本概…

iOS抓包工具——Stream

[清风穆云 ](https://cloud.tencent.com/developer/user/4224041) iOS抓包工具——Stream 关注作者 前往小程序&#xff0c;Get_更优_阅读体验&#xff01; 立即前往 腾讯云 开发者社区 文档建议反馈控制台 首页 学习 活动 专区 工具 TVP [最新优惠活动 ](http…

可视化实验三 Matplotlib库绘图及时变数据可视化

1.1 任务一 1.1.1 恢复默认配置 #绘图风格&#xff0c;恢复默认配置 plt.rcParams.update(plt.rcParamsDefault)#恢复默认配置 或者 plt.rcdefaults() 1.1.2 汉字和负号的设置 import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"]"SimH…

Vue3 路由入门

先安装路由 npm i vue-router //创建路由器 import { createRouter, createWebHashHistory } from vue-router//1.导入组件 import Home from /components/Home.vue import News from /components/News.vue//2.配置路由映射规则 const routes [{name: home,path: /home,compo…

学习方法的重要性

原贴&#xff1a;https://www.cnblogs.com/feily/p/13999204.html 原贴&#xff1a;https://36kr.com/p/1236733055209095 1、 “一万小时定律”的正确和误区 正确&#xff1a; 天才和大师的非凡&#xff0c;不是真的天资超人一等&#xff0c;而是付出了持续不断的努力&…

Java数组创建与使用

一.创建和初始化 1.数组是怎么创建的&#xff1f; 直接举例子&#xff1a; int[] arr new int[10]; 这里只简单的举一个int开辟数组的例子。 可见java数组的创建于C语言是不同的。前面是一个int[ ]就是一个数组的数据类型&#xff0c;后面的arr是数组名&#xff0c;最后[…

OpenCV | 项目 | 虚拟绘画

OpenCV | 项目 | 虚拟绘画 捕捉摄像头 如果在虚拟机中运行&#xff0c;请确保虚拟机摄像头打开。 #include<opencv2/opencv.hpp>using namespace cv; using namespace std;int main() {VideoCapture cap(0);Mat img;while(1) {cap.read(img);imshow("Image"…

stm32 st7735驱动 详解

初始化指令 void LCD_Init(void) { #if USE_SIM_SPILCD_SIM_SPI_GPIO_Init(); #endifLCD_RES_0();//复位HAL_Delay(100);LCD_RES_1();HAL_Delay(100);LCD_BLK_1();//打开背光HAL_Delay(100);//************* Start Initial Sequence **********//LCD_SPI_Send_Cmd(0x11); //Sl…

华为eNSP综合实验-网络地址转换

实验完成之后,在AR1的g0/0/1接口抓包,查看地址转换 实现私网pc访问公网pc 实验命令展示 SW1: vlan batch 12 #创建vlan interface e0/0/1 #进入接口配置vlan端口 port link-type access port default vlan 12 q interface e0/0/2 #进入接口配置vlan端口 port link-type ac…

想要买到心仪的旋转式孔板流量计吗?

选择旋转式孔板流量计可不能云里雾里的乱选择呀&#xff0c;煤矿对产品质量要求很严格的。所以我们要先了解产品的再决定才是对的选择。 旋转式孔板流量计技术参数【1--5--9】 规格&#xff1a;DN15&#xff5e;DN1000 孔径比(βd/D)&#xff1a;β0&#xff0e;2—0&#xff…

数组中两个字符串的最小距离

给定一个字符串数组strs&#xff0c;再给定两个字符串str1和str2&#xff0c;返回在strs中str1和str2的最小距离&#xff0c;如果str1或str2为null&#xff0c;或不在strs中&#xff0c;返回-1。 输入描述&#xff1a; 输入包含有多行&#xff0c;第一输入一个整数n(1 ≤ n ≤…

node.js安装及环境配置超详细教程【Windows系统安装包方式】

Step1&#xff1a;下载安装包 https://nodejs.org/zh-cn/download/ 根据自己电脑系统及位数选择&#xff0c;我的电脑是Windows系统、64位、想下载稳定版的.msi&#xff08;LTS为长期稳定版&#xff09;这里选择windows64位.msi格式安装包。 .msi和.zip格式区别&#xff1a;…

3.yolov5训练前的图片处理详解(python)

其实&#xff0c;yolov5模型可以分为深度网络、数据处理&#xff08;图片处理&#xff09;、损失函数、优化器选择、训练和预测及部分构成&#xff0c;相信大家对训练和预测的代码比较熟悉。前面两章我们根据代码和结构图了解了yolov5的深度网络&#xff0c;接下来看数据处理的…

TouchDesigner Pro for Mac:创意无界,视觉编程新纪元

在数字化创意的海洋中&#xff0c;TouchDesigner Pro for Mac以其卓越的性能和丰富的功能&#xff0c;为设计师们打开了一个全新的视觉编程世界。 这款软件拥有强大的实时创作和视觉编程能力&#xff0c;通过拖拽和连接各种节点&#xff0c;用户可以轻松构建出复杂的实时交互系…

【触摸案例-手势解锁案例-连线到按钮 Objective-C语言】

一、接下来,我们接着来说这个,连线的问题啊, 1.连线的问题啊,也就是说,我现在点击一个按钮, 在移动到下一个按钮的时候,在两个按钮中间,在两个按钮都亮起来的时候呢,我们肯定是让它去画一条线的,那么, 1)首先,如果我现在从第一个按钮,连到第二个按钮,那么,这条…

1. C++入门:命名空间及输入输出

C相比C的变化 兼容C面向对象泛型C的不足的弥补 为什么要有命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地…

聊聊BitLocker

最近有消息称微软决定在Windows 11 24H2中默认开启BitLocker&#xff0c;这个消息在网上引起了不小的波澜。有人说&#xff0c;对于我们这些普通用户来说&#xff0c;BitLocker真的有必要吗&#xff1f; 什么是BitLocker BitLocker 是一项 Windows 安全功能&#xff0c;可为整…

CTF-WEB(MISC)

安全攻防知识——CTF之MISC - 知乎 CTF之MISC杂项从入门到放弃_ctf杂项 你的名字-CSDN博客 CTF MICS笔记总结_archpr 掩码攻击-CSDN博客 一、图片隐写 CTF杂项---文件类型识别、分离、合并、隐写_ctf图片分离-CSDN博客 EXIF&#xff08;Exchangeable Image File&#xff09;是…

企业网站从传统服务器迁移到弹性云有什么优势呢?

现代企业对于网站和应用程序的可用性和性能要求越来越高&#xff0c;传统基础设施可能无法满足这些需求。弹性云作为一种新兴的云计算服务模式&#xff0c;对于企业网站的运行和管理带来了许多优势。下面是企业网站从传统服务器迁移到弹性云的五大优势&#xff1a; 灵活弹性&a…

npm安装指定版本,npm删除依赖,卸载依赖

安装指定版本 npm中安装指定的版本号&#xff0c;格式为 ‘包名版本号’ npm install 包名称版本号 --save 例如安装jquery: npm install jquery3.0.0 --save在package.json里面可以看到对应的包&#xff1a; "jquery": "^3.0.0"注意&#xff1a;已有…