a13rollcall/README.md
a13zhy 555ba64f7a
Revise README for version 6.8 updates and features
Updated README to reflect changes in version 6.8, including migration to PyQt5, new features, and project structure.
2026-09-26 20:42:58 +08:00

197 行
11 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# A13Rollcall V6.8|第六代A13引擎 PyQt重构版
> 🎲 A13Rollcall V6.8|第六代A13抽取引擎|课堂点名抽背系统
[![GitHub stars](https://img.shields.io/github/stars/a13zhy/a13rollcall?style=flat‑square)](https://github.com/a13zhy/a13rollcall/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/a13zhy/a13rollcall?style=flat‑square)](https://github.com/a13zhy/a13rollcall/fork)
[![Python Version](https://img.shields.io/badge/python‑3.9+‑3776AB?style=flat‑square)](https://www.python.org/)
[![Release](https://img.shields.io/github/v/release/a13zhy/a13rollcall?style=flat‑square)](https://github.com/a13zhy/a13rollcall/releases)
[![License](https://img.shields.io/badge/license‑NonCommercial‑blue?style=flat‑square)](#📄-开源许可)
🔥 **本地离线PyQt5 GUI点名抽背工具|零广告|零氪金|无捆绑|全部数据本地存储**
> ⚠️ V6.8 由Tkinter迁移至PyQt5重构,现代化桌面窗口,Windows10/11体验大幅提升;**完全兼容V6.2旧版数据**,直接迁移旧班级文件即可使用。专为中小学课堂抽背、随机点名场景打造。
老师上课点名反复纠结,怕偏心、怕重复;学生上课走神,寄希望于“不会抽到我”。交给**第六代A13智能抽取引擎**,算法接管抽签,消除主观偏好,兼顾公平与薄弱学生强化练习。
---
## 💥 课堂真实痛点
- 👨‍🏫 **老师痛点**:点名选择困难,纠结选谁浪费课堂时间;很难直观看到哪位学生被抽查少、哪些课文抽查频次不足;缺少课堂轮次记录,课后无法复盘本节课抽查情况。
- 👩‍🎓 **学生痛点**:存在侥幸心理,指望永远不被点到;薄弱学生被抽到概率偏低;背诵练习缺少完整统计追溯。
- 📊 **旧版短板(V6.2)**:Tkinter界面老旧;缺少轮次历史记录;统计只有简单表格,无可视化图表;插件系统能力有限;部分设置项仅UI展示没有实际生效;缺少撤销重做、分组抽取等实用课堂能力。
**V6.8 针对性解决全部上述痛点。**
---
## ✨ V6.8 核心新特性(对比V6.2)
### 🎲 第六代 A13 智能抽取引擎(增强)
- ✅ 动态权重系统升级:背诵差、抽取少的学生自动提升被抽中概率,兼顾公平+补差训练
- ✅ **课堂轮次完整记录**:每一轮抽取完整存档,可查看历史轮次、恢复上一轮/指定轮次抽取现场,复盘整节课
- ✅ 课文维度统计:统计每一篇课文被抽查频次,避免总盯着少数课文抽
- ✅ 会话防重复 + 全局权重两套模式自由切换
- ✅ 抽取记录持久保存,重启程序不会丢失本节课历史
- ✅ 抽取时随机课文与抽取学生同步展示
### 🖼️ PyQt5 全新现代化UI
- ✅ 完整重写界面,圆角卡片、阴影、动画效果,适配教室投影仪明暗双主题
- ✅ Ctrl+鼠标滚轮全局界面缩放,适配不同分辨率、投影大屏
- ✅ 悬浮小浮窗保留,不遮挡PPT课件,快捷一键抽取
- ✅ 全局统一现代化错误弹窗,异常堆栈一键复制,便于反馈BUG
- ✅ 设置修改后**右上角“需要重启”提示按钮**,一键关闭重启程序
### 📈 专业统计可视化模块
- ✅ 饼图:背诵状态分布(已背熟/未背熟/未抽查)
- ✅ 柱状图:抽取次数Top排行、积分排行、课文抽查频次统计
- ✅ 抽取记录表格:时间、学生、课文、轮次、背诵状态完整日志
- ✅ 支持导出统计报表,用于课后教学复盘
- ✅ 轮次选择器:加载历史轮次、恢复至某一轮、删除无效轮次
### 🧩 强大插件生态(V6.8重大升级)
- ✅ 可视化插件打包工具:拖拽式页面编辑器,不用手写复杂配置,可视化开发插件UI
- ✅ 插件执行环境预注入常用库(`datetime/json/os/random/re`等),插件代码减少重复import
- ✅ 插件管理页面全面现代化,插件统计卡片,一键打开打包工具与开发文档
- ✅ 修复插件安装程序BUG;支持`.arcx`/`.arcxpkg`两种插件格式
- ✅ 全局异常捕获,插件报错不会造成主程序闪退
### 🛠️ 课堂实用功能集合
1. **撤销 / 重做**:标记背诵状态、重置抽取、修改积分都支持多级撤销(最多50步),快捷键`Ctrl+Z`/`Ctrl+Y`
2. **分组抽取**:对学生自定义分组,可以只针对某一组执行抽取,适合分层教学
3. **自动保存**:可自定义自动保存间隔,防止电脑断电丢失课堂数据
4. **课文列表右键菜单**:新增、编辑、上下移动、删除课文,无需手动修改txt
5. **全套快捷键扩充**:切换课文、切换权重模式、缩放、撤销重做全部支持键盘操作
6. **系统托盘支持**:关闭窗口最小化托盘,后台继续运行,上课不占用任务栏
### 📂 数据与兼容性
- ✅ **完全兼容V6.2旧版数据**:直接读取旧版`students.txt`、`texts.txt`、ini配置,平滑升级
- ✅ 配置、学生数据、课文、轮次历史本地JSON持久化
- ✅ 依旧支持文本格式手动编辑备份班级名单、题库
- ✅ 严格校验UTF‑8编码,自动过滤空行脏数据,防止“抽到空气同学”
### ⚙️ 设置系统重构
- ✅ 清理旧版本冗余设置项,删除仅展示无实际逻辑的无效选项
- ✅ 动画效果设置完整生效:抽取动画、结果动画、过渡动画开关、自定义动画时长、缓动函数
- ✅ 大量新增可配置项:自动保存周期、状态栏开关、托盘行为、图表样式、插件沙箱策略等
- ✅ 设置区分「立即生效」和「需要重启生效」,修改重启项右上角弹出提醒按钮
---
## 🚀 快速上手
### 环境依赖
- Python `3.9`及以上
- 依赖:`PyQt5`
```bash
pip install PyQt5
```
**运行程序**
```bash
# 主程序启动
python main_qt.py
# 新手配置向导
python wizard_launcher.py
# 可视化插件打包工具
python arcx_packager.py
```
> 运行后弹出GUI窗口,**非控制台操作**。
📦 不想安装Python:前往 [Releases](https://github.com/a13zhy/a13rollcall/releases) 下载打包好的EXE安装包,Windows直接双击使用。
### 班级数据准备
1. 旧版迁移:直接复制V6.2的`students.txt`、`texts.txt`到程序目录,启动自动加载。
2. 新建班级:
- 在软件内「学生管理」批量粘贴名单,一行一名学生
- 在「课文管理」添加抽背课文;不需要抽背则不添加课文,自动进入纯点名模式
---
## ⌨️ 常用快捷键汇总V6.8
| 快捷键 | 功能 |
|---|---|
| 空格 | 开始抽取 |
| `Ctrl+Z` | 撤销操作 |
| `Ctrl+Y` / `Ctrl+Shift+Z` | 重做 |
| `Ctrl+S` | 手动保存全部数据 |
| `Ctrl+= / Ctrl+-` | 放大/缩小界面 |
| `Ctrl+0` | 重置界面缩放100% |
| W | 切换动态权重开关 |
| ← / → | 切换上一篇/下一篇课文 |
---
## 💡 课堂使用小技巧
1. **分层教学**:新建学生分组,抽取时选择分组,只抽查该组学生。
2. **课后复盘**:打开统计窗口,查看本节课全部轮次记录、课文抽查统计,分析薄弱学生与薄弱篇目。
3. **投影上课**:开启暗色主题,开启界面缩放,适配教室大屏;打开悬浮小窗,不遮挡课件。
4. **纯点名模式**:不导入任何课文,系统自动关闭抽背,只做随机点名。
5. **插件扩展**:打开可视化插件打包工具,拖拽组件快速制作自定义功能插件,拓展软件能力。
> 避坑提醒:导入外部txt文件务必使用`UTF‑8`编码;名单、题库不要留多余空行。
---
## 📜 更新日志
### V6.8|2026‑09‑26
- 🚀 **整体迁移PyQt5重构,告别Tkinter**,全界面现代化升级
- 🎲 第六代A13抽取引擎增强,新增**课堂轮次历史系统**,支持查看、加载、恢复历史抽取轮次
- 📊 完整可视化统计图表:饼图、多类柱状图、抽取日志表格;课文维度统计分析
- 🛠️ 新增多级撤销/重做,自定义周期自动保存,全局界面缩放,学生分组抽取
- 🧩 插件系统重大升级:可视化拖拽插件打包编辑器;修复多处插件执行报错;预注入常用标准库;优化插件管理UI
- ⚙️ 设置系统重构:清理冗余无效设置;动画全部可生效;区分立即生效/需重启配置;右上角重启提醒按钮
- 📝 课文列表右键编辑菜单,无需手动修改文本文件
- 🛡️ 全局现代化异常弹窗,错误信息一键复制,降低闪退概率
- 📁 **完全兼容V6.2旧版数据**,平滑迁移升级
- 🪟 新增系统托盘最小化后台运行能力;悬浮浮窗体验优化
- ⌨️ 拓展全套快捷键,覆盖新增全部功能
- 🐛 修复:动画设置不生效、datetime模块导入报错、打包安装程序异常、绘图浮点数崩溃、部分按钮交互失效、档案保存异常
### V6.2|2026‑08‑27
- 🚀 重磅升级第六代A13随机引擎,概率分配更加科学合理
- 🔨 整体重构代码,架构清爽整洁,可读性、可维护性拉满
- 🧙‍♂️ 新增交互式配置向导,零基础小白友好
- 🛡️ 强化数据校验,自动过滤空行、无效脏数据
- 🪟 新增悬浮快捷浮窗,上课不挡PPT,体验大提升
- ⌨️ 全套全局快捷键加持,解放你的鼠标
- 🖥️ 全平台兼容性优化,降低闪退翻车概率
---
## 💬 开发者碎碎念
坚持做面向一线教师的实用课堂工具,拒绝堆砌华而不实的鸡肋功能。全程本地离线运行,**不会上传任何学生名单、课堂数据到外网**。
永久免费用于教学,无广告无会员。
如果你觉得软件好用,欢迎点 ⭐Star;遇到BUG、有课堂新需求欢迎提交Issue与PR,一起迭代优化。
---
## 📄 开源许可
本项目仅限**教育学习、个人教学场景使用**。
禁止直接打包倒卖、二次封装后用于商业盈利。二次改编分发请明确标注原项目与原作者。
> GitHub仓库:[https://github.com/a13zhy/a13rollcall](https://github.com/a13zhy/a13rollcall)
> 项目下载页:[https://dkfile.istester.com/zhysppa13/a13callname.html](https://dkfile.istester.com/zhysppa13/a13callname.html)
## 👨‍💻 Author
a13zhy,二次创作、二次分发请标注原作者!
---
### V6.8项目目录简要说明
```
a13rollcall_v6.8/
├─ main_qt.py # PyQt5主程序入口
├─ wizard_launcher.py # 新手配置向导
├─ arcx_packager.py # 可视化插件打包工具
├─ plugin_installer.py # 插件安装程序
├─ constants.py # 全局常量统一管理
├─ exceptions.py # 异常定义
├─ modern_ui.py # 通用现代化UI组件
├─ error_dialog.py # 现代化错误弹窗
├─ operation_history.py # 撤销重做管理器
├─ weight_visualization.py # 权重可视化组件
├─ group_manager.py # 学生分组管理器
├─ visual_page_editor.py # 插件可视化拖拽编辑器
├─ stats_charts.py # 统计图表绘制组件
├─ data_manager.py # 数据持久化、轮次历史管理
└─ plugin_manager.py # 插件运行管理沙箱
```