Greasy Fork

来自缓存

Greasy Fork is available in English.

UESTC 18级研究生成绩计算

仅限2018级研究生使用,仅计算2018-2019学年成绩

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         UESTC 18级研究生成绩计算
// @namespace    http://tampermonkey.net/
// @version      0.16
// @description  仅限2018级研究生使用,仅计算2018-2019学年成绩
// @author       github.com/yidadaa
// @match        http://yjsjy.uestc.edu.cn/pyxx/pygl/cjcx
// @grant        none
// ==/UserScript==

(function() {
    const rawText = `2018-2019春	0100025001	专利挖掘与文件撰写	92
2018-2019春	0108106003	现代数字信号处理理论与算法	74.05
2018-2019春	0108106006	信息论	76.98
2018-2019春	0108106008	数字通信	74.19
2018-2019春	0108106009	图像与视频处理	77.94
2018-2019春	0108106010	通信网络算法思维	89.36
2018-2019春	0108106011	现代信号处理方法	87.05
2018-2019春	0108107001	无线传感器网络及信号处理	73.56
2018-2019春	0108107008	雷达成像理论与实现	87.67
2018-2019春	0108107010	机器学习	81.52
2018-2019春	0108107013	模糊逻辑	88.93
2018-2019春	0108107020	光纤传感网络	81.05
2018-2019春	0108107021	高维空间信号处理基础理论与方法	91.27
2018-2019春	0152086010	电子系统仿真理论与技术	68.9
2018-2019春	0152087004	数字集成电路与系统设计	60.32
2018-2019春	0208096001	近代天线理论	84.54
2018-2019春	0208096004	计算电磁学	76.97
2018-2019春	0208096005	导波场论	79.29
2018-2019春	0208096006	射频集成电路	83.07
2018-2019春	0208096008	集成电子学	77.76
2018-2019春	0208096009	薄膜材料及技术	79.19
2018-2019春	0208096012	纳米电子学与自旋电子学	81.92
2018-2019春	0208096017	微波电子学	80.75
2018-2019春	0208096020	等离子体物理与等离子体电子学	84.46
2018-2019春	0208096021	强流电子光学	88.51
2018-2019春	0208096026	铁磁物理与器件	77.32
2018-2019春	0208096027	固体微观理论	83.82
2018-2019春	0208097001	近代微波测量	85.01
2018-2019春	0208097002	非均匀介质中的场与波	86.08
2018-2019春	0208097004	电磁兼容原理与应用	82.44
2018-2019春	0208097006	毫米波与太赫兹电路理论与技术	80.57
2018-2019春	0208097010	柔性MEMS系统与集成(全英文)	90.65
2018-2019春	0208097013	半导体功率器件与智能功率IC	85.05
2018-2019春	0208097015	VHDL语言与数字集成电路设计	71.4
2018-2019春	0208097016	微细加工与MEMS技术	86.67
2018-2019春	0208097023	纳米材料及纳米结构	70.3
2018-2019春	0208097025	微纳光学材料与器件	76.2
2018-2019春	0208097028	电磁场有限元方法	84.45
2018-2019春	0208097031	电子回旋脉塞理论与技术	81.4
2018-2019春	0208097039	微波磁性器件	81.25
2018-2019春	0208097042	磁性功能材料及应用	86
2018-2019春	0208097043	电子陶瓷与器件	91
2018-2019春	0208097045	无源集成技术	84.59
2018-2019春	0308056002	固体微观理论	87.89
2018-2019春	0308056005	电子陶瓷物理	82.2
2018-2019春	0308057001	纳米电子学与自旋电子学	79.57
2018-2019春	0308057005	磁性功能材料及应用	73.1
2018-2019春	0308176003	电化学原理和应用	83.17
2018-2019春	0308176004	纳米材料及纳米结构	93.99
2018-2019春	0408026003	最优化设计方法	84.27
2018-2019春	0408026004	机械动力学	63.16
2018-2019春	0408026005	机电系统智能控制	91.44
2018-2019春	0408026007	现代设计理论与方法	91.75
2018-2019春	0408026008	现代测试导论	79.03
2018-2019春	0408027009	电子设备热设计	89.45
2018-2019春	0408027010	可靠性设计	88
2018-2019春	0408027011	现代传感技术	84.64
2018-2019春	0408086005	电力系统运行与控制	70.98
2018-2019春	0408086006	现代电力电子技术	80.05
2018-2019春	0452016001	机电测控技术	79.83
2018-2019春	0508036003	半导体光电子学	69.38
2018-2019春	0508036004	光波导理论与技术	83.66
2018-2019春	0508036006	量子光学	78.9
2018-2019春	0508036010	光电信息检测	82.65
2018-2019春	0508037002	光电成像导论	86.16
2018-2019春	0508037003	非线性光学	75.98
2018-2019春	0552026029	光电探测技术	78.16
2018-2019春	0552026030	激光技术及应用	80.25
2018-2019春	0608046001	信号处理方法及应用	74.3
2018-2019春	0608046002	现代信号处理	76.47
2018-2019春	0608046003	计量方法与误差理论	76.6
2018-2019春	0608047004	电子系统故障诊断与测试性技术	94.5
2018-2019春	0608047006	射频电路设计	85.27
2018-2019春	0608047007	微波电路的设计、优化及测试技术	89
2018-2019春	0608116003	自适应控制	79.01
2018-2019春	0608116004	模式识别	81.18
2018-2019春	0608116005	先进控制技术	81.26
2018-2019春	0608117003	复杂系统性能评价和优化	发布
2018-2019春	0608117004	计算智能理论与方法	80.75
2018-2019春	0608117006	智能控制理论及应用	88.7
2018-2019春	0608117009	数字图象处理	86.51
2018-2019春	0608117010	机器学习	83.34
2018-2019春	0608117011	电气传动与自动控制	88
2018-2019春	0708166006	专业英语	80.67
2018-2019春	0766667002	Remote sensing of vegetation	89.27
2018-2019春	0808126006	机器学习	84.83
2018-2019春	0808126007	大数据分析与挖掘	85.61
2018-2019春	0808126008	嵌入式系统设计	80.92
2018-2019春	0808126011	计算复杂性	88.74
2018-2019春	0808126012	高级计算机视觉	81.54
2018-2019春	0808126013	组合设计与组合优化理论	78.64
2018-2019春	0808127012	GPU并行编程	76.5
2018-2019春	0808396002	软件安全性分析	69.12
2018-2019春	0808396003	网络安全技术	84.04
2018-2019春	0808396004	现代密码理论	75.15
2018-2019春	0908356003	网络计算模式	86.91
2018-2019春	0908356004	软件架构模型与设计	85.37
2018-2019春	0908356005	高级计算机结构	72.4
2018-2019春	0908357004	UNIX/Linux操作系统内核结构	80.84
2018-2019春	0908357005	数据分析与数据挖掘	97.8
2018-2019春	1008116003	现代测控通信技术	88.13
2018-2019春	1008116004	系统工程理论与方法	87.15
2018-2019春	1008116005	现代飞行器GNC理论	87.07
2018-2019春	1008117002	空间探测及其天线技术	80
2018-2019春	1008117008	系统可测性设计技术	72
2018-2019春	1100016002	应用数学理论与方法	86.71
2018-2019春	1100016003	图论及应用	80.12
2018-2019春	1100025001	数学建模	88.75
2018-2019春	11005001	工程伦理与学术道德	82.78
2018-2019春	1107016005	数值分析	87.56
2018-2019春	1107016007	数值代数	80.84
2018-2019春	1107016008	偏微分方程数值解法	72.97
2018-2019春	1107016009	近世代数	69.32
2018-2019春	1107017006	复杂网络基础选讲	82
2018-2019春	1107017007	不确定性的数学理论	85.8
2018-2019春	1107017009	泛函微分方程及定性理论	94
2018-2019春	1107146003	数理统计学	74.46
2018-2019春	1107146004	数理经济学	81.69
2018-2019春	1107146006	现代回归分析	91.98
2018-2019春	1207026006	高等量子力学	84.95
2018-2019春	1207026007	固体波谱学	79.7
2018-2019春	1207026012	计算电磁学	80.66
2018-2019春	1207026018	高等光学	76.94
2018-2019春	1207027004	高等固体理论	81.49
2018-2019春	1207027006	亚波长光学	84.4
2018-2019春	1207027007	光学系统设计	87.15
2018-2019春	1207027010	瞬态电磁学	80
2018-2019春	1207027017	弦理论	87.5
2018-2019春	1207027018	导波场论与器件原理	91.42
2018-2019春	1207027020	电磁学中的格林函数	64.95
2018-2019春	1207028001	学科前沿知识专题讲座	80
2018-2019春	13005001	硕士生英语阅读与翻译	60
2018-2019春	13005002	硕士生英语听说与写作	85
2018-2019春	13005014	硕士研究生学位英语	60.36
2018-2019春	13006001	博士生英语阅读	81.08
2018-2019春	13006008	直博生英语阅读与翻译	56.5
2018-2019春	1310026004	临床科研设计	76.5
2018-2019春	1310556004	临床药物治疗学	80.88
2018-2019春	1310556005	临床药学实践	89.64
2018-2019春	1310556006	个体化药物治疗	81.85
2018-2019春	1310556007	药学监护实践与方法	76.77
2018-2019春	1310726001	生物医学工程导论	81.33
2018-2019春	1310726002	分子免疫学	72.46
2018-2019春	1310726005	疾病基因研究进展	91.78
2018-2019春	1404026003	异常心理学	88.25
2018-2019春	1404026005	心理生理测量	91.17
2018-2019春	1404027001	注意和记忆专题	85.6
2018-2019春	1407106001	高级生物化学	80.11
2018-2019春	1407106002	高级细胞生物学	84.08
2018-2019春	1407106003	神经免疫学	81.78
2018-2019春	1407106005	生物力学与组织工程学	85.28
2018-2019春	1407106008	神经生物学	82.99
2018-2019春	1408316002	生物医学信号处理	83.56
2018-2019春	1408316003	神经网络方法	84.91
2018-2019春	1408316004	脑科学基础	76.72
2018-2019春	1408317001	统计检验方法	56.8
2018-2019春	1452306002	计算机辅助药物设计综合实验	89
2018-2019春	1500005001	工程伦理与学术道德	86.67
2018-2019春	1500005002	知识产权与信息检索	91.93
2018-2019春	1502026001	高级计量经济学	85.55
2018-2019春	1502026003	高级宏观经济学	84.22
2018-2019春	1502026007	应用随机过程	70.18
2018-2019春	1502516002	金融衍生工具	86.5
2018-2019春	1512016002	数据分析与决策	69.97
2018-2019春	1512016003	信息经济学与博弈论	79.75
2018-2019春	1512026002	战略管理研究	81.25
2018-2019春	1512026005	营销管理研究	86.21
2018-2019春	1512026006	创新管理研究	86.24
2018-2019春	1512026008	现代管理理论	89.31
2018-2019春	16005011	自然辩证法概论	75.2
2018-2019春	1605036003	新媒体研究	83.24
2018-2019春	1605036004	新闻传播学研究方法	86.21
2018-2019春	1605036005	中外新闻传播学史	85.24
2018-2019春	1605526001	媒介经营与管理	84.09
2018-2019春	1605526002	传播法规与媒介伦理	84.92
2018-2019春	1612046004	公共经济与公共政策	86.52
2018-2019春	1612046005	电子政务	86.43
2018-2019春	1700005001	硕士研究生学位英语	69.44
2018-2019春	1700005002	博士研究生英语	79.2
2018-2019春	1700005003	直博生英语	81.33
2018-2019春	1705025001	高级日语	83.6
2018-2019春	1705025002	高级德语	93.75
2018-2019春	1705025003	高级法语	83.54
2018-2019春	1705026002	文献学与社会科学研究方法	85.74
2018-2019春	1705026004	文学批评与文学理论	83.32
2018-2019春	1705027008	外国文学经典阅读与批评(II)	87.77
2018-2019春	1705516002	文学翻译	81.31
2018-2019春	1705516003	非文学翻译	83.83
2018-2019春	1705516004	电子信息类科技笔译	83.09
2018-2019春	1705516005	电子信息类科技口译	85.39
2018-2019春	1705517004	计算机辅助翻译	83.7
2018-2019春	1766666002	翻译技术与项目管理	83.15
2018-2019春	1803056004	马克思主义政治经济学专题研究	85.41
2018-2019春	1803056006	当代中国社会思潮研究	83.6
2018-2019春	1803057004	中国共产党治国理政理论与实践专题研究	85.48
2018-2019春	2000025002	体育俱乐部	95.54
2018-2019春	2208106001	现代无线与移动通信系统	77.97
2018-2019春	2208106002	纠错编码	82.03
2018-2019春	2208106003	安全通信	74.53
2018-2019秋	0108106001	最优化理论与应用	76.60
2018-2019秋	0108106002	信号理论与分析应用	79.85
2018-2019秋	0108106003	现代数字信号处理理论与算法	78.50
2018-2019秋	0108106004	通信网络系统基础	74.54
2018-2019秋	0108106005	光纤通信系统和网络	67.18
2018-2019秋	0108106006	信息论	80.91
2018-2019秋	0108106007	信号检测与估计	74.92
2018-2019秋	0108106011	现代信号处理方法	92.50
2018-2019秋	0108106012	随机过程及应用	75.87
2018-2019秋	0108107006	ASIC设计	85.04
2018-2019秋	0208096001	近代天线理论	86.82
2018-2019秋	0208096002	非线性微波电路与系统	79.30
2018-2019秋	0208096003	高等电磁场理论	77.79
2018-2019秋	0208096004	计算电磁学	88.70
2018-2019秋	0208096005	导波场论	78.33
2018-2019秋	0208096007	现代网络理论与综合	82.73
2018-2019秋	0208096008	集成电子学	86.60
2018-2019秋	0208096010	VLSI电路和系统设计	82.32
2018-2019秋	0208096011	半导体器件物理	75.20
2018-2019秋	0208096013	模拟集成电路分析与设计	76.44
2018-2019秋	0208096014	信息材料基础	86.20
2018-2019秋	0208096015	材料物理学	81.11
2018-2019秋	0208096016	纳电子学与微真空电子学	85.00
2018-2019秋	0208096017	微波电子学	90.23
2018-2019秋	0208096018	相对论电动力学	80.52
2018-2019秋	0208096019	带电粒子的电磁辐射及应用	67.94
2018-2019秋	0208096030	模拟集成电路基础	84.17
2018-2019秋	0208096051	嵌入式系统	93.33
2018-2019秋	0208096053	HDL数字电路设计	74.17
2018-2019秋	0208096054	基于传感器的系统	72.00
2018-2019秋	0208096055	ASIC和FPGA嵌入式硬件设计	76.25
2018-2019秋	0208096105	模拟集成电路设计	88.50
2018-2019秋	0208096202	模拟集成电路分析与设计	77.80
2018-2019秋	0208096203	半导体器件物理	78.55
2018-2019秋	0208096204	信息材料基础	79.00
2018-2019秋	0208097041	材料表面与界面物理	80.22
2018-2019秋	0308056001	材料物理学	80.41
2018-2019秋	0308056006	铁磁学	86.48
2018-2019秋	0308056007	材料表面与界面物理	82.30
2018-2019秋	0308056018	物理与化学电源基础	81.50
2018-2019秋	0308057018	材料分析理论与方法	81.30
2018-2019秋	0308176001	高等无机化学	81.48
2018-2019秋	0308176002	高等有机化学	82.75
2018-2019秋	0408026001	现代控制理论	76.62
2018-2019秋	0408026002	有限元理论与建模方法	85.21
2018-2019秋	0408026003	最优化设计方法	89.00
2018-2019秋	0408086001	高等电力系统分析	80.81
2018-2019秋	0408086002	非线性系统理论	88.50
2018-2019秋	0408086003	最优化理论与应用	70.86
2018-2019秋	0408086004	现代控制理论	90.34
2018-2019秋	0508036002	光学原理	70.75
2018-2019秋	0508036003	半导体光电子学	82.34
2018-2019秋	0508036005	敏感材料与传感器	82.58
2018-2019秋	0508036007	激光物理	85.43
2018-2019秋	0508036012	光电薄膜材料与技术	78.52
2018-2019秋	0508037017	光电探测原理与技术	76.43
2018-2019秋	0608046002	现代信号处理	81.10
2018-2019秋	0608046004	信号检测与估计	76.33
2018-2019秋	0608046005	现代检测技术	72.07
2018-2019秋	0608046006	微波测量	80.33
2018-2019秋	0608046008	集成电路诊断测试与可测性设计技术	80.00
2018-2019秋	0608116001	最优化理论与应用	78.95
2018-2019秋	0608116002	线性系统理论	81.51
2018-2019秋	0608116003	自适应控制	86.00
2018-2019秋	0608116004	模式识别	84.70
2018-2019秋	0608117002	非线性系统理论	93.54
2018-2019秋	0608117008	计算机视觉	84.50
2018-2019秋	0708166002	新型遥感信息处理与应用技术	80.41
2018-2019秋	0708166003	地理信息理论与技术	80.13
2018-2019秋	0708166004	定量遥感	79.40
2018-2019秋	0708166005	导航与位置服务技术	89.95
2018-2019秋	0808126001	组合数学	73.26
2018-2019秋	0808126002	算法设计与分析	72.03
2018-2019秋	0808126003	高级计算机系统结构	69.41
2018-2019秋	0808126004	高级网络计算	77.48
2018-2019秋	0808126005	计算机高级图形学	77.59
2018-2019秋	0808126006	机器学习	86.80
2018-2019秋	0808126009	有限自动机理论	83.32
2018-2019秋	0808126010	分布式系统	72.87
2018-2019秋	0808126014	统计学习理论及应用	82.02
2018-2019秋	0808126015	形式化方法	79.52
2018-2019秋	0808126016	网络安全	78.91
2018-2019秋	0808396001	信息保护理论与技术	84.72
2018-2019秋	0808396003	网络安全技术	88.60
2018-2019秋	0808396005	近世代数	81.10
2018-2019秋	0908356001	随机过程与排队论	73.73
2018-2019秋	0908356002	组合优化理论	85.26
2018-2019秋	0908356004	软件架构模型与设计	85.20
2018-2019秋	0908356006	网络安全理论与技术	81.40
2018-2019秋	0908357002	算法设计与分析	84.07
2018-2019秋	1008116002	现代导航与制导技术	79.07
2018-2019秋	1100016001	随机过程及应用	79.13
2018-2019秋	1100016002	应用数学理论与方法	86.38
2018-2019秋	1100016003	图论及应用	84.82
2018-2019秋	1100016004	矩阵理论	74.59
2018-2019秋	1100016005	数学物理方程与特殊函数	73.21
2018-2019秋	1100016006	应用泛函分析	73.22
2018-2019秋	1100016007	数论	76.58
2018-2019秋	1107016001	泛函分析	77.07
2018-2019秋	1107016002	偏微分方程	87.23
2018-2019秋	1107016003	动力系统稳定性理论及应用	92.77
2018-2019秋	1107016004	最优化理论与应用	80.84
2018-2019秋	1107016005	数值分析	77.92
2018-2019秋	1107016006	矩阵分析	76.48
2018-2019秋	1107016010	模糊数学基础	93.54
2018-2019秋	1107146001	高等概率论	84.91
2018-2019秋	1107146002	随机过程	76.20
2018-2019秋	1107146005	抽样技术	92.00
2018-2019秋	1207026002	量子场论(一)	60.00
2018-2019秋	1207026004	高等电磁场理论	69.89
2018-2019秋	1207026006	高等量子力学	88.77
2018-2019秋	1207026009	现代光学	75.78
2018-2019秋	1207026014	高等统计物理	89.39
2018-2019秋	1207026019	量子信息导论	92.18
2018-2019秋	1207027001	聚变等离子体物理	89.87
2018-2019秋	1207027004	高等固体理论	89.20
2018-2019秋	1207027011	量子压电电子学	90.10
2018-2019秋	1310026001	专业课	71.55
2018-2019秋	1310026002	专业英语	78.04
2018-2019秋	1310026003	医学文献检索	88.33
2018-2019秋	1310026005	医学统计学	77.93
2018-2019秋	1310026006	分子生物学与生物化学	77.87
2018-2019秋	1310556001	临床药理学	86.70
2018-2019秋	1310556002	临床药学	81.31
2018-2019秋	1310556003	药物政策与药事管理学方法论	86.55
2018-2019秋	1310556008	药物现代评价方法	86.59
2018-2019秋	1310556009	药理研究技术与方法	85.32
2018-2019秋	1310556010	药物合成与制剂研究	82.41
2018-2019秋	1310556011	应用分子药理学	78.44
2018-2019秋	1310726003	实验动物学	88.91
2018-2019秋	1310726004	医学遗传学	85.83
2018-2019秋	1404026001	心理学史	85.53
2018-2019秋	1404026002	心理学研究方法与实验设计	87.40
2018-2019秋	1404026004	认知神经科学	78.27
2018-2019秋	1407106001	高级生物化学	78.75
2018-2019秋	1407106002	高级细胞生物学	82.17
2018-2019秋	1407106004	高级分子生物学	78.57
2018-2019秋	1407106006	生物物理学	85.50
2018-2019秋	1407106007	发育遗传学	83.30
2018-2019秋	1407106008	神经生物学	81.00
2018-2019秋	1408316001	医学成像原理	82.55
2018-2019秋	1500005001	工程伦理与学术道德	82.32
2018-2019秋	1502026002	高级微观经济学	76.84
2018-2019秋	1502026005	区域经济分析	89.00
2018-2019秋	1502026006	产业组织理论	79.67
2018-2019秋	1502026008	公司金融	74.99
2018-2019秋	1502026010	金融经济学	86.28
2018-2019秋	1502516001	投资学	90.67
2018-2019秋	1512016001	运筹学(II)	80.39
2018-2019秋	1512016004	管理科学研究方法	89.13
2018-2019秋	1512016005	博弈论与合约	68.17
2018-2019秋	1512016006	现代优化理论	84.50
2018-2019秋	1512026001	管理研究方法	79.58
2018-2019秋	1512026003	公司财务研究	77.13
2018-2019秋	1512026004	组织管理研究	87.35
2018-2019秋	1605036001	新闻学理论	87.72
2018-2019秋	1605036002	传播学理论及应用	85.99
2018-2019秋	1605036006	新闻传播实务	83.00
2018-2019秋	1612046001	公共管理学	78.66
2018-2019秋	1612046002	政治学	84.63
2018-2019秋	1612046003	社会科学研究方法	79.62
2018-2019秋	1700005001	硕士研究生学位英语	70.00
2018-2019秋	1705026001	汉语经典阅读与批评	88.33
2018-2019秋	1705026003	语言学通论	82.19
2018-2019秋	1705026005	翻译学理论	81.65
2018-2019秋	1705026007	国别与区域研究概论	90.94
2018-2019秋	1705515001	中国语言文化	86.88
2018-2019秋	1705516001	翻译概论	81.29
2018-2019秋	1800005001	中国特色社会主义理论与实践	85.81
2018-2019秋	1800005004	中国马克思主义与当代	81.91
2018-2019秋	1803056001	马克思主义经典文献研究	83.47
2018-2019秋	1803056002	马克思主义基本原理研究	79.49
2018-2019秋	1803056003	马克思主义发展史研究	84.52
2018-2019秋	1803056005	中国近现代史专题研究	87.33
2018-2019秋	1803057005	思想政治教育学前沿问题研究	86.98
`
    const $ = s => document.querySelector(s)

    let gradeTable = {}

    // 处理成绩数据库
    rawText.split('\n').forEach(v => {
        let line = v.split('\t')
        if (line.length !== 4) return
        let code = +line[1]
        if (!gradeTable[code]) {
            gradeTable[code] = []
        }
        gradeTable[code].push({
            sem: line[0],
            code: line[1],
            name: line[2],
            value: line[3]
        })
    })
    console.log(gradeTable)

    // 构造dom的函数
    const buildAvg = (code, sem, grade, weight) => {
        if (!gradeTable[code]) return '无平均分信息'

        let index = gradeTable[code].findIndex(v => v.sem === sem)
        index = index < 0 ? 0 : index
        let avgGrade = +gradeTable[code][index].value
        let diff = grade - avgGrade
        return `<span>${avgGrade},</span><span style="color: ${diff >= 0 ? 'green' : 'red'}"> ${diff.toFixed(2)}, ${(diff * weight).toFixed(2)}</span>`
    }

    const buildSelector = (values, course) => {
        // 如果只有一个学期,则返回学期说明
        if (values.length < 2) {
            let text = document.createElement('span')
            text.innerText = values.map(v => v.sem).join('\n')
            return text
        }
        // 如果有两个学期,增加下拉框
        const dom = document.createElement('select')
        dom.onchange = e => {
            const pnode = course.node
            const offset = pnode.children.length - 10
            pnode.children[6 + offset].innerHTML = buildAvg(course.code, getSem(course.node), course.grade, course.weight)
            render()
        }
        const defaultSem = parseSemFromExam(course.node)
        const content = values.map((v, i) => {
            return `<option value=${v.sem} ${i == defaultSem ? 'selected' : ''}>${v.sem}</option>`
        }).join('\n')
        dom.innerHTML = content
        return dom
    }

    const buildQRCode = () => {
        const dom = document.createElement('div')
        dom.style = 'width: 100%; display: flex; justify-content: center; flex-wrap: wrap; margin-bottom: 100px;'
        dom.innerHTML = `<div style="width: 100%; text-align: center; font-weight: bold; line-height: 1.2; padding-bottom: 20px;">
            <h3>使用说明</h3>
            <p>
                <div>本插件在计算成绩时默认将低于60分的科目剔除,你可以手动点击每行行首将其添加上;</div>
                <div>有的课程在上下两个学期都有开设,所以会有两个平均分,如果计算错误,可以手动在右侧下拉框选择学期。</div>
            </p>
            <div>如果这个脚本帮到了你,可以<a href="https://blog.simplenaive.cn/qrcode.png">请作者喝瓶阔乐</a>;<br>如果遇到了BUG,请发邮件至 [email protected] 反馈。</div>
        </div>`
        return dom
    }

    // 获取学期信息
    const getSem = (node) => {
        return (node.children[node.children.length - 1].children[0] || {}).value
    }
    // 从考试时间中解析学期信息
    const parseSemFromExam = (node) => {
        const examText = node.children[node.children.length - 3].innerText
        let time = examText.split(/\s/)
        if (time.length < 2) return 0
        time = new Date(time[0])
        return time > new Date("2019-03-15") ? 1 : 0
    }

    // 处理学生成绩
    let stuGradeTable = {}
    let groupName = ''
    // 设置表头
    const head = $('#tbl > thead').children[0]
    head.children[1].innerText = '选中'
    head.children[8].innerText = '平均, 差值, 加权差值'
    head.children[head.children.length - 1].innerText = '学期'
    // 渲染数据
    Array.from($('#tbl > tbody').children).forEach(v => {
        // 设置索引
        const len = v.children.length
        let offset = 0
        if (len == 11) {
            groupName = v.children[1].innerText
            offset = 1
        }
        // 准备加入索引
        if (!stuGradeTable[groupName]) stuGradeTable[groupName] = []
        const course = {
            node: v,
            grade: parseFloat(v.children[3 + offset].innerText),
            weight: +v.children[4 + offset].innerText,
            code: +v.children[1 + offset].innerText
        }
        // 添加交互按钮
        const selected = course.grade >= 60 && groupName.indexOf('基础') > -1
        v.children[0].innerHTML = '<span style="color: white; pointer-events: none">√</span>'
        v.children[0].style = selected ? 'background: #82af6f!important; cursor: pointer' : 'cursor: pointer'
        v.children[0].dataset.selected = +selected
        v.children[0].onclick = e => {
            const selected = 1 - e.target.dataset.selected
            e.target.dataset.selected = selected
            e.target.style = selected ? 'background: #82af6f!important; cursor: pointer' : 'cursor: pointer'
            render()
        }
        // 添加学期下拉框
        if (gradeTable[course.code]) {
            v.children[v.children.length - 1].appendChild(buildSelector(gradeTable[course.code], course))
        }

        // 添加平均分信息
        v.children[6 + offset].innerHTML = buildAvg(course.code, getSem(course.node), course.grade, course.weight)
        stuGradeTable[groupName].push(course)
    })

    console.log(stuGradeTable)

    const computeSummary = () => {
        let ret = 0
        Object.keys(stuGradeTable).forEach(v => {
            // 统计平均分
            ret += stuGradeTable[v].reduce((p, c) => {
                if (c.node.children[0].dataset.selected < 1) return p
                const sem = getSem(c.node)
                let index = gradeTable[c.code].findIndex(v => v.sem === sem)
                index = index < 0 ? 0 : index
                const avgGrade = +gradeTable[c.code][index].value
                let grade = (c.grade - avgGrade) * c.weight
                return grade + p
            }, 0)
        })
        return ret
    }

    function render() {
        const line = document.createElement('tr')
        const sum = computeSummary().toFixed(2)
        const content = `<tr>
            <td align="center" class="tdContent">加权总分</td>
            <td align="center" class="tdContent" colspan="8"><strong id="summary">${sum}</strong></td>
         </tr>`
        line.innerHTML = content
        if (!$('#summary')) $('#objTablesxf > tbody').appendChild(line)
        else $('#summary').innerText = sum
    }

    render()
    document.body.appendChild(buildQRCode())
})();