鸟枪换炮的课表数据处理
· 日志记录 · 2 comments · 2,325 Views

鸟枪换炮的课表数据处理

· 日志记录 · 2 comments · 2,325 Views

前言

自上大学以来我就想在学校的教务系统翻雨覆雨一番,然而结果则是令人难受——外网不通……于是只能在学校的教务网站下载公开的课表信息做一下小动作了。
课表数据

大一 -鸟枪

在大一的时候年少无知入了学生会网络技术部,虽说部里的事情繁忙占用大部分空闲时间,不过收获女朋友一枚还是不错的。当然这不重要,我要说的是:当时某副部想在公众号每天推送一篇整理空教室的图片方便学生查看,没几天便找我商量能不能写一个空教室查询系统,这样更方便一些。但那时知识层面和认知范围不足,面对着学校上百个教室的课表手足无措,最后拉了我们部的其他部委一起手工整理,汇总到我这里之后手工录入数据到数据库中,我是不会跟你们说我录数据录了一星期的 : ( 当然是每天就用晚上那点时间去录入,大一实在太忙了。不过一分耕耘一分收获嘛,最后的使用结果也是很满意的。
空教室小分队

大二 -大炮

到大二的时候就要选择是否继续留在学生会了,个人愚见认为学生会里是能够锻炼组织能力等等,不过我个人是比较喜欢钻研技术,便退出了学生会并学习前端去了。后来在"上上签"开发中碰巧使用了PHPExcel,发现用这个处理Excel还是不错的~所以空闲之后便着手对这个研究了起来,最终实现了批量处理全校的班级、教师和教室的课表。

处理课表的过程

在处理班级和教师课表的时候发现Excel表格中第19行和36行是空行,可能是为了区别上下午和晚上而加的,但这样的话就不能一个for循环到底了,最后只能妥协写三个for循环分别处理上午、下午和晚上的课程,如果在这方面有比我好的建议的话,请联系我谢谢!

上面的小问题还好说,但在处理空教室的时候问题又来了。刚开始是想单周就循环单数,双周就循环双数,这样处理之后上线到小程序,结果收到反馈说大部分教室都是有课的,我这才反应过来我把“空教室”整理成“有课教室”了!于是我立即到小程序平台将版本回退到没有空教室查询功能的版本,想了一下这是“搞反了”,便用array_diff将有课的数据"变为"无课的数据,处理详情可以看代码:/freeroom.php#L16-L36,ok!处理完毕。

得益于php-cli模式,可以一直循环操作数据到结束而不需要设置set_time_limit,不得不说php大法好2333 :p

结语

我自认为处理方式还是不够高效,所以对此感兴趣的朋友可以在教务部网站下载课表数据进行处理,或者在Github上面进行指教!
import-URP-timetable

添加新评论 / Cancel Reply
  1. 客官要不要安利自己院校来试下https://github.com/insoxin/JiaoDaApi

    回复
    1. @姬长信

      挺有意思的,不过目前我们学校的教务系统没开外网,很多东西都没法搞,很伤心~

      回复