// ==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/jquery@3.2.1/dist/jquery.min.js // @downloadURL none // ==/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; } } } }); })();