基於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"
        );
    }

總結:

本片文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: