Skip to content

ClassPath v1.0 Wiki

HeJun Shen edited this page Sep 8, 2026 · 2 revisions

ClassPath_256 ClassPath v1.0 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.0_x64_Setup.exe.zip
  2. 解压压缩包
  3. 双击运行安装程序
  4. 按提示完成安装(默认路径:C:\Program Files\ClassPath
  5. 启动应用

Android

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

便携版使用(压缩包版)

Windows(压缩包版)

  1. GitHub Releases 下载 ClassPath_1.0_x64.zip
  2. 解压到任意目录
  3. 双击运行 ClassPath.exe

🖥️主界面说明

ClassPath 启动后进入课程表主界面。

本学期模式

横向课表总览视图:

  • 课程色块: 不同课程以不同颜色区分,支持并排课程显示
  • 时间轴: 左侧显示节次,对应课程时间段
  • 星期列: 周一至周日七列排列

交互操作:

  • 点击课程色块:查看课程详情
  • 点击右上角"+"按钮:添加新课程

单周模式

单天详情视图:

  • 周次切换: 顶部下拉菜单选择当前查看的周次
  • 日期选择: 左右滑动切换日期
  • 节次列表: 按时间顺序纵向排列当天所有课程
  • 课程卡片: 显示课程名称、教师、时间、教室

交互操作:

  • 点击课程卡片:查看详情并编辑
  • 左右滑动:切换周次
  • 添加课程:点击右上角"+"按钮

课程详情

点击任意课程进入详情页面:

  • 卡片顶部: 显示课程名称、编号、教师
  • 上课时间: 第几节,对应具体时间段
  • 上课地点: 上课教室
  • 上课周: 显示课程生效的周次范围
  • 编辑按钮: 修改课程信息
  • 删除按钮: 删除该课程

🔍功能详解

课程表视图

本学期模式

  • 所以课程横向课表总览
  • 不同课程以色块区分,视觉清晰
  • 支持并排课程显示(同一时间段多门课程)

单周模式

  • 聚焦某一天的详细视图
  • 按节次纵向排列,显示具体时间、教室和周次
  • 支持左右滑动切换日期
  • 周次切换:查看任意一周的课程安排

课表管理

多课表

  • 支持创建多个课表
  • 顶部下拉菜单快速切换
  • 每个课表独立存储数据

课程编辑

  • 添加课程:设置课程名称、时间段、教室、教师、周次
  • 修改课程:点击课程进入详情页编辑
  • 删除课程:在详情页点击删除按钮

调休与补班

  • 自动识别国务院节假日调休安排
  • 补班日: 显示对应的原上课日期的课程
  • 休息日: 课程自动隐藏,显示"休"标记
  • 支持手动添加/修改调休规则

考试安排

  • 在课表底部展示考试信息
  • 显示考试时间、地点、科目

导入与导出

二维码分享

  • 将课表生成为二维码图片
  • 扫描即可导入到另一台设备
  • 支持保存二维码图片到相册

文件导入/导出

  • 支持 JSON 格式的课表文件导入和导出
  • 导出:将当前课表保存为 .json 文件
  • 导入:从 .json 文件恢复课表数据

通知提醒

  • 课前提醒: 自动推送通知提醒
  • 自定义时间: 可在设置中调整提醒时间
  • 多课程支持: 每节课都会推送提醒

其他功能

主题颜色

  • 支持浅色、深色、跟随系统三种主题
  • 设置页一键切换

数据本地存储

  • 所有数据存储在本地
  • 不收集、不上传任何用户信息

无需登录

  • 开箱即用,无需注册或登录
  • 数据完全本地化

🗂️设置选项

存储路径由 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": "currentWeek",
  "themeMode": "system",
  "agreementVersion": "1.0"
}

mode 可选值:currentWeek(单周模式)、semester(本学期模式);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: 所有数据仅存储在本地,不会上传到任何服务器。卸载应用会清除所有数据。

技术支持