Skip to content

ClassPath v1.1 Wiki

HeJun Shen edited this page Sep 17, 2026 · 3 revisions

ClassPath_256 ClassPath v1.1 Wiki release License language

欢迎使用 ClassPath Wiki,这里有关于 ClassPath 的详细信息。

📖 目录

✨简介

ClassPath 是一款跨平台课程表应用,提供单日、单周、本学期三种视图模式,内置调休补班、二维码导入导出、楼宇配置复用、图片识别课程等功能。

核心特性:

  • 多端支持:发行版目前支持 Android、Windows 平台,其他平台请下载源码自行编译
  • 三种视图模式:单日纵向详情 + 单周并排查看 + 本学期横向总览
  • 调休支持:自动处理国务院节假日调休安排,补班日设置日期后自动显示课程
  • 数据本地:所有数据存储在本地,无需登录,不收集用户信息
  • 分享课程表:一键生成课表二维码,扫描即可导入,分享内容可按需筛选

📦安装与运行

系统要求

  • Android: Android 5.0+ (ARM32/ARM64)
  • Windows: Windows 10/11 (x64)

安装步骤(安装包版)

Windows

  1. GitHub Releases 下载 ClassPath_1.1_x64_Setup.exe.zip
  2. 解压压缩包
  3. 双击运行安装程序
  4. 按提示完成安装(默认路径:C:\Program Files\ClassPath
  5. 启动应用

Android

  1. GitHub Releases 下载 ClassPath_1.1_app.apk
  2. 打开安装包文件
  3. 允许安装未知来源应用
  4. 安装 APK
  5. 启动应用

便携版使用(压缩包版)

Windows(压缩包版)

  1. GitHub Releases 下载 ClassPath_1.1_x64.zip
  2. 解压到任意目录
  3. 双击运行 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 名。

classpath_schedules

[
  {
    "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/dinnerafterPeriod 为 0 表示未设置。

classpath_courses

[
  {
    "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 为选填的考试信息。

classpath_settings

{
  "activeScheduleId": "xxxxxxxx",
  "mode": "day",
  "themeMode": "system",
  "agreementVersion": "1.0"
}

mode 可选值:day(单日模式)、week(单周模式)、semester(本学期模式),旧版本存储的 currentWeek 会按单日模式读取;themeMode 可选值:lightdarksystem

classpath_holiday_cache

{
  "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: 所有数据仅存储在本地,不会上传到任何服务器。卸载应用会清除所有数据。

技术支持