一、概览
SPEL 是一项用于在不同智教软件之间交换座位表信息的格式,主要用于班级内座位表的存储、编辑、展示与迁移。
二、现实问题
目前的智教软件对于学生信息的处理正逐渐区域完善,但是座位表这一直观展示班级内学生分布情况的数据,却未被智教软件广泛兼容。我认为难点如下:
- 座位表排列方式多变:目前班级内座位大多以组和列为界,但是左 / 右护法与后排不融入分组体系的同学则难以维护;
- 座位表轮换频繁并且规则丰富:座位表大多 12 周轮换一次,但不同位置的座位轮换逻辑不一致(如在组内的同学常平移至相邻组,左 / 右护法的同学常互换或不轮换),并且无法满足某些教师的
猎奇的不常见的轮换方式。
三、格式详情
目前格式定义如下:
interface Seat { // 座位位置
row: int, // 行
column: int, // 列
} // 特别地,若 row 为 0,则代表该学生为护法,此时 column 为 1 则为右护法,为 -1 则为左护法
interface SeatingMapNode { // 座位表节点,代表某学生的座位
studentId: String, // 学生唯一 ID
seatChangeList: Seat[], // 学生座位轮换顺序列表
currentSeatIndex: int, // 当前学生的座位在轮换顺序列表里的位置
}
enum HallwayType { // 走廊类型
Row, // 分隔两行的走廊
Column, // 分隔两列的走廊
}
interface Hallway { // 走廊
position: int, // 走廊在哪一行 / 列的上侧 / 右侧
hallwayType: HallwayType // 走廊类型
}
interface SpelSeatingPlan { // 座位表
id: string, // 座位表 ID
name: string, // 座位表名称
platformPosition: Seat, // 讲台位置
platformWidth: int, // 讲台宽度
seats: SeatingMapNode[], // 所有座位节点
hallways: Hallway[], // 所有走廊
}
数据将被转为 JSON。
四、格式优势
SPEL 具有以下优势:
- 取消组分界,座位只以行列记,省去了单独维护左 / 右护法与某些最后排同学的繁琐;
- 每位学生可以单独设置轮换规则,避免普通维护方式的局限性。
五、已知限制
SPEL 目前存在以下限制:
- 软件支持少,需要社区共建生态
- 仅存储座位表,需要其他学生存储格式的配合
欢迎各位开发者通过编写各语言实现、在软件中集成 SPEL 等方式,共建软件生态!