一个功能强大的课程表管理核心模块,专注于提供灵活且可扩展的课程表管理功能。
- 灵活的课程管理:支持单双周排课,灵活应对各种教学安排
- 临时调课支持:内置临时调课机制,轻松处理特殊情况
- 多维度管理:
- 课程时间段管理
- 科目信息管理
- 教师课程关联
- 课表导入导出
- 类型安全:完整的 TypeScript 类型支持
- CSES 格式支持:支持导入/导出 CSES 课表格式
npm install schedule-kernelimport { ScheduleKernel } from 'schedule-kernel';
// 创建新的课程表实例
const kernel = new ScheduleKernel('config.json');const lessonManager = kernel.lessonManager;
// 获取今日课程
const todayLessons = lessonManager.getTodayLessons('all');
// 编辑课程(按名称)
lessonManager.editLesson(
1, // 星期一
2, // 第三节课
'物理', // 科目名称
'odd' // 单周
);
// 临时调课
lessonManager.swapLessons(
{ dayIndex: 1, lessonIndex: 0 },
{ dayIndex: 2, lessonIndex: 1 },
new Date('2025-06-05'),
true
);const subjectManager = kernel.subjectManager;
// 创建新科目
subjectManager.createSubject({
name: '物理',
type: 'subject',
teacherName: '张老师',
shortName: '物理'
});
// 获取科目信息
const subject = subjectManager.getSubject('物理');const timeManager = kernel.timeManager;
// 创建课程时间段
timeManager.createTimeTargets('上午', {
startTime: '08:00:00',
endTime: '08:45:00'
});
// 获取当前课程状态
const status = timeManager.getCurrentLessonStatus();核心类,用于初始化和管理整个课程表系统。
constructor(configPath: string)- 初始化课程表saveConfig(): boolean- 保存配置到文件setWeekMode(date: Date): void- 设置单双周状态
课程管理器,处理具体的课程安排。
getTodayLessons(weekMode: string): lessonTarget[]- 获取今日课程getTeacherLessons(teacherName: string)- 获取教师课程getSubjectLessons(subjectName: string)- 获取某科目所有课程editLesson(dayIndex, lessonIndex, subjectName, weekMode, week?)- 编辑课程swapLessons(source, target, date?, isTemporary?)- 课程调换createLesson(dayIndex, subjectName, week?)- 新增课程insertLessonAfter(dayIndex, lessonIndex, subjectName, week?)- 插入课程deleteLesson(dayIndex, lessonIndex, week?)- 删除课程
科目管理器,处理科目相关信息。
createSubject(subject: subjectTarget): boolean- 创建科目editSubject(name: string, subject: Partial<subjectTarget>): boolean- 编辑科目deleteSubject(name: string): boolean- 删除科目getAllSubjects(): subjectTarget[]- 获取所有科目getSubject(name: string): subjectTarget | undefined- 获取科目信息
时间管理器,处理课程时间段。
getCurrentLessonStatus()- 获取当前课程状态createTimeTargets(name: string, target: timeTarget): boolean- 创建时间表项editTimeTarget(uuid, targetIndex, startTime, endTime): boolean- 编辑时间段editTimeTargets(uuid, targets): boolean- 编辑时间表项insertTimeTargetAfter(id, index, startTime, endTime): UUID | undefined- 插入时间段deleteTimeTarget(uuid, targetIndex): boolean- 删除时间段deleteTimeTargets(uuid): boolean- 删除整个时间表项
interface lessonTarget {
subjectName: string;
// 其他字段如 timeUuid、cachedName、cachedShortName 可在实际实现中扩展
}
interface subjectTarget {
name: string;
type: "subject" | "activity";
shortName?: string;
teacherName?: string;
extra?: {
outdoor?: boolean;
};
}
interface timeTarget {
startTime: string; // "HH:mm:ss" 格式
endTime: string; // "HH:mm:ss" 格式
}欢迎提交 Issue 和 Pull Request。贡献前请先阅读我们的贡献指南。
该项目采用 LGPL-3.0 许可证。详见 LICENSE 文件。