-
Notifications
You must be signed in to change notification settings - Fork 0
ClassPath v1.1 Wiki
欢迎使用 ClassPath Wiki,这里有关于 ClassPath 的详细信息。
ClassPath 是一款跨平台课程表应用,提供单日、单周、本学期三种视图模式,内置调休补班、二维码导入导出、楼宇配置复用、图片识别课程等功能。
核心特性:
- 多端支持:发行版目前支持 Android、Windows 平台,其他平台请下载源码自行编译
- 三种视图模式:单日纵向详情 + 单周并排查看 + 本学期横向总览
- 调休支持:自动处理国务院节假日调休安排,补班日设置日期后自动显示课程
- 数据本地:所有数据存储在本地,无需登录,不收集用户信息
- 分享课程表:一键生成课表二维码,扫描即可导入,分享内容可按需筛选
- Android: Android 5.0+ (ARM32/ARM64)
- Windows: Windows 10/11 (x64)
- 从 GitHub Releases 下载 ClassPath_1.1_x64_Setup.exe.zip
- 解压压缩包
- 双击运行安装程序
- 按提示完成安装(默认路径:
C:\Program Files\ClassPath) - 启动应用
- 从 GitHub Releases 下载 ClassPath_1.1_app.apk
- 打开安装包文件
- 允许安装未知来源应用
- 安装 APK
- 启动应用
- 从 GitHub Releases 下载 ClassPath_1.1_x64.zip
- 解压到任意目录
- 双击运行
ClassPath.exe
ClassPath 启动后进入课程表主界面,顶部为「单日 / 单周 / 本学期」模式切换。
单天详情视图:
- 日期切换: 左右滑动切换日期,默认显示当天
- 节次列表: 按时间顺序纵向排列当天所有课程
- 课程卡片: 显示课程名称、教师、时间、教室
交互操作:
- 点击课程卡片:查看详情并编辑
- 左右滑动:切换日期
- 添加课程:点击右上角"+"按钮
一周并排视图:
- 周次切换: 顶部可选择要查看的周次,默认当前周
- 课程色块: 不同课程以不同颜色区分,支持并排课程显示
- 时间轴: 左侧显示节次,对应课程时间段
- 星期列: 周一至周日七列排列,显示该周的全部课程
交互操作:
- 点击课程色块:查看课程详情
- 切换周次:查看任意一周的课程安排
- 点击右上角"+"按钮:添加新课程
横向课表总览视图:
- 课程色块: 不同课程以不同颜色区分,支持并排课程显示
- 时间轴: 左侧显示节次,对应课程时间段
- 星期列: 周一至周日七列排列
交互操作:
- 点击课程色块:查看课程详情
- 点击右上角"+"按钮:添加新课程
点击任意课程进入详情页面:
- 卡片顶部: 显示课程名称、编号、教师
- 上课时间: 第几节,对应具体时间段
- 上课地点: 上课教室
- 上课周: 显示课程生效的周次范围
- 编辑按钮: 修改课程信息
- 删除按钮: 删除该课程
- 聚焦某一天的详细视图
- 按节次纵向排列,显示具体时间、教室和周次
- 支持左右滑动切换日期
- 聚焦某一周的并排视图,周一至周日一屏排开
- 切换周次即可查看任意一周的课程安排
- 不同课程以色块区分,支持并排课程显示
- 所有课程横向课表总览
- 不同课程以色块区分,视觉清晰
- 支持并排课程显示(同一时间段多门课程)
- 支持创建多个课表,新建后自动切换到新课表
- 顶部下拉菜单快速切换
- 每个课表独立存储数据
- 课表参数:名称、总周数、第一周周一日期、一日总节数(数字项支持键盘直接输入)、学校楼宇与用餐时间
- 添加课程:设置课程名称、节次、教室、教师、周次
- 节次按所选楼宇配置的时间段多选,一次可添加多段上课时间;连续节次会连成一块显示
- 修改课程:点击课程进入详情页编辑
- 删除课程:在详情页点击删除按钮
- 批量删除: 课程表、课程、楼宇、楼宇时间段的列表,手机端长按(电脑端右键点击)进入多选,可全选后一次删除
- 拖动排序: 课程设置里的上课时间、学校楼宇列表可按住拖动图标调整顺序,课程表与课程列表同样支持拖动调整先后
- 自动识别国务院节假日调休安排
- 补班日: 显示对应的原上课日期的课程
- 休息日: 课程自动隐藏,显示"休"标记
- 支持手动修改补班日期
- 在课表底部展示考试信息
- 显示考试时间、地点、科目
- 将课表生成为二维码图片,扫描即可导入到另一台设备
- 生成前可筛选分享内容(教师、提前提醒、考试信息、备注、用餐时间、调休安排),也可排除指定课程
- 手机端可调起系统分享面板发送到其它应用,或把二维码图片直接保存到相册;电脑端保存为 PNG 图片
- 支持 JSON 格式的课表文件导入和导出,内容与二维码一致
- 导出:保存为
.json文件(手机端也可直接分享到其它应用),内容过长不适合二维码时只提供文件导出 - 导入:从
.json文件或二维码图片恢复课表数据
- 学校楼宇可在课程表设置中单独导出、导入,方便在多份课表或同学之间复用
- 导出时可选择是否附带各楼宇的节次时间段,也可只勾选部分楼宇
- 导入支持扫码、识别图片中的二维码、选择
.json文件
- 选择一张教务系统课程表截图,在本机离线识别并解析为课程(仅 Android)
- 识别结果需手动核对后再导入;识别不准确时可换一张截图重试
- 课前提醒: 到点通过系统通知提醒
- 自定义时间: 每门课可单独设置提前提醒的分钟数
- 平台差异: Android 使用系统精确闹钟,Windows 使用系统 Toast 通知
- 支持浅色、深色、跟随系统三种主题
- 设置页一键切换
- 所有数据存储在本地
- 不收集、不上传任何用户信息
- 开箱即用,无需注册或登录
- 数据完全本地化
存储路径由 Flutter 框架(SharedPreferences)管理
应用使用 SharedPreferences + JSON 存储数据,分为四个独立的 key:
| Key | 内容 | 类型 |
|---|---|---|
classpath_schedules |
课程表列表 | JSON 数组 |
classpath_courses |
课程列表 | JSON 数组 |
classpath_settings |
应用设置 | JSON 对象 |
classpath_holiday_cache |
节假日缓存 | JSON 对象 |
注:SharedPreferences 在底层存储时会自动为 key 添加
flutter.前缀(如实际文件中为flutter.classpath_schedules),代码中使用不带前缀的 key 名。
[
{
"id": "xxxxxxxx",
"name": "2026年秋(大二上)",
"totalWeeks": 17,
"firstMonday": 1789315200000,
"periodsPerDay": 15,
"buildings": [
{
"name": "教学楼A",
"periodTimes": [
{
"startPeriod": 1,
"endPeriod": 2,
"start": "08:15",
"end": "09:35"
}
]
}
],
"lunch": {
"afterPeriod": 5,
"label": "午餐"
},
"dinner": {
"afterPeriod": 9,
"label": "晚餐"
},
"reschedules": [
{
"date": "2026-10-10",
"source": "2026-10-06"
}
]
}
]
firstMonday为第一周周一的毫秒时间戳;buildings中每个楼宇可配置多组节次时间段;lunch/dinner的afterPeriod为 0 表示未设置。
[
{
"uid": "xxxxxxxx",
"scheduleId": "xxxxxxxx",
"id": "1",
"name": "大学物理A(下)",
"teacher": "XXX",
"classTimes": [
{
"weekday": 3,
"startPeriod": 1,
"endPeriod": 2,
"start": "08:15",
"end": "09:35",
"location": {
"building": "教X",
"room": "XXX"
},
"weeks": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
}
],
"location": {
"building": "教X",
"room": "XXX"
},
"colorValue": 4286580960,
"remindMinutes": 30,
"exam": {
"date": 1789315200000,
"timeText": "上午 9:00-11:00",
"location": "教X-XXX",
"seat": "A-01"
},
"note": null
}
]
uid为内部稳定 ID,scheduleId关联所属课程表;classTimes可包含多组上课时间,每组独立设置地点和上课周(weeks为 null 表示全部周);exam为选填的考试信息。
{
"activeScheduleId": "xxxxxxxx",
"mode": "day",
"themeMode": "system",
"agreementVersion": "1.0"
}
mode可选值:day(单日模式)、week(单周模式)、semester(本学期模式),旧版本存储的currentWeek会按单日模式读取;themeMode可选值:light、dark、system。
{
"years": {
"2026": {
"2026-01-01": {"holiday": true, "name": "元旦"},
"2026-02-14": {"holiday": false, "name": "春节"},
"2026-10-01": {"holiday": true, "name": "国庆节"},
"2026-10-10": {"holiday": false, "name": "国庆节"}
}
}
}数据来源:timor.tech 免费 API;
holiday: true为放假日(自动停课),false为调休补班日(照常上课);name为假期归属名,补班日归一到对应假期(如2026-10-10补班归到"国庆节")。
Q: 为什么我的课表不见了?
A: 数据存储在本地,卸载应用或清除应用数据会导致课表丢失。建议定期导出 JSON 备份。
Q: 调休补班日为什么没有课?
A: 请检查调休规则是否正确设置。补班日会显示原上课日期的课程。
Q: 如何同步到多台设备?
A: 目前不支持自动云同步。可以通过二维码或 JSON 文件手动导入导出。
Q: 支持导入教务系统课表吗?
A: 不对接教务系统接口。可以手动添加课程,或从 JSON 文件、二维码导入;手机上还能用「从图片识别」导入课程表截图(识别结果需手动核对)。
Q: 课程颜色可以自定义吗?
A: 自动分配颜色,也可自定义。
Q: 如何卸载?
A: Android: 长按应用图标 → 卸载; Windows: 控制面板 → 程序和功能 → 卸载,或直接删除安装目录。
Q: 支持多语言吗?
A: 目前仅支持中文界面。
Q: 数据安全吗?
A: 所有数据仅存储在本地,不会上传到任何服务器。卸载应用会清除所有数据。
- 问题反馈: GitHub Issues | Gitee Issues
- 项目主页: GitHub | Gitee