微信小程序毕业设计-垃圾分类系统项目开发实战(附源码+论文)

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

💞当前专栏:微信小程序毕业设计

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

🎀 Python毕业设计
🌎Java毕业设计

开发运行环境

①前端:微信小程序开发工具

② 后端:Java

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

源码下载地址:

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

论文目录

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

一、项目简介

垃圾分类小程序管理员功能有个人中心,管理员管理,意见反馈管理,视频类型管理,垃圾类型管理,新闻类型管理,论坛信息管理,环保视频管理,环保知识管理,垃圾信息管理,环保新闻管理,用户管理,知识问答试卷管理,试题管理,测试管理,轮播图管理。用户可以在微信小程序上面注册登录,查看各种环保信息和垃圾信息,还可以参加知识问答等操作。

二、系统设计

2.1软件功能模块设计

在分析并得出使用者对程序的功能要求时,就可以进行程序设计了。如图4.2展示的就是管理员功能结构图
在这里插入图片描述

2.2数据库设计

(1)管理员实体中的属性有姓名,密码等信息。以此绘制的实体属性图见图4.4。
在这里插入图片描述
(2)用户实体中的属性有账户,密码,姓名等信息。以此绘制的实体属性图见图4.5。
在这里插入图片描述
(3)环保新闻实体中的属性有编号,状态等。以此绘制的实体属性图见图4.6。

三、系统项目部分截图

3.1管理员功能介绍

管理员管理
如图5.1显示的就是管理员管理页面,管理员可以对管理员信息进行添加,修改,删除,查询操作
在这里插入图片描述
环保视频管理
如图5.5显示的就是环保视频页面,管理员可以对环保视频信息进行添加,修改,删除,查询操作。
在这里插入图片描述
环保知识管理
如图5.6显示的就是环保知识管理页面,管理员可以对环保知识信息进行添加,修改,删除,查询操作。
在这里插入图片描述

3.2用户功能介绍

首页
如图5.9显示的就是首页页面,用户注册登录后可以看到首页,下面是导航,中间是内容。
在这里插入图片描述
环保视频
如图5.9显示的就是环保视频页面,用户可以在环保视频界面查看环保视频信息。
在这里插入图片描述
垃圾信息
如图5.9显示的就是垃圾信息页面,用户点击垃圾信息可以查看垃圾信息。
在这里插入图片描述

