# 班务管理系统 **Repository Path**: limuyi/class-management-system ## Basic Information - **Project Name**: 班务管理系统 - **Description**: 班务管理系统,支持分数的快速录入、支持期末评语打印等 - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-10 - **Last Updated**: 2026-07-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: Vue, JavaScript, TypeScript ## README # 班务管理系统 一个面向班主任的班级成绩记录与学情管理工具,帮助教师高效完成学生成绩录入、学生信息管理、班级总览分析、学习报告导出、期末评语撰写与常用教学工具处理等工作。项目内置错题本等扩展模块,可通过功能开关控制显隐。 ## 体验地址 https://limuyi1.github.io/class-management-system ## 功能特性 ### V1.0 成绩录入 ✅ - **快速录入成绩** - 支持姓名/拼音模糊匹配,快速定位学生 - **回车键分流** - 姓名框回车仅定位学生,分数框回车保存并回到姓名输入框 - **AI 识图导入** - 中栏提供 AI 识图导入(批量)入口,识别后写入当前录入科目 - **Excel 导出** - 工具栏统一导出入口(当前成绩 / 全部成绩) - **自定义导入** - 支持导入自定义学生名单 - **数据持久化** - 浏览器本地存储,刷新页面数据不丢失 ### V2.0 期末评语 ✅ - **评语录入** - 支持手动输入评语或从 Excel 导入 - **个性化配置** - 支持设置字体大小、落款签名、页面纸张类型(A3/A4/B3/B4) - **PDF 导出** - 一键导出评语为 PDF 格式 - **综合评比率** - 实时统计综合评分 - **图片导出** - 支持导出低分学生名单为图片,方便发送到班级群 ### V3.0 班级总览 + 学情工作台 ✅ - **全新桌面化布局** - 左侧菜单导航,统一切换总览、成绩、学生、评语、工具、设置等页面 - 错题本等扩展入口通过功能开关控制,可按使用阶段开启 - 4 套主题颜色(清新绿、阳光橙、优雅紫、柔和蓝粉) - 页面头部、卡片、图表和弹层样式整体重构,信息密度更适合教师桌面端场景 - **班级总览页** - 班级 KPI、单元完成度、重点学生、关注分组等核心信息集中展示 - 学生趋势分析支持单人聚焦与多人对比,快速查看阶段成绩变化 - 待写评语数量、AI 配置状态、学情诊断入口统一放到总览页 - 支持基于当前班级数据生成 AI 学情分析 - **学生信息中心** - 独立学生页面,支持维护学生名单、学生标签、启用状态与动态成绩列 - 支持新增、删除、禁用学生,并通过表格维护各阶段成绩数据 - 支持从评语页跳转到学生标签编辑,编辑完成后回到原学生评语 - 标签数据贯通评语生成、学情分析、学生画像与学习报告 - **学习报告导出** - 从成绩页或总览页直接打开学生学习报告 - 自动汇总阶段成绩、班级名次、均分差、趋势变化、标签画像与优势关注点 - 支持 AI 生成报告正文,也支持在模板基础上手动修改 - 按设计稿样式导出高清 PNG,适合发送家长群或留档 - **成绩录入增强** - 多列成绩管理(期中、期末、月考、单元测等)并支持动态切换当前录入科目 - 三栏布局:学生列表 / 录入面板 / 统计分析 - 学生列表按成绩区间着色,低分预警和分布统计优先展示 - 支持查看单个学生详情,并从详情继续导出学习报告 - **期末评语增强** - 支持手动撰写、Excel 导入、快捷评语、AI 单个生成、AI 批量生成等多种模式 - 支持 AI 批量润色已有评语,保留事实基础并优化表达 - 支持评语字数校验、预览分页、学生快速定位与完成进度展示 - 支持字体大小、落款签名、纸张类型(A3/A4/B3/B4)等打印参数配置 - 支持评语 PDF / Excel 导出,适合批量打印、归档和二次编辑 - **错题本(功能开关模块)** - 支持按文件夹管理错题,维护题干、图片、答案、解析、题型、难度与收藏状态 - 支持上传题目图片并通过 AI 识别题目内容 - 支持 AI 生成答案和解析,辅助教师整理错题资料 - 支持勾选错题生成练习试卷并导出 PDF - 当前通过 `featureFlags.wrongBook` 控制菜单显隐,代码与路由已保留 - **工具箱** - **名单核对** - 对比两份名单,生成仅 A 有、仅 B 有、共同名单等结果,支持复制和导出 - **试卷排版** - 上传或选择多张试卷图片,按纸张规格排版并导出 PDF - **素材管理** - 管理长期复用的图片素材,供试卷排版和后续错题本等工具使用 - **草稿保存** - 试卷排版支持草稿管理,便于持续调整和复用 - **数据导入导出增强** - 支持 Excel 初始化学生名单,并可选择成绩列和评语列 - 支持按姓名追加成绩或期末评语,Excel 空白评语不会覆盖已有内容 - 支持 .dexie 全量备份与恢复,可选择是否包含试卷排版数据 - 导入前提供差异比对和进度反馈,降低误覆盖风险 - **设置中心** - **标签维护** - 灵活管理标签分类与标签项,支持 AI 生成标签 - **单元配置** - 动态添加/删除成绩列(支持期末、期中、月考等) - **AI 配置** - 支持 OpenAI、Gemini、Kimi、豆包、DeepSeek 等模型配置,支持测试连接与拉取模型 - **提示词管理** - 可维护评语生成、评语润色、图片识别、标签生成、AI 答题、学情分析等提示词 - **系统备份** - 完整数据导出/导入,支持数据差异比对与恢复 - **题型管理** - 错题题型维护模块已内置,当前通过 `featureFlags.questionTypeManagement` 控制显隐 ### V4.0 班级排表与课堂工具 🚧 V4.0 计划从“成绩与学情工作台”继续扩展到“班级日常组织工具”,重点面向小学老师每天会用到的排座、轮值和课堂抽取场景。 - **座位表** - 支持设置行列、拖拽排座、手动调整与保存多个座位方案 - 支持随机排座、按小组排座、锁定座位后重排未锁定学生 - 支持未安排学生池、座位空缺、打印/导出座位表 - 后续可与学生标签、成绩区间、视力/身高等约束联动 - **值日表** - 支持维护值日岗位,如扫地、拖地、擦黑板、倒垃圾、整理讲台等 - 支持按日/按周自动轮换,避免同一学生连续承担同类岗位 - 支持按小组值日、手动微调、复制到班级群或打印 - 后续可扩展为班级岗位表、课代表轮值、领读和路队管理 - **随机点名** - 支持全班随机、按小组随机、随机抽多人 - 支持排除请假学生、已抽过学生或临时不参与学生 - 支持公平模式,让近期较少被抽到的学生优先出现 - 抽取结果后续可衔接课堂表现记录或学生标签 - **设计原则** - 优先做老师能马上使用的 MVP:座位表、值日表、随机点名 - 先保证手动可控和导出打印,再逐步加入智能推荐 - 与现有学生名单、标签、成绩和数据备份体系打通,避免形成孤立工具 ## 技术栈 | 类别 | 技术 | | -------- | ------------------------------------- | | 框架 | Vue 3 (Composition API) | | 构建工具 | Vite 8 | | 语言 | TypeScript 6 | | UI 组件 | Element Plus, VxeTable, Vxe PC UI | | 状态管理 | Pinia | | 数据库 | Dexie + dexie-export-import | | 样式 | Tailwind CSS 4, SCSS | | 测试 | Vitest 4, Vue Test Utils, happy-dom | | 工具库 | xlsx, pdf-lib, dom-to-image, pinyin-pro, ECharts, KaTeX | | 图标 | FontAwesome 7 | | AI 集成 | OpenAI, Gemini, Kimi, 豆包, DeepSeek | ## 项目结构 ``` src/ ├── ai/ # AI 服务与 Provider 封装 ├── assets/ # 静态资源 ├── components/ # 公共组件 │ ├── PageHeader.vue # 页面标题组件 │ ├── OverlengthTextTooltip.vue │ ├── ThemeSelector.vue │ └── student-report/ # 学习报告相关组件 ├── config/ # 配置文件 │ ├── menu.ts # 菜单配置 │ ├── theme.ts # 主题配置 │ └── score.ts # 分数区间配置 ├── hooks/ # 组合式函数 │ ├── useProgress.ts # 进度计算 │ ├── useScoreStatistics.ts │ └── useScoreDistributionActions.ts ├── router/ # 路由配置 ├── stores/ # Pinia 状态管理 │ ├── data-source.ts # 学生数据与统计 │ ├── setting.ts # 表头与标签配置 │ ├── configuration.ts # 应用配置 │ ├── ai-config.ts # AI 配置 │ ├── wrong-book.ts # 错题本数据 │ ├── tools.ts # 工具箱偏好与草稿状态 │ ├── overview-analysis.ts │ └── theme.ts # 主题状态 ├── types/ # TypeScript 类型定义 ├── utils/ # 工具函数 │ ├── xlsxUntil.ts # Excel 导入导出 │ ├── pdfUntil.ts # PDF 导出 │ ├── evaluationTextPdfUntil.ts │ ├── studentReportUntil.ts │ └── pageSizeInPixelUntil.ts └── views/ # 页面组件 ├── overview/ # 班级总览页 ├── score/ # 成绩录入页面 ├── student-info/ # 学生信息页面 ├── evaluation/ # 期末评语页面 ├── wrong-book/ # 错题本页面 ├── tools/ # 工具箱页面 ├── setting/ # 设置页面 └── main/ # 应用主框架 ``` ## 快速开始 ### 安装依赖 ```bash pnpm install ``` ### 开发模式 ```bash pnpm dev ``` ### 构建生产版本 ```bash pnpm build ``` 构建产物默认输出到 `dist/` 目录。 ### 类型检查 ```bash pnpm type-check ``` ### 代码规范检查 ```bash pnpm lint ``` ### 自动修复代码规范问题 ```bash pnpm lint:fix ``` ## 数据说明 ### 学生数据存储 - 学生数据通过 Dexie 存储在浏览器 IndexedDB 中 - 数据结构示例: ```json { "xing4_ming2": "张三", "yu3_wen2": 85, "shu4_xue2": 92, "comment": "该生学习认真...", "tags": { "优点": ["认真", "积极"] } } ``` ### 表头配置 - 首列固定为 `xing4_ming2`(姓名),不可删除 - 其他列可通过设置页面动态添加、删除、排序 ### 最近录入记录 - 当前实现为按科目分组持久化(写入配置存储,刷新后保留) - 每个科目最多保留 5 条,超出后按时间保留最新记录 ## 开发指南 ### 添加新的分数列 1. 进入「设置」页面 2. 在「单元配置」中添加新列(输入列名,自动转换为拼音属性名) 3. 在「成绩录入」页面选择对应的列进行录入 ### 导出成绩 1. 进入「成绩录入」页面 2. 点击顶部工具栏「导出总表」 3. 选择导出格式(下载当前成绩 / 下载所有成绩) ### 导出学习报告 1. 在「成绩录入」页点击学生详情,或在「班级总览」页打开学生趋势分析 2. 选择目标学生后点击「导出学习报告」 3. 勾选需要纳入报告的成绩项 4. 使用 AI 或模板生成正文,并按需手动修改 5. 选择图片质量与分辨率后导出 PNG ### 成绩录入交互说明 1. 姓名输入框回车:仅定位学生并聚焦到分数输入框 2. 分数输入框回车:保存当前学生分数,清空并回到姓名输入框 3. 清空姓名输入框:同步清除左侧学生列表选中态 4. AI 识图导入:识别结果写入当前录入科目 ### 批量打印评语 1. 进入「期末评语」页面 2. 配置页面类型、落款等信息 3. 点击「导出 PDF」按钮 ## 后续规划 - [ ] V4.0 班级排表:座位表、值日表、随机点名 - [ ] 排表数据与学生标签、成绩区间、后续课堂表现记录联动 - [ ] 云端数据存储与多设备同步 ## 许可证 MIT