Secret Tools

课表转换

将学校给的各种格式的课表转换为系统的课程班导入格式.

怎么判断我是哪种课表?

大课表

1. 确保课表的基本格式与模板一致

a. 请阅读模板里的注释.

b. 模板的课程单元格内容只是示例, 实际上可通过课程格式/班级格式来支持任意格式.

2. 选择课表文件 (支持多 sheet)

3. 设定课程单元格格式

怎么设定单元格格式?

如果课表中还有第二种课程单元格格式, 可在此设置补充格式, 当课程和主格式不匹配时, 系统将尝试用补充格式进行解析.
注意: 要以更复杂的格式作为主格式, 更简单的格式作为补充格式. 补充格式必须至少包含两个字段, 比如课程和老师.

如果一个单元格中有多个课, 可在此设置分隔符.

4. 设定班级单元格格式

举例: 班级 或 班级-教室. 注意区分中英文标点, 换行可用 % 标记.
注意: 当课程单元格是合并单元格时 (即该课程对应多个班级), 该课程的班级字段会留空

排课表

1. 确保课表的基本格式与模板一致

a. 请阅读模板里的注释.

b. 模板的课程单元格内容只是示例, 实际上可通过课程格式/班级格式来支持任意格式.

2. 选择课表文件 (支持多 sheet)

3. 设定课程之间的分隔符

4. 设定课程格式

a. 每个单元格中的内容首先会按分隔符切分为多段文本, 然后每一段会按你提供的课程信息格式来提取课程, 班级和老师.

b. 举例: 如果每段文本形如 高二数学-4班/王伟//38人/08:00-09:00, 则格式应设置为 课程-班级/老师/, 并勾选 "分段结尾有冗余信息", 老师名字之后的部分会被自动忽略.

c. 注意格式最后的结束符 (即本例中的 /) 很重要, 用于判断最后一个信息 (本例中是老师) 在哪结束, 除非每段文本形如 高二数学-4班/王伟, 没有冗余部分, 则无需结束符也无需勾选 "分段结尾有冗余信息".

d. 注意区分中英文标点, 换行可用 % 标记, 空格可用 $ 标记.

多课表

1. 确保课表的基本格式与模板一致

a. 请阅读模板里的注释.

b. 模板的课程单元格内容只是示例, 实际上可通过课程格式/班级格式来支持任意格式.

2. 选择课表文件 (支持多 sheet)

3. 设定课表区域

每个小课表有行 (包括标题; 必须统一; 请注意是实际行数, 当课程由多格合并而来时容易填错)

小课表之间隔个空行 (必须统一)

4. 设定课程单元格格式

怎么设定单元格格式?

如果课表中还有第二种课程单元格格式, 可在此设置补充格式, 当课程和主格式不匹配时, 系统将尝试用补充格式进行解析.
注意: 要以更复杂的格式作为主格式, 更简单的格式作为补充格式. 补充格式必须至少包含两个字段, 比如课程和老师.

5. 设定班级单元格格式 (即小课表标题)

举例: 班级 或 班级-教室. 注意区分中英文标点, 换行可用 % 标记.

分班工具

分班小工具

0-a. 不同场景的支持

定班: 可以通过拆分科目来实现, 比如 1 班固定物理, 可以把 1 班学生的「物理」科目改为「物理1班」或其他名称, 并在模板的第二个 sheet 里也做同样的科目拆分.

平行班: 如果提供了科目成绩, 算法在对该科目进行分班时会尽量保证各班平均分相近. 如果没有成绩或者不需要分平行班, 把模板里的科目成绩列删掉即可.

分层: 结合定班和平行班即可实现分层. 假设物理的分层要求是: 划 1 个 A 班, 剩下都分为平行班. 那么首先要在输入数据中添加物理成绩,然后通过改科目的方式把「物理A班」定下来, 让算法自动把剩下的物理学生分为平行班即可.

0-b. 算法说明

a. 算法会进行 9999 轮随机尝试, 或跑满 10 分钟, 最后给出其中的最优解 (定义: 掉人最少 + 同科目各班的人数差和平均分差尽量小).

b. 如果分班结果里同科目的各班人数相差很多, 可以把班级最大人数下调后再试.

c. 如遇问题, 请在飞书的分班算法群里反馈.

1. 确保数据的内容格式与模板一致

请阅读模板里的注释.

2. 选择文件

3. 设置课位数 (可不填, 默认为学生最大选科数)