四、部分核心代码


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("/lajixinxi")
public class LajixinxiController {private static final Logger logger = LoggerFactory.getLogger(LajixinxiController.class);@Autowiredprivate LajixinxiService lajixinxiService;@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 = lajixinxiService.queryPage(params);//字典表数据转换List<LajixinxiView> list =(List<LajixinxiView>)page.getList();for(LajixinxiView 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);LajixinxiEntity lajixinxi = lajixinxiService.selectById(id);if(lajixinxi !=null){//entity转viewLajixinxiView view = new LajixinxiView();BeanUtils.copyProperties( lajixinxi , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody LajixinxiEntity lajixinxi, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,lajixinxi:{}",this.getClass().getName(),lajixinxi.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");Wrapper<LajixinxiEntity> queryWrapper = new EntityWrapper<LajixinxiEntity>().eq("lajixinxi_name", lajixinxi.getLajixinxiName()).eq("lajixinxi_types", lajixinxi.getLajixinxiTypes()).eq("lajixinxi_click_number", lajixinxi.getLajixinxiClickNumber());logger.info("sql语句:"+queryWrapper.getSqlSegment());LajixinxiEntity lajixinxiEntity = lajixinxiService.selectOne(queryWrapper);if(lajixinxiEntity==null){lajixinxi.setCreateTime(new Date());lajixinxiService.insert(lajixinxi);return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody LajixinxiEntity lajixinxi, HttpServletRequest request){logger.debug("update方法:,,Controller:{},,lajixinxi:{}",this.getClass().getName(),lajixinxi.toString());String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");//根据字段查询是否有相同数据Wrapper<LajixinxiEntity> queryWrapper = new EntityWrapper<LajixinxiEntity>().notIn("id",lajixinxi.getId()).andNew().eq("lajixinxi_name", lajixinxi.getLajixinxiName()).eq("lajixinxi_types", lajixinxi.getLajixinxiTypes()).eq("lajixinxi_click_number", lajixinxi.getLajixinxiClickNumber());logger.info("sql语句:"+queryWrapper.getSqlSegment());LajixinxiEntity lajixinxiEntity = lajixinxiService.selectOne(queryWrapper);if("".equals(lajixinxi.getLajixinxiPhoto()) || "null".equals(lajixinxi.getLajixinxiPhoto())){lajixinxi.setLajixinxiPhoto(null);}if(lajixinxiEntity==null){lajixinxiService.updateById(lajixinxi);//根据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());lajixinxiService.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<LajixinxiEntity> lajixinxiList = 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){//循环LajixinxiEntity lajixinxiEntity = new LajixinxiEntity();
//                            lajixinxiEntity.setLajixinxiName(data.get(0));                    //垃圾名称 要改的
//                            lajixinxiEntity.setLajixinxiTypes(Integer.valueOf(data.get(0)));   //垃圾类型 要改的
//                            lajixinxiEntity.setLajixinxiPhoto("");//照片
//                            lajixinxiEntity.setLajixinxiClickNumber(Integer.valueOf(data.get(0)));   //浏览次数 要改的
//                            lajixinxiEntity.setLajixinxiContent("");//照片
//                            lajixinxiEntity.setCreateTime(date);//时间lajixinxiList.add(lajixinxiEntity);//把要查询是否重复的字段放入map中}//查询是否重复lajixinxiService.insertBatch(lajixinxiList);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 = lajixinxiService.queryPage(params);//字典表数据转换List<LajixinxiView> list =(List<LajixinxiView>)page.getList();for(LajixinxiView 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);LajixinxiEntity lajixinxi = lajixinxiService.selectById(id);if(lajixinxi !=null){//entity转viewLajixinxiView view = new LajixinxiView();BeanUtils.copyProperties( lajixinxi , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody LajixinxiEntity lajixinxi, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,lajixinxi:{}",this.getClass().getName(),lajixinxi.toString());Wrapper<LajixinxiEntity> queryWrapper = new EntityWrapper<LajixinxiEntity>().eq("lajixinxi_name", lajixinxi.getLajixinxiName()).eq("lajixinxi_types", lajixinxi.getLajixinxiTypes()).eq("lajixinxi_click_number", lajixinxi.getLajixinxiClickNumber());logger.info("sql语句:"+queryWrapper.getSqlSegment());LajixinxiEntity lajixinxiEntity = lajixinxiService.selectOne(queryWrapper);if(lajixinxiEntity==null){lajixinxi.setCreateTime(new Date());lajixinxiService.insert(lajixinxi);return R.ok();}else {return R.error(511,"表中有相同数据");}}}

五、获取源码或论文

如需对应的论文或源码,以及其他定制需求,也可以下方微❤联系。

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

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

相关文章

AI产品哲学深探:从Perplexity CEO视角看搜索引擎的智慧启示

一、开篇:历史的分岔路口 在科技史的长河中,有些对话悄然决定了行业的走向。回溯至互联网搜索的黎明时期,一场未被充分重视的会谈在两位科技巨擘之间展开。谷歌联合创始人Larry Page与昔日搜索引擎巨头Excite的CEO坐在了谈判桌两端,他们的对话不仅关乎一次潜在的并购,更预…

elasticsearch的查询原理

数据结构 在 Elasticsearch 中,数据结构分布如下: 索引(Index) 索引是 Elasticsearch 中存储数据的基本单元,相当于关系型数据库中的数据库。一个 Elasticsearch 集群中可以包含多个索引。 类型(Type) (从 Elasticsearch 7.0 开始已经被弃用): 在较早版本的 Elasticsearch…

Mathematica训练课(46)-- 一些常用的画图函数

在前面的课程中&#xff0c;我们已经梳理了Plot的画图用法&#xff0c;今天就详细梳理一下其他的画图函数用法&#xff1b; 1. 画一条直线 2. Circle(圆) 3. Disk&#xff08;圆盘&#xff09; 4. 画出一个矩形 5. 箭头

c-前缀平方和序列(牛客小白月赛97)

题目&#xff1a; 假如一个长度为 n的正整数序列满足所有前缀和 都是平方数&#xff0c;那么称这种序列为前缀平方序列。 条件1<si<x 取模1e97 首先找出小于x的平方数有几个。 然后用二项式定理 算出小于x的平方数中取n个的种数。 #include<bits/stdc.h> using…

大数据可视化实验(六)——ECharts与pyecharts数据可视化

目录 一、实验目的... 1 二、实验环境... 1 三、实验内容... 1 1、ECharts可视化制作.. 1 1&#xff09;使用ECharts绘制折线图显示一周的天气变换。... 1 2&#xff09;使用ECharts绘制柱状图显示商品销量的变化。... 4 2、pyecharts可视化制作.. 7 1&#xff09;使用…

beautifulSoup库

是什么? Beautiful Soup(简称BS4)是一种强大而灵活的HTML和XML解析库,广泛用于Python爬虫和数据采集中。相比正则表达式更加简洁. Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的…

【知识学习】Unity3D中Shader Graph的概念及使用方法示例

Unity3D中的Shader Graph是一个强大的可视化Shader编辑工具&#xff0c;它允许用户通过拖拽和连接节点的方式来创建Shader&#xff0c;而不是通过传统的编写代码的方式。Shader Graph使得Shader的创建过程更加直观和易于理解&#xff0c;特别是对于那些不熟悉Shader语言编程的美…

Java中的性能调优技巧与工具推荐

Java中的性能调优技巧与工具推荐 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨Java中的性能调优技巧与工具推荐。Java作为一门广泛应用的编程语…

【OpenREALM学习笔记:13】pose_estimation.cpp和pose_estimation.h

UML Class Diagram 图中红色框为头文件中所涉及到的函数、变量和结构体 核心函数 PoseEstimation::process() 其核心作用为执行位姿估计的处理流程&#xff0c;并返回是否在此循环中进行了任何处理。 在这个函数中判断并完成地理坐标的初始化或这地理坐标的更新。 这里需要…

QTreeView第一列自适应

通过setStretchLastSection(bool stretch)可以设置最后一列自适应,对于QTreeView,stretch默认为true。但有时候我们需要设置第一列自适应,比如文件浏览器,共有名称、大小和修改日期三列,大小和日期的宽度几乎是固定的,但名称却可长可短,此时我们希望在窗口大小变化时,第…

IDEA中Maven配置依赖和排除依赖

目录 依赖配置 添加依赖的几种方式&#xff1a; 1.利用中央仓库搜索的依赖坐标 2.利用IDEA工具搜索依赖 3.熟练上手maven后&#xff0c;快速导入依赖 排除依赖 依赖配置 依赖&#xff1a;指当前项目运行所需要的jar包。一个项目中可以引入多个依赖&#xff1a; 例如&am…

python r”, b”, u”, f” 前缀详解

1、r前缀 一般来说&#xff0c;\n’是一个换行符&#xff0c;是一个字符串&#xff1b;而加上r为前缀后&#xff0c;不会以任何特殊方式处理反斜杠。因此&#xff0c;r"\n" 是包含 ‘\’ 和 ‘n’ 的双字符字符串&#xff1b;示例如下&#xff1a; >>> pr…

Go-知识测试-工作机制

Go-知识测试-工作机制 生成test的maintest的main如何启动case单元测试 runTeststRunnertesting.T.Run 示例测试 runExamplesrunExampleprocessRunResult 性能测试 runBenchmarksrunNtesting.B.Run 在 Go 语言的源码中&#xff0c;go test 命令的实现主要在 src/cmd/go/internal…

Java面试题:解释反应式编程的概念,并讨论如何在Java中使用RxJava或Project Reactor实现

反应式编程&#xff08;Reactive Programming&#xff09;是一种基于异步数据流和变化传播的编程范式。它强调通过声明式编程来处理异步事件流和数据流&#xff0c;简化了复杂的异步操作和并发编程。反应式编程适用于处理异步事件、多线程处理、大量数据流、用户交互等场景。 …

零基础快速上手HarmonyOS ArkTS开发4---从简单的页面开始

接着上一次零基础快速上手HarmonyOS ArkTS开发3---应用程序框架的继续往下。 常用基础组件&#xff1a; 概述&#xff1a; 关于组件的一些基础概念就里就不多说了&#xff0c;官方有很详细的说明&#xff0c;而在HarmonyOS按功能分有如下几大类组件&#xff1a;基础组件、容…

springboot笔记示例八:yml文件数据库连接redis密码加密实现使用jasypt加密

springboot笔记示例八&#xff1a;yml文件数据库连接redis密码加密实现使用jasypt加密 本文md文件下载 https://download.csdn.net/download/a254939392/89496228点击下载本文md文件 说明 springboot中大多数配置我们都采用yml文件配置&#xff0c;比如数据库连接&#xff…

安卓短视频去水印v1.7 简洁好用

各大平台视频无水印提取&#xff0c;登录即永久会员&#xff01; 无水印提取&#xff0c;图片无水印提取 视频旋转&#xff0c;倒放&#xff0c;转gif等功能 链接&#xff1a;https://pan.baidu.com/s/1buoJmAvSFBiRkBmHc7Nn5w?pwd2fu4 提取码&#xff1a;2fu4

LeetCode-数值-No49字母异位词

题目&#xff1a; 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", &q…

Lr、LrC软件下载安装 Adobe Lightroom专业摄影后期处理软件安装包分享

Adobe Lightroom它不仅为摄影师们提供了一个强大的照片管理平台&#xff0c;更以其出色的后期处理功能&#xff0c;成为了摄影爱好者们争相追捧的必备工具。 在这款软件中&#xff0c;摄影师们可以轻松地管理自己的照片库&#xff0c;无论是按拍摄日期、主题还是其他自定义标签…

浅谈如何在linux上部署java环境

文章目录 一、部署环境1.1、JDK1.2、Tomcat1.3、MySQL 二、将自己写的的程序部署到云服务器上 一、部署环境 为了在linux上部署 Java web 程序&#xff0c;需要安装一下环境。 1.1、JDK 直接使用 yum 命令安装 openjdk。我们 windows系统上 下载的是 oracle 官方的 jdk。而 …