您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A GPA Calculator of WHU
// ==UserScript== // @name GPA Calculator // @version 1.2.1 // @description A GPA Calculator of WHU // @author Jeoy_Pei // @license MIT // @match https://jwgl.whu.edu.cn/cjcx/cjcx_cxDgXscj.html?* // @grant none // @namespace https://gf.qytechs.cn/users/929066 // ==/UserScript== (function() { 'use strict'; // Your code here... //方法count用来将该行表格统计入相应的数组 function count(oTd, arr1, arr2) { var kcxz=oTd[5].innerText; kcxz=kcxz.substring(kcxz.length-2); var kcbj=oTd[13].innerText; var xf=Number(oTd[6].innerText); var xfj=Number(oTd[24].innerText); var cj=oTd[7].innerText; var xq=Number(oTd[2].innerText); var xfcj; var check=oTd[0].children[0]; var checked=1; if(check.checked==true||check.checked==false) { checked=(check.checked?1:0); } if(cj!=="缓考") { xfcj=Number(cj)*xf; if(kcbj=="主修") { if(kcxz=="必修") { arr1[xq*4-4]+=xfj*checked; arr2[xq*4-4]+=xfcj*checked; arr1[xq*4-3]+=xf*checked; arr2[xq*4-3]+=xf*checked; } else { arr1[xq*4-2]+=xfj*checked; arr2[xq*4-2]+=xfcj*checked; arr1[xq*4-1]+=xf*checked; arr2[xq*4-1]+=xf*checked; } } else { arr1[xq*2+10]+=xfj*checked; arr2[xq*2+10]+=xfcj*checked; arr1[xq*2+11]+=xf*checked; arr2[xq*2+11]+=xf*checked; } } } //方法statistics用来将数据整理 function statistics(term,score,avg,avgs) { avg[0]=term[0]/term[1]; avg[1]=(term[0]+term[2])/(term[1]+term[3]); avg[2]=term[4]/term[5]; avg[3]=(term[4]+term[6])/(term[5]+term[7]); avg[4]=term[8]/term[9]; avg[5]=(term[8]+term[10])/(term[9]+term[11]); avg[6]=(term[0]+term[4]+term[8])/(term[1]+term[5]+term[9]); avg[7]=(term[0]+term[4]+term[8]+term[2]+term[6]+term[10])/(term[1]+term[5]+term[9]+term[3]+term[7]+term[11]); avg[8]=term[12]/term[13]; avg[9]=term[14]/term[15]; avg[10]=(term[12]+term[14])/(term[13]+term[15]) avgs[0]= score[0]/ score[1]; avgs[1]=( score[0]+ score[2])/( score[1]+ score[3]); avgs[2]= score[4]/ score[5]; avgs[3]=( score[4]+ score[6])/( score[5]+ score[7]); avgs[4]= score[8]/ score[9]; avgs[5]=( score[8]+ score[10])/( score[9]+ score[11]); avgs[6]=( score[0]+ score[4]+ score[8])/( score[1]+ score[5]+ score[9]); avgs[7]=( score[0]+ score[4]+ score[8]+ score[2]+ score[6]+ score[10])/( score[1]+ score[5]+ score[9]+ score[3]+ score[7]+ score[11]); avgs[8]= score[12]/ score[13]; avgs[9]= score[14]/ score[15]; avgs[10]=( score[12]+ score[14])/( score[13]+ score[15]) } $(document).ready(function() { //插入统计表 var div_data=document.getElementById("div-data"); var innerContainer=document.getElementById("innerContainer"); var oRes=document.createElement("div"); oRes.innerHTML='<table class="jsres"> <tr class="jsres" id="row_0"> <th class="jsres" colspan="3">总平均</th> <th class="jsres" colspan="4">学年</th> <th class="jsres" colspan="4">学年</th> <th class="jsres" colspan="4">学年</th> <th class="jsres" colspan="4">学年</th> </tr> <tr class="jsres"> <th class="jsres" >必修课程</th> <th class="jsres" >全部课程</th> <th class="jsres" >辅修课程</th> <th class="jsres" >学期</th> <th class="jsres" >必修课程</th> <th class="jsres" >全部课程</th> <th class="jsres" >辅修课程</th> <th class="jsres" >学期</th> <th class="jsres" >必修课程</th> <th class="jsres" >全部课程</th> <th class="jsres" >辅修课程</th> <th class="jsres" >学期</th> <th class="jsres" >必修课程</th> <th class="jsres" >全部课程</th> <th class="jsres" >辅修课程</th> <th class="jsres" >学期</th> <th class="jsres" >必修课程</th> <th class="jsres" >全部课程</th> <th class="jsres" >辅修课程</th> </tr> <tr class="jsres" id="row_1"> <td class="jsres" rowspan="4"> </td> <td class="jsres" rowspan="4"> </td> <td class="jsres" rowspan="4"> </td> <td class="jsres">1</td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres">1</td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres">1</td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres">1</td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres"> </td> </tr> <tr class="jsres" id="row_2"> <td class="jsres">2</td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres">2</td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres">2</td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres">2</td> <td class="jsres"> </td> <td class="jsres"> </td> <td class="jsres"> </td> </tr> <tr class="jsres" id="row_3"> <td class="jsres" >3</td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" >3</td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" >3</td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" >3</td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" > </td> </tr> <tr class="jsres" id="row_4"> <td class="jsres" >总计</td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" >总计</td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" >总计</td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" >总计</td> <td class="jsres" > </td> <td class="jsres" > </td> <td class="jsres" > </td> </tr> </table><table><tr> <td id="du" colspan="19" ><input type="button" id="select" value="多选模式"/>   <input type="button" id="dudu" value="嘟嘟"/></td> </tr></table>'; innerContainer.insertBefore(oRes,div_data); var oResss=document.getElementById("du"); oResss.style.cssText="text-align:right;padding:16px;width:10000px"; oRes.style.cssText="padding:40px;width:500px;overflow:auto;"; var oRess=document.getElementsByClassName("jsres"); for(var i=0;i<oRess.length;i++) { oRess[i].style.cssText="border:1px solid silver;text-align:center;padding:4px"; } var dudu=document.getElementById("dudu"); var select=document.getElementById("select"); var sel_all=document.getElementById("jqgh_tabGrid_ck"); select.onclick=function() { //加入复选框 sel_all.innerHTML='<div id="jqgh_tabGrid_ck" class="ui-jqgrid-sortable"><input type="checkbox" /><span class="s-ico" style="display:none"><span sort="asc" class="ui-grid-ico-sort ui-icon-asc ui-state-disabled ui-icon ui-icon-triangle-1-n ui-sort-ltr"></span><span sort="desc" class="ui-grid-ico-sort ui-icon-desc ui-state-disabled ui-icon ui-icon-triangle-1-s ui-sort-ltr"></span></span></div>'; var oTab=document.getElementById("tabGrid"); var oTr=oTab.getElementsByTagName("tr"); for(var i=1;i<oTr.length;i++) { oTr[i].children[0].innerHTML='<td role="gridcell" style="text-align:center;" title="" aria-describedby="tabGrid_ck"><input type="checkbox" /></td>'; } } //判断是否点击了全选 sel_all.onclick=function() { var checked=sel_all.children; checked=checked[0].children; checked=checked[0].checked; var oTab=document.getElementById("tabGrid"); var oTr=oTab.getElementsByTagName("tr"); if(checked) { for(var i=1;i<oTr.length;i++) { oTr[i].children[0].children[0].checked=true; } } if(!checked) { for(var i=1;i<oTr.length;i++) { oTr[i].children[0].children[0].checked=false; } } } //按键后动作 dudu.onclick=function() { //获取表格元素 var oTab=document.getElementById("tabGrid"); var oTr=oTab.getElementsByTagName("tr"); //构建学年数组,字符串类型 var term=['0']; for(var i=1;i<oTr.length;i++) { var flag=true; var oTrs=oTr[i]; var xn; for(var j=0;j<term.length;j++) { var oTds=oTrs.children; if(oTds.length>2) xn=oTds[1].innerText; if(term[j]==xn) flag=false; } if(flag==true) term.push(xn); } term.sort; //构建四个学年的每学期的必修,选修,辅修的学分绩之和和学分和 var term_1=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; var term_2=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; var term_3=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; var term_4=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; var score_1=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; var score_2=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; var score_3=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; var score_4=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; //遍历每一行,并将统计结果统计入上述四个数组 for(i=1;i<oTr.length;i++) { var oTrs=oTr[i]; var oTds=oTrs.children; if(oTds.length>1) { var xn=oTds[1].innerText; switch(xn) { case term[1]: count(oTds,term_1,score_1); break; case term[2]: count(oTds,term_2,score_2); break; case term[3]: count(oTds,term_3,score_3); break; case term[4]: count(oTds,term_4,score_4); break; } } } //将统计结果整理 var avg_1=[0,0,0,0,0,0,0,0,0,0,0]; var avg_2=[0,0,0,0,0,0,0,0,0,0,0]; var avg_3=[0,0,0,0,0,0,0,0,0,0,0]; var avg_4=[0,0,0,0,0,0,0,0,0,0,0]; var avgs_1=[0,0,0,0,0,0,0,0,0,0,0]; var avgs_2=[0,0,0,0,0,0,0,0,0,0,0]; var avgs_3=[0,0,0,0,0,0,0,0,0,0,0]; var avgs_4=[0,0,0,0,0,0,0,0,0,0,0]; statistics(term_1,score_1,avg_1,avgs_1); statistics(term_2,score_2,avg_2,avgs_2); statistics(term_3,score_3,avg_3,avgs_3); statistics(term_4,score_4,avg_4,avgs_4); var avg_all=[0,0,0]; avg_all[0]=(term_1[0]+term_1[4]+term_1[8]+term_2[0]+term_2[4]+term_2[8]+term_3[0]+term_3[4]+term_3[8]+term_4[0]+term_4[4]+term_4[8])/(term_1[1]+term_1[5]+term_1[9]+term_2[1]+term_2[5]+term_2[9]+term_3[1]+term_3[5]+term_3[9]+term_4[1]+term_4[5]+term_4[9]); avg_all[1]=(term_1[0]+term_1[4]+term_1[8]+term_2[0]+term_2[4]+term_2[8]+term_3[0]+term_3[4]+term_3[8]+term_4[0]+term_4[4]+term_4[8]+term_1[2]+term_1[6]+term_1[10]+term_2[2]+term_2[6]+term_2[10]+term_3[2]+term_3[6]+term_3[10]+term_4[2]+term_4[6]+term_4[10])/(term_1[1]+term_1[5]+term_1[9]+term_2[1]+term_2[5]+term_2[9]+term_3[1]+term_3[5]+term_3[9]+term_4[1]+term_4[5]+term_4[9]+term_1[3]+term_1[7]+term_1[11]+term_2[3]+term_2[7]+term_2[11]+term_3[3]+term_3[7]+term_3[11]+term_4[3]+term_4[7]+term_4[11]); avg_all[2]=(term_2[12]+term_2[14]+term_3[12]+term_3[14]+term_4[12]+term_4[14])/(term_2[13]+term_2[15]+term_3[13]+term_3[15]+term_4[13]+term_4[15]); var avgs_all=[0,0,0]; avgs_all[0]=(score_1[0]+score_1[4]+score_1[8]+score_2[0]+score_2[4]+score_2[8]+score_3[0]+score_3[4]+score_3[8]+score_4[0]+score_4[4]+score_4[8])/(score_1[1]+score_1[5]+score_1[9]+score_2[1]+score_2[5]+score_2[9]+score_3[1]+score_3[5]+score_3[9]+score_4[1]+score_4[5]+score_4[9]); avgs_all[1]=(score_1[0]+score_1[4]+score_1[8]+score_2[0]+score_2[4]+score_2[8]+score_3[0]+score_3[4]+score_3[8]+score_4[0]+score_4[4]+score_4[8]+score_1[2]+score_1[6]+score_1[10]+score_2[2]+score_2[6]+score_2[10]+score_3[2]+score_3[6]+score_3[10]+score_4[2]+score_4[6]+score_4[10])/(score_1[1]+score_1[5]+score_1[9]+score_2[1]+score_2[5]+score_2[9]+score_3[1]+score_3[5]+score_3[9]+score_4[1]+score_4[5]+score_4[9]+score_1[3]+score_1[7]+score_1[11]+score_2[3]+score_2[7]+score_2[11]+score_3[3]+score_3[7]+score_3[11]+score_4[3]+score_4[7]+score_4[11]); avgs_all[2]=(score_2[12]+score_2[14]+score_3[12]+score_3[14]+score_4[12]+score_4[14])/(score_2[13]+score_2[15]+score_3[13]+score_3[15]+score_4[13]+score_4[15]); //将结果插入表格 var row_0=document.getElementById("row_0").children; for(var i=1;i<term.length;i++) { row_0[i].innerText=term[i]; } var row_1=document.getElementById("row_1").children; var row_2=document.getElementById("row_2").children; var row_3=document.getElementById("row_3").children; var row_4=document.getElementById("row_4").children; row_1[0].innerText=avg_all[0].toFixed(3)+"/"+avgs_all[0].toFixed(3); row_1[1].innerText=avg_all[1].toFixed(3)+"/"+avgs_all[1].toFixed(3); row_1[2].innerText=avg_all[2].toFixed(3)+"/"+avgs_all[2].toFixed(3); for(var i=0;i<3;i++) { if(row_1[i].innerText=="NaN/NaN") row_1[i].innerText=" "; } for(var i=3;i<row_1.length;i++) { var avg; var avgs; var k=i-3; var j=Math.floor(k/4); switch(j) { case 0:avg=avg_1;avgs=avgs_1;break; case 1:avg=avg_2;avgs=avgs_2;break; case 2:avg=avg_3;avgs=avgs_3;break; case 3:avg=avg_4;avgs=avgs_4;break; } switch(k-4*j) { case 0:break; case 1:row_1[i].innerText=avg[0].toFixed(3)+"/"+avgs[0].toFixed(3);break; case 2:row_1[i].innerText=avg[1].toFixed(3)+"/"+avgs[1].toFixed(3);break; case 3:row_1[i].innerText=avg[8].toFixed(3)+"/"+avgs[8].toFixed(3);break; } if(row_1[i].innerText=="NaN/NaN") row_1[i].innerText=" "; } for(var i=0;i<row_2.length;i++) { var avg; var k=i; var j=Math.floor(k/4); switch(j) { case 0:avg=avg_1;avgs=avgs_1;break; case 1:avg=avg_2;avgs=avgs_2;break; case 2:avg=avg_3;avgs=avgs_3;break; case 3:avg=avg_4;avgs=avgs_4;break; } switch(k-4*j) { case 0:break; case 1:row_2[i].innerText=avg[2].toFixed(3)+"/"+avgs[2].toFixed(3);break; case 2:row_2[i].innerText=avg[3].toFixed(3)+"/"+avgs[3].toFixed(3);break; case 3:row_2[i].innerText=avg[9].toFixed(3)+"/"+avgs[9].toFixed(3);break; } if(row_2[i].innerText=="NaN/NaN") row_2[i].innerText=" "; } for(var i=0;i<row_3.length;i++) { var avg; var k=i; var j=Math.floor(k/4); switch(j) { case 0:avg=avg_1;avgs=avgs_1;break; case 1:avg=avg_2;avgs=avgs_2;break; case 2:avg=avg_3;avgs=avgs_3;break; case 3:avg=avg_4;avgs=avgs_4;break; } switch(k-4*j) { case 0:break; case 1:row_3[i].innerText=avg[4].toFixed(3)+"/"+avgs[4].toFixed(3);break; case 2:row_3[i].innerText=avg[5].toFixed(3)+"/"+avgs[5].toFixed(3);break; case 3:row_3[i].innerText="NaN";break; } if(row_3[i].innerText=="NaN/NaN"||row_3[i].innerText=="NaN") row_3[i].innerText=" "; } for(var i=0;i<row_4.length;i++) { var avg; var k=i; var j=Math.floor(k/4); switch(j) { case 0:avg=avg_1;avgs=avgs_1;break; case 1:avg=avg_2;avgs=avgs_2;break; case 2:avg=avg_3;avgs=avgs_3;break; case 3:avg=avg_4;avgs=avgs_4;break; } switch(k-4*j) { case 0:break; case 1:row_4[i].innerText=avg[6].toFixed(3)+"/"+avgs[6].toFixed(3);break; case 2:row_4[i].innerText=avg[7].toFixed(3)+"/"+avgs[7].toFixed(3);break; case 3:row_4[i].innerText=avg[10].toFixed(3)+"/"+avgs[10].toFixed(3);break; } if(row_4[i].innerText=="NaN/NaN") row_4[i].innerText=" "; } } } )})();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址