基于java Springboot实现教务管理系统《视频版-建议收藏》

视频演示: 订阅专栏获取源码

java Springboot教务管理系统

研究背景:

             在当今信息社会发展中中,计算机科学的飞速发展,大多数学校开始注意办公效率的发展是很关键,对学校的管理起到举足轻重的作用。基于 Internet 网络的信息服务,快速成长为现代学校中一项不可或缺的内容措施。很多校园都已经不满意商务办公管理的缓慢成长方式。学院的需求是一个功能强大的,能提供完善管理,管理信息系统的速度。社会持续向前发展,尤其是大多地方普及计算机,计算机应用已经开始向大容量的数据存储与处理持续发展,产生了以计算机为核心,用数据库作为环境的管理信息现代化系统,事务管理方面用大容量和对各种信息动态管理等方面的综合应用。建立学校教务管理系统能够对学校职员对学生信息的管理更为规范化和合理化。能有效快速记录大量的学生得信息, 能对学生用户能够运用简便的方法快速的查到他们所需要的课程信息,并且能够发布通知等一系列功能,实现了由传统人工转向办公向信息自动化。因此用 Java相关开发工具,精心构建了一个教务信息管理平台,实现了一个简单的管理系统。该系统能实现学生的管理、课程的管理、成绩管理、课程选报情况管理、系统用户的管理;能够实现学生报课程的查询、已选报课程成绩的查询、个人信息查询修改等功能、教务信息管理系统的完成给学校管理人员们和学生提供了很多的便利, 能够更好的提高教学质量,其科学性以及合理性对学校的发展有着举足轻重的作用。 

我国教务现状与反思

         就目前而言,我国绝大多数高校,和相当一部分的中小学都已经开展了基本的信息化教育教学管理系统的建设工作,让我国整体的教学效率与节奏得到了提升。但是根据我自己在使用学校的教务管理系统,以及通过查阅文献了解我国目前教务管理系统的一个发展现状之后,我认为其中仍然存在着两个比较大的问题。一方面,我认为很多学校对于教育教学管理系统的开发,并没有足够的投入和付出。他们并没有真正意识到教育教学管理系统能给学校带来的东西。从前人的调查情况来看,很多学校为了方便,会直接将管理系统的设计与开发外包给其他企业,但他们并不是教育工作者,并不了解教育系统它究竟需要什么样的功能[1]。这导致了部分教育教学管理系统的收效并不是很理想,是有待商榷的。另一方面,根据前人研究来看,大多数学校缺乏对自己系统的维护,很多情况下在开发完成之后,就不会再考虑对系统的维护升级了[2]。但教育是一个需要与时俱进的事业,无论是教材、教育方法,还是教育系统,都需要跟上时代的脚步。很多学校目前采用的系统可能是五年,甚至十年前开发的,没有专门的人员对系统进行维护,也没有根据师生的使用感受来对系统进行修复、调整,这一点在我国目前其实是非常严重且普遍的。一个落伍的管理系统,是无法为教育教学提供有效支持的。

主要技术和环境:

 IDEA+Navicat+SpringBoot+Mysql+Springmvc+Jquery+thymeleaf模板+HTML等

功能截图:

系统分为三个角色登录《管理员、老师、学生》每个角色具有不同的功能、具体信息在上面演示视频可以查看、我就不多做赘述了

登录:

管理员首页:

教师首页:

学生首页: 

部分代码:

用户登录:

<div class="bg"></div>
<div class="container">
    <form class="form-signin text-center" action="" id="from" >
        <img class="mb-4" th:src="@{/asserts/img/abb.jpg}" alt="" width="72" height="72"/>
        <label class="sr-only" >Username</label>
        <input type="text" class="form-control" placeholder="用户名"
               id="username"
               name="name"/>
        <label class="sr-only">Password</label>
        <input type="password" class="form-control" placeholder="密码"
               id="password"
               name="pwd"
               style="margin-top: 20px"/>

        <div class="btn-group" role="group" aria-label="...">
            <!--        <button type="button" class="but btn btn-default" value="sadmin">超级管理</button>-->
            <button type="button" class="but btn btn-default" value="admin">管理员</button>
            <button type="button" class="but btn btn-default" value="teacher">教师</button>
        </div>


        <div class="checkbox mb-3">
            <label>
                <!--<input type="checkbox" value="remember-me" name="remember-me" /><span></span>-->
            </label>
        </div>
        <button class="btn btn-lg btn-primary btn-block" type="button"id="sub" @click="login">登录</button>
        <span class="help-block"></span>
        <p class="mt-5 mb-3 text-muted">© 2018-2020</p>
    </form>
</div>

</body>
<script type="text/javascript" th:src="@{/webjars/jquery/1.9.1/jquery.js}"></script>
<script type="text/javascript" th:src="@{/webjars/bootstrap/3.3.7/js/bootstrap.min.js}"></script>
<script type="text/javascript" th:src="@{/js/Vue.js}"></script>
<script type="text/javascript" th:src="@{/js/element-ui.js}"></script>
<script th:inline="javascript" type="text/javascript">

    var basePath= /*[[${#httpServletRequest.getContextPath()}]]*/'ContextPath' ;

    var a = new Vue({
        el:"#from",
        data:{
            usertype:0,
            url:basePath+"/login"
        },
        methods:{
            login:function () {
                if(a.usertype==0)
                {
                    a.point1()
                    return;
                }
                if(a.usertype=="sadmin"){
                    // superadmni
                    console.log("superadmin");
                }
                if(a.usertype=="admin"){
                    // admin
                    console.log("admin");
                    $.ajax({
                        url: this.url,
                        type: "post",
                        async: false,
                        data: $("#from").serializeArray(),
                        contentType: 'application/x-www-form-urlencoded',
                        dataType:"json",
                        success:function (result) {
                            console.log("result:",result);
                            if(result.code == 300){
                                alert(result.msg)
                            }else if(result.code == 100){
                                window.location.href = basePath+"/admin/index";
                            }
                        },error:function (data) {
                            console.log("error:",data);
                        }
                    });
                }
                if(a.usertype=="teacher"){
                    console.log("teacher");
                    $.ajax({
                        url: basePath+"/teacher/login",
                        type: "get",
                        async: false,
                        data: $("#from").serializeArray(),
                        contentType: 'application/x-www-form-urlencoded',
                        dataType:"json",
                        success:function (result) {
                            if(result.extend.info == 300){
                                a.point2()
                            }else if(result.extend.info == 200){
                                window.location.href = basePath+"/teacher/index";
                            }else
                                a.point3()
                        }


            point1(){
                this.$notify.info({
                    title: '提示',
                    message: '请选择用户类型'
                });
            },
            point2(){
                this.$notify.info({
                    title: '提示',
                    message: '账号不存在'
                });
            },
            point3(){
                this.$notify.error({
                    title: '提示',
                    message: '密码错误'
                });
            }

    });

    $(".but").click(function(){
        $(".but").removeClass("active");
        $(this).addClass("active");
        a.usertype = $(this).val();
    });


</script>

</html>

yml配置:

spring:
  # 环境 dev|test|prod | ctp
  profiles:
    active: pro
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/edumanagement?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5


  thymeleaf:
    cache: false
    mode: HTML
    servlet:
      content-type: text/html
    prefix: classpath:/templates/

  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 500MB



  jackson:
    default-property-inclusion: non_null

mybatis:
  mapper-locations: classpath:mybatis/mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true

# MybatisPlus 配置
mybatis-plus:
  mapper-locations: classpath:mapper/*/*Mapper.xml
  type-aliases-package: com.hngy.educationaladministration.plus.entity

logging:
  level:
    com.hngy.educationaladministration.mapper: debug


server:
  port: 8088
  servlet:
    context-path: /edumanagement

视图跳转:

 /**
     * 添加视图跳转
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/teacher/businessView").setViewName("teacher/showtable/businessView");
        registry.addViewController("/teacher/workloadView").setViewName("teacher/showtable/workloadView");
        registry.addViewController("/teacher/workloadEdit").setViewName("teacher/fillouttable/workloadEdit");
        registry.addViewController("/teacher/businessEdit").setViewName("teacher/fillouttable/businessEdit");
        registry.addViewController("/teacher/businessPrint").setViewName("teacher/table/business");
        registry.addViewController("/teacher/workloadPrint").setViewName("teacher/table/workload");
    }

拦截放行:

/**
     *  放行路径,不经过拦截器
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor()).excludePathPatterns(
                "/",
                "/login",
                "/admin/login",
                "/admin/exit",
                "/teacher/login",
                "/teacher/exit",
                "/student/login",
                "/student/exit",
                "/js/**",
                "/asserts/**",
                "/webjars/**",
                "/css/**",
                "/error/**",
                "/cs"
        );
    }

总结:

         经过近期对Java 面向对象程序设计、前端知识以及Java框架的掌握和学习,以及这段时间本教育教学系统的开发,让我更加了解到 Java 学习的重要性。在开发这个系统时,我不仅进行了多次的试验,而且也对系统的功能进行了测试。在论文的实现过程当中,我从Java的认识到熟练运用注入了非常多的努力,到后面可以进行相关技术的运用也感到非常的开心。在这过程当中,我发现Java其实有非常之多的功能可以进行探索。Java同时具有封装性、抽象性、多态性以及继承性。可以对代码进行重复使用以及扩充使用,大幅度提高开发软件时的整体速度和效率。我作为教育技术学的学生,学好Java语言不管对我以后的就业还是现在的知识面的扩增都有着很重要的意义。我学习程序设计的主要目的就是提高自己实际问题的程序解决方案的关键技能和技术, Java 面向对象程序设计是一科实践性相对来说非常比较强的语言了、SpringMVC框架的MVC三层架构模式、和框架中遇到的设计模式将数据访问和逻辑操作都集中到组件里面去了 , 增强了系统的复用性和扩展性。使系统的扩展性大大增强。以及前端jQuery、html、css样式的掌握让我对网页的布局、样式调整、字体等让网页效果实现的更加精准。

订阅专栏下载源码

java项目实战推荐:

基于java ssm springboot+VUE疫情防疫系统系统前后端分离设计和实现

基于java springboot+mybatis电影售票网站管理系统前台+后台设计和实现

基于java ssm springboot+mybatis酒庄内部管理系统设计和实现

基于JAVA springboot+mybatis智慧生活分享平台设计和实现

基于Java springboot+vue+redis前后端分离家具商城平台系统设计和实现

基于JAVA SSM springboot实现的抗疫物质信息管理系统设计和实现

基于java ssm springboot实现选课推荐交流平台系统设计和实现

基于JAVA springboot+mybatis 电商书城平台系统设计和实现

基于java springboot+mybatis爱游旅行平台前台+后台设计实现

基于java SSM springboot景区行李寄存管理系统设计和实现

基于java springboot的图书管理系统设计和实现

基于jsp+mysql+mybatis+Spring boot简单学生成绩信息管理系统

基于java ssm springboot女士电商平台系统设计和实现

基于Java+jsp+servlet的养老院管理系统设计和实现

基于jsp+mysql的JSP在线水果销售商城系统设计实现

基于JavaWeb SSM mybatis 学生信息管理系统设计和实现

基于javaweb(springboot+mybatis)网上酒类商城项目设计和实现

基于jsp+mysql+Spring的SSM在线蛋糕商城销售网站项目设计和实现

基于java SSM的房屋租赁系统设计和实现

基于javaweb SSM邮件收发信息系统设计和实现以及文档

基于JavaWEB SSM SpringBoot婚纱影楼摄影预约网站设计和实现

基于jsp+mysql+Spring的SpringBoot招聘网站项目设计和实现

基于java web jsp+servlet学生宿舍管理系统

基于jsp+mysql+Spring+mybatis的SSM汽车保险理赔管理系统设计和实现

 总体来说这个项目功能相对还是比较简单优秀的、适合初学者作为课程设计和毕业设计参考 

另外需要白嫖java学习资料包括《JVM、Netty、Mysql、Mybatis、Redis、Dubbo、Nginx、设计模式》等10G资料礼包、可以看我主页或私信博主都行

打卡Java项目更新 20 / 100天

大家可以点赞、收藏、关注、评论我啦 、

在这里插入图片描述

热门文章

暂无图片
编程学习 ·

exe4j详细使用教程(附下载安装链接)

一、exe4j介绍 ​ exe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具&#xff0c;无论这些应用是用于服务器&#xff0c;还是图形用户界面&#xff08;GUI&#xff09;或命令行的应用程序。如果你想在任务管理器中及Windows XP分组的用户友好任务栏…
暂无图片
编程学习 ·

AUTOSAR从入门到精通100讲(126)-浅谈车载充电系统通信方案

01 引言 本文深入研究车载充电系统策略,设计出一套基于电动汽车电池管理系统与车载充电机的CAN通信协议,可供电动汽车设计人员参考借鉴。 02 电动汽车充电系统通讯网络 电动汽车整车控制系统中采用的是CAN总线通信方式,由一个整车内部高速CAN网络、内部低速CAN网络和一个充电…
暂无图片
编程学习 ·

CMake(九):生成器表达式

当运行CMake时&#xff0c;开发人员倾向于认为它是一个简单的步骤&#xff0c;需要读取项目的CMakeLists.txt文件&#xff0c;并生成相关的特定于生成器的项目文件集(例如Visual Studio解决方案和项目文件&#xff0c;Xcode项目&#xff0c;Unix Makefiles或Ninja输入文件)。然…
暂无图片
编程学习 ·

47.第十章 网络协议和管理配置 -- 网络配置(八)

4.3.3 route 命令 路由表管理命令 路由表主要构成: Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低Genmask:目标网络对应的netmaskIface: 到达对应网络,应该从当前主机哪个网卡发送出来Gateway: 到达非直连的网络,…
暂无图片
编程学习 ·

元宇宙技术基础

请看图&#xff1a; 1、通过AR、VR等交互技术提升游戏的沉浸感 回顾游戏的发展历程&#xff0c;沉浸感的提升一直是技术突破的主要方向。从《愤怒的小鸟》到CSGO,游戏建模方式从2D到3D的提升使游戏中的物体呈现立体感。玩家在游戏中可以只有切换视角&#xff0c;进而提升沉浸…
暂无图片
编程学习 ·

flink的伪分布式搭建

一 flink的伪分布式搭建 1.1 执行架构图 1.Flink程序需要提交给 Job Client2.Job Client将作业提交给 Job Manager3.Job Manager负责协调资源分配和作业执行。 资源分配完成后&#xff0c;任务将提交给相应的 Task Manage。4.Task Manager启动一个线程以开始执行。Task Manage…
暂无图片
编程学习 ·

十进制正整数与二进制字符串的转换(C++)

Function one&#xff1a; //十进制数字转成二进制字符串 string Binary(int x) {string s "";while(x){if(x % 2 0) s 0 s;else s 1 s;x / 2;}return s; } Function two&#xff1a; //二进制字符串变为十进制数字 int Decimal(string s) {int num 0, …
暂无图片
编程学习 ·

[含lw+源码等]微信小程序校园辩论管理平台+后台管理系统[包运行成功]Java毕业设计计算机毕设

项目功能简介: 《微信小程序校园辩论管理平台后台管理系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序做的辩论管理前台和Java做的后台管理系统&#xff1a; 微信小程序——辩论管理前台涉及技术&#xff1a;WXML 和 WXS…
暂无图片
编程学习 ·

树莓派驱动DHT11温湿度传感器

1&#xff0c;直接使用python库 代码如下 import RPi.GPIO as GPIO import dht11 import time import datetimeGPIO.setwarnings(True) GPIO.setmode(GPIO.BCM)instance dht11.DHT11(pin14)try:while True:result instance.read()if result.is_valid():print(ok)print(&quo…
暂无图片
编程学习 ·

ELK简介

ELK简介 ELK是三个开源软件的缩写&#xff0c;Elasticsearch、Logstash、Kibana。它们都是开源软件。不过现在还新增了一个 Beats&#xff0c;它是一个轻量级的日志收集处理工具(Agent)&#xff0c;Beats 占用资源少&#xff0c;适合于在各个服务器上搜集日志后传输给 Logstas…
暂无图片
编程学习 ·

Linux 基础

通常大数据框架都部署在 Linux 服务器上&#xff0c;所以需要具备一定的 Linux 知识。Linux 书籍当中比较著名的是 《鸟哥私房菜》系列&#xff0c;这个系列很全面也很经典。但如果你希望能够快速地入门&#xff0c;这里推荐《Linux 就该这么学》&#xff0c;其网站上有免费的电…
暂无图片
编程学习 ·

Windows2022 无线网卡装不上驱动

想来 Windows2022 和 windows10/11 的驱动应该差不多通用的&#xff0c;但是死活装不上呢&#xff1f; 搜一下&#xff0c;有人提到 “默认安装时‘无线LAN服务’是关闭的&#xff0c;如果需要开启&#xff0c;只需要在“添加角色和功能”中&#xff0c;选择开启“无线LAN服务…
暂无图片
编程学习 ·

【嵌入式面试宝典】版本控制工具Git常用命令总结

目录 创建仓库 查看信息 版本回退 版本检出 远程库 Git 创建仓库 git initgit add <file> 可反复多次使用&#xff0c;添加多个文件git commit -m <message> 查看信息 git status 仓库当前的状态git diff 差异对比git log 历史记录&#xff0c;提交日志--pret…
暂无图片
编程学习 ·

用Postman生成测试报告

newman newman是一款基于nodejs开发的可以运行postman脚本的工具&#xff0c;使用Newman&#xff0c;可以直接从命令运行和测试postman集合。 安装nodejs 下载地址&#xff1a;https://nodejs.org/en/download/ 选择自己系统相对应的版本内容进行下载&#xff0c;然后傻瓜式安…
暂无图片
编程学习 ·

Java面向对象之多态、向上转型和向下转型

文章目录前言一、多态二、引用类型之间的转换Ⅰ.向上转型Ⅱ.向下转型总结前言 今天继续Java面向对象的学习&#xff0c;学习面向对象的第三大特征&#xff1a;多态&#xff0c;了解多态的意义&#xff0c;以及两种引用类型之间的转换&#xff1a;向上转型、向下转型。  希望能…