1. 项目背景与需求分析
兰州信息科技学院作为一所快速发展的应用型本科院校,每年面临着近万名学生的课程安排需求。传统的手工排课方式存在三大痛点:一是教务人员需要花费2-3周时间进行人工排课,期间需要反复调整冲突;二是教室资源利用率不足,经统计平均使用率仅达到65%;三是学生选课冲突率高,每学期约有15%的学生需要申请调课。
基于J2EE的排课系统需要实现以下核心目标:
- 支持多维度约束条件(教师时间偏好、教室容量、课程连续性等)
- 实现冲突自动检测与可视化调整
- 生成最优化的教室资源分配方案
- 提供Web端和移动端的课表查询功能
提示:在高校信息化建设中,排课系统属于典型的多约束条件组合优化问题,需要平衡教学规律、资源利用和个性化需求三大要素。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 J2EE技术选型依据
采用分层架构设计,具体技术栈如下:
- 表现层:JSP+AJAX+ECharts实现动态数据可视化
- 控制层:Spring MVC 5.3.18(支持RESTful API)
- 业务层:Spring 5.3.18(声明式事务管理)
- 持久层:MyBatis 3.5.9 + PageHelper分页插件
- 数据库:MySQL 8.0(InnoDB集群部署)
选择J2EE而非Spring Boot的考虑因素:
- 学院现有教务系统基于J2EE开发,需保持技术栈统一
- 需要精细控制EJB容器的事务管理
- 已有成熟的WebLogic服务器运维团队
2.2 核心算法设计
排课核心算法采用改进的遗传算法实现:
java复制// 染色体编码示例
public class ScheduleGene {
private int courseId;
private int teacherId;
private int classroomId;
private int timeSlot; // 1-35表示周一到周五的7个时段
}
// 适应度函数
double fitness = 1/(1 + teacherConflict + classroomConflict + studentConflict);
算法优化点包括:
- 动态变异概率(初始0.1,迭代后期降至0.01
