# Coffee-team-learning-manage-system **Repository Path**: miao-chenghao/coffee-team-learning-manage-system ## Basic Information - **Project Name**: Coffee-team-learning-manage-system - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-14 - **Last Updated**: 2025-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GT-LMS 学习管理系统 [![Python Version](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://python.org) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![Project Status](https://img.shields.io/badge/status-active-brightgreen.svg)]() GT-LMS (GT Learning Management System) 是一个基于Python和面向对象编程原则开发的学习管理系统,支持学生、教师和管理员三种角色的完整教育管理功能。该项目旨在实践面向对象编程的核心概念,包括继承、封装、多态和抽象类,并提供一个功能完善的教育平台。 ## 📋 目录 - [项目概述](#项目概述) - [功能特性](#功能特性) - [项目结构](#项目结构) - [系统架构](#系统架构) - [安装指南](#安装指南) - [快速入门](#快速入门) - [使用指南](#使用指南) - [测试](#测试) - [演示](#演示) - [贡献指南](#贡献指南) - [常见问题](#常见问题) - [许可证](#许可证) ## 🎯 项目概述 GT-LMS是一个面向对象的学习管理系统,模拟真实教育平台的核心功能。系统采用分层架构设计,实现了用户管理、课程管理、作业管理、选课系统和评分系统等核心功能,并提供了数据持久化、认证系统和图形界面等高级特性。 ### 项目目标 - 实践面向对象编程的核心概念(继承、封装、多态、抽象类) - 构建一个功能完整的教育管理平台 - 提供清晰、可维护的代码结构 - 实现数据持久化和用户认证等高级功能 ### 技术亮点 - **面向对象设计**:使用继承、封装、多态和抽象类等OOP概念 - **设计模式**:实现单例模式等设计模式 - **数据持久化**:JSON文件存储,支持备份和恢复 - **用户认证**:密码哈希加密、会话管理、权限控制 - **双界面支持**:命令行界面(CLI)和图形界面(GUI) ## ✨ 功能特性 ### 核心功能 | 功能模块 | 描述 | 主要特性 | |---------|------|---------| | **用户管理** | 支持学生、教师、管理员三种角色 | 角色权限管理、个人信息管理、账户状态控制 | | **课程管理** | 教师和管理员可创建、修改、删除课程 | 课程信息管理、容量控制、学期管理 | | **作业管理** | 支持多种作业类型 | 普通作业、测验、项目,支持文件提交 | | **选课系统** | 学生选课、退课功能 | 选课验证、容量控制、先修课程检查 | | **评分系统** | 作业提交和评分 | 多种评分方式、成绩统计、反馈机制 | | **进度跟踪** | 学习进度和成绩统计 | 课程进度、成绩趋势、GPA计算 | ### Bonus功能 #### 🔐 认证系统 - 用户登录/登出 - 密码哈希加密存储 - 会话管理和令牌验证 - 账户锁定机制 - 基于角色的权限检查 #### 💾 数据持久化 - JSON文件存储所有数据 - 自动备份机制 - 数据导入导出功能 - 备份管理和恢复 - 数据完整性验证 #### 🖥️ 图形界面 - 现代化登录窗口 - 标签页式主界面 - 直观的课程管理界面 - 便捷的作业查看界面 - 实时成绩查询界面 ## 📁 项目结构 ``` gt_lms/ ├── main.py # 程序入口点 ├── requirements.txt # 项目依赖 ├── README.md # 项目文档 ├── README_CN.md # 中文项目文档 │ ├── models/ # 数据模型层 │ ├── __init__.py │ ├── user.py # 用户模型 (User, Student, Teacher, Admin) │ ├── course.py # 课程模型 (Course) │ ├── assignment.py # 作业模型 (Assignable, Assignment, Quiz, Project) │ ├── enrollment.py # 选课模型 (Enrollment) │ ├── submission.py # 提交模型 (Submission) │ ├── grade.py # 成绩模型 (Grade) │ └── progress.py # 进度模型 (Progress) │ ├── managers/ # 业务逻辑层 │ ├── __init__.py │ ├── user_manager.py # 用户管理器 (单例模式) │ ├── course_manager.py # 课程管理器 (单例模式) │ ├── enrollment_manager.py # 选课管理器 (单例模式) │ └── assignment_manager.py # 作业管理器 │ ├── system/ # 系统核心层 │ ├── __init__.py │ ├── lms_system.py # LMS主系统类 │ ├── auth_system.py # 认证系统 │ └── data_persistence.py # 数据持久化 │ ├── interfaces/ # 接口定义 │ ├── __init__.py │ └── interfaces.py # 系统接口定义 │ ├── ui/ # 用户界面层 │ ├── __init__.py │ ├── cli.py # 命令行界面 │ └── gui.py # 图形用户界面 (PyQt6) │ ├── utils/ # 工具类 │ ├── __init__.py │ ├── exceptions.py # 自定义异常 │ ├── helpers.py # 辅助函数 │ └── validators.py # 数据验证 │ ├── data/ # 数据存储目录 │ ├── users.json # 用户数据 │ ├── courses.json # 课程数据 │ ├── enrollments.json # 选课数据 │ ├── assignments.json # 作业数据 │ ├── submissions.json # 提交数据 │ ├── grades.json # 成绩数据 │ └── backups/ # 备份目录 │ ├── tests/ # 测试文件 │ ├── __init__.py │ ├── test_user.py # 用户模块测试 │ ├── test_course.py # 课程模块测试 │ ├── test_assignment.py # 作业模块测试 │ ├── test_enrollment.py # 选课模块测试 │ └── test_integration.py # 集成测试 │ ├── demos/ # 演示脚本 │ ├── system_demo.py # 系统功能演示 │ └── final_demo.py # 最终演示 │ └── docs/ # 文档目录 ├── design.md # 设计文档 ├── report.md # 项目报告 └── uml_diagrams.png # UML类图 ``` ## 🏗️ 系统架构 GT-LMS采用分层架构设计,将系统分为表示层、业务逻辑层和数据层,实现了高内聚、低耦合的设计原则。 ### 分层架构 ``` ┌─────────────────────────────────────┐ │ 表示层 (Presentation Layer) │ │ CLI / GUI (PyQt6) │ ├─────────────────────────────────────┤ │ 业务逻辑层 (Business Layer) │ │ 用户管理 | 课程管理 | 选课管理 │ ├─────────────────────────────────────┤ │ 数据层 (Data Layer) │ │ 数据持久化 (JSON) | 缓存 │ └─────────────────────────────────────┘ ``` ### 核心设计模式 - **单例模式**:UserManager、CourseManager、EnrollmentManager使用单例模式确保全局唯一实例 - **继承层次**:User作为抽象基类,派生出Student、Teacher和Admin - **抽象类**:Assignable作为抽象基类,派生出Assignment、Quiz和Project - **组合关系**:Course类包含多个Assignment对象,体现组合关系 ### 类关系概览 ``` ┌──────────┐ │ User │ (抽象基类) └────┬─────┘ │ ┌────────┼────────┐ │ │ │ ┌───┴───┐ ┌──┴───┐ ┌─┴────┐ │Student│ │Teacher│ │Admin │ └───────┘ └───────┘ └──────┘ ┌────────────┐ │ Assignable │ (抽象基类) └──────┬─────┘ │ ┌────────┼────────┐ │ │ │ ┌───┴──────┐ ┌──┴──┐ ┌─┴────┐ │Assignment│ │Quiz │ │Project│ └──────────┘ └─────┘ └───────┘ ``` ## 🚀 安装指南 ### 环境要求 - Python 3.8 或更高版本 - 操作系统:Windows、macOS 或 Linux ### 安装步骤 1. **克隆项目** ```bash git clone https://github.com/your-username/coffee-team-learning-manage-system.git cd coffee-team-learning-manage-system/gt_lms ``` 2. **创建虚拟环境(推荐)** ```bash python -m venv venv # Windows venv\Scripts\activate # macOS/Linux source venv/bin/activate ``` 3. **安装依赖** ```bash pip install -r requirements.txt ``` 4. **验证安装** ```bash python main.py --help ``` ### 依赖说明 项目依赖非常精简,主要依赖如下: - **PyQt6** (可选):用于图形用户界面 - **标准库**:json, hashlib, uuid, datetime, typing等(Python自带) ## 🎮 快速入门 ### 1. 初始化系统 首次运行系统前,需要初始化系统并创建演示数据: ```bash # 初始化系统并创建演示数据 python main.py --demo ``` ### 2. 启动系统 系统提供两种界面:命令行界面(CLI)和图形界面(GUI)。 #### 命令行界面(CLI) ```bash # 启动命令行界面 python main.py ``` #### 图形界面(GUI) ```bash # 启动图形界面(需要PyQt6) python main.py --gui ``` ### 3. 默认账户 系统初始化后会创建以下演示账户: | 角色 | 用户名/邮箱 | 密码 | |-----|-----------|------| | 管理员 | admin@gtlms.com | admin123 | | 教师 | teacher@gtlms.com | teacher123 | | 学生 | student@gtlms.com | student123 | #### ps 实际上,为了展示方便,我们制定了简便登陆账号和密码 | 角色 | 用户名/邮箱 | 密码 | |-----|-----------|------| | 管理员 | 1 | 1 | | 教师 | 2 | 2 | | 学生 | 3 | 3 | --- ## 📖 使用指南 ### 命令行界面 启动CLI后,系统会显示登录提示。输入上述演示账户的凭据即可登录。 #### 主要菜单选项 - **学生菜单**:查看课程、查看成绩、提交作业、查看进度 - **教师菜单**:管理课程、创建作业、查看提交、评分 - **管理员菜单**:管理用户、查看系统统计、数据备份 ### 图形界面 GUI提供了更直观的操作方式,通过标签页组织不同功能模块。 #### 主要界面 - **登录界面**:用户认证 - **主界面**:功能标签页 - **课程管理**:课程创建、编辑、删除 - **作业管理**:作业创建、查看提交 - **成绩查询**:成绩查看、统计 ### 不同用户类型的使用指南 #### 学生用户 **CLI使用方法:** 1. 使用学生账户登录系统 2. 选择以下功能: - 查看我的课程:显示已注册的所有课程 - 选课:浏览可用课程并注册 - 查看成绩:查看所有课程的成绩和GPA - 提交作业:选择课程并提交作业 - 查看进度:查看学习进度统计 **GUI使用方法:** 1. 在登录界面输入学生账户信息 2. 登录后进入主界面,包含以下标签页: - 课程标签:查看已选课程、注册新课程 - 作业标签:查看待提交作业、提交作业 - 成绩标签:查看成绩单、GPA统计图表 - 个人信息标签:查看和修改个人信息 #### 教师用户 **CLI使用方法:** 1. 使用教师账户登录系统 2. 选择以下功能: - 管理课程:创建、编辑、删除课程 - 创建作业:为课程创建不同类型的作业 - 查看提交:查看学生提交的作业 - 评分:为作业评分并添加反馈 - 查看课程统计:查看课程注册和成绩统计 **GUI使用方法:** 1. 在登录界面输入教师账户信息 2. 登录后进入主界面,包含以下标签页: - 课程标签:管理所授课程、查看学生名单 - 作业标签:创建和管理作业、查看提交情况 - 成绩标签:评分、查看成绩分布、导出成绩单 - 个人信息标签:查看和修改个人信息 #### 管理员用户 **CLI使用方法:** 1. 使用管理员账户登录系统 2. 选择以下功能: - 管理用户:创建、编辑、删除用户账户 - 系统统计:查看用户、课程、成绩等系统统计 - 数据备份:创建系统数据备份 - 系统设置:配置系统参数 **GUI使用方法:** 1. 在登录界面输入管理员账户信息 2. 登录后进入主界面,包含以下标签页: - 用户管理标签:创建、编辑、删除用户账户 - 系统统计标签:查看系统使用情况统计 - 数据管理标签:备份、恢复数据 - 系统设置标签:配置系统参数 ### 常用操作示例 #### 学生选课 ```bash # 在CLI中,学生登录后选择"选课"选项 # 然后按照提示输入课程ID ``` #### 教师创建作业 ```bash # 在CLI中,教师登录后选择"创建作业"选项 # 然后按照提示输入作业信息 ``` #### 管理员备份数据 ```bash # 在CLI中,管理员登录后选择"系统备份"选项 # 系统将自动创建数据备份 ``` ## 🧪 测试 ### 运行测试 项目包含全面的单元测试和集成测试,确保系统功能的正确性。 实际上,本项目开发历时三周,由4位同学开发,为了兼容性,我们最终修改了很多规范,导致部分功能与原项目规划不同,这也会导致早期的测试文件不可用1 ```bash # 运行所有测试 python run_tests.py # 或使用pytest直接运行 python -m pytest gt_lms/tests/ -v # 运行特定测试模块 python -m pytest gt_lms/tests/test_user.py -v ``` ### 测试覆盖范围 - **用户模块测试**:用户创建、验证、权限检查 - **课程模块测试**:课程创建、管理、选课 - **作业模块测试**:作业创建、提交、评分 - **选课模块测试**:选课流程、验证 - **集成测试**:各模块协作测试 ## 🎬 演示 ### 系统功能演示 项目提供了完整的系统功能演示脚本: ```bash # 运行系统演示 python gt_lms/demos/system_demo.py ``` 演示脚本将展示: - 系统初始化 - 测试数据创建 - 数据保存 - 系统统计 - 数据备份 ### 最终演示 ```bash # 运行最终演示 python gt_lms/demos/final_demo.py ``` ## 🤝 贡献指南 我们欢迎任何形式的贡献!请遵循以下步骤: 1. **Fork 项目** 2. **创建功能分支** (`git checkout -b feature/AmazingFeature`) 3. **提交更改** (`git commit -m 'Add some AmazingFeature'`) 4. **推送到分支** (`git push origin feature/AmazingFeature`) 5. **创建 Pull Request** ### 代码规范 - 遵循PEP 8 Python代码风格指南 - 为新功能添加适当的测试 - 更新相关文档 ### 问题报告 如果您发现任何问题或有改进建议,请在GitHub上创建issue。 ## ❓ 常见问题 ### Q: 如何重置管理员密码? A: 可以通过删除`data/users.json`文件并重新运行`python main.py --demo`来重置所有账户。 ### Q: 图形界面无法启动怎么办? A: 确保已安装PyQt6 (`pip install PyQt6`),如果仍有问题,可以使用命令行界面。 ### Q: 如何备份数据? A: 管理员用户可以在CLI中选择"系统备份"选项,或直接复制`data/`目录。 ### Q: 系统支持哪些Python版本? A: 系统支持Python 3.8及以上版本。 ### Q: 如何添加新的作业类型? A: 继承`Assignable`抽象类并实现其抽象方法,然后在`AssignmentManager`中注册新类型。 ## 📄 许可证 本项目采用MIT许可证 - 详见[LICENSE](LICENSE)文件。 ## 📞 联系方式 如有任何问题或建议,请通过以下方式联系我们: - 项目主页:[GitHub Repository](https://github.com/your-username/coffee-team-learning-manage-system) - 问题反馈:[Issues](https://github.com/your-username/coffee-team-learning-manage-system/issues) --- **GT-LMS** - 让学习管理更简单、更高效!