Skip to content
 
 

Repository files navigation

BeikeSchedulePro · 贝壳课表

感谢原作者 caeamer 创建 BeikeSchedule,为本项目奠定基础。

面向北京科技大学(USTB)学生的 Android 课表与教务助手。

从教务系统导入课表和成绩,在手机上查看每周课程、考试安排与空闲教室。

Android Kotlin Jetpack Compose

下载 APK · 问题反馈 · 联系维护者 · 开发文档

前往 Releases 下载最新签名 APK。

主要功能

功能 说明
一键同步 统一获取课表、成绩、GPA、考试、学籍、学业进度与公告;同学期唯一课表自动更新
每周课表 同步教学周日历,支持滑动切周、单双周、冲突课程并排显示
桌面课表 2×2 今日课程卡片,显示正在上和接下来的课程
课表管理 新建、切换、重命名课表,支持清空课程或删除课表;校历和节次时间独立保存
课程管理 手动添加和编辑课程,隐藏或恢复课程,按需隐藏周末与非本周课程
成绩与学业 按学期查看成绩、排名、加权平均分、GPA 和学分修读进度
考试安排 教务同步与手动添加、编辑、删除,支持时间待定、倒计时、考点和座位号
通知公告 校园公告栏目,最新公告同步、历史分页、离线标题与原文链接
空闲教室 按教学楼查看今天各大节空教室、座位数及空座率
消息提醒 上课与考前提醒,支持开机后重新安排提醒
个性化 跟随系统、浅色和深色主题,课表字号、自定义背景图片、成绩隐藏与课程显示设置
应用更新 进入前台每天自动检查正式新版,确认后应用内下载,再由系统确认安装
展开查看功能细节
  • 教学周:根据教务校历映射教学周与日期,处理不计入教学周的假期;假期中定位到后续教学周,周次选择中标记“假期后”。日期栏为学校校历标记的放假日期(含周末)显示浅色背景,今天优先高亮;已有课表需重新导入以获取逐日标记。
  • 调休补课:按项目维护者提供的学期配置追加教务补课、取消指定日期的常规教务课程,手动课程保持原安排。补课按来源日期的教学周与单双周计算,课表、小组件及提醒同步生效;补课日期以底色区分,详情展示补课与原课程日期,不增加日期栏高度;含补课的周临时显示周末,假期补课可单独查看。前台每天检查一次,支持在“学期与校历”查看安排和立即刷新,离线使用缓存。
  • 课表显示:完整周视图保留真实节次位置,支持手势切周、今天高亮与下一节课标记;课程名在卡片上方均衡换行,教室、教师和单双周标记靠下居中。教室放不下一行时优先将楼名和房间号分行,较长或无法拆分的地点自然换行显示完整。默认尽量一屏显示,课名按剩余高度显示,至少保留一行,放不下的末尾省略;教室等必要信息及左侧时间栏决定最小节次高度,必要时仍可上下滑动。非本周课程降低底色强调,文字保持清晰,也可按需隐藏。
  • 多课表:点击课表顶部名称快速切换,或从课表更多菜单、课表设置及“我的”进入“课表管理”。每份课表独立保存课程、学期校历和节次时间;外观及显示开关共用。切换后桌面小组件和上课提醒跟随当前课表。清空课程保留名称和校历;删除课表会同时删除其配置,删除最后一份时自动创建空白默认课表,成绩与考试不受影响。
  • 页面入口:底部为“课表、校园、我的”。课表更多菜单包含导入、添加课程、无固定时间课程与课表设置;保留长按空白格添加课程。
  • 课表设置:课表菜单与“我的”共用“学期与校历、课表显示、上课提醒、隐藏课程”页面。学期编辑使用草稿,保存后生效,取消不修改数据;官方校历优先于备用开学日期。
  • 课表外观:固定蓝色强调配合中性底色,支持跟随系统、浅色与深色。课表字号支持 80%–160% 调节:课名按比例缩放,辅助信息以较缓幅度缩放,均遵循系统字号。节次高度可独立按 80%–160% 统一调节,步长 5%;100% 以当前可用网格高度为目标,“适应一屏”恢复到 100%,不改变字号。各天时间保持对齐,跨节课程按节次数增加高度,日期栏固定。设置中按当前五天或七天列宽预览短课名、长课名和冲突课程,高度以示例大节 96dp 为参考即时更新。自定义背景、图片适配、遮罩、模糊及课程显示开关即时保存;字号和背景可分别恢复默认,保留高度偏好。
  • 课程详情:卡片在同一界面中展开为详情,支持返回、遮罩点击和向下拖动关闭;来源卡片消失时淡出。动效遵循系统动画缩放设置。
  • 课程管理:教务导入、自定义和示例课程均可隐藏,隐藏后停止上课提醒;教务导入课程仅支持隐藏,自定义和示例课程可删除。同名调课与单双周拆分行自动合并。
  • 教务同步:在“我的 → 账号与数据”一键同步全部教务数据和最新公告,课表及成绩/考试刷新共用此流程。各项独立保存和显示状态,可只重试失败项;普通刷新无需二次确认。成绩/考试刷新留在当前页面,先检查并复用登录会话;失效时自动进入统一身份认证,显示“发送登录链接到微信”入口。同步中途过期可在认证后自动续接一次,失败保留旧数据;各项同步结果在“我的 → 账号与数据”查看,成绩/考试页不额外展示同步状态栏。切换栏目和返回前台不重复刷新。
  • 成绩分析:加权平均分按必修课计算,可按学年或学期筛选并自定义排除课程;GPA 在本地按项目内置 4.0 制计算,补考和重修覆盖正考。成绩默认隐藏,可通过小眼睛按钮显示。
  • 学分进度:展示毕业总进度和课程性质分类进度;成绩详情包含接口提供的排名、考核方式、学分与开课学院等信息。
  • 考试管理:在“校园 → 考试”点击“添加考试”,无需登录即可录入。仅名称必填,日期、开始时间和结束时间可逐步补全,地点、座位号、类型和备注选填;不支持跨日时段。带“手动”标识的考试可点击编辑或删除,教务考试只读。教务刷新与“清除成绩缓存”均保留手动考试及其提醒,手动记录独立于课表和学期。
  • 考试提醒:已知日期时在前一天 20:00 提醒,已知开始时间时另在开考前 1 小时提醒;日期待定不安排提醒。编辑或删除后更新对应提醒,提醒失败可单独重试,不会重复录入考试。上课默认提前 15 分钟提醒,可自行调整。
  • 空闲教室:无需登录教务账号,支持下拉刷新和楼栋筛选;优先展示当前或下一时段,已结束时段默认收起,全天结束后展示当天记录。数据来源说明位于校园更多菜单。
  • 校园:空教室、公告、成绩、考试四个栏目分别保留选择与滚动位置;成绩按摘要、筛选、列表、学分进度组织,已结束考试归入次要分组。评教和大创入口位于更多菜单。
  • 我的:紧凑身份摘要可进入完整学籍信息;设置按课表、外观、账号与数据、关于分组;账号与数据页集中同步进度、最近成功时间、缓存清理与退出登录。检查更新、版本、仓库及联系开发者集中在“关于”。
  • 应用更新:启动或返回前台时检查 GitHub 正式新版,两次自动检查至少间隔 24 小时,失败也计入间隔;“我的 → 关于 → 检查更新”可随时手动重试。新版弹窗展示说明及安装包大小,支持稍后提醒和忽略此版本;手动检查仍可查看被忽略的版本。确认后在应用内下载,移动网络下再次确认,未授权时仅 Wi-Fi 下载。系统下载任务可在后台继续,回到 App 恢复进度;完成后校验包名、版本、签名与可用摘要,点击安装并按系统提示授权、确认。教务登录或导入时暂缓更新弹窗,后台不会自动拉起安装器。下载失败或没有唯一 APK 附件时可前往发布网页。旧版需先手动安装一次包含此功能的版本。

下载安装

最低支持 Android 14(API 34)。选择下载渠道:

安装后:

  1. 在“我的 → 账号与数据”点击“登录并同步”,登录学校教务系统后一次获取课表、成绩、考试、学籍、学业进度和最新公告。
  2. 同学期只有一份课表时直接更新;首次导入或存在多份匹配课表时选择保存目标。成绩、考试和公告在“校园”查看,成绩默认隐藏。按需开启通知权限与提醒选项。
  3. 在“我的”或“课表 → 更多 → 课表设置”的“课表”分组中,点击“添加桌面小组件”,按系统提示添加“今日课表”。显示“已向桌面发出添加请求”但没有系统弹窗时,可点击下方“没有弹出?查看手动添加方法”;桌面不支持快捷添加或请求失败时会直接显示手动指引:长按桌面空白处,在小组件列表中找到“贝壳课表 / 今日课表”并添加。未导入课表时也可添加,已有小组件时可继续添加多个实例。

自动同步按学年与学期精确匹配,唯一匹配时更新该课表且不切换当前课表。无匹配或有多个匹配时进入预览;也可在账号与数据页手动选择新建或更新目标。更新仅替换目标的教务课程、校历和节次时间,保留手动课程、教务课程隐藏状态及自定义课表名称,并清除目标中的示例课程;跨学期更新需确认。导入失败时保留预览和目标选择,显式确认导入成功后切换到目标课表。

统一同步页独立展示课表、成绩、GPA、考试、学籍、学业进度与公告的结果。单项失败保留旧缓存,不影响其他成功项;网络任务最多等待 90 秒(重建不延长),课表目标选择不计入超时。空成绩或未发布课表不清空旧数据;合法空考试只替换教务考试,保留手动考试。公告首次同步获取 15 条,历史公告按需加载,原文在外部浏览器打开。

隐私与数据

  • 学号和密码由你在系统 WebView 中直接输入学校认证页面,App 不读取、不存储密码。
  • 课表、成绩和历史个人日程记录保存在本机,App 不将这些数据上传到开发者服务器。
  • 个人日程功能已下线,已有本地记录保留;启动、升级和开机时清理旧日程闹钟与通知,不影响课程和考试提醒。旧校园栏目自动迁移为稳定标识,原日程栏目回到空教室。
  • 自选课表背景在本机缩小后保存于应用私有目录,不上传,也不参与云备份;删除相册原图不影响已保存的背景。
  • WebView 保存登录会话;学籍信息会随成绩抓取缓存在本机,供离线展示。可在“我的 → 账号与数据 → 退出教务登录”清除会话并取消待处理同步,退出前的迟到回调不能继续写入。仅在用户发起登录或刷新时同步,不增加后台定时刷新。
  • 空闲教室数据来自贝壳教学平台(ustb.smartclass.cn)。请求携带平台公开配置生成的签名参数和设备网络出口 IP,不包含学号、姓名或本机课表等个人数据。
  • 应用需要访问学校服务及 GitHub 更新接口;对应服务的可用性会影响导入、查询或更新检查。

开发信息

项目采用单个 app 模块:

层次 技术
界面 Kotlin · Jetpack Compose · Material 3
本地数据 Room · DataStore
提醒 AlarmManager · BroadcastReceiver
桌面小组件 Jetpack Glance · WorkManager,本地读取课表
教务导入 WebView 登录会话 · JavaScript 注入 · 结构化 JSON
公告缓存 Room 本地分页缓存 · WebView 同源获取
空闲教室 贝壳教学平台接口

工具链、SDK 和依赖要求以仓库配置为准,当前 Gradle daemon 请求 Java 21。在仓库根目录使用自带的 Gradle wrapper:Windows PowerShell 为 .\gradlew.bat,macOS / Linux 为 ./gradlew。常用任务包括 assembleDebug、testDebugUnitTest、lintDebug 和 minifyReleaseWithR8。

正式签名 APK 使用 assembleRelease 构建,需要维护者自己的 keystore.properties 和签名密钥;私人配置、密钥与 APK 不加入源码提交。

文档与发布

反馈与联系

反馈时请附上应用版本、Android 版本、问题描述和复现步骤;截图或日志中请遮挡学号、姓名和登录信息,不要发送密码或会话凭证。

项目来源

本项目基于 coderirse/BeikeSchedule,原作者为 caeamer。BeikeSchedulePro 由 study-233 维护,以下保留原项目版权声明:

© 2026 caeamer. All rights reserved.

About

贝壳课表 Pro|面向北京科技大学(USTB)学生的 Android 课表与教务助手,支持课表导入、成绩与 GPA、考试提醒、个人日程和空闲教室查询。

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages