微信小程序毕业设计-校园报修系统项目开发实战(附源码+论文)

news2024/11/17 9:29:49

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

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

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

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

开发运行环境

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

② 后端:Java

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

演示视频

原版高清演示视频-编号:201
https://pan.quark.cn/s/b2f44f423421

源码下载地址:

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

论文目录

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

一、项目简介

基于web的校园报修系统使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,总之,基于web的校园报修系统集中管理信息,有着保密性强,效率高,存储空间大,成本低等诸多优点。它可以降低信息管理成本,实现信息管理计算机化。

二、系统设计

2.1软件功能模块设计

在前面分析的管理员功能的基础上,进行接下来的设计工作,最终展示设计的结构图(见下图)。

在这里插入图片描述

2.2数据库设计

(2)下图是学生实体和其具备的属性。
在这里插入图片描述
(3)下图是维修人员实体和其具备的属性。
在这里插入图片描述
(5)下图是故障上报实体和其具备的属性。
在这里插入图片描述
(6)下图是故障上报评价实体和其具备的属性。
在这里插入图片描述

三、系统项目部分截图

3.1学生信息管理

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

在这里插入图片描述
在这里插入图片描述

3.2维修人员管理

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

3.3故障上报管理

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

在这里插入图片描述

四、部分核心代码


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("/guzhangshangbaoCommentback")
public class GuzhangshangbaoCommentbackController {
    private static final Logger logger = LoggerFactory.getLogger(GuzhangshangbaoCommentbackController.class);

    @Autowired
    private GuzhangshangbaoCommentbackService guzhangshangbaoCommentbackService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;

    //级联表service
    @Autowired
    private GuzhangshangbaoService guzhangshangbaoService;
    @Autowired
    private XueshengService xueshengService;

    @Autowired
    private WeixiuyuanService weixiuyuanService;


    /**
    * 后端列表
    */
    @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(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("学生".equals(role))
            params.put("xueshengId",request.getSession().getAttribute("userId"));
        else if("维修人员".equals(role))
            params.put("weixiuyuanId",request.getSession().getAttribute("userId"));
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }
        PageUtils page = guzhangshangbaoCommentbackService.queryPage(params);

        //字典表数据转换
        List<GuzhangshangbaoCommentbackView> list =(List<GuzhangshangbaoCommentbackView>)page.getList();
        for(GuzhangshangbaoCommentbackView 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);
        GuzhangshangbaoCommentbackEntity guzhangshangbaoCommentback = guzhangshangbaoCommentbackService.selectById(id);
        if(guzhangshangbaoCommentback !=null){
            //entity转view
            GuzhangshangbaoCommentbackView view = new GuzhangshangbaoCommentbackView();
            BeanUtils.copyProperties( guzhangshangbaoCommentback , view );//把实体数据重构到view中

                //级联表
                GuzhangshangbaoEntity guzhangshangbao = guzhangshangbaoService.selectById(guzhangshangbaoCommentback.getGuzhangshangbaoId());
                if(guzhangshangbao != null){
                    BeanUtils.copyProperties( guzhangshangbao , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "xueshengId"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setGuzhangshangbaoId(guzhangshangbao.getId());
                    view.setGuzhangshangbaoXueshengId(guzhangshangbao.getXueshengId());
                }
                //级联表
                XueshengEntity xuesheng = xueshengService.selectById(guzhangshangbaoCommentback.getXueshengId());
                if(xuesheng != null){
                    BeanUtils.copyProperties( xuesheng , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setXueshengId(xuesheng.getId());
                }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody GuzhangshangbaoCommentbackEntity guzhangshangbaoCommentback, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,guzhangshangbaoCommentback:{}",this.getClass().getName(),guzhangshangbaoCommentback.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("学生".equals(role))
            guzhangshangbaoCommentback.setXueshengId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        guzhangshangbaoCommentback.setInsertTime(new Date());
        guzhangshangbaoCommentback.setCreateTime(new Date());
        guzhangshangbaoCommentbackService.insert(guzhangshangbaoCommentback);
        return R.ok();
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody GuzhangshangbaoCommentbackEntity guzhangshangbaoCommentback, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,guzhangshangbaoCommentback:{}",this.getClass().getName(),guzhangshangbaoCommentback.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(StringUtil.isEmpty(role))
//            return R.error(511,"权限为空");
//        else if("学生".equals(role))
//            guzhangshangbaoCommentback.setXueshengId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        //根据字段查询是否有相同数据
        Wrapper<GuzhangshangbaoCommentbackEntity> queryWrapper = new EntityWrapper<GuzhangshangbaoCommentbackEntity>()
            .eq("id",0)
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        GuzhangshangbaoCommentbackEntity guzhangshangbaoCommentbackEntity = guzhangshangbaoCommentbackService.selectOne(queryWrapper);
        guzhangshangbaoCommentback.setUpdateTime(new Date());
        if(guzhangshangbaoCommentbackEntity==null){
            //  String role = String.valueOf(request.getSession().getAttribute("role"));
            //  if("".equals(role)){
            //      guzhangshangbaoCommentback.set
            //  }
            guzhangshangbaoCommentbackService.updateById(guzhangshangbaoCommentback);//根据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());
        guzhangshangbaoCommentbackService.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<GuzhangshangbaoCommentbackEntity> guzhangshangbaoCommentbackList = 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){
                            //循环
                            GuzhangshangbaoCommentbackEntity guzhangshangbaoCommentbackEntity = new GuzhangshangbaoCommentbackEntity();
//                            guzhangshangbaoCommentbackEntity.setGuzhangshangbaoId(Integer.valueOf(data.get(0)));   //故障上报 要改的
//                            guzhangshangbaoCommentbackEntity.setXueshengId(Integer.valueOf(data.get(0)));   //学生 要改的
//                            guzhangshangbaoCommentbackEntity.setGuzhangshangbaoCommentbackText(data.get(0));                    //评价内容 要改的
//                            guzhangshangbaoCommentbackEntity.setReplyText(data.get(0));                    //回复内容 要改的
//                            guzhangshangbaoCommentbackEntity.setInsertTime(date);//时间
//                            guzhangshangbaoCommentbackEntity.setUpdateTime(new Date(data.get(0)));          //回复时间 要改的
//                            guzhangshangbaoCommentbackEntity.setCreateTime(date);//时间
                            guzhangshangbaoCommentbackList.add(guzhangshangbaoCommentbackEntity);


                            //把要查询是否重复的字段放入map中
                        }

                        //查询是否重复
                        guzhangshangbaoCommentbackService.insertBatch(guzhangshangbaoCommentbackList);
                        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 = guzhangshangbaoCommentbackService.queryPage(params);

        //字典表数据转换
        List<GuzhangshangbaoCommentbackView> list =(List<GuzhangshangbaoCommentbackView>)page.getList();
        for(GuzhangshangbaoCommentbackView 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);
        GuzhangshangbaoCommentbackEntity guzhangshangbaoCommentback = guzhangshangbaoCommentbackService.selectById(id);
            if(guzhangshangbaoCommentback !=null){


                //entity转view
                GuzhangshangbaoCommentbackView view = new GuzhangshangbaoCommentbackView();
                BeanUtils.copyProperties( guzhangshangbaoCommentback , view );//把实体数据重构到view中

                //级联表
                    GuzhangshangbaoEntity guzhangshangbao = guzhangshangbaoService.selectById(guzhangshangbaoCommentback.getGuzhangshangbaoId());
                if(guzhangshangbao != null){
                    BeanUtils.copyProperties( guzhangshangbao , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setGuzhangshangbaoId(guzhangshangbao.getId());
                }
                //级联表
                    XueshengEntity xuesheng = xueshengService.selectById(guzhangshangbaoCommentback.getXueshengId());
                if(xuesheng != null){
                    BeanUtils.copyProperties( xuesheng , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setXueshengId(xuesheng.getId());
                }
                //修改对应字典表字段
                dictionaryService.dictionaryConvert(view, request);
                return R.ok().put("data", view);
            }else {
                return R.error(511,"查不到数据");
            }
    }


    /**
    * 前端保存
    */
    @RequestMapping("/add")
    public R add(@RequestBody GuzhangshangbaoCommentbackEntity guzhangshangbaoCommentback, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,guzhangshangbaoCommentback:{}",this.getClass().getName(),guzhangshangbaoCommentback.toString());
        guzhangshangbaoCommentback.setInsertTime(new Date());
        guzhangshangbaoCommentback.setCreateTime(new Date());
        guzhangshangbaoCommentbackService.insert(guzhangshangbaoCommentback);
        return R.ok();
        }


}

五、获取源码或论文

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

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

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

相关文章

unity VR Interaction Framework 创建新手势

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神不吝指教&#xff01; 文章目录 前言一、新建物体&#xff0c;并添加必要组件二、添加抓取点三、查看手势的可视化样式四、制作新的手势1.点击编辑2.根据需求调节手指关节3.保存手势4. 使用创建的手势5.运行 总结 前言…

如何找到正确的网络钓鱼目标

在深入研究联系人收集之前&#xff0c;我们希望确保对可用的攻击面有一个清晰的了解。我见过许多渗透测试者只获取客户端提供的主域&#xff0c;通过 theHarvester、linkedInt、maltego 等运行它&#xff0c;并将输出称为目标列表。在这样做的过程中&#xff0c;这些渗透测试机…

C语⾔数据类型和变量

C语⾔数据类型和变量 1.数据类型介绍1.1 字符型1.2 整型1.3 浮点型1.4 布尔类型1.5 各种数据类型的长度1.5.1 sizeof操作符1.5.2 数据类型长度1.5.3 sizeof中表达式不计算 2. signed 和 unsigned3. 数据类型的取值范围4. 变量4.1 变量的创建4.2 变量的分类 5. 算术操作符&#…

JOSEF约瑟 JOLP(ROS-2D)型两级跑偏开关 精度高,耐振动

​ 品牌 :JOSEF约瑟 型号名称 :JOLP(ROS-2D)型两级跑偏开关 触点容量 :AC380V 10A 触点数量 :常开:2常闭:2 极限角度 :70 复位方式 :自动 动作力 :3kg 防护等级 :IP66 结构特点 1.通用的安装设计可使跑偏检测装置随意安装在输送机纵梁顶!顶部或底部位置 2.封闭、防腐、坚固的铸…

算力时代,算能(SOPHGO)的算力芯片/智算板卡/服务器选型

数字经济时代&#xff0c;算力成为支撑经济社会发展新的关键生产力&#xff0c;全球主要经济体都在加快推进算力战略布局。随着大模型持续选代&#xff0c;模型能力不断增强&#xff0c;带来算力需求持续增长。算力对数字经济和GDP的提高有显著的带动作用&#xff0c;根据IDC、…

智驾未来,一触即达——探索全新加油App的无限可能

一、引言 随着科技的飞速发展&#xff0c;智能出行已成为现代生活的重要组成部分。为了满足广大驾驶者的需求&#xff0c;我们倾力打造了一款全新的加油App&#xff0c;旨在为您的驾驶旅程提供前所未有的便捷与智能体验。 二、产品概述 我们的加油App不仅是一款导航工具&…

Linux下vi文件的时候替换指定的内容

需要将nginx.conf中的192.168.222.188&#xff0c;替换为178.21.120.225 操作步骤&#xff1a; 1、vi 文件 vi nginx.conf2、输入 :%s/192.168.222.188/178.21.120.225/g3、最后保存 :wq

华为OD机试 - 石头剪刀布游戏(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;D卷C卷A卷B卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测…

240620_昇思学习打卡-Day2-FCN图像语义分割

240620_昇思学习打卡-Day2-FCN图像语义分割 FCN图像语义分割 语义分割就是对图像中每个像素点进行分类&#xff0c;输入为图像&#xff0c;输出也是图像&#xff0c;输入输出同尺寸&#xff0c;下图是一些语义分割的示例&#xff1a; 其中Image是训练集的原图&#xff0c;Gro…

IDEA注释快只有一行时不分行的设置

在编写注释时&#xff0c;有时使用注释块来标注一个变量或者一段代码时&#xff0c;为了节约空间&#xff0c;希望只在一行中显示注释快。只需要按照下图将“一行注释不分行”勾选上即可。

一、安装VMware16

本篇来源&#xff1a;山海同行 本篇地址&#xff1a;https://shanhaigo.cn/courseDetail/1805875642621952000 本篇资源&#xff1a;以整理到-山海同行 一、VMware虚拟机下载 1. 官网下载 1. 打开官网 打开VMware官网地址&#xff1a;https://www.vmware.com/ 2. 选择下载产…

算法设计与分析--分布式算法内容整理

Chapter 1 导论分布式系统定义分布式系统 VS 并行处理分布式系统的作用及困难分布式计算的理论复杂性度量标准模型错误的种类 Chapter 2 消息传递系统中的基本算法消息传递系统的形式化模型系统异步系统同步系统异步 VS 同步 复杂性度量消息复杂度时间复杂度伪代码约定 生成树上…

无线领夹麦克风品牌排名,揭秘哪种领夹麦性价比高!

在直播电商和Vlog的热潮推动下&#xff0c;自媒体内容创作迎来了前所未有的繁荣。麦克风行业也因应这一趋势&#xff0c;迎来了快速的增长期。特别是无线领夹麦克风&#xff0c;以其便携性和高效的录音能力&#xff0c;迅速成为视频制作者的新宠。它不仅在直播带货和短视频制作…

用友U8 Cloud smartweb2.showRPCLoadingTip.d XXE漏洞复现

0x01 产品简介 用友U8 Cloud 提供企业级云ERP整体解决方案,全面支持多组织业务协同,实现企业互联网资源连接。 U8 Cloud 亦是亚太地区成长型企业最广泛采用的云解决方案。 0x02 漏洞概述 用友U8 Cloud smartweb2.showRPCLoadingTip.d 接口处存在XML实体,攻击者可通过该漏…

阿里1688商家数据采集软件

大镜山阿里1688商家数据采集一款采集阿里巴巴1688.com商家数据的软件&#xff0c;采集的数据包括店铺名称、联系人姓名、手机号码等。 一、大镜山阿里1688商家数据采集特色 — 大镜山阿里1688商家数据采集一款采集阿里巴巴1688.com商家数据的软件&#xff0c;采集的数据包括店…

MySQL数据库基础练习系列——教务管理系统

项目名称与项目简介 教务管理系统是一个旨在帮助学校或教育机构管理教务活动的软件系统。它涵盖了学生信息管理、教师信息管理、课程管理、成绩管理以及相关的报表生成等功能。通过该系统&#xff0c;学校可以更加高效地处理教务数据&#xff0c;提升教学质量和管理水平。 1.…

zabbix 7.0 新增功能亮点(三)— 监控项支持SNMP Hex数据预处理

作者 乐维社区&#xff08;forum.lwops.cn&#xff09; 许远 勇敢的人先享受世界&#xff0c;好奇心促使你探索未知的世界。zabbix 7.0 LTS发布已经有一段时间了。不得不说zabbix7.0作为一款开源监控工具而言是真的强大又丝滑&#xff0c;其中不少新特性嘎嘎溜&#xff0c;让人…

【深度学习】基于深度离散潜在变量模型的变分推理

1.引言 1.1.讨论的目标 阅读并理解本文后&#xff0c;大家应能够&#xff1a; 掌握如何为具有离散潜在变量的模型设定参数在可行的情况下&#xff0c;使用精确的对数似然函数来估计参数利用神经变分推断方法来估计参数 1.2.导入相关软件包 # 导入PyTorch库&#xff0c;用于…

XX能源云数据平台建设项目_投标书_技术部分(194页word)

标书介绍&#xff1a; 该标书通过物联网技术&#xff0c;实时采集能源行业各类数据&#xff0c;并进行标准化整合。采用分布式存储技术&#xff0c;确保数据的安全性和可扩展性。运用大数据和人工智能技术&#xff0c;对数据进行深度分析和挖掘&#xff0c;提供有价值的业务洞…

基于springboot、logback的日志脱敏组件

Logback⽇志数据脱敏⼯具&#xff1a;隐私和安全的守护者 概述 在涉及敏感数据的⽇志记录环境中&#xff0c;数据保护和个⼈隐私⽆疑是⾄关重要的领域。确保敏感数据不被泄露&#xff0c;脱敏处理成为必不可少的⼀步。数据脱敏是⼀种技术⼿段&#xff0c;其将敏感信息转换为不…