# ClassroomPin **Repository Path**: goatton/classroompin ## Basic Information - **Project Name**: ClassroomPin - **Description**: 教室图钉 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-28 - **Last Updated**: 2025-05-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 课堂点名系统 专为高等职业院校打造的课堂点名管理系统,以其离线运行能力、便捷的 Excel 数据对接、灵活的学生行为记录定义,以及智能语音播报功能,助力教师高效管理课堂秩序,精准记录学生出勤与行为表现,轻松应对复杂姓名读音,全面提升教学管理效能与课堂互动体验。 ## 设计思路 ### 聚焦高职教育场景的创新设计 本系统的设计紧密贴合高等职业院校的教学特点,针对以下核心场景进行功能规划: 1. **动态教室环境适配** - 高职院校学生在不同课程间频繁更换教室,且教室座位布局多样化。部分教室可能为阶梯教室,部分为普通教室,座位数量和排列方式差异较大。 - 即使同一教室,学生也可自由选择座位,导致每次上课的学生座位分布都不固定。 - 系统通过每次记录学生出勤时的具体座位信息(含排数、列数和具体位置),动态适配不同教室场景。教师可以在系统中快速调整座位布局,以匹配实际教室情况。 - 座位信息的详细记录为后续数据分析提供了基础,例如可以统计学生在不同位置的出勤频率,分析学生座位选择偏好等。 2. **教学行为管理双驱动** - **座位记录驱动**:通过记录学生座位排数,设计前排就座激励机制。例如,系统可以设置前排就座积分,积分可兑换奖励,引导学生养成良好学习习惯。研究表明,坐在前排的学生通常更专注于课堂内容,参与度更高,学习效果更好。 - **行为记录驱动**:全面记录学生课堂行为,包括积极参与讨论、回答问题、迟到、早退、玩手机等。系统提供多种行为类型选项,教师可以快速选择并记录。这些记录将生成详细的行为报告,帮助教师及时发现课堂问题,采取针对性措施。例如,若某学生频繁出现玩手机行为,教师可与其沟通,引导其改正。 3. **语音辅助教学机制** - 针对高职院校学生姓名特点,系统集成语音播报功能。部分学生姓名包含生僻字,教师在点名或提问时可能难以准确读出,导致尴尬或混淆,影响课堂氛围。 - 语音播报功能采用先进的语音合成技术,能够准确读出各种复杂姓名,降低教师读音压力。教师只需轻点按钮,系统即可清晰播报学生姓名,确保课堂互动顺畅。 - 语音播报功能不仅限于点名场景,还可以在随机提问、小组活动分配等环节使用。例如,在随机提问时,系统自动播报被选中学生姓名,增加课堂趣味性和互动性。这种趣味性可以激发学生兴趣,提高课堂参与度。 4. **独立运行与数据对接的考量** - 本软件采用 excel 表记录数据,**使得系统能够完全脱离网络独立运行**。在高职授课过程中,为避免学生难以管控,有时需要对教室环境进行断网。这种情况下,本软件依然可以正常使用,不受网络限制,确保教学管理的连续性。 - 同时,采用 excel 进行数据记录,**也极大地方便了与其他系统的对接**。当需要将其他系统中的相关数据引入本软件时,只需将数据按指定格式导入到 excel 模板中,即可在本软件中进行使用,大大提高了数据共享和利用的便捷性。 5. **灵活的学生行为定义** - **使用者可以直接在 excel 文件里面进行定义和管理学生哪些行为要进行记录**。这为教师提供了极大的灵活性,能够根据不同的教学需求和管理要求,自定义学生行为类型,使系统更贴合实际教学场景,更好地满足用户个性化的需求。 6. **可扩展性设计** - **此处还预留了进一步扩展功能的接口**,为以后更加丰富的学生状态展示和吸引学生的形态留下开发空间。这意味着随着教学需求的变化和教学方法的创新,系统可以不断进行功能拓展和优化,以适应未来的教育发展趋势,持续为教学管理提供有力支持。 ## 功能特性 1. **学生座位管理** - 支持点击快速分配座位:教师可以轻松将学生分配到座位网格中的任意位置,快速完成座位记录。 - 标记请假 / 缺勤状态:系统提供直观的标记选项,教师可以快速记录学生的出勤情况。标记后,系统自动生成出勤统计报表,方便教师查看和管理。 - 座位信息详细记录:系统记录学生出勤时的座位信息,包括排数、列数和具体位置,为后续数据分析提供基础。 2. **行为记录** - 记录学生在课堂上的表现和行为:系统提供丰富的行为类型选项,涵盖积极参与、迟到、早退、玩手机等常见行为。教师可以快速选择并记录,确保每堂课的学生行为都有详细记录。 - (待开发)生成行为报告:系统根据记录生成详细的行为报告,包括学生个体行为分析和班级整体行为统计。通过这些报告,教师可以及时发现课堂问题,采取针对性措施。 3. **随机点名** - 随机选择学生进行提问:系统采用随机算法,确保每个学生被选中的机会均等。随机点名可以增加课堂互动性和趣味性,提高学生注意力。 - 可结合语音播报功能增强互动:随机点名时,系统自动语音播报被选中学生姓名,进一步增强课堂互动性。例如,在小组讨论环节,教师可以使用随机点名选择小组代表发言,增加课堂趣味性。 4. **语音播报** - 支持语音播报学生姓名:系统集成先进的语音合成技术,能够准确读出各种复杂姓名,包括生僻字和多音字。语音播报功能降低教师读音压力,确保课堂互动顺畅。 - 适用于多种课堂场景:语音播报功能不仅限于点名场景,还可以在随机提问、小组活动分配等环节使用。例如,在分组活动中,系统自动播报小组成员姓名,提高课堂组织效率。 5. **数据持久化** - 保存和加载学生记录:系统支持数据的本地存储和加载,确保数据安全。教师可以随时保存当前课堂记录,并在需要时加载历史数据进行查看或分析。 - 数据备份与恢复:系统提供数据备份功能,教师可以定期备份数据,防止数据丢失。同时,系统支持数据恢复,确保数据的完整性和可用性。 6. **日期管理** - 按日期记录学生状态:系统将学生的出勤和行为记录按日期分类存储,方便教师查看历史记录。教师可以按日期筛选记录,快速了解某天的课堂情况。 - 生成日期统计报表:系统根据日期记录生成统计报表,包括出勤率、行为分布等信息。通过这些报表,教师可以了解课堂整体情况,评估教学效果。 7. **学生行为自定义** - **允许使用者直接在 excel 文件中定义和管理学生行为类型**,用户可以根据不同的教学需求和管理要求,自定义学生行为类型,使系统更贴合实际教学场景,更好地满足用户个性化的需求。 ## 安装要求 - Python 3.8 + - PySide6 - pyttsx3(语音播报功能) - openpyxl(用于 excel 数据的读写操作)** 安装依赖: ```bash pip install PySide6 pyttsx3 openpyxl ``` ## 使用说明 1. **运行程序**: ```bash python src/main.py ``` 2. **主界面布局**: - 左侧:课程选择和学生列表 - 课程选择:系统支持多课程管理,教师可以在左侧选择当前授课课程。课程信息包括课程名称、授课教师、上课时间和教室等。 - 学生列表:显示当前课程的学生信息,包括姓名、学号、座位状态等。学生列表可按姓名、学号等排序,方便教师快速查找。 - 中间:座位网格和状态区域(请假 / 缺勤) - 座位网格:直观展示教室座位布局,教师可以快速将学生到座位网格中分配座位。系统支持自定义座位布局,教师可以根据实际教室情况调整座位数量和排列。 - 状态区域:用于标记学生请假或缺勤状态。教师可以快速点击标记,系统自动记录状态并更新统计信息。 - 右侧:日期选择、学生详细信息和行为记录 - 日期选择:教师可以选择当前上课日期,系统将显示该日期的学生状态记录。日期选择支持日历视图,方便教师快速切换日期。 - 学生详细信息:显示选中学生的详细信息,包括出勤记录、行为记录等。教师可以查看学生的出勤频率、行为表现等详细数据。 - 行为记录:教师可以记录学生的课堂行为,系统提供丰富的行为类型选项。记录后,系统自动更新行为统计信息,并生成行为报告。 3. **基本操作**: - 点击左侧学生按钮选中学生:教师可以在学生列表中点击学生姓名,选中该学生。选中后,学生信息将在右侧详细展示。 - 点选座位网格快速分配座位:教师可以将选中的学生点选到座位网格中的任意位置,快速完成座位安排。 - 点击 “请假” 或 “缺勤” 区域标记学生状态:教师可以在状态区域点击 “请假” 或 “缺勤” 按钮,标记学生的出勤状态。标记后,系统自动更新出勤统计信息。 - 在右侧记录学生行为表现:教师可以在右侧的行为记录区域选择行为类型,记录学生的课堂行为。系统提供常用行为类型选项,教师也可以自定义行为类型。 - 使用菜单栏或按钮保存数据:教师可以随时点击菜单栏或工具栏上的保存按钮,保存当前课堂记录。系统支持自动保存功能,教师可以在设置中启用该功能,确保数据安全。 - **在 excel 文件中定义和管理学生行为类型**:用户可以根据实际需求,在指定的 excel 文件中自定义学生行为类型,然后导入到系统中进行使用。 4. **语音播报操作**: - 点击随机点名按钮:教师可以在右侧工具栏中点击 “随机点名” 按钮,系统将随机选择一名学生,并自动语音播报该学生姓名。 - 手动播报学生姓名:教师可以在学生列表或座位网格中右键单击学生,选择 “语音播报” 选项,系统将播报选中学生姓名。此功能适用于点名、提问等多种场景。 5. **数据导出与导入操作**: - 数据导出:教师可以将当前课堂记录导出为 excel 文件,方便进行数据的统计分析和共享。导出的文件包含学生的基本信息、出勤记录和行为记录等内容。 - 数据导入:教师可以将其他系统中按指定格式准备好的 excel 数据文件导入到本系统中,实现数据的整合与共享,方便在不同系统之间进行数据交互。 ## 项目结构 ``` src/ ├── main.py # 主程序入口 ├── model/ │ └── Student.py # 学生数据模型 ├── util/ │ ├── FileUtil.py # 文件操作工具 │ └── VoiceUtil.py # 语音播报工具 └── view/ # 界面组件 ├── AbsenceBox.py # 请假 / 缺勤区域 ├── BehaviorBox.py # 行为记录区域 ├── BehaviorButton.py # 行为按钮 ├── CourseBox.py # 课程选择区域 ├── DateBox.py # 日期选择 ├── MenuBar.py # 菜单栏 ├── SeatGrid.py # 座位网格 ├── StudentButton.py # 学生按钮 ├── StudentInfo.py # 学生信息展示 └── StudentList.py # 学生列表 ``` 1. **主程序入口 (main.py)**: - 负责初始化应用程序,加载主界面和相关组件。 - 配置应用程序的基本设置,如窗口大小、标题等。 - 连接信号与槽,确保界面组件与业务逻辑的交互正常进行。 2. **学生数据模型 (Student.py)**: - 定义学生类,包含学生的基本属性(如姓名、学号等)和行为记录。 - 提供数据存储和访问接口,确保学生数据的完整性和一致性。 - 支持数据的序列化和反序列化,方便数据的保存和加载。 3. **文件操作工具 (FileUtil.py)**: - 提供文件读写功能,支持学生数据的保存和加载。 - 处理文件路径和格式,确保数据存储的安全性和可靠性。 - 支持数据备份和恢复,防止数据丢失。 - **支持 excel 文件的读写操作,实现数据的导入和导出功能**,方便与其他系统进行数据交互。 4. **语音播报工具 (VoiceUtil.py)**: - 集成语音合成引擎,实现学生姓名的语音播报功能。 - 提供语音参数配置选项,如语速、音量等,满足不同教学场景的需求。 - 支持多语言语音播报,适应不同地区和背景的学生。 5. **界面组件**: - **请假 / 缺勤区域 (AbsenceBox.py)**:提供直观的标记选项,教师可以快速记录学生的请假或缺勤状态。支持状态统计和报表生成。 - **行为记录区域 (BehaviorBox.py)**:展示常用行为类型选项,教师可以快速记录学生行为。支持自定义行为类型和行为统计分析。 - **行为按钮 (BehaviorButton.py)**:设计直观的按钮样式,方便教师在课堂上快速点击记录行为。支持按钮状态反馈和快捷操作。 - **课程选择区域 (CourseBox.py)**:管理多课程信息,教师可以在不同课程间快速切换。支持课程信息的添加、修改和删除。 - **日期选择 (DateBox.py)**:提供日历视图,教师可以选择当前上课日期。支持日期筛选和统计报表生成。 - **菜单栏 (MenuBar.py)**:集成文件操作、数据管理等功能入口,方便教师进行全局操作。支持自定义菜单项和快捷键设置。 - **座位网格 (SeatGrid.py)**:直观展示教室座位布局,支持拖拽操作和座位调整。提供座位状态显示和快速查询功能。 - **学生按钮 (StudentButton.py)**:设计学生列表中的按钮样式,支持拖拽操作和右键菜单功能。提供学生信息快速查看和操作入口。 - **学生信息展示 (StudentInfo.py)**:详细展示选中学生的出勤和行为记录,支持数据图表展示和分析。提供学生信息的导出功能。 - **学生列表 (StudentList.py)**:展示当前课程的学生信息,支持排序和筛选功能。提供学生信息的快速查找和批量操作功能。 ## 开发说明 1. **代码风格**: - 遵循 PEP 8 规范:确保代码的可读性和一致性,方便团队协作和后续维护。 - 类名采用大驼峰命名法:类名清晰明了,易于识别和理解。 - 变量和函数名采用小写字母加下划线:变量和函数名简洁明了,准确传达其用途和功能。 2. **功能扩展**: - 新增行为类型:在 `BehaviorBox.py` 中添加新的行为类型选项,确保选项与实际教学场景相符。修改后,需在行为记录区域更新显示逻辑,确保新行为类型能够正常记录和统计。 - 调整界面布局:根据教学需求修改对应 `view` 组件文件,如调整座位网格大小、优化学生列表显示等。修改界面布局时,需确保不影响其他功能的正常使用,并进行充分的测试。 - 优化语音功能:在 `VoiceUtil.py` 中调整语音参数设置,如优化语速、音量等,以适应不同教学场景的需求。同时,可以扩展语音播报内容,如播报学生行为类型等。 - **扩展数据对接功能**:根据实际需求,进一步开发与其他系统的数据对接功能,优化 excel 数据的导入导出流程,提高数据交互的效率和准确性。 - **开发新的学生状态展示功能**:利用预留的扩展接口,开发更加丰富多样的学生状态展示功能,如生成可视化的学生行为分析图表、出勤趋势图等,为教师提供更直观的教学管理依据。 3. **数据管理**: - 数据存储结构:系统采用 JSON 格式存储数据,确保数据的可读性和易解析性。数据文件包含学生信息、出勤记录、行为记录等内容。同时,**支持将数据导出为 excel 格式,方便用户进行数据的统计分析和共享**。 - 数据安全机制:系统提供数据备份和恢复功能,定期备份数据文件,防止数据丢失。同时,系统在保存数据时进行校验,确保数据的完整性和一致性。 4. **性能优化**: - 界面响应优化:针对界面组件的交互操作进行性能优化,如减少重绘次数、优化布局计算等,确保界面响应迅速。 - 数据处理优化:优化数据读写和处理逻辑,减少冗余操作,提高数据处理效率。特别是对于大量学生数据的处理,采用批量操作和异步处理机制,避免界面卡顿。