首页 > 编程语言 >基于SpringBoot+Vue的毕业设计管理系统设计与实现毕设(文档+源码)

基于SpringBoot+Vue的毕业设计管理系统设计与实现毕设(文档+源码)

时间:2024-11-13 18:19:51浏览次数:3  
标签:课题 Vue ketirenwu request 源码 毕业设计 eq id view

目录

一、项目介绍

二、开发环境

三、功能介绍

四、核心代码

五、效果图

六、源码获取: 


        大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是 一款基于SpringBoot+Vue的毕业设计管理系统,项目源码请点击文章末尾联系我哦~目前有各类成品 毕设 JavaWeb  SSM SpringBoot等等项目框架,源码丰富,欢迎咨询。 

一、项目介绍

在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对学生毕业设计信息管理的提升,也为了对学生毕业设计信息进行更好的维护,毕业设计系统的出现就变得水到渠成不可缺少。通过对毕业设计系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。

毕业设计系统通过MySQL数据库与Spring Boot框架进行开发,毕业设计系统能够实现教师管理,公告类型管理,班级管理,课题信息管理,任务类型管理,选题申请管理,学院管理,课题任务管理,最终成绩管理,公告信息管理,学生管理等功能。

通过毕业设计系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。

关键毕业设计系统,课题,课题任务,成绩

二、开发环境

开发系统:Windows
JDK版本:Java JDK1.8(推荐)
开发工具:IDEA/MyEclipse(推荐IDEA)
数据库版本: mysql8.0(推荐)
数据库可视化工具: navicat
服务器:SpringBoot自带 apache tomcat
框架:springboot,vue

三、功能介绍

        管理员功能主要包括课题信息管理、成绩统计报表、教师管理。管理员进入课题信息管理界面之后,管理员点击信息显示栏中最右侧的修改,删除按钮可依次完成课题信息的修改,删除等操作,管理员也能在当前界面查询课题信息,添加课题信息等;进入成绩统计报表界面之后,管理员根据各个年份来统计各个学生的成绩信息,同时,管理员可以点击成绩统计报表界面右上角的各种小图标,可以把统计图转化为折线图,柱形图等图形,管理员也能下载统计报表;进入教师管理界面之后,管理员点击信息显示栏中最右侧的修改,删除按钮可依次完成教师信息的修改,删除等操作;

        教师功能主要包括课题申请管理、课题任务管理、最终成绩管理。教师进入选题申请管理界面之后,教师负责审核学生选题信息,也可以拒绝学生选题信息,当学生完成课题任务之后,教师需要在选题申请管理界面发布学生的最终成绩;进入课题任务管理界面之后,教师负责发布课题任务,学生就需要完成任务并上传文档,教师就负责查看学生的任务完成情况信息,然后审核学生完成的课题任务,最后对学生完成的课题任务进行打分;最终成绩管理界面之后,教师查看学生最终成绩信息,可以对学生的最终成绩信息进行查询或删除。

        学生功能主要包括课题信息管理、课题任务管理、最终成绩查看。学生进入课题信息管理界面之后,学生可以查看课题信息,如果学生没有选择课题,则可以对能够申请的课题进行申请。每个学生只能选择一个课题,已经成功选择课题的学生就不能申请课题了;进入课题任务管理界面之后,学生可以查看课题任务,然后完成课题任务并上传阶段性文档;进入最终成绩查看界面之后,学生查看课题名称,查看成绩信息,可以通过课题名称,教师姓名,课题类型以及学生姓名来查询最终成绩。

四、核心代码


/**
 * 课题任务
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/ketirenwu")
public class KetirenwuController {
    private static final Logger logger = LoggerFactory.getLogger(KetirenwuController.class);

    @Autowired
    private KetirenwuService ketirenwuService;


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

    //级联表service
    @Autowired
    private JiaoshiService jiaoshiService;
    @Autowired
    private XuantishenqingService xuantishenqingService;

    @Autowired
    private 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("jiaoshiId",request.getSession().getAttribute("userId"));
        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 = ketirenwuService.queryPage(params);

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

                //级联表
                JiaoshiEntity jiaoshi = jiaoshiService.selectById(ketirenwu.getJiaoshiId());
                if(jiaoshi != null){
                    BeanUtils.copyProperties( jiaoshi , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setJiaoshiId(jiaoshi.getId());
                }
                //级联表
                XuantishenqingEntity xuantishenqing = xuantishenqingService.selectById(ketirenwu.getXuantishenqingId());
                if(xuantishenqing != null){
                    BeanUtils.copyProperties( xuantishenqing , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setXuantishenqingId(xuantishenqing.getId());
                }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

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

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("教师".equals(role))
            ketirenwu.setJiaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        Wrapper<KetirenwuEntity> queryWrapper = new EntityWrapper<KetirenwuEntity>()
            .eq("jiaoshi_id", ketirenwu.getJiaoshiId())
            .eq("xuantishenqing_id", ketirenwu.getXuantishenqingId())
            .eq("ketirenwu_name", ketirenwu.getKetirenwuName())
            .eq("ketirenwu_types", ketirenwu.getKetirenwuTypes())
            .eq("ketirenwu_yesno_types", ketirenwu.getKetirenwuYesnoTypes())
            .eq("ketirenwu_yesno_text", ketirenwu.getKetirenwuYesnoText())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        KetirenwuEntity ketirenwuEntity = ketirenwuService.selectOne(queryWrapper);
        if(ketirenwuEntity==null){
            ketirenwu.setKetirenwuYesnoTypes(1);
            ketirenwu.setInsertTime(new Date());
            ketirenwu.setCreateTime(new Date());
            ketirenwuService.insert(ketirenwu);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

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

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("教师".equals(role))
//            ketirenwu.setJiaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        //根据字段查询是否有相同数据
        Wrapper<KetirenwuEntity> queryWrapper = new EntityWrapper<KetirenwuEntity>()
            .notIn("id",ketirenwu.getId())
            .andNew()
            .eq("jiaoshi_id", ketirenwu.getJiaoshiId())
            .eq("xuantishenqing_id", ketirenwu.getXuantishenqingId())
            .eq("ketirenwu_name", ketirenwu.getKetirenwuName())
            .eq("ketirenwu_types", ketirenwu.getKetirenwuTypes())
            .eq("ketirenwu_yesno_types", ketirenwu.getKetirenwuYesnoTypes())
            .eq("ketirenwu_yesno_text", ketirenwu.getKetirenwuYesnoText())
            .eq("insert_time", ketirenwu.getInsertTime())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        KetirenwuEntity ketirenwuEntity = ketirenwuService.selectOne(queryWrapper);
        if("".equals(ketirenwu.getKetirenwuFile()) || "null".equals(ketirenwu.getKetirenwuFile())){
                ketirenwu.setKetirenwuFile(null);
        }
        if("".equals(ketirenwu.getKetirenwuHuidaFile()) || "null".equals(ketirenwu.getKetirenwuHuidaFile())){
                ketirenwu.setKetirenwuHuidaFile(null);
        }
        if(ketirenwuEntity==null){
            KetirenwuEntity ketirenwuEntity1 = ketirenwuService.selectById(ketirenwu.getId());
            if(ketirenwuEntity1.getKetirenwuYesnoTypes() == 3){
                ketirenwu.setKetirenwuYesnoTypes(1);
            }
            ketirenwuService.updateById(ketirenwu);//根据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());
        ketirenwuService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

五、效果图

六、源码获取: 

同系统在主页搜索资源可下载~

标签:课题,Vue,ketirenwu,request,源码,毕业设计,eq,id,view
From: https://blog.csdn.net/m0_48205251/article/details/143373849

相关文章

  • VUE 封装axios
    axios官方介绍:https://www.axios-http.cn/docs/intro node.js安装:npminstallaxios封装一个配置文件constinstance=axios.create({baseURL:'https://some-domain.com/api/',timeout:1000,headers:{'X-Custom-Header':'foobar'}});......
  • Java毕业设计----基于Java的情感分析毕业设计
    目录引言设计目标项目结构具体实践总结 Python版本引言情感分析(SentimentAnalysis)是自然语言处理(NLP)中的一个重要应用,它通过对文本内容的情感倾向进行分类,帮助机器理解文本的情感状态。情感分析通常分为两类:情感极性分析(例如,判断文本是正面、负面还是中立)和情感强......
  • 【最新原创毕设】面向课堂教学的智能课堂点名系统+09531(免费领源码)可做计算机毕业设计
    摘要本文旨在设计和实现一个基于智能课堂点名系统的智能助手。随着高校招生规模的不断扩大和信息化技术的发展,为教师提供一款便捷、全面的点名系统具有重要意义。本系统通过整合校园各项服务资源和功能,旨在帮助教师和学生更好地适应智能课堂,提供全方位的指导和支持。本文......
  • (2024最新毕设合集)基于SpringBoot的广州糖水甜品店推荐系统-28495|可做计算机毕业设计J
    摘要随着人们生活水平的提高和饮食习惯的多样化,甜品在日常生活中扮演着越来越重要的角色。特别是在中国南方地区,甜品店和糖水店已经成为人们经常光顾的地方,而广州作为美食之都,拥有众多具有独特风味的糖水甜品店。然而,由于市场竞争激烈,消费者往往面临选择困难,需要花费大量时间......
  • 【Flink系列二十四】Flink HistoryServer 实现原理分析-源码解读
    Flink系列二十四FlinkHistoryServer实现原理数据源头:FlinkRuntime对作业ExecutionGraphInfo进行归档首先,作业停止或者故障时,调用HistoryServerArchivist进行归档publicinterfaceHistoryServerArchivist{/***Archivesthegiven{@linkExecutionGraph......
  • SpringBoot医院管理系统5nr0z--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着医疗技术的不断进步和医疗需求的日益增长,医院管理面临着前所未有的挑战。传统的医院管理方式已难以满足现代医疗服务的需要,存在信......
  • SpringBoot医疗信息共享平台k09w0(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着信息技术的飞速发展,医疗领域正逐步迈向数字化、智能化。医疗信息共享平台作为连接医疗机构、患者及医疗数据的关键纽带,对于......
  • Vue网站发布到iis后提示404页面不可访问
    vue重定向和跨域配置:https://zhuanlan.zhihu.com/p/5306882511.安装组件:URLRewrite:https://www.iis.net/downloads/microsoft/url-rewriteApplicationRequestRouting:https://www.iis.net/downloads/microsoft/application-request-routing2.新建一个web.config放到发布到文件......
  • 揭秘!Vue3.5响应式重构如何让内存占用减少56%
    前言Vue3.5版本又将响应式给重构了,重构后的响应式系统主要有两部分组成: 双向链表和版本计数。我们在前两篇文章中我们已经讲过了,这篇文章我们来讲讲为什么这次重构能够让内存占用减少56%。为什么说“又”将响应式重构了因为在之前的Vue3.4版本中刚刚将响应式给重构了,这......
  • 高效稳定的校园管理系统源码,APP小程序H5三端源码交付支持二开
    校园系统源码的核心优势在于其高度的定制化和可扩展性。可以根据自己的实际需求,对源码进行二次开发,实现个性化的功能定制。同时,源码的模块化设计使得系统能够轻松应对未来需求的增长和变化,为你的长期发展提供了有力保障 。校园管理系统源码系统特点:1.基于TP6+Uni-app框架开......