基于Flask框架开发的智能排课系统,支持自动读取Excel教师信息并生成合理的课程表。
pip3 install flask pandas openpyxl --break-system-packages
确保有一个名为 test.xlsx 的Excel文件,包含以下列:
| 列名 | 说明 | 示例 |
|---|---|---|
| 教师 | 教师姓名 | 张三 |
| 性别 | 教师性别 | 男/女 |
| 所教科目 | 教授科目 | 数学 |
| 夫妻 | 夫妻关系 | 李四/无 |
| 所教班级 | 教授班级 | 1,2 |
| 周课时 | 每周课时数 | 6 |
python3 start_server.py
python3 app.py
打开浏览器访问:http://localhost:5000
系统采用智能排课算法,具有以下特点:
如果一位教师一周要上6节课,课表有5天上课:
智能排课系统/ ├── app.py # Flask主应用 ├── start_server.py # 启动脚本 ├── test_schedule.py # 测试脚本 ├── test.xlsx # 示例数据文件 ├── requirements.txt # 依赖包列表 ├── README.md # 说明文档 ├── templates/ # HTML模板 │ ├── base.html # 基础模板 │ ├── index.html # 主页模板 │ └── schedule.html # 课程表模板 ├── static/ # 静态资源 │ ├── css/ │ │ └── style.css # 样式文件 │ └── js/ │ └── main.js # JavaScript文件 └── uploads/ # 上传文件目录
GET /api/schedule
返回JSON格式的课程表数据:
{
"schedule": {
"星期一": {
"上午第1节": [
{
"teacher": "张三",
"subject": "数学",
"class": "1"
}
]
}
},
"days": ["星期一", "星期二", "星期三"],
"time_slots": ["上午第1节", "上午第2节", "..."]
}
运行测试脚本验证系统功能:
python3 test_schedule.py
测试内容包括:
端口被占用
解决方案:修改app.py中的端口号或停止占用5000端口的程序
Excel文件读取失败
解决方案:确保Excel文件格式正确,包含必要的列名
依赖包安装失败
解决方案:使用 --break-system-packages 参数强制安装
课程表显示异常
解决方案:检查数据格式,确保周课时为数字,班级用逗号分隔
系统采用模块化设计,可以轻松扩展以下功能:
修改 static/css/style.css 文件可以自定义界面样式。
当前版本使用内存存储,可以扩展为使用SQLite或其他数据库。
本项目采用MIT许可证,详见LICENSE文件。
如有问题或建议,请通过以下方式联系:
注意: 本系统为教育和演示目的开发,在生产环境使用前请进行充分测试。