新媒体中心经常要排班、找人手。空课表是一张 Excel,几十个人的课表排在一起,想临时找一个「周四下午第三、四节有空」的人,得对着表格一格一格地看,很容易看花眼。所以我写了一个小工具,把这个过程变成三个下拉框。

它做了什么

页面上一共三个选择:周数(第 1–20 周)、星期(周一至周日)、课节(第 1、2 节到第 9、10、11 节)。选好之后点「查询」,下面直接列出这个时段有空的人,先干事、后干部分组展示,全员空闲时会显示「全有空」。

课节支持多选:同时勾选多个课节时,只列出这些课节都有空的人(交集)。课节也可以不选——不选就是查一整天,此时只显示当天五个课节全天都有空的人。

选课节时,还会备注所选时段相邻的课节有没有空,方便判断能不能前后连成一段完整的时间——比如选中整个上午,就备注下午第一节段(第 5、6 节)有没有空。备注里「有空」显示为绿色、「有课」显示为红色。

系统还内置了新媒体中心的单双周值班表:查询结果顶部会显示当天值班的干事;名单里当天值班的干事会整行标黄,一眼就能看出该找谁。

技术上的一点坚持

整个工具是一个单文件 HTML:样式、逻辑、数据全部内嵌,双击 index.html 就能用,不需要服务器、不需要联网、不需要装任何依赖。数据以 JS 对象的形式固化在页面里,所以离线也能跑。

这样做的代价是页面文件会变大一点,但换来的是「谁拿到都能直接用」的省心——对校内这种场景,简单可靠比什么都重要。电脑和手机上都是响应式布局,随手能查。

数据更新也很省事:改 Excel 后跑一个脚本,页面里的数据块和 schedule.json 会自动重写。

把它开源出来

这个项目我用 MIT 协议开源了,仓库里带齐了文档:README(使用与数据更新说明)、LICENSE、CONTRIBUTING(贡献指南)、CHANGELOG(变更记录)。解析脚本、验证脚本也都放在 tools/ 里,谁想拿去改成自己学院用,照着说明改 Excel 就行。

唯一没有进库的是那份原始空课表——里面有成员的姓名,属于内部数据,按约定不入库;想开源的可以按说明自己脱敏一份样例。

获取源码与文档

完整的源码与文档我都放在本站,方便随时查阅或下载:

在线查看项目文档 · 下载源码与文档(zip)

另外还有一个 Windows 桌面工具:不需要打开浏览器,双击就能把空课表改造成可发布的查询系统,适合不熟悉代码的同学直接使用——下载空课查询系统(Windows,约 15 MB)。

如果它恰好能帮你的组织省下一点排班的力气,那这个周末就没白写。