这是一个基于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/ # 日志目录
- Python 3.8+
- Windows/Linux/macOS
pip install -r requirements.txt编辑 config/config.yaml 文件,根据需要修改数据库和网络配置。
默认学期(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-
教师账号(管理员):
- 用户名:
teacher001 - 密码:
123456 - 教师姓名: 张教授
- 用户名:
-
学生账号(普通用户):
- 用户名:
2021211001 - 密码:
123456 - 学生姓名: 李明
- 专业: 计算机科学与技术
- 用户名:
-
登录系统
- 使用学号和密码登录
- 学号格式:10位数字(如:2021211001)
-
选课功能
- 查看可选课程列表(按当前学期过滤)
- 在线选课/退课
- 查看已选课程(仅显示当前学期)
- 自动检测时间冲突
- 积分竞价选课(选修课)
- 查看竞价状态和结果
-
成绩查询
- 查看各科成绩
- 计算GPA
- 查看成绩统计分析
-
课表查询
- 查看当前学期课表(按命令行参数设置的学期)
- 网格化显示课程时间与地点
- 点击课程查看详细信息
-
登录系统
- 使用教师工号和密码登录
-
成绩管理
- 录入学生成绩
- 修改成绩
- 导出成绩单
-
课程管理
- 查看授课班级
- 查看学生名单
- 课程信息管理
- 选修课竞价管理(查看投入、手动录取学生)
-
数据分析
- 成绩分布分析
- 班级成绩统计
- 可视化图表展示
系统采用北邮蓝色主题配色,界面简洁美观:
- 主题色:北邮蓝 (#003087)
- 辅助色:白色、浅灰色
- 字体:微软雅黑
- Logo:北京邮电大学校标
-
智能选课系统
- 自动检测时间冲突
- 实时显示选课人数
- 支持快速搜索课程
-
可视化成绩分析
- 成绩分布饼图
- 成绩趋势折线图
- GPA计算器
-
实时数据同步
- 支持多客户端并发
- 数据实时更新
- 操作日志记录
- 在
gui/目录创建新的模块文件 - 继承
ctk.CTkFrame创建界面类 - 在主窗口中注册新界面
- 在
network/protocol.py中定义新的ACTION_*常量 - 在服务器端注册对应的处理器
- 在客户端添加便捷方法
- 编辑
config/permissions.json - 在对应角色的
permissions列表中添加权限 - 在代码中使用
@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年
- ✅ 支持命令行参数设置当前学期(
python main.py 2024-2025-1/2) - ✅ 实现积分竞价选课系统(选修课投入积分,教师手动录取)
- ✅ 添加跨专业选课名额控制(数据库触发器)
- ✅ 实现公选课仅限晚间时段规则(数据库触发器)
- ✅ "我的课程"和"我的课表"按当前学期过滤显示
- ✅ 添加教务处、校武装部作为课程开设部门
- ✅ 修复教师接受竞价后学生端课程不显示的问题
- ✅ 完善培养方案显示(必修红色、选修蓝色)
- ✅ 完成系统架构设计
- ✅ 实现完整的数据库设计(学生、教师、课程、选课、成绩表)
- ✅ 完成用户管理模块(支持学生和教师双角色)
- ✅ 实现核心业务模块(课程管理、选课管理、成绩管理)
- ✅ 创建北邮主题GUI界面(登录、学生端、教师端)
- ✅ 实现学生端功能(选课、查成绩、个人信息)
- ✅ 实现教师端功能(成绩录入、学生名单、数据分析)
- ✅ 添加数据可视化功能(成绩分布图表)
- ✅ 内置演示数据,开箱即用
数据库层
- 完整的7张数据表设计
- SQLite数据库集成
- 演示数据自动初始化
- 数据模型类
用户管理
- 学生/教师双角色登录
- 密码bcrypt加密
- 用户会话管理
- 权限控制
学生端
- 我的选课(查看、退课)
- 课程选课(浏览、选课、冲突检测)
- 我的成绩(查看成绩、GPA计算)
- 个人信息展示
教师端
- 我的课程(课程卡片展示)
- 成绩录入(批量录入、修改)
- 学生名单(分课程查看)
- 数据分析(统计图表)
- 成绩可视化(柱状图、饼图)
系统功能
- 完整的日志系统
- 异常处理机制
- 数据验证
- 北邮主题UI设计
- 网络通信(客户端-服务器模式)
- 课表可视化展示
- Excel数据导入导出
- 成绩修改历史记录
- 消息通知系统
- 数据备份恢复
- 密码修改功能
- 更多数据分析报表
- 编程语言: Python 3.8+
- GUI框架: CustomTkinter
- 数据库: SQLite3
- 数据可视化: Matplotlib
- 数据处理: Pandas (可选)
- 密码加密: Bcrypt
- 日志系统: Python logging
- 完整的教学管理系统:覆盖选课、成绩、统计分析等核心功能
- 北邮专属主题:采用北邮蓝配色,专业美观的界面设计
- 双角色系统:学生端和教师端功能分离,权限清晰
- 数据可视化:成绩统计分析配有精美图表展示
- 智能选课系统:自动检测时间冲突,防止重复选课
- 开箱即用:内置演示数据,无需额外配置
- 代码质量高:模块化设计,完整的异常处理和日志记录
祝使用愉快! 🎉
北京邮电大学 · Python程序设计课程实践项目