基于Web的在线学习系统的设计与实现
一、立项背景与目标
随着编程教育的普及,高校和培训机构对在线化教学管理的需求持续增长。传统教学模式中,课程资源分散、作业批改依赖人工、学习进度难以追踪,既增加了教师的管理负担,也使学生缺乏及时的反馈机制。
本系统针对上述问题,以"编程学习"为核心场景,构建一套面向教师和学生双角色的在线教育平台。
主要目标:
支持教师完成课程创建、章节管理、班级组织、作业发布的全流程管理
支持学生完成视频学习、进度追踪、在线作答、代码提交与即时评测的完整学习闭环
通过安全沙箱实现 Python、C、Java 三种语言的自动代码评测,替代人工批改
通过防刷课机制保障学习行为的真实性,通过统计分析为教学决策提供数据支撑
二、软件功能与核心功能模块
系统分为六个核心模块:
身份认证模块 支持学生和教师两种角色注册,基于邮箱密码登录,使用 JWT 令牌进行全局鉴权。所有接口均需携带有效令牌,教师和学生的操作权限在服务端按角色严格隔离。
课程管理模块 教师可创建课程、添加章节(含文字内容和视频链接),支持 HTML5 原生视频和 B 站嵌入两种播放形式。学生可浏览课程列表、进入章节学习,支持关键词搜索和按班级筛选课程。
班级管理模块 教师创建班级时自动生成邀请码,学生凭邀请码加入班级。班级与课程、作业关联,教师可在班级内发布公告、管理成员、查看班级整体成绩报表。
作业管理模块 教师以课程为单位创建编程作业,配置题目描述、截止时间、前置章节要求和测试用例(含公开样例和隐藏测试点)。学生在作业页面使用内置代码编辑器编写代码,提交后立即触发自动评测,实时返回每个测试点的通过情况、执行时间和错误信息。
代码执行安全沙箱(核心子模块) 支持 Python、C、Java 三种语言。执行前进行静态安全检测(危险函数黑名单、危险头文件、内联汇编、宏别名绕过、格式化字符串漏洞等),编译阶段加入多重 GCC 加固选项,运行阶段限制内存(128MB)、超时(5秒)、最大输出(1MB)和并发数(5个),防止恶意代码危害服务器。
学习进度与防刷课模块 实时记录学生视频观看进度,采用四层防刷课机制:更新频率限制(间隔2秒)、单次进度增幅限制(不超过5%)、观看速度限制(不超过2倍速)、最小学习时长校验(至少观看视频时长的30%)。前端记录实际观看时间段,区分有效观看与拖拽快进。
成绩统计分析模块 学生可查看个人在各课程中的作业通过率和学习进度;教师可查看班级整体成绩分布、各作业的提交情况对比,支持数据导出。
三、业务流程与功能路径描述
教师发布课程和作业的路径
教师注册登录后,在课程列表创建课程并逐章添加内容(文字说明或视频链接,同时填写视频时长供防刷课使用)。创建班级并获得邀请码,将课程添加至班级。在课程详情页发布作业,配置题目、截止时间和测试用例,可设置该作业要求学生先完成指定章节的学习。
学生学习并
在线教育