小玩具


前言

折腾过不少语言,例如Python Java C# Javascript,然鹅没一个是会的。都想学都不会,就是玩儿。

目前,就只有Javascript是常用的,算是入门了吧,既然学了,就用起来。

想到教务管理系统可以多加一点功能就有了以下脚本。

使用

免责申明

一切后果由使用者自行承担!

使用方法:使用Tampermonkey ScriptCat(推荐,界面更美观),复制下面的代码粘贴进管理器

👉教程

代码如下:

// ==UserScript==
// @name         ZCMU Academic Affairs Assistant
// @version      0.8.6
// @description  zcmu教务系统提前查看成绩、自动教学评价、计算GPA、成绩更新提醒
// @author       iCraft
// @match        http*://jwmk.zcmu.edu.cn/*
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// @grant unsafeWindow
// @require https://scriptcat.org/lib/513/1.2.1/ElementGetter.js
// @connect jwmk.zcmu.edu.cn
// ==/UserScript==
(function () {
    const elmGetter = new ElementGetter();
    //const $ = window.jQuery
    const date = new Date();
    const nd = date / 1;
    if (isURL("xtgl")) {//教务管理主页显示成绩
        elmGetter.get(".media-object").then(media =>{media.src=`data:image/jpeg;base64,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`})//修改头像
        if (date.getMonth() <= 3) {
            var xqm = 3;
        } else { xqm = 12 }
        if (date.getMonth() <= 9) {
            var xnm = date.getFullYear() - 1;
        } else {
            xnm = date.getFullYear()
        }
        const area = `<div class=""><div class="index_wdyy" id="fakeScore" style="height:320px;margin-top:-250px"><h3><span>成绩PLUS</span></h3><ul class="insert" id="index_wdyy" style="height: 350px;"></ul></div></div>`
        $(".col-md-3").append(area)
        $(".insert").append(`<div class="list-group" id="ext-group">`)
        GM_xmlhttpRequest({
            method: "POST",
            url: "https://jwmk.zcmu.edu.cn/jwglxt/cjjfgl/xkjsjfsqsh_cxKcxxView.html?doType=query",
            headers: {
                "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
            },
            data: "kcmc=&xnm=" + xnm + "&xqm=" + xqm + "&_search=false&nd=" + nd + "&queryModel.showCount=15&queryModel.currentPage=1&queryModel.sortName=&queryModel.sortOrder=asc&time=0",
            onload: function (response) {
                let storedScore = {};
                let data = JSON.parse(response.responseText).items;
                let len = data.length;
                let diff = {};
                let oldScore;
                if (GM_getValue("firstrun") === undefined) { console.log("first run!") } else {
                    oldScore = GM_getValue("score");
                }
                for (let i = 0; i < len; i++) {
                    let kcmc = data[i].kcmc;
                    let cj = data[i].cj;
                   // console.log(oldScore)
                    //console.log(kcmc in oldScore)
                    if(GM_getValue("firstrun")===true){
                    if (!(kcmc in oldScore)) {
                        diff[kcmc] = cj
                        //console.log(diff[kcmc]);
                        if (cj < 60) { diff[kcmc] += "#很抱歉,您挂科了,嘤嘤嘤~" } else { diff[kcmc] += "#恭喜您,通过了!" }
                        
                    }
                    }
                    storedScore[kcmc] = cj;
                    const extra = `<a class="list-group-item"><span class="title">${kcmc}</span><span class="fraction float_r">${cj}</span></a>`
                    $("#ext-group").append(extra);
                }
                //console.log(diff)
                GM_setValue("score", storedScore);
                let news = "";
                for (let i in diff) {
                    news += `${i}&#160;&#160;&#160;&#160;${diff[i].split("#")[0]}<br>${ diff[i].split("#")[1]}<br><br><br>`
                }
                //console.log(news)

                //console.log(Object.keys(diff))
                if (Object.keys(diff).length !==0) {bootbox.alert({"size":"large","title":"成绩出炉,仅供参考","message":news})}
                if (GM_getValue("firstrun") === undefined) GM_setValue("firstrun", true);
            },
            onerror: function (error) {
                console.log(error);
            }
        });
        
    } else if (isURL("cjcx")) {//成绩查询
        GM_xmlhttpRequest({
            method: "POST",
            url: "https://jwmk.zcmu.edu.cn/jwglxt/cjcx/cjcx_cxXsgrcj.html?doType=query",
            headers: {
                "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
            },
            data: `xnm=&xqm=&_search=false&nd=${nd}&queryModel.showCount=150&queryModel.currentPage=1&queryModel.sortName=&queryModel.sortOrder=asc&time=2`,
            onload: function (response) {
                const data = JSON.parse(response.responseText).items;
                // console.log(data)
                let zxfjd = 0, zxf = 0, xwzxfjd = 0, xwzxf = 0;
                let bxk = '', xwk = '';
                for (let i = 0; i < data.length; i++) {
                    if (data[i].kclbmc.includes("必修") && data[i].xfjd != 0 && (!data[i].kkbmmc.includes("体育"))) {
                        //console.log(data[i])
                        zxfjd += Number(data[i].xfjd);
                        zxf += Number(data[i].xf);
                        bxk += `${data[i].kcmc}<br>学分:${data[i].xf}&#160;&#160;成绩:${data[i].bfzcj}&#160;&#160;绩点:${data[i].jd}&#160;&#160;&#160;&#160;学分绩点:${data[i].xfjd}<br>&#160;<br>`;
                    }
                    if (data[i].sfxwkc === "是") {
                        xwzxfjd += Number(data[i].xfjd);
                        xwzxf += Number(data[i].xf);
                        xwk += `${data[i].kcmc}<br>学分:${data[i].xf}&#160;&#160;成绩:${data[i].bfzcj}&#160;&#160;绩点:${data[i].jd}&#160;&#160;&#160;&#160;学分绩点:${data[i].xfjd}<br>&#160;<br>`;
                    }
                }
                const GPA = (zxfjd / zxf).toFixed(2), XWGPA = (xwzxfjd / xwzxf).toFixed(2);
                let textColor, title;
                if (XWGPA >= 2) {
                    textColor = "black";
                    title = "\u76ee\u524d\u6bd5\u4e1a\u65e0\u5fe7\u54e6\uff0c\u8bf7\u7ee7\u7eed\u4fdd\u6301\u007e";
                } else {
                    textColor = "#ff0505"
                    title = "\u4e0d\u80fd\u6bd5\u4e1a\u5566\uff0c\u52aa\u529b\u91cd\u4fee\u5427\u0021"
                }
                let bootBoxBx = `{ size: 'large',title: '必修课程:不包含体育、实践课程',message: '${bxk}'}`;
                let bootBoxXw = `{ size: 'large',title: '学位课程',message: '${xwk}'}`;
                const GpaLabel = `<label id="GPA"style="color: black;margin-left: 150px;margin-top: 7px;font-size: 20px;" title="仅统计必修课程" onclick="bootbox.alert(${bootBoxBx})">GPA:${GPA}</label>`
                const XwgpaLabel = `<label id="GPA"style="color: ${textColor};margin-left: 150px;margin-top: 7px;font-size: 20px;" title=${title} onclick="bootbox.alert(${bootBoxXw})">学位课程GPA:${XWGPA}</label>`
                $("#searchForm").find(".row").append(GpaLabel);
                $("#searchForm").find(".row").append(XwgpaLabel);
            },
            onerror: function (error) {
                console.log(error);
            }
        });
    } else if (isURL("xsxy")) {//学业情况
        $("#alertBox > font").eq(1).replaceWith("<a>" + $("#alertBox > font").eq(1).html() + "</a>");
        $("#alertBox > a").attr("name", "showGpa");
    } else if (isURL("xspjgl")) {//自动评价
        // let num = Number(document.querySelector("#wpj_yq>span").innerHTML);
        let event = new Event("input");

        document.querySelector(".mui-clearfix").click();
        setTimeout(() => { $("#submit").click() }, 1500);
        setTimeout(() => { $("#btn_ok").click(); }, 2000);


        elmGetter.each(".range-slider__range", document, range => {
            $(range).attr("type", "text");
            if ($(range).next().attr("class").includes("fxzb")) {
                $(range).attr("value", $(range).attr("min"));
            } else {
                $(range).attr("value", $(range).attr("max"));
            }
            range.dispatchEvent(event);
        })

        elmGetter.each("#li_2_02>div>.zbgs_ejzb>div>.checkbox-inline", document, checkbox => {
            if (checkbox.innerText.includes("以上都不是") === false) {
                checkbox.click();
            }
        })

    }

    function isURL(str) {
        if (location.href.includes(str)) {
            return true;
        } else {
            return false
        }
    }
})();

功能展示

1.成绩Plus

你还在为了早点知道成绩而烦恼吗?还在用学分替代、学科竞赛等途径查找分数吗?

主页显示,成绩Plus让成绩一目了然,新成绩出来时还能提醒。

成绩Plus

2.自定义头像

被人看到照片尴尬?试试自定义头像吧。

头像自定义

修改方法:将改我替换为头像的URL或者Base64编码,图片转Base64可以通过在线工具实现

media.src=`改我`

3.GPA显示

教务系统GPA显示不准确?学位课不达标,不能毕业?

显示GPA,不再为GPA发愁。

提示

笔者没有看到今年的GPA排名,不知是否准确。按照以往要求排除体育和实践课程计算。

点击可以查看详情哦

GPA

GPA详情

学位课GPA详情

4.尝试改善学业情况GPA长时间不更新问题

提示

笔者也不知道自己的GPA准确值是多少,仅通过挖掘代码发现bug并尝试修复,恢复对话框。不对准确性负责。

核心代码(来自正方系统自身代码)

$("#alertBox ").off("click","a[name='showGpa']").on("click","a[name='showGpa']",function(){	
			var gpa=$(this).next().text();
			$.showDialog(_path +'/xsxy/xsxyqk_cxShowGpaView.html','查询',{
				width:"900px",
				modalName:"showGpaModal",
				data:{gpa:gpa},
				buttons:{					
					cancel : {
						label : "关 闭",
						className : "btn-default"
					}
				}
			
			});
		});

可以对必修课进行统计,疑似将体育课也算了进去,不准确。

查询

5.教学评价

自动进行教学评价,仅评价必选项

评价

To Do

1.选课学分达标统计

2. 没有2了,能用就行

能跑就行


文章作者: iCraft
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 iCraft !
  目录