🎓 高考倒计时桌面伴侣 — 倒计时 · 课表 · 考试 · 天气 · 提醒 · 远程管理 基于 Avalonia + FluentAvalonia 构建,WinUI 3 风格界面 | 当前版本:v2.5.0
📦 框架迁移已完成(WPF → Avalonia),旧 WPF 版本已废弃,源码归档于
LegacyWPF/(本地保留、不入库)
- ⏳ 实时倒计时 — 天/时/分/秒精确刷新,支持设置小数位数
- 🌐 中英双语 — 中文 + 英文双行倒计时显示,各行独立开关
- 📊 高中进度条 — 可视化展示高中生活已过百分比,百分比文字独立开关
- 🎬 数字脉冲动画 — 每秒轻量缩放脉冲,可开关
- ✨ 入场动画 — 启动/恢复时数字滚动 + 进度条平滑过渡
- 💡 数字发光 — 数字带发光效果,颜色随设置同步
- 📝 考试全屏倒计时 — 科目名称/剩余时间/进度条/下一场信息,最后 5 分钟蜂鸣提醒
- 🏁 考后自动恢复 — 最后一场考试结束 3 秒后自动退出,恢复课表栏
- 🔄 双击/F11 切换 — 考试窗口全屏↔窗口一键切换
- 🚀 开考自动进入 — 当天有考试时自动进入全屏考试模式(可开关)
- 📅 课表悬浮栏 — 吸附屏幕顶部,上课自动收缩为进度条、下课自动展开
- ⏰ 下课倒计时 — 栏内置 60 秒倒计时,到设定秒数自动展开 + 提示音
- ⏱ 下课延迟展开 — 下课后等 2 分钟再展开栏,给老师留操作窗口
- 🔄 调休/调课/代课 — 调休(整天复制)、调课(格子交换/移动)、代课(老师替换)
- 🚫 按科目隐藏 — 指定科目的课自动隐藏所有窗口,下课恢复
- 🔔 预备铃适配 — 提前 2 分钟自动进入上课模式(窗口隐藏 + 栏收缩)
- 🎨 字体与字号 — 全部自定义,支持系统已安装字体
- 🎨 配色方案 — 数字/文字/进度条/考试全屏颜色自由调整,内置颜色选择器
- 🔍 透明度 — 滑杆调节窗口与课表栏透明度
- 📝 文本定制 — 中英文标签文字可自由修改
- 📐 6 种预设 — 顶部 / 中上 / 居中 / 中下 / 底部 / 自定义
- 🖱 拖动定位 — 自定义模式拖动窗口,坐标实时保存
- 📏 Y 偏移 — 精细微调垂直位置
- 👻 点击穿透 — 预设模式下鼠标事件穿透,不阻挡操作
- 🖥 多显示器 — 课表栏自动吸附所在显示器顶部并铺满
- ☁ 实时天气 — 课表栏与考试模式内置天气显示(描述/风/湿度/温度,定时刷新)
- 💬 每日一言 — API 励志语录随机展示,可自定义 API 地址与字段
- 📦 系统托盘 — 任务栏托盘常驻,右键菜单快捷操作
- 🖥 局域网 HTTP 服务 — 启动软件自动开启(可关),老师浏览器访问
http://本机IP:8080 - 👥 多老师账号 — 语数英物化生 6 位老师 + 管理员,登录页下拉选账号
- 📚 课表远程管理 — 周课表可视化编辑(选科限定,模态框选课),双击改、一键保存
- 📎 课件投递 — 拖拽/点击上传(500MB,白名单后缀),班级电脑自动打开,可设桌面/课件等预设目录
- 📊 班级状态 — IP / 磁盘剩余 / 最近上传 / 运行指示灯(15s 自动刷新)
- 📋 操作日志 — 登录/改课表/上传全记录(按老师显示名),管理员可查
- 🏫 班级信息 — 班级名 / 老师名网页端与设置页均可改
- 🔐 安全 — Token 持久化登录、IP 白名单可选开关
- ⌨️ 全局快捷键 — Ctrl+Shift+H 显隐主窗 / Ctrl+Shift+B 课表栏 / Ctrl+Shift+E 考试模式
- 🎯 始终置顶 — 可选始终置顶或正常窗口层级
- 🚀 自动更新 — GitHub Release 检查,自包含/框架依赖版自动匹配下载
- 🔒 单实例 — 重复启动时激活已有窗口
- 💾 配置持久化 — JSON 文件存储,重启不丢失;支持一键备份/恢复
| 技术 | 说明 |
|---|---|
| .NET 10 | 目标框架 |
| Avalonia 12 | 跨平台桌面 UI 框架 |
| FluentAvaloniaUI 3 | WinUI 3 风格主题(Mica/圆角/Fluent 控件) |
| C# | 开发语言 |
| AXAML | 界面标记语言 |
| Avalonia.Controls.DataGrid | 课表/考试表格编辑 |
| Avalonia.Controls.ColorPicker | 颜色选择 |
| Avalonia.Fonts.Inter | 默认字体 |
| 高德天气 API | 实时天气数据 |
注:点击穿透 / 托盘 / 自启动注册表 / 全局快捷键等使用 Win32 P/Invoke,当前仅 Windows 生效(Avalonia 框架本身跨平台,非 Windows 平台对应功能自动降级为 no-op)。
- Windows 10/11 x64
- .NET 10 SDK
git clone https://github.com/XEKernel/StudyJourney.git
cd StudyJourney/StudyJourney.Avalonia
dotnet run自包含(无需安装 .NET,体积较大):
dotnet publish StudyJourney.Avalonia/StudyJourney.Avalonia.csproj -c Release -r win-x64 --self-contained true框架依赖(需安装 .NET 10 桌面运行时,体积较小):
dotnet publish StudyJourney.Avalonia/StudyJourney.Avalonia.csproj -c Release -r win-x64 --self-contained false发布输出位于 StudyJourney.Avalonia/bin/Release/net10.0/win-x64/publish/。更新程序 Updater/ 单独编译,随发布一起分发。
StudyJourney.Avalonia/
├── App.axaml / App.axaml.cs # 应用入口(托盘/快捷键/自动更新/考试模式统一入口)
├── Program.cs # Main 入口(单实例 Mutex)
├── StudyJourney.Avalonia.csproj # 项目文件
├── Assets/ # 图标(icon.ico / icon.png)
│
├── Models/ # 数据模型(纯数据,无 UI 依赖)
│ ├── AppSettings.cs # 应用设置(JSON 持久化)
│ ├── ScheduleEntry.cs # 课表/考试条目/时段模板/课程表网格行
│ └── ScheduleManager.cs # 课表与考试数据管理(加载/保存/查询/导入)
│
├── Services/ # 服务层(业务逻辑)
│ ├── ReminderService.cs # 提醒调度服务(上课/下课/考试/60 秒倒计时)
│ ├── WeatherService.cs # 天气服务(HTTP + JSON 解析)
│ └── UpdateService.cs # GitHub Release 更新检查/下载
│
├── Helpers/ # 公共工具
│ ├── AppLogger.cs # 轻量日志(Debug + 文件)
│ ├── ColorUtils.cs # 颜色解析/天气表情符号
│ ├── GlobalHotKeyManager.cs # 全局快捷键(Win32 RegisterHotKey)
│ └── TimeSimulator.cs # 时间模拟(调试用)
│
├── Views/ # 窗口与页面(UI 层)
│ ├── MainWindow.axaml(.cs) # 主窗口倒计时(动画/穿透/隐藏逻辑)
│ ├── ScheduleBarWindow.axaml(.cs)# 课表悬浮栏(紧凑/展开/多显示器/天气)
│ ├── ExamModeWindow.axaml(.cs) # 考试全屏倒计时
│ ├── SettingsWindow.axaml(.cs) # 设置窗口(FAAppWindow + NavigationView 6 页)
│ ├── ScheduleEditorWindow.axaml(.cs) # 课表/考试编辑(DataGrid + 周视图调课)
│ ├── ColorPickerDialog.axaml(.cs)# 颜色选择对话框
│ ├── DebugTimeWindow.axaml(.cs) # 时间模拟调试窗口
│ └── Settings/ # 6 个设置页
│ ├── CountdownPage.axaml(.cs) # 倒计时
│ ├── PositionPage.axaml(.cs) # 位置
│ ├── ApiPage.axaml(.cs) # API(一言/天气)
│ ├── SchedulePage.axaml(.cs) # 课表/提醒
│ ├── ExamPage.axaml(.cs) # 考试
│ ├── AboutPage.axaml(.cs) # 关于(版本/更新)
│ └── ISettingsPage.cs # 设置页接口(Load/Apply)
│
└── Updater/ # 独立更新程序(StudyJourney.Updater)
| 页面 | 功能 |
|---|---|
| ⏳ 倒计时 | 字体、字号、颜色、透明度、可见内容、时间精度/小数位、动画、中英文文本、目标/起算日期、自定义倒计时 |
| 📐 位置 | 6 种预设 + 自定义坐标 + Y 偏移 + 始终置顶 + 上课隐藏 + 自启动 |
| 🔌 API | 每日一言 API + 实时天气(城市/颜色/刷新间隔) |
| 📋 课表 | 课表栏开关、提醒开关、提示音、自动收缩 |
| 📝 考试 | 考试模式开关、自动进入、字号、颜色、字体 |
| 🌐 服务器 | 远程服务开关/自启、课件存放位置(预设+自定义)、班级信息、老师账号、可选科目、操作日志 |
| ℹ 关于 | 版本信息、检查更新、GitHub 仓库 |
- 课表编辑:设置 → 📋 课表 →「编辑课表」→ 周视图网格填课程名,或 DataGrid 平铺编辑
- 时段模板:定义每天节次时间,一键应用到全部星期
- 调休:选来源星期 → 目标星期 → 应用,一键复制课表
- 调课:点击课程表格子选源 → 再点击选目标 → 交换/移动/代课
- 课表栏:托盘菜单 → 课表栏,悬浮屏幕顶部;上课自动收缩,距下课 1 分钟显示倒计时并展开
- 考试模式:设置 → 📝 考试 → 添加考试 + 科目 → 托盘菜单 → 进入考试模式
- 导入导出:课表/考试 JSON 一键导入导出,支持数据备份/恢复
详见 GitHub Releases: https://github.com/XEKernel/StudyJourney/releases
MIT License
Copyright (c) 2025 XEKernel