RSchedule

电子科技大学研究生课表 APP,Flutter 实现,Android 0.3.0+4,Android 7.0 及以上。

三个图标标签页:课表、考试、个人设置。透明蓝色液态玻璃风格悬浮 Dock 支持点击图标或拖动选中滑块切换;按压放大、拖动拉伸、松手弹簧回弹。页面切换采用短距离移动与淡入淡出,并保留每页滚动位置。页面本身不支持左右滑动切换。课表和考试页面向下滚动隐藏 Dock,向上滚动恢复;个人设置页面保持显示。系统“减少动画”开启时减少切页与回弹动画。

课表周一至周日固定七列同屏,无横向滚动。同节数课程条等长;课程名可省略,老师和教室完整换行,点击查看全部信息。课程条默认长度125%,在「个人设置 → 课表设置 → 课程条长度」调节80%–200%。课前提醒、手机日历及学期设置继续保留。

安装与学校登录

安装 dist/RSchedule-debug.apk,可覆盖旧版并保留本地课表与设置。内部 Dart 包名和 Android 包名保留不变以兼容升级。

在个人设置中打开学校账户。应用先访问 研究生系统专用认证入口,学生在学校原网页填写账号、密码和验证码;应用没有自己的密码表单,不读取或注入密码。学校返回研究生系统后显示“正在查找课表,请稍候”,自动打开 课表查询,识别完整表格后导入保存。

专用入口的原始302响应指向 HTTP 身份认证地址,携带研究生系统的 service 参数。应用将该身份认证地址转到 HTTPS 并完整保留参数。学校 HTTP 回调仅允许准确的研究生系统域名。读取或保存失败保留已有数据,可在学校认证页面重试。

真实账户认证及验证码仍需由本人操作验证;离线 HTML 与模拟回调测试不能代替真实账户联调。详见 学校接入状态。

考试安排

考试页右上角可从学校更新,或导入学校考试查询页保存的 HTML。查询路径为 /pyxx/pygl/kskcxx/index,由用户提供的导出页面确认。考试数据独立保存,不覆盖课表,也不产生考试提醒。显示课程名称、考试时间、考场、座位号;有考核方式、考生编号或考场顺序号时一并显示。

提供的考试 HTML 含2026-2027秋学期8门课程,排考字段全部为空。当前显示“尚未安排”,不猜测考试时间和地点。未知或不完整表格拒绝导入;只有明确的无数据提示才接受空列表。原始附件与其中的学号、姓名不随源码或 APK 分发。

文件导入和设置

「个人设置 → 从文件导入」支持学校课表 .html / .htm 与版本1的 JSON,先预览再确认;考试文件从考试页导入。文件最多2MB,UTF-8编码;其中脚本不会执行。

HTML没有学期开始日,仍须在课表设置填写实际开始日和学期周数。默认课前15分钟提醒,可选5/10/15/30/60分钟。启用通知和手机日历时按提示授权。JSON样例:schedule.schema-v1.json。示例课表不覆盖本人数据,不创建通知或日历事件。

开发

源码在 mobile/;工具在 .tools/,不提交到 Git。Android 包名保留 com.example.hepan_everyday。

$env:HEPAN_TOOLCHAIN_ROOT='C:/Users/david/Desktop/app/.tools'
. ./scripts/android-env.ps1
Set-Location mobile
flutter pub get
flutter test
flutter analyze

仓库根目录运行 ./scripts/build-android.ps1 构建。验证记录:0.3.0登录、考试和动画。Windows模拟器可仅在测试启动时使用软件渲染并关闭Impeller;交付APK保留手机默认渲染配置。历史验证:0.2.1、0.2.0、首版。

S
Description
利用Codex开发的个人课表软件
Readme
2.6 MiB
0.7.10版本
Latest
2026-10-30 11:35:55 +08:00
Languages
Dart 81.5%
Python 9.8%
Java 3.2%
Kotlin 2.7%
JavaScript 1.4%
Other 1.4%