引言
混合式教学(Blended Learning)是目前公认的效果最好的教学模式之一,它将录播、直播、练习、考试有机结合,覆盖"教 → 学 → 练 → 考"全链路,比单一的录播或直播效果显著更好。
但实现混合式教学有一个现实障碍:这些功能分散在不同的系统和工具中——录播用视频网站,直播用腾讯会议,练习用第三方题库,考试用另一个工具——管理成本极高,学员体验割裂。
织码在线教育系统将这四个核心能力整合在一个平台内,本文从技术架构和功能设计视角,详细介绍混合式教学全链路的实现方案。
一、混合式教学的四个核心环节

教(录播 + 直播)
↓
学(自主学习:视频 + 图文 + 文档)
↓
练(题库练习:刷题 + 错题本)
↓
考(在线考试:智能组卷 + 防作弊 + 自动评分)
↓
证(完成颁证)
四个环节形成完整闭环,每个环节都在同一个平台内完成,学员无需在多个工具间切换。
二、课程内容:三种形态自由组合

织码系统中,一个课程可以包含三种类型的课时:
| 课时类型 | 说明 | 适用场景 |
|---------|------|---------|
| 视频课时(录播) | 上传到 VOD 的点播视频 | 基础知识讲解,可反复观看 |
| 直播课时 | 配置直播间的实时互动课 | 答疑、实操演示、集中讲解 |
| 图文课时 | 富文本内容(文字+图片+代码块等) | 知识点补充、参考资料 |
三种形态在同一课程的大纲树中混合排列,学员按顺序学习:
课程:《Python 数据分析实战》
│
├── 第一章:基础准备
│ ├── 1.1 环境搭建(视频,15分钟)
│ ├── 1.2 Jupyter Notebook 使用指南(图文)
│ └── 1.3 直播答疑 - 第一章(直播,2024-10-15 20:00)
│
├── 第二章:Pandas 数据处理
│ ├── 2.1 DataFrame 基础操作(视频,32分钟)
│ ├── 2.2 数据清洗实战(视频,28分钟)
│ └── 2.3 实战项目说明(图文)
│
└── 第三章:数据可视化
├── 3.1 Matplotlib 入门(视频,20分钟)
└── 3.2 直播实战 - 可视化案例(直播,2024-10-22 20:00)
**录播讲基础,直播做答疑,图文当补充** — 三种形态各司其职,协同发挥最大教学效果。
课时数据结构
public class CourseLesson {
private Long lessonId;
private Long courseId;
private Long chapterId;
private String title;
private LessonType type; // VIDEO / LIVE / RICHTEXT
private Integer sortOrder;
private Integer duration; // 时长(秒),视频和直播有效
// VIDEO 类型
private String vodVideoId; // 阿里云 VOD 视频ID
// LIVE 类型
private Long liveRoomId; // 关联直播间ID
private LocalDateTime liveStartAt; // 直播开始时间
// RICHTEXT 类型
private String content; // 富文本内容(HTML)
private Boolean isFreePreview; // 是否允许免费试看
}
三、题库系统:批量建库 + AI 出题
3.1 题型设计
系统支持四种标准题型,覆盖大多数考试场景:
| 题型 | 说明 | 自动评分 |
|------|------|---------|
| 单选题 | 4-5 个选项,选一个 | ✅ 支持 |
| 多选题 | 4-6 个选项,选多个 | ✅ 支持 |
| 判断题 | 对/错二选一 | ✅ 支持 |
| 问答题 | 自由文本作答 | ❌ 需人工批阅 |
每道题包含:题干、选项、正确答案、解析(答错后展示)、难度等级(简单/中等/困难)、知识点标签。
3.2 Excel 批量导入
题库建设最耗时的工作是手动录题,批量导入功能将效率提升数倍:
Excel 模板结构:
| 题型 | 题干 | 选项A | 选项B | 选项C | 选项D | 正确答案 | 难度 | 知识点 | 解析 |
|------|------|-------|-------|-------|-------|---------|------|--------|------|
| 单选 | ... | ... | ... | ... | ... | A | 中等 | 数据结构 | ... |
| 判断 | ... | 正确 | 错误 | | | A | 简单 | 基础语法 | ... |
导入时后端进行格式校验,错误行单独报告,支持修正后重新导入(不重复创建已有题目)。
3.3 AI 辅助出题
AI 出题功能集成了大语言模型,帮助快速生成题目草稿:
@PostMapping("/api/question/ai-generate")
public Result<List<QuestionDraftVO>> aiGenerate(@RequestBody AiGenerateDTO dto) {
// dto 包含:知识点描述、题型、难度、数量
String prompt = buildPrompt(dto);
// 调用 LLM 生成题目
String rawResponse = llmService.generate(prompt);
// 解析 LLM 返回的结构化 JSON
List<QuestionDraftVO> drafts = parseQuestions(rawResponse);
// 返回草稿(需人工审核后才正式入库)
return Result.success(drafts);
}
private String buildPrompt(AiGenerateDTO dto) {
return String.format("""
请根据以下要求生成考试题目,以 JSON 数组格式返回:
- 知识点:%s
- 题型:%s
- 难度:%s
- 数量:%d 道
每道题包含:stem(题干)、options(选项列表)、answer(正确答案)、explanation(解析)
""",
dto.getKnowledgePoint(), dto.getQuestionType(),
dto.getDifficulty(), dto.getCount()
);
}
AI 生成的题目标记为"草稿"状态,管理员审核通过后才正式入库,保证题目质量。
四、智能组卷:规则驱动的自动抽题

4.1 组卷规则配置
public class ExamPaperRule {
private Long examId;
private Integer totalScore; // 总分
private Integer passingScore; // 及格分
private Integer durationMinutes; // 考试时长(分钟)
private List<QuestionGroupRule> groupRules; // 题型分组规则
}
public class QuestionGroupRule {
private QuestionType questionType; // 题型
private Integer count; // 抽题数量
private Integer scorePerQuestion; // 每题分值
private String difficulty; // 难度要求(可选)
private List<String> tags; // 知识点标签限定(可选)
private Long questionBankId; // 从哪个题库抽取
}
// 示例:100分试卷的组卷规则
// 单选20题×2分=40分,多选10题×3分=30分,判断10题×3分=30分,合计100分
4.2 自动抽题逻辑
@Service
public class ExamPaperGenerateService {
public ExamPaper generate(ExamPaperRule rule) {
List<Question> allQuestions = new ArrayList<>();
for (QuestionGroupRule groupRule : rule.getGroupRules()) {
// 查询满足条件的题目
List<Question> pool = questionRepo.findByCondition(
groupRule.getQuestionBankId(),
groupRule.getQuestionType(),
groupRule.getDifficulty(),
groupRule.getTags()
);
if (pool.size() < groupRule.getCount()) {
throw new BizException("题库题目不足,无法满足组卷要求");
}
// 随机抽取指定数量的题目
Collections.shuffle(pool);
allQuestions.addAll(pool.subList(0, groupRule.getCount()));
}
// 组装试卷
ExamPaper paper = new ExamPaper();
paper.setExamId(rule.getExamId());
paper.setQuestions(allQuestions);
paper.setGeneratedAt(LocalDateTime.now());
paper.setVersion(UUID.randomUUID().toString()); // 每次生成不同版本,防作弊
return paperRepo.save(paper);
}
}
每次生成的试卷记录版本号,同一考试中不同学员拿到的是不同的题目抽取结果,有效防止抄答案。
五、在线考试:完整考试流程
5.1 考试状态机
PENDING(待开始)
↓ 学员点击"开始考试"
IN_PROGRESS(考试中)
↓ 学员点击"提交" 或 时间到达自动提交
SUBMITTED(已提交)
↓ 系统评分(客观题即时)
GRADED(已评分)
↓ 教师批阅主观题(如有)
FINISHED(已完成)
5.2 考试时长管控
服务端维护考试开始时间,防止客户端篡改计时:
// 考试进行中的心跳检测(每60秒客户端上报一次)
@PostMapping("/api/exam/heartbeat")
public Result<ExamHeartbeatVO> heartbeat(@RequestBody ExamHeartbeatDTO dto) {
ExamRecord record = examRecordService.getById(dto.getRecordId());
// 校验考试状态
if (record.getStatus() != ExamStatus.IN_PROGRESS) {
return Result.fail("考试已结束");
}
// 计算剩余时间
long elapsedSeconds = Duration.between(record.getStartAt(), LocalDateTime.now()).getSeconds();
long remainingSeconds = record.getExam().getDurationSeconds() - elapsedSeconds;
if (remainingSeconds <= 0) {
// 时间到,强制提交
examService.forceSubmit(record.getRecordId(), "TIME_UP");
return Result.success(ExamHeartbeatVO.builder().status("FORCE_SUBMITTED").build());
}
return Result.success(ExamHeartbeatVO.builder()
.remainingSeconds(remainingSeconds)
.status("IN_PROGRESS")
.build());
}
5.3 错题本:考后自动收录
每次考试结束,做错的题目自动写入该学员的错题本:
@EventListener
public void onExamFinished(ExamFinishedEvent event) {
List<ExamAnswer> wrongAnswers = event.getAnswers().stream()
.filter(a -> !a.isCorrect())
.collect(Collectors.toList());
// 批量写入错题本(去重:已有的错题更新记录时间,不重复创建)
wrongAnswers.forEach(answer -> {
wrongQuestionRepo.upsert(WrongQuestion.builder()
.userId(event.getUserId())
.questionId(answer.getQuestionId())
.wrongCount(1) // 累加错误次数
.lastWrongAt(LocalDateTime.now())
.lastExamId(event.getExamId())
.build());
});
}
学员可以在 App 端查看错题本,按科目/题型筛选,针对性地复习薄弱环节。这对考证培训尤为重要——**考前刷错题比盲目刷题效率高数倍**。
六、混合式教学的整合效果

将录播、直播、题库、考试整合在一个平台,带来的不只是"方便",更是**教学数据的打通**:
| 数据维度 | 整合后能做什么 |
|---------|--------------|
| 视频观看 vs 考试成绩 | 分析"看了录播"和"考试通过率"的相关性,验证教学内容有效性 |
| 直播参与 vs 学习效果 | 参加直播答疑的学员和纯看录播的学员,谁的完课率和通过率更高 |
| 题目正确率 vs 课程章节 | 哪个知识点的题目错误率高 → 对应的录播章节点击率是否也低 |
| 错题分布 vs 课程设计 | 某知识点错题集中 → 说明该知识点在课程中的讲解时间/深度不够 |
这种数据联动让"混合式教学"真正进入可迭代的科学改进循环,而不是各环节数据孤立、只能凭经验优化。
七、总结
混合式教学系统的技术核心是:
1. **课程内容多形态**:录播 + 直播 + 图文在同一课程大纲内统一管理,学员无需切换工具
2. **题库体系完整**:四种题型 + 批量导入 + AI 出题,快速建立高质量题库
3. **智能组卷灵活**:规则驱动的随机抽题,每次生成不同版本,兼顾严肃性和效率
4. **考试管控严格**:防切屏 + 时长校验 + 违规记录,线上考试达到接近线下的严肃性
5. **错题本形成复习闭环**:考试数据不只是用来出成绩,还驱动后续的针对性复习
这套体系既适合企业内训(特别是需要考试认证的合规培训),也适合教培机构(需要完整教-练-考链路的备考培训)。
**如有关于混合式教学系统设计的问题,欢迎评论区交流。**
411

被折叠的 条评论
为什么被折叠?



