乐趣区

关于java:基于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"
        );
    }
退出移动版