Greasy Fork

Greasy Fork is available in English.

SDU本科生院教务系统助手

偷懒专用

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         SDU本科生院教务系统助手
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  偷懒专用
// @author       You
// @match        http://bkjws.sdu.edu.cn/f/common/main
// @icon         https://www.google.com/s2/favicons?domain=.
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    //添加脚本设置组件
    var AutoView = true
    var total_xf = 0
    var total_wfzjd = 0
    var appendScriptUnitVar = setInterval(function(){appendScriptUnit()}, 10)
    setInterval(function(){
        if(AutoView){
            viewAll()
            rapidSubmit()
        }
    }, 10)
    function appendScriptUnit(){
        if(document.querySelector('body > div.page-container > div.page-sidebar.nav-collapse.collapse > ul > li:nth-child(5)') != null){
            var cloneUnit = document.querySelector('body > div.page-container > div.page-sidebar.nav-collapse.collapse > ul > li:nth-child(5)')
            var Unit = cloneUnit.cloneNode(true)
            var ul = document.querySelector("body > div.page-container > div.page-sidebar.nav-collapse.collapse > ul")
            ul.appendChild(Unit)
            document.querySelector('body > div.page-container > div.page-sidebar.nav-collapse.collapse > ul > li:nth-child(10) > a > span.title').innerHTML = "脚本设置"
            var AutoViewSetting = document.querySelector('body > div.page-container > div.page-sidebar.nav-collapse.collapse > ul > li:nth-child(10) > ul > li:nth-child(1) > a')
            AutoViewSetting.innerHTML = "自动评教设置:开"
            AutoViewSetting.removeAttribute("href")
            AutoViewSetting.removeAttribute("class")
            AutoViewSetting.addEventListener("click", AutoViewSettingPage)
            var enquireGPA = document.querySelector('body > div.page-container > div.page-sidebar.nav-collapse.collapse > ul > li:nth-child(10) > ul > li:nth-child(2) > a')
            enquireGPA.innerHTML = "绩点查询"
            enquireGPA.removeAttribute("href")
            enquireGPA.removeAttribute("class")
            enquireGPA.addEventListener("click", function(){enquireGPAPage1(); enquireGPAPage2()})
            clearInterval(appendScriptUnitVar)
        }
    }
    function AutoViewSettingPage(){
        var AA = document.querySelector('body > div.page-container > div.page-sidebar.nav-collapse.collapse > ul > li.open > ul > li:nth-child(1) > a')
        if(AutoView){
            AA.innerText = "自动评教设置:关"
            AutoView = false
        }
        else{
            AA.innerText = "自动评教设置:开"
            AutoView = true
        }
    }
    function enquireGPAPage1(){
        var http = new XMLHttpRequest()
        var url = 'http://bkjws.sdu.edu.cn/b/cj/cjcx/xs/lscx'
        var params = 'aoData=[{"name":"sEcho","value":2},{"name":"iColumns","value":10},{"name":"sColumns","value":""},{"name":"iDisplayStart","value":0},{"name":"iDisplayLength","value":-1},{"name":"mDataProp_0","value":"xnxq"},{"name":"mDataProp_1","value":"kch"},{"name":"mDataProp_2","value":"kcm"},{"name":"mDataProp_3","value":"kxh"},{"name":"mDataProp_4","value":"xf"},{"name":"mDataProp_5","value":"kssj"},{"name":"mDataProp_6","value":"kscjView"},{"name":"mDataProp_7","value":"wfzjd"},{"name":"mDataProp_8","value":"wfzdj"},{"name":"mDataProp_9","value":"kcsx"},{"name":"iSortCol_0","value":5},{"name":"sSortDir_0","value":"desc"},{"name":"iSortingCols","value":1},{"name":"bSortable_0","value":false},{"name":"bSortable_1","value":false},{"name":"bSortable_2","value":false},{"name":"bSortable_3","value":false},{"name":"bSortable_4","value":false},{"name":"bSortable_5","value":true},{"name":"bSortable_6","value":false},{"name":"bSortable_7","value":false},{"name":"bSortable_8","value":false},{"name":"bSortable_9","value":false}]'
        http.open('POST', url, true)
        http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
        http.onreadystatechange = function() {
            if(http.readyState == 4 && http.status == 200) {
                var resp1 = http.responseText
                var obj = JSON.parse(resp1)
                //console.log(obj.object.aaData['0'].wfzjd)
                for(var i = 0; i<obj.object.iTotalRecords; i++){
                    if(obj.object.aaData[i].kcsx == "必修" || obj.object.aaData[i].kcsx == "限选"){
                        total_xf += obj.object.aaData[i].xf
                        total_wfzjd += obj.object.aaData[i].wfzjd * obj.object.aaData[i].xf
                    }
                }
                //console.log(total_wfzjd / total_xf)
            }
        }
        http.send(params)
    }
        function enquireGPAPage2(){
        var http = new XMLHttpRequest()
        var url = 'http://bkjws.sdu.edu.cn/b/cj/cjcx/xs/list'
        var params = 'aoData=[{"name":"sEcho","value":1},{"name":"iColumns","value":10},{"name":"sColumns","value":""},{"name":"iDisplayStart","value":0},{"name":"iDisplayLength","value":-1},{"name":"mDataProp_0","value":"function"},{"name":"mDataProp_1","value":"kch"},{"name":"mDataProp_2","value":"kcm"},{"name":"mDataProp_3","value":"kxh"},{"name":"mDataProp_4","value":"xf"},{"name":"mDataProp_5","value":"kssj"},{"name":"mDataProp_6","value":"kscjView"},{"name":"mDataProp_7","value":"wfzjd"},{"name":"mDataProp_8","value":"wfzdj"},{"name":"mDataProp_9","value":"kcsx"},{"name":"iSortingCols","value":0},{"name":"bSortable_0","value":false},{"name":"bSortable_1","value":false},{"name":"bSortable_2","value":false},{"name":"bSortable_3","value":false},{"name":"bSortable_4","value":false},{"name":"bSortable_5","value":false},{"name":"bSortable_6","value":false},{"name":"bSortable_7","value":false},{"name":"bSortable_8","value":false},{"name":"bSortable_9","value":false}]'
        http.open('POST', url, true)
        http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
        http.onreadystatechange = function() {
            if(http.readyState == 4 && http.status == 200) {
                var resp1 = http.responseText
                var obj = JSON.parse(resp1)
                for(var i = 0; i<obj.object.iTotalRecords; i++){
                    if(obj.object.aaData[i].kcsx == "必修" || obj.object.aaData[i].kcsx == "限选"){
                        total_xf += obj.object.aaData[i].xf
                        total_wfzjd += obj.object.aaData[i].wfzjd * obj.object.aaData[i].xf
                    }
                }
                console.log("总绩点为:" + (total_wfzjd / total_xf).toFixed(2))
                alert("总绩点为:" + (total_wfzjd / total_xf).toFixed(2))
            }
        }
        http.send(params)
    }
    function viewAll(){
        if(document.querySelector("#zbda_1") != null){
            var i = 0
            while(i < 21){
                document.querySelector("#zbda_" + i).click()
                i++
            }
            document.querySelector("input[value=\"课程难度适中\"]").click()
            document.querySelector("#zbda_21").value = "讲课生动,受益良多"
        }
    }

    function rapidSubmit(){
        var Button1 = document.querySelector("body > div.aui_state_lock.aui_state_focus > div > table > tbody > tr:nth-child(2) > td.aui_c > div > table > tbody > tr:nth-child(3) > td > div > button.aui_state_highlight")
        var Button2 = document.querySelector("body > div.aui_state_focus.aui_state_lock > div > table > tbody > tr:nth-child(2) > td.aui_c > div > table > tbody > tr:nth-child(3) > td > div > button")
        var Button3 = document.querySelector("body > div.page-container > div.page-sidebar.nav-collapse.collapse > ul > li.open.active > ul > li.active > a")
        if(Button1 != null){
            Button1.click()
            Button2.click()
            Button3.click()
        }

    }

})();