# 学习课程计划的辅助编排系统 **Repository Path**: lucky-noah/schedule ## Basic Information - **Project Name**: 学习课程计划的辅助编排系统 - **Description**: 学习课程计划的辅助编排系统 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2023-09-18 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # **学习课程计划的辅助编排系统** ## 介绍 ### 【问题描述】 以**北京工业大学计算机学院专业课及专业选修课**为背景,实现课程计划的辅助编排。 - 学生在**一个学期可以同时选学多门课程**,同一学期内的各门课程之间必须不能存在“先修课”与“后续课”的**次序关系**。通过辅助编排系统制定课程计划,使学生可以按照规划完成课程的学习任务。 - 构造课程的**有向无环图**,弧表示课程之间必须遵循的优先次序关系。通过扩展已有的拓扑排序算法,进行课程计划的辅助制订,将所列课程划分为**子集**(不同学期的课程计划),使任意两门有次序关系的课程分属于不同的子集,每个子集中包含的顶点对应着同一学期开设的课程,称这种扩展拓扑排序的划分结果为“拓扑子集的划分”,其结果可以辅助完成教学计划的编排和选课。 ### 【基本要求】 1. 调研北京工业大学计算机科学与技术专业应该开设的课程,以此**建立构造课程的有向无环图**,求解拓扑子集划分的参考解。 2. 可以对拓扑子集划分的结果进行调整。一般情况下,直接的课程编排结果可能过于“密集”(某学期内总课时过多,使学生的负担难以承受),有必要对所求的课程与学期的编排表进行**人为的调整**,即**适度拉长修业的时间**,得到既满足课程之间的次序关系,又不使学生负担过重(限制每学期的学分总数)。最终形成满意的学期与课程编排表,以供参考。 3. 建立有向无环图以及课程编排结果应当配以**图形界面**;子集划分结果的人工调整也应提供友好的界面支持 ### 【测试数据】 - 调研计算机学院开设的有关专业课和专业选修课情况,设计一个理想的**课程清单** - 梳理各门课之间的**优先关系** - 核定每学期可以承受的**总学时数** 以此为测试的原始数据(总门数不少于20门,每学期学时数上限定为280,1学分合16学时)。 ### 【功能扩展】 - **课程后调**:直接求得的拓扑子集划分方案,每学期课时量总和往往大于学校要求的学期课时数,这就需要把某些课程调整到后续学期。某门课向后调整,有可能引出新的制约冲突,需要再次启动划分算法得出合情理的划分方案。 - **图形界面**:图形界面显示与人工调整的界面处理需要一定的技巧,如:可以由用户自由选择同一学期内的感兴趣的课程;灵活设置一些参数,如:每学期学时数的上限值,并根据其调整选课计划。 - **数据输入**:原始数据的输入可以通过适当的界面,输入有向弧的顶点对的办法来完成。实际的数据应能以文件的形式存储,以备再次启动本辅助编排系统时导入。 ### 【检查计划】 - **第一次检查** [第6周星期一5-8节] - 问题需求分析,系统的基本功能设计 - 数据结构设计 - 程序结构原型 - **第二次检查** [第11周星期一5-8节] - 使用自带的数据,演示程序的功能(代码,测试数据) - **第三次检查** [第15周星期一5-8节] - 文档齐全 - 根据测试数据,运行程序;演示时适当地讲解,并且回答问题 - 扩展功能的演示