欢迎使用 课程表生成器。这是一个专为温州医科大学(及其他使用正方教务系统的高校)同学设计的实用小工具。
它的作用非常简单:把你从教务系统下载的“教学进度表”压缩包,一键转换成手机自带日历可以识别的格式。
从此,你再也不用对着课表一个个手动输入课程了,轻松实现课程表与手机日历的完美同步!
- ⚡ 极速转换:只需拖入文件,几秒钟内自动生成日历文件。
- 📂 批量处理:支持一次性上传多个压缩包,程序会自动合并所有课程。
- 📱 全平台支持:生成的
.ics文件完美适配 iPhone (iOS)、安卓 (Android)、Mac、Windows Outlook 等主流日历应用。 - 🧠 智能识别:自动解析课程名称、上课时间、地点等信息,无需人工干预。
- 🛠️ 稳定输出:相较于具有不确定性的大语言模型,本工具的输出结果更加稳定可靠,不会出现日程遗漏和错误。
- 📝 信息详尽:除基本的课程名称、上课时间地点等信息,生成的日历文件中还包含授课教师、授课内容和授课性质,相较于其他课程表app更加详细。
- 登录学校的 正方教务管理系统,温医大教务系统地址为:https://jwxt.wmu.edu.cn/。
- 在导航栏中的“信息查询”菜单找到 “教学进程查看” 选项并点击。
- (如果没有特别要求,可以省略这一步)在新打开的网页上半部分界面中选择你需要的学期,并勾选“个人”选项,点击右侧“查询”按钮。
- 先勾选“课程名称”相同的行,再点击右上角“导出”,一次性勾选同一门课的实验课和理论课等行。(由于正方教务系统存在bug,如果一次性全选所有课程,导出的课表会出现课程名称错乱,请务必按课程分别导出。)
- 浏览器会依次下载包含课程信息的 .zip 压缩包 文件到你的电脑或手机。
🎥 视频演示:
tutorial.mp4
你也可以直接获取包含考试信息的 Excel 文件(.xlsx)。在教务系统中打开“考试信息查询”界面,全选你需要的考试日程,点击右上角“导出”按钮,即可下载包含考试时间、地点、考试类型等信息的 Excel 文件。
- 打开本工具官网:https://kebiao.ipkx.tech/。
- 由于本工具后端部署在Render免费服务上,访问时可能会重新唤醒服务而不是立即打开界面,请耐心等待一段时间。
- 点击 “选择文件” 按钮,或者直接把刚才下载的 多个
.zip课表文件和.xlsx考试日程文件拖拽到网页中间的框框里。如果上传了非标准正方教务系统格式的文件,可能会出现解析错误。 - 看到文件列表出现后,点击绿色的 “开始处理” 按钮。
- 处理完成后,点击出现的 “⬇️ 下载 iCal 文件” 按钮,保存
course_schedule.ics文件。 - 在手机上:不同手机的操作方法不同。以iPhone为例,在“文件”App中长按
course_schedule.ics文件后拖动,不松手地打开“日历”App,将文件拖放到界面中间,在跳出界面右上角点击“添加全部”即可。其他手机导入ics文件的方法可以自行网络搜索。 - 在电脑上:双击文件,它通常会自动唤起系统日历或 Outlook,确认导入即可。
💡 小贴士:建议在导入时新建一个名为“课程表”的日历分类,这样以后如果课表变动,直接删除这个分类重新导入即可,不会影响你的私人日程。
本章节详细说明如何在本地环境部署和运行本项目。非专业同学可以忽略。
确保本地环境满足以下最低配置:
- 操作系统: Windows 10/11, macOS 10.15+, 或主流 Linux 发行版
- Python 版本: Python 3.8 或更高版本 (建议使用 3.10+)
- 依赖管理工具: pip 20.0+
建议使用虚拟环境进行部署,以避免依赖冲突。
步骤 1: 克隆项目与创建虚拟环境
# 克隆项目 (或下载 ZIP 解压)
git clone https://github.com/pkx07/wmukebiao.git
cd wmukebiao
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate检查点: 终端提示符前出现 (venv) 标识。
步骤 2: 安装项目依赖
pip install -r requirements.txt检查点: 执行 pip list,确认 Flask, pandas, icalendar 等包已在列表中。
本项目主要配置项位于 app.py 中。
| 参数项 | 默认值 | 说明 |
|---|---|---|
| 端口号 | 5001 |
修改 app.py 中的 port=5001 |
| 文件大小限制 | 16MB |
修改 app.py 中的 MAX_CONTENT_LENGTH |
| Debug 模式 | True |
修改 app.py 中的 debug=True (生产环境请设为 False) |
执行以下命令启动应用:
python app.py启动成功验证: 终端输出包含以下信息即表示启动成功:
* Running on http://127.0.0.1:5001
打开浏览器访问 http://127.0.0.1:5001,应显示课程表生成器主页。
Q1: 启动时提示 Address already in use
- 原因: 端口 5001 被其他程序占用。
- 解决: 修改
app.py中的port参数为其他端口(如 5002),或关闭占用端口的进程。
Q2: 提示 ModuleNotFoundError: No module named 'flask'
- 原因: 依赖未安装或未激活虚拟环境。
- 解决: 确认已激活虚拟环境
(venv),并重新执行pip install -r requirements.txt。
Q3: 上传文件报错 413 Request Entity Too Large
- 原因: 上传文件超过 16MB 限制。
- 解决: 在
app.py中增大app.config['MAX_CONTENT_LENGTH']的值。
Q4: 解析 Excel/Zip 时报错 xlrd.biffh.XLRDError
- 原因: 文件格式或依赖库版本问题。
- 解决: 确保
requirements.txt中包含openpyxl,本项目已配置使用 pandas 兼容引擎处理.xlsx和.xls。
Q: 上传后提示“No valid zip or excel files found”?
A: 请确认你上传的是 .zip 结尾的课表压缩包文件或 .xlsx 结尾的考试日程文件。如果你解压了课表压缩包,请不要上传里面的 excel 或 pdf,直接上传原始的 zip 包。
Q: 导入日历后时间不对? A: 程序默认按照 北京时间 处理课程。请检查你的手机或电脑时区设置是否正确。
Q: 为什么有的课程没有显示? A: 程序目前支持标准的正方教务系统格式。如果学校系统进行了特殊改动,可能导致部分解析失败。如有问题,请联系开发者反馈。
Q: 我可以删除导入的课程吗? A: 可以。如果你在导入时选择了新建日历分类,直接删除该分类即可清空所有课程。如果是混入了默认日历,可能需要手动删除。
- 感谢 polacola/timetable 项目的启发与代码参考。
- 感谢Gemini提供的代码调试与优化建议。
- 感谢Render提供的免费hosting服务。
本项目基于 MIT License 开源。你可以在遵守许可证条款的前提下自由使用、修改和分发本项目的代码。
如果你在使用过程中遇到任何问题,或者有好的建议,欢迎联系我们:
- 提交 Issue: 在 GitHub 页面点击 "Issues" 提交反馈
祝你学习愉快,不再错过任何一节课!🎓