# scheduleEngine **Repository Path**: AaronCos/schedule ## Basic Information - **Project Name**: scheduleEngine - **Description**: 排课引擎 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-17 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Schedule 项目文档 ## 项目介绍 这是一个基于 Java 的课程安排系统,旨在根据提供的基础规则、资源规则和特殊规则自动生成时间表。项目使用 Spring Boot 框架,结合了灵活的规则配置和自动排课算法。 ## 主要功能 - **规则配置**:支持周期类型、时间范围、教师优先级、学生时间限制等多种规则。 - **自动排课**:根据配置规则自动生成课程时间表。 - **节假日处理**:自动跳过节假日并支持周末判断。 - **时间窗口生成**:根据规则生成具体的时间段安排。 ## 项目结构 - `ScheduleApplication.java`:Spring Boot 启动类。 - `ScheduleRuleController.java`:提供保存排课规则的 REST 接口。 - `ScheduleRuleConvertUtil.java`:规则转换工具类,用于将规则转换为 JSON。 - `ScheduleService.java`:排课服务类,包含自动生成时间表的核心逻辑。 - `TimeWindowGenerator.java`:时间窗口生成工具类。 - `HolidayUtil.java`:节假日判断工具类。 - `entity` 包:包含规则和时间窗口的实体类。 ## 使用说明 ### 启动项目 1. 确保已安装 JDK 1.8 或更高版本。 2. 使用 Maven 构建项目: ```bash mvn clean install ``` 3. 启动 Spring Boot 应用: ```bash java -jar target/schedule-0.0.1-SNAPSHOT.jar ``` ### 接口调用示例 调用 `/clazz/saveScheduleRule` 接口保存排课规则: ```http POST /clazz/saveScheduleRule HTTP/1.1 Content-Type: application/x-www-form-urlencoded cycleType=daily&weekdays=1,2,3,4,5&startTime=08:00&endTime=17:00&totalPeriod=10&periodDuration=45&startDate=2023-09-01&endDate=2023-12-31&holidayAvoid=true&teacherPriority=math,english&studentTimeConstraint=true&failHandleType=skip ``` ## 贡献指南 欢迎贡献代码!请遵循以下步骤: 1. Fork 项目。 2. 创建新分支。 3. 提交 Pull Request。 ## 许可证 本项目遵循 MIT 许可证。详情请查看 [LICENSE](LICENSE) 文件。