网校自动选课软件

更新日期: 2021-10-11 阅读次数: 1679 字数: 476 分类: Tampermonkey

扫描所有课程,记录其所属的网校。前面几节课随机选,快超过学时了,就选几个学时少的课程。 目的是减少每次选课人工计算的时间。

界面上配置的规则有

  1. 学员类别
  2. 年度
  3. 哪个网校

年度主要是2019-2021年三年、 课程有2种情况的人员 一种人员公需课不低于15学时、专业课不低于30学时、在这上面、学时尽量别超的多、因为按学时付费 另一种人员公需课不低于10学时、专业课不低于20学时

添加执行逻辑

点击开始

如果没有选择三项,提示

过滤一轮所有课程,排除不符合条件的。 同时将符合条件的分为两个不同分类, 不同分类下再分为不同学校。

从符合条件的里面,随机抽取,直到满足学分

然后逐一添加课程

完成后,跳转购物车页面,手工确认提交。

优化

存在一种极端的情况,总分10分,已经9.5了,又选择了一个3学时的。但是有一个学时的更好选择。

两种策略:

  • 第一种:追求完美匹配。由于学时都是 5 的倍数,所有只需要每两个课程为一组,两者学时和为 5 即可。反复即可即可。
  • 第二种:接受 0.5 小时的偏差。随机出一组,判断偏差是否超过 0.5,如果超过则再出一组,如此反复,知道找到满足条件的一组。

实际运行中,发现,第二种方式更简单高效,而第一种长时间运行没有结果。这说明完美的方案,远不如有一点可以接受的偏差的方案,简单直接高效。

如何排除重复项目

一个 set 集合,保存随机抽选出的 item id?(set中保存obj?)其他信息怎么存。 每次抽之后,判断set中是否已存在。如果已存在,舍弃。 或者通过接口的返回,来判断是否是重复添加的。

数值分布

遍历一遍所有 item,统计出每个区间的 item 个数。

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式