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);
+ }
+});
+ });
+})();