diff --git a/whuF2caculate.js b/whuF2caculate.js new file mode 100644 index 0000000..1b95738 --- /dev/null +++ b/whuF2caculate.js @@ -0,0 +1,134 @@ +// ==UserScript== +// @name 武大综测F2年度计算小工具 +// @namespace whu +// @version 1.0 +// @author game-loader +// @description 计算武大综测F2部分 +// @homepage https://github.com/game-loader +// @match https://jwgl.whu.edu.cn/cjcx/cjcx_cxDgXscj.html* +// @grant GM_xmlhttpRequest +// ==/UserScript== + +(function() { + 'use strict'; + + // 创建小窗口 + var container = document.createElement('div'); + container.style.position = 'fixed'; + container.style.top = '50%'; + container.style.right = '20%'; + container.style.transform = 'translate(50%, -50%)'; + container.style.backgroundColor = '#ffffff'; + container.style.padding = '20px'; + container.style.border = '1px solid #000000'; + container.style.zIndex = '1000'; + + // 创建年份下拉框 + var yearSelect = document.createElement('select'); + yearSelect.innerHTML = ` + + + + + `; + container.appendChild(yearSelect); + + // 添加距离 + var spacer = document.createElement('div'); + spacer.style.height = '10px'; + container.appendChild(spacer); + + // 创建计算按钮 + var calculateButton = document.createElement('button'); + calculateButton.textContent = '计算综测F2'; + calculateButton.style.backgroundColor = '#8ae68a'; + calculateButton.style.color = '#ffffff'; + calculateButton.style.border = 'none'; + calculateButton.style.borderRadius = '5px'; + calculateButton.style.padding = '8px 16px'; + calculateButton.style.boxShadow = '0px 2px 4px rgba(0, 0, 0, 0.4)'; + container.appendChild(calculateButton); + + // 将小窗口添加到页面中 + document.body.appendChild(container); + + // 设置小窗口样式 + container.style.width = '300px'; + container.style.height = '200px'; + container.style.overflow = 'auto'; + + // 绑定按钮点击事件 + calculateButton.addEventListener('click', function() { + // 获取gnmkdmKey的值 + var gnmkdmKey = document.getElementById('gnmkdmKey').value; + + // 构造请求URL和postData + var url = 'https://jwgl.whu.edu.cn/cjcx/cjcx_cxXsgrcj.html'; + var params = 'doType=query&gnmkdm=' + encodeURIComponent(gnmkdmKey); + var postData = 'xnm=' + yearSelect.value + '&xqm=&kcbj=&_search=false&nd=' + Date.now() + '&queryModel.showCount=15&queryModel.currentPage=1&queryModel.sortName=&queryModel.sortOrder=asc&time=0'; + + // 最终请求URL + var finalUrl = url + '?' + params; + + // 发送POST请求 + GM_xmlhttpRequest({ + method: 'POST', + url: finalUrl, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: postData, + onload: function(response) { + var responseData = JSON.parse(response.responseText); + var items = responseData.items; + + // 创建变量用于存储必修成绩、选修成绩和必修学分 +var requiredScore = 0; +var electiveScore = 0; +var requiredCredits = 0; + +// 遍历数组中的各项 +for (var i = 0; i < items.length; i++) { + var item = items[i]; + var kcxzmc = item.kcxzmc; + var bfzcj = parseFloat(item.bfzcj); + var xf = parseFloat(item.xf); + + if (kcxzmc.includes("必修")) { + requiredScore += bfzcj * xf; + requiredCredits += xf; + } else if (kcxzmc.includes("选修")) { + electiveScore += bfzcj * xf; + } +} + +// 在窗口中显示成绩 +var requiredGrade = requiredScore / requiredCredits; +var electiveGrade = electiveScore * 0.002; +var totalGrade = requiredGrade + electiveGrade; + +// 创建显示结果的元素 +var resultElement = document.createElement('div'); +resultElement.style.marginTop = '10px'; + +// 创建必修课成绩显示行 +var requiredGradeElement = document.createElement('div'); +requiredGradeElement.textContent = "必修课:" + requiredGrade.toFixed(2); +resultElement.appendChild(requiredGradeElement); + +// 创建选修课成绩显示行 +var electiveGradeElement = document.createElement('div'); +electiveGradeElement.textContent = "选修课:" + electiveGrade.toFixed(2); +resultElement.appendChild(electiveGradeElement); + +// 创建F2成绩显示行 +var totalGradeElement = document.createElement('div'); +totalGradeElement.textContent = "F2:" + totalGrade.toFixed(2); +resultElement.appendChild(totalGradeElement); + +// 在按钮下方显示结果 +container.appendChild(resultElement); + } +}); + }); +})();