补充选课相关问题
xktype参数在非选课时间一直为2,实际应为3。多亏了开学第一周可以补选课,让我得知了这个问题。同时,我觉得我也可以尝试提前选课了(估计还是不行的……)
选开课计划课程
开课计划首先要选中课程,然后选中课程的子课程,所以要先查看课程详情。
其余步骤与选公选课基本一致。
查询选课结果
选课结果包括选课学分统计,重新搞了一个HTMLParser来处理。
查询考试安排
首先要查询考试轮次并选择,然后查询到考试安排。
查询考试成绩
提供学年、学期查询成绩,或默认查询入学以来全部成绩。
评教
首先要获取评教轮次,然后获取课程列表,再对其中某个课程进行评教。我设计了分值,1-5分别代表选项不好到好。同时打1分则文字评论较差,打2-5分文字评论较好。
抢课策略
特别设计了选课愿望单,可以提前将希望抢的课加入愿望单。
抢课即不断循环:从公选课开始,按照愿望单先后顺序选课;公选课完成后再选计划课程。如果某课程选择失败,将其加入队尾,先跳过去抢下一门(如果是已选择的错误则移出队列)。
抢课间隔时间默认1.2秒,但容易出现网络错误(教务网太脆弱)。其实这里有个插曲,本来我花了一个上午都设计好了多线程抢课程序,结果就因为教务网太脆就全删了。甚至顺序选课都要间隔时间,很无奈。间隔时间自适应的,如果失败一次就自动延长0.2秒。
提高用户交互体验
命令行式交互
对了,我还想移植到Java上,日后实现Android教务助手。毕竟那段JavaScript是有Java对应算法的,直接克服加密问题。另外jsoup貌似是个不错的HTMLParser,Java还有很多HTTP Request库,总之很可行。