Greasy Fork

Greasy Fork is available in English.

测试

万方教务网查看学分和平均绩点

目前为 2021-12-12 提交的版本,查看 最新版本

// ==UserScript==
// @name 测试
// @namespace http://tampermonkey.net/
// @version 1.7
// @description 万方教务网查看学分和平均绩点
// @compatible chrome
// @include *.edu.cn/kbcx/xskbqr_cxXskbqrIndex.html*
// @include *.edu.cn/js/plugins/pdfjs/generic/web/viewer.htm*
// @license MIT
// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
// ==/UserScript==

(function () {
    'use strict';
    $(document).keydown(function (event) {
            if (event.keyCode == 13) {
                console.clear();
                let url = window.location.href;
                if(url.indexOf("kbcx/xskbqr_cxXskbqrIndex") != -1){
                    let xn=$("#xnm_chosen").find("span").text();
                    let xq=$("#xqm_chosen").find("span").text();
                    console.log("第" + xn+"学年 第"+xq+"学期");
                    let $td_xf = $("td[aria-describedby='tabGrid_xf']");
                    let sum = 0;
                    for (let i = 0; i < $td_xf.length; i++) {
                        let xf = $td_xf.eq(i).attr("title");
                        sum += parseFloat(xf);
                    }
                    console.log("总学分:" + sum);
                }else{
                    let $td = $(".textLayer").children();
                    let XueQi = [];
                    let n = 1;
                    let text = null;
                    let XueFen = 0;
                    let ChengJi = 0;
                    let JiDian = 0;
                    let sumXF;
                    let sumXFJD;
                    let AllXF = 0;
                    let AllJD = 0;
                    for (let i = 0; i < $td.length; i++) {
                        text = $td.eq(i).text().trim();
                        if (text.indexOf("学期") !== -1 || text.indexOf("白") !== -1) {
                            XueQi[n] = i;
                            n++;
                        }
                    }
                    for (let i = 1; i < n; i++) {
                        if (i + 1 !== n) {
                            console.log("\n-----" + $td.eq(XueQi[i]).text().trim() + "-----");
                            sumXF = 0;
                            sumXFJD = 0;
                            for (let j = XueQi[i] + 2; j < XueQi[i + 1]; j += 4) {
                                XueFen = parseFloat($td.eq(j).text().trim());
                                if (isNaN(XueFen)) {
                                    j += 6;
                                    XueFen = parseFloat($td.eq(j).text());
                                }
                                ChengJi = $td.eq(j + 1).text().trim();
                                JiDian = GetJiDian(ChengJi);
                                sumXF += XueFen;
                                sumXFJD += XueFen * JiDian;
                            }
                            console.log("总学分:" + sumXF + "\t总学分绩点" + sumXFJD.toFixed(2) + "\t平均学分绩点:" + (sumXFJD / sumXF).toFixed(2));
                            AllXF += sumXF;
                            AllJD += sumXFJD;
                        }
                    }

                    console.log("\n")
                    console.log(n - 2 + "个学期\t总学分:" + AllXF + "\t平均学分绩点:" + (AllJD / AllXF).toFixed(2));

                    function GetJiDian(CJ) {
                        let grade;
                        let JD = 0;
                        switch (CJ) {
                            case "优秀":
                                grade = 95;
                                break;
                            case "良好":
                                grade = 85;
                                break;
                            case "中等":
                                grade = 75;
                                break;
                            case "及格":
                                grade = 65;
                                break;
                            default:
                                grade = CJ;
                        }
                        JD += (grade % 10) / 10;
                        grade /= 10;
                        switch (parseInt(grade)) {
                            case 10:
                                JD = 5;
                                break;
                            case 9:
                                JD += 4;
                                break;
                            case 8:
                                JD += 3;
                                break;
                            case 7:
                                JD += 2;
                                break;
                            case 6:
                                JD += 1;
                                break;
                            default:
                                JD = 0;
                        }
                        return JD;
                    }
                }
            }
        });
})();