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

大家好!我是程序猿老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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

【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…

Go-知识测试-工作机制

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

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

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

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

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

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。而 …

用Python将PowerPoint演示文稿转换到图片和SVG

PowerPoint演示文稿作为展示创意、分享知识和表达观点的重要工具&#xff0c;被广泛应用于教育、商务汇报及个人项目展示等领域。然而&#xff0c;面对不同的分享场景与接收者需求&#xff0c;有时需要我们将PPT内容以图片形式保存与传播。这样能够避免软件兼容性的限制&#x…

Cisco Identity Services Engine (ISE) 3.3 Patch 2 - 基于身份的网络访问控制和策略实施系统

Cisco Identity Services Engine (ISE) 3.3 Patch 2 - 基于身份的网络访问控制和策略实施系统 思科身份服务引擎 (ISE) - 下一代 NAC 解决方案 请访问原文链接&#xff1a;Cisco Identity Services Engine (ISE) 3.3 Patch 2 - 基于身份的网络访问控制和策略实施系统&#xf…

centos上部署Ollama平台,实现语言大模型本地部署

网上有很多大模型&#xff0c;很多都是远程在线调用ChatGPT的api来实现的&#xff0c;自己本地是没有大模型的&#xff0c;这里和大家分享一个大模型平台&#xff0c;可以实现本地快速部署大模型。 Ollama是一个开源项目&#xff0c;它提供了一个平台和工具集&#xff0c;用于部…

C语言单链表的算法之逆序

一&#xff1a;什么是链表的逆序 &#xff08;1&#xff09;链表的逆序又叫反向&#xff0c;意思就是把链表中所有的有效节点在链表中的顺序给反过来 二&#xff1a;单链表逆序算法分析 &#xff08;1&#xff09;当需要对一个数据结构进行操作时&#xff0c;就有必要有一套算…

JS乌龟吃鸡游戏

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>乌龟游戏</title><script type"text/javascript">function move(obj){//乌龟图片高度var wuGui_height 67;…

Django 模版继承

1&#xff0c;设计母版页 Test/templates/6/base.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><!-- 修正了模板标签的全角字符问题 -->{% block title %}<title>这个是母版页</title>{…

算法:链表

目录 链表的技巧和操作总结 常用技巧&#xff1a; 链表中的常用操作 题目一&#xff1a;反转一个单链表 题目二&#xff1a;链表的中间结点 题目三&#xff1a;返回倒数第k个结点 题目四&#xff1a;合并两个有序链表 题目五&#xff1a;移除链表元素 题目六&#xff…

平衡二叉搜索树/AVL树

VAL树的特性 左右子树高度差的绝对值不超过1。&#xff08;即左右子树高度差取值为-1&#xff0c;0&#xff0c;1&#xff09;且左右子树均为VAL树右子树的值大于左子树的值 在搜索二叉树中我们提及了搜索二叉树的退化问题。 当有序&#xff08;升序或降序&#xff09;地插入…

摸鱼大数据——Spark基础——Spark环境安装——Spark Local[*]搭建

一、虚拟机配置 查看每一台的虚拟机的IP地址和网关地址 查看路径: cat /etc/sysconfig/network-scripts/ifcfg-ens33 2.修改 VMware的网络地址: 使用VMnet8 3.修改windows的对应VMware的网卡地址 4.通过finalshell 或者其他的shell连接工具即可连接使用即可, 连接后, 测试一…