🐋南哪选课助手 当前组数: {{ groups.length }} 本 Web App 所有内容在用户端计算, 不存储用户密码. 所有内容仅为算法生成, 不作为完全参考.

访问人数: {{ visitCount }} GitHub stars

添加备选课程组

搜索结果 ({{ filteredSearchResults.length }})

提示: PC端按住Shift或移动端拖拽可进行多选; 排课规划时,将要求每个课程组中至少满足一门课程。
{{ searchResults.length === 0 ? '未找到符合条件的课程。' : '当前筛选条件下没有课程。' }}

我的课程组 ({{ groups.length }})

提示: PC端按住Shift或移动端拖拽可进行多选; 是否可逃仅影响分数机制, 对应课程仍将出现在课程表中
暂无课程组,请先去搜索添加或批量导入。
组 {{ idx + 1 }}: {{ getGroupName(group) }} ({{ getActiveCount(group) }}/{{ group.candidates.length }} 选中) (自定义日程)

偏好设置





课程分布:
限制为:
适用日期:
请先生成方案。

推荐方案 (显示 {{ schedules.length }} 个 / 共 {{ totalCount }} 个可能方案)

第 {{ currentScheduleIdx + 1 }} 方案课表

周次:
总学分: {{ schedules[currentScheduleIdx].stats?.total_credits }} 总学时: {{ schedules[currentScheduleIdx].stats?.total_hours }} 周平均学时: {{ schedules[currentScheduleIdx].stats?.avg_weekly_hours }} 实际每周学时: {{ schedules[currentScheduleIdx].stats?.actual_avg_weekly_hours }} 活跃周次: {{ schedules[currentScheduleIdx].stats?.week_span }}
⚠️ 未排课程 (冲突): {{ schedules[currentScheduleIdx].missing_course_names.join(', ') }}
评分详情: 基准分: 100 {{ key }}: {{ val >= 0 ? '+' : ''}}{{ val.toFixed(2) }} = {{ parseInt(schedules[currentScheduleIdx].score) }}
节次 周一周二周三周四周五周六周日
{{ node }}
{{ getCell(currentScheduleIdx, currentWeek, day-1, node-1).name }}
{{ getCell(currentScheduleIdx, currentWeek, day-1, node-1).teacher }}
{{ getCell(currentScheduleIdx, currentWeek, day-1, node-1).location }}
{{ getCell(currentScheduleIdx, currentWeek, day-1, node-1).comment }}
可选老师+{{ getCell(currentScheduleIdx, currentWeek, day-1, node-1).alternatives.length - 1 }}

更新记录 (v1.1)

  • v1.1 (当前版本):
    • 新增“集中半天”排课偏好选项
    • 新增自定义日程,可添加非课程安排
    • 优化课程列表展示,可自动折叠为卡片。
    • 爬取了新学期数据
  • v1.0:
    • 引入基于节次掩码的排课算法

{{ currentAltCourse ? currentAltCourse.name : '' }} - 可选老师

{{ alt.teacher }}
{{ alt.location_text }}
{{ alt.code }}

批量导入课程

请粘贴来自"学期培养方案"-查看详情-切换学年模式-第x学期的完整表格内容
或者至少每行要有课程号、课程名
请务必检查课程组内选中是否都为所需, 否则导致规划错误.

{{ importStatus }}

添加自定义日程

例如:周一 1-2节 1-16周, 周三 3-4节 1-16周(单)
将在生成的课表中以此颜色显示