Skip to content

Latest commit

 

History

43 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

北京邮电大学本科学生教学管理系统 🎓

📚 项目简介

这是一个基于Python开发的北京邮电大学本科学生教学管理系统,作为《Python程序设计》课程实践项目开发。系统采用客户端-服务器架构,提供完善的教学管理功能,包括学生管理、课程管理、选课系统、成绩管理等核心功能模块。

✨ 主要功能

核心功能

  • 👨‍🎓 学生管理:学生信息管理、学籍状态管理、信息查询
  • 📚 课程管理:课程信息管理、开课计划管理、课程查询、跨专业名额控制
  • 📝 选课系统
    • 在线选课、退课、选课结果查询
    • 时间冲突自动检测
    • 积分竞价选课(选修课)
    • 跨专业选课名额管理
    • 公选课仅限晚间时段规则
  • 📊 成绩管理:成绩录入、成绩查询、GPA计算、成绩统计分析
  • 👨‍🏫 教师管理:教师信息管理、授课安排、课表查询、竞价选课录取
  • 📅 学期管理:支持命令行参数设置当前学期,界面按学期过滤显示

系统特色

  • 🎨 现代化GUI:基于customtkinter的美观界面,带北邮校标
  • 🔐 多角色系统:学生、教师、管理员三级权限体系
  • 🌐 网络通信:支持多客户端并发访问
  • 📈 数据分析:成绩统计分析与可视化
  • 📝 日志系统:完整的操作追踪
  • 🎯 积分竞价选课:选修课支持积分投入,教师可手动录取
  • 📅 学期管理:命令行参数灵活设置当前学期,界面自动过滤
  • 🛡️ 业务规则引擎:数据库触发器实现跨专业名额、公选课时段等规则

🏗️ 系统架构

┌─────────────────────────────────────────────────┐
│        GUI层 - 北邮主题界面 (customtkinter)      │
│    [登录界面] [学生端] [教师端] [数据分析]       │
├─────────────────────────────────────────────────┤
│              业务逻辑层 (核心功能)               │
│   [学生管理] [课程管理] [选课] [成绩] [教师]     │
├─────────────────────────────────────────────────┤
│            网络通信层 (Socket/Protocol)          │
├─────────────────────────────────────────────────┤
│           数据访问层 (数据库接口)                │
├─────────────────────────────────────────────────┤
│               数据层 (SQLite数据库)              │
└─────────────────────────────────────────────────┘

📁 项目结构

python大作业/
├── main.py                      # 主程序入口
├── requirements.txt             # 依赖包列表
├── README.md                    # 项目说明
├── 系统设计文档.md               # 详细设计文档
├── assets/                      # 资源文件
│   ├── bupt_logo.png            # 北邮校标
│   └── icons/                   # 图标文件
├── config/                      # 配置文件目录
│   ├── config.yaml              # 系统配置
│   └── permissions.json         # 权限配置
├── gui/                         # GUI界面模块
│   ├── login_window.py          # 登录窗口
│   ├── student_window.py        # 学生端主界面
│   ├── teacher_window.py        # 教师端主界面
│   └── components/              # 可复用组件
│       ├── course_select.py     # 选课组件
│       ├── grade_view.py        # 成绩查看组件
│       └── schedule_view.py     # 课表组件
├── core/                        # 核心业务逻辑
│   ├── user_manager.py          # 用户管理
│   ├── student_manager.py       # 学生管理
│   ├── teacher_manager.py       # 教师管理
│   ├── course_manager.py        # 课程管理
│   ├── enrollment_manager.py    # 选课管理
│   ├── grade_manager.py         # 成绩管理
│   └── permission_manager.py    # 权限管理
├── network/                     # 网络通信模块
│   ├── server.py                # 服务器端
│   ├── client.py                # 客户端
│   └── protocol.py              # 通信协议
├── data/                        # 数据访问层
│   ├── database.py              # 数据库操作
│   └── models.py                # 数据模型
├── analysis/                    # 数据分析模块
│   ├── analyzer.py              # 数据分析
│   └── chart_generator.py       # 图表生成
├── utils/                       # 工具模块
│   ├── logger.py                # 日志系统
│   ├── config_manager.py        # 配置管理
│   ├── crypto.py                # 加密工具
│   └── validator.py             # 数据验证
└── logs/                        # 日志目录

🚀 快速开始

1. 环境要求

  • Python 3.8+
  • Windows/Linux/macOS

2. 安装依赖

pip install -r requirements.txt

3. 配置系统

编辑 config/config.yaml 文件,根据需要修改数据库和网络配置。

4. 运行程序

方式一:单机模式(仅GUI)

默认学期(2024-2025-2):

python main.py

指定学期:

# 查看2024-2025学年第一学期
python main.py 2024-2025-1

# 查看2024-2025学年第二学期
python main.py 2024-2025-2

说明:

  • 学期格式:YYYY-YYYY-N(如:2024-2025-1 表示2024-2025学年第一学期)
  • 系统会根据指定的学期过滤显示"我的课程"和"我的课表"
  • 未指定学期时,默认使用 2024-2025-2

方式二:客户端-服务器模式

启动服务器:

python -m network.server

启动客户端(另一个终端):

# 默认学期
python main.py

# 或指定学期
python main.py 2024-2025-1

5. 默认账号

  • 教师账号(管理员)

    • 用户名: teacher001
    • 密码: 123456
    • 教师姓名: 张教授
  • 学生账号(普通用户)

    • 用户名: 2021211001
    • 密码: 123456
    • 学生姓名: 李明
    • 专业: 计算机科学与技术

📖 使用说明

学生端功能

  1. 登录系统

    • 使用学号和密码登录
    • 学号格式:10位数字(如:2021211001)
  2. 选课功能

    • 查看可选课程列表(按当前学期过滤)
    • 在线选课/退课
    • 查看已选课程(仅显示当前学期)
    • 自动检测时间冲突
    • 积分竞价选课(选修课)
    • 查看竞价状态和结果
  3. 成绩查询

    • 查看各科成绩
    • 计算GPA
    • 查看成绩统计分析
  4. 课表查询

    • 查看当前学期课表(按命令行参数设置的学期)
    • 网格化显示课程时间与地点
    • 点击课程查看详细信息

教师端功能

  1. 登录系统

    • 使用教师工号和密码登录
  2. 成绩管理

    • 录入学生成绩
    • 修改成绩
    • 导出成绩单
  3. 课程管理

    • 查看授课班级
    • 查看学生名单
    • 课程信息管理
    • 选修课竞价管理(查看投入、手动录取学生)
  4. 数据分析

    • 成绩分布分析
    • 班级成绩统计
    • 可视化图表展示

🎨 界面展示

系统采用北邮蓝色主题配色,界面简洁美观:

  • 主题色:北邮蓝 (#003087)
  • 辅助色:白色、浅灰色
  • 字体:微软雅黑
  • Logo:北京邮电大学校标

功能亮点

  1. 智能选课系统

    • 自动检测时间冲突
    • 实时显示选课人数
    • 支持快速搜索课程
  2. 可视化成绩分析

    • 成绩分布饼图
    • 成绩趋势折线图
    • GPA计算器
  3. 实时数据同步

    • 支持多客户端并发
    • 数据实时更新
    • 操作日志记录

🛠️ 开发指南

添加新的GUI界面

  1. gui/ 目录创建新的模块文件
  2. 继承 ctk.CTkFrame 创建界面类
  3. 在主窗口中注册新界面

添加新的网络协议

  1. network/protocol.py 中定义新的 ACTION_* 常量
  2. 在服务器端注册对应的处理器
  3. 在客户端添加便捷方法

添加新的权限

  1. 编辑 config/permissions.json
  2. 在对应角色的 permissions 列表中添加权限
  3. 在代码中使用 @require_permission 装饰器

📊 模块说明

核心模块

  • 用户管理 (core/user_manager.py):处理用户认证和会话
  • 权限管理 (core/permission_manager.py):基于角色的权限控制
  • 网络通信 (network/):客户端-服务器通信
  • 数据访问 (data/):统一的数据库接口

工具模块

  • 日志系统 (utils/logger.py):分级日志记录
  • 配置管理 (utils/config_manager.py):YAML配置文件管理
  • 加密工具 (utils/crypto.py):密码哈希和数据加密
  • 数据验证 (utils/validator.py):输入数据验证

🔐 安全性

  • ✅ 密码使用bcrypt哈希存储
  • ✅ SQL注入防护(参数化查询)
  • ✅ 输入验证和过滤
  • ✅ 基于角色的权限控制
  • ✅ 操作日志记录

📝 日志系统

日志文件位于 logs/app.log,包含以下级别:

  • DEBUG:调试信息
  • INFO:一般信息
  • WARNING:警告信息
  • ERROR:错误信息
  • CRITICAL:严重错误

🧪 测试

运行单元测试:

pytest tests/

运行特定测试:

pytest tests/test_user_manager.py

📄 许可证

本项目为教学项目,仅供学习使用。

👥 系统角色

  • 学生(user):选课、查成绩、查课表
  • 教师(admin):录入成绩、查看授课班级、数据分析

📞 联系方式

如有问题,请联系项目负责人。

🎓 课程信息

  • 学校:北京邮电大学
  • 课程名称:Python程序设计
  • 项目类型:本科教学管理系统
  • 开发时间:2025年

📚 更多文档

🔄 版本历史

v1.1.0 (2025-12-13)

  • ✅ 支持命令行参数设置当前学期(python main.py 2024-2025-1/2
  • ✅ 实现积分竞价选课系统(选修课投入积分,教师手动录取)
  • ✅ 添加跨专业选课名额控制(数据库触发器)
  • ✅ 实现公选课仅限晚间时段规则(数据库触发器)
  • ✅ "我的课程"和"我的课表"按当前学期过滤显示
  • ✅ 添加教务处、校武装部作为课程开设部门
  • ✅ 修复教师接受竞价后学生端课程不显示的问题
  • ✅ 完善培养方案显示(必修红色、选修蓝色)

v1.0.0 (2025-10-28)

  • ✅ 完成系统架构设计
  • ✅ 实现完整的数据库设计(学生、教师、课程、选课、成绩表)
  • ✅ 完成用户管理模块(支持学生和教师双角色)
  • ✅ 实现核心业务模块(课程管理、选课管理、成绩管理)
  • ✅ 创建北邮主题GUI界面(登录、学生端、教师端)
  • ✅ 实现学生端功能(选课、查成绩、个人信息)
  • ✅ 实现教师端功能(成绩录入、学生名单、数据分析)
  • ✅ 添加数据可视化功能(成绩分布图表)
  • ✅ 内置演示数据,开箱即用

🎯 项目完成度

已实现功能 ✅

数据库层

  • 完整的7张数据表设计
  • SQLite数据库集成
  • 演示数据自动初始化
  • 数据模型类

用户管理

  • 学生/教师双角色登录
  • 密码bcrypt加密
  • 用户会话管理
  • 权限控制

学生端

  • 我的选课(查看、退课)
  • 课程选课(浏览、选课、冲突检测)
  • 我的成绩(查看成绩、GPA计算)
  • 个人信息展示

教师端

  • 我的课程(课程卡片展示)
  • 成绩录入(批量录入、修改)
  • 学生名单(分课程查看)
  • 数据分析(统计图表)
  • 成绩可视化(柱状图、饼图)

系统功能

  • 完整的日志系统
  • 异常处理机制
  • 数据验证
  • 北邮主题UI设计

可扩展功能 🚀

  • 网络通信(客户端-服务器模式)
  • 课表可视化展示
  • Excel数据导入导出
  • 成绩修改历史记录
  • 消息通知系统
  • 数据备份恢复
  • 密码修改功能
  • 更多数据分析报表

📖 详细文档

💻 技术栈

  • 编程语言: Python 3.8+
  • GUI框架: CustomTkinter
  • 数据库: SQLite3
  • 数据可视化: Matplotlib
  • 数据处理: Pandas (可选)
  • 密码加密: Bcrypt
  • 日志系统: Python logging

🌟 项目亮点

  1. 完整的教学管理系统:覆盖选课、成绩、统计分析等核心功能
  2. 北邮专属主题:采用北邮蓝配色,专业美观的界面设计
  3. 双角色系统:学生端和教师端功能分离,权限清晰
  4. 数据可视化:成绩统计分析配有精美图表展示
  5. 智能选课系统:自动检测时间冲突,防止重复选课
  6. 开箱即用:内置演示数据,无需额外配置
  7. 代码质量高:模块化设计,完整的异常处理和日志记录

祝使用愉快! 🎉

北京邮电大学 · Python程序设计课程实践项目

About

第二组的python程序设计课程设计,一个北邮教学管理系统

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages