期末考试结束了,又到了一年的出分季,若是在过去,算平均绩点和平均分不是什么难事,因为不论是飞扬的绩点计算器还是后来的「We 川大」(现川大圈校内通)都很好用。然而,因为教务处这学期的升级改造,帮助了无数学子多年的「川大圈校内通」牺牲了……
于是我身边的同学们不得不倒退回用 Excel 或者纸笔计算的原始时代……但作为半个程序猿,还用纸笔算这种事情实在是不大合适,于是我决定为我的四川大学综合教务系统助手增加一个自动计算绩点和平均分的功能。
现在脚本的新版本已经上传了,有需要的同学可以点击下面的链接安装使用:
https://zhaoji.wang/sichuan-university-urp-assistant/
下面的,我将记录一下编写这个功能时的要点。
其实我想了一下,也没有什么要点……因为这个功能太简单了。自从教务系统改版后,大部分操作都变成了 Ajax 方式获取数据,十分方便,我调用的是「综合查询」里的「全部及格成绩」查询接口:
http://zhjw.scu.edu.cn/student/integratedQuery/scoreQuery/allPassingScores/callback
这个接口要有登录 Session,直接访问即可得到数据,返回的 JSON 数据就是各个学期的成绩单。之后把数据用 map、filter 和 reduce 重新整理一下即可,因为四川大学综合教务系统助手的代码已经开源(Github 地址:https://github.com/frederick-wang/scu-urp-assistant),所以在此不过多叙述如何整理数据。
在整理完数据之后,还需要渲染数据,因为现在教务系统本身是用 JQuery+Bootstrap+Ace 模板+LayerUI 制作的,很多 CSS 和 JS 方法实际上都可以直接调用。我这里就直接用 JQuery 插入了一个已有的 Widget 组件,然后把表格、标签等数据渲染了上去。
不过在制作好后,有同学说现在有的成绩是按照 ABCD 在前端显示的。不过因为我还没有这样的课程出分,所以只好拜托已经出了 ABCD 等级分的同学帮忙查看脚本的运行结果是否正确。得到的反馈结果是没有问题。那看来接口获取到的数据应该就是个数字的分数,为等级分的上限。
想问一下研究生的教育系统适用吗~
因为读研不在川大了,没有用过研究生的 URP,目前我也不知道是否兼容。
基兄么么哒
希望可以推出原来 we 川大小程序里的那种选择部分课程计算绩点的功能!
编写出这个辛苦啦,太厉害了
该功能已经实现,更新到 v0.8.5 即可~
太好了
同学你好,服务器也加了时间限制,现在一键评教应该用不了了吧
可以使用,因为我把评教的间隔改成了 2 分钟……开着网页等一段时间就好了。