程序聚合 软件案例 基于Web的在线学习系统的设计与实现

基于Web的在线学习系统的设计与实现

2026-05-10 14:08:26
行业:在线教育
载体:网站
技术:Python、FastAPI、Vue

业务和功能介绍

一、立项背景与目标
随着编程教育的普及,高校和培训机构对在线化教学管理的需求持续增长。传统教学模式中,课程资源分散、作业批改依赖人工、学习进度难以追踪,既增加了教师的管理负担,也使学生缺乏及时的反馈机制。
本系统针对上述问题,以"编程学习"为核心场景,构建一套面向教师和学生双角色的在线教育平台。
主要目标:
支持教师完成课程创建、章节管理、班级组织、作业发布的全流程管理
支持学生完成视频学习、进度追踪、在线作答、代码提交与即时评测的完整学习闭环
通过安全沙箱实现 Python、C、Java 三种语言的自动代码评测,替代人工批改
通过防刷课机制保障学习行为的真实性,通过统计分析为教学决策提供数据支撑

二、软件功能与核心功能模块
系统分为六个核心模块:
身份认证模块 支持学生和教师两种角色注册,基于邮箱密码登录,使用 JWT 令牌进行全局鉴权。所有接口均需携带有效令牌,教师和学生的操作权限在服务端按角色严格隔离。
课程管理模块 教师可创建课程、添加章节(含文字内容和视频链接),支持 HTML5 原生视频和 B 站嵌入两种播放形式。学生可浏览课程列表、进入章节学习,支持关键词搜索和按班级筛选课程。
班级管理模块 教师创建班级时自动生成邀请码,学生凭邀请码加入班级。班级与课程、作业关联,教师可在班级内发布公告、管理成员、查看班级整体成绩报表。
作业管理模块 教师以课程为单位创建编程作业,配置题目描述、截止时间、前置章节要求和测试用例(含公开样例和隐藏测试点)。学生在作业页面使用内置代码编辑器编写代码,提交后立即触发自动评测,实时返回每个测试点的通过情况、执行时间和错误信息。
代码执行安全沙箱(核心子模块) 支持 Python、C、Java 三种语言。执行前进行静态安全检测(危险函数黑名单、危险头文件、内联汇编、宏别名绕过、格式化字符串漏洞等),编译阶段加入多重 GCC 加固选项,运行阶段限制内存(128MB)、超时(5秒)、最大输出(1MB)和并发数(5个),防止恶意代码危害服务器。
学习进度与防刷课模块 实时记录学生视频观看进度,采用四层防刷课机制:更新频率限制(间隔2秒)、单次进度增幅限制(不超过5%)、观看速度限制(不超过2倍速)、最小学习时长校验(至少观看视频时长的30%)。前端记录实际观看时间段,区分有效观看与拖拽快进。
成绩统计分析模块 学生可查看个人在各课程中的作业通过率和学习进度;教师可查看班级整体成绩分布、各作业的提交情况对比,支持数据导出。

三、业务流程与功能路径描述
教师发布课程和作业的路径
教师注册登录后,在课程列表创建课程并逐章添加内容(文字说明或视频链接,同时填写视频时长供防刷课使用)。创建班级并获得邀请码,将课程添加至班级。在课程详情页发布作业,配置题目、截止时间和测试用例,可设置该作业要求学生先完成指定章节的学习。
学生学习并

项目实现

一、整体架构与设计思路
架构模式
系统采用前后端分离架构。后端基于 Python FastAPI 框架提供 RESTful API,前端基于 Vue 3 + Vite 构建单页应用,通过 Axios 调用后端接口。两端完全解耦,后端仅负责数据处理和业务逻辑,前端负责页面渲染和用户交互。
设计思路
核心设计思路是"按角色隔离、按层防护"。用户分为教师和学生两种角色,所有接口在服务端根据 JWT 令牌中的角色信息进行权限校验,前端只做展示层的条件渲染,不承担安全职责。安全防护采用纵深防御策略,从数据入口到代码执行形成多道防线,不依赖单一机制。
各模块技术栈
身份认证模块:后端使用 FastAPI + python-jose 实现 JWT 令牌签发与校验,密码通过 bcrypt 哈希存储;前端将令牌存入 localStorage,每次请求通过 Axios 拦截器自动附加 Authorization 头。
课程与章节模块:后端使用 SQLAlchemy ORM 管理 Course 和 Chapter 两张表,外键关联并配置级联删除;前端 ChapterView.vue 接入 HTML5 Video API 和 B 站 iframe 嵌入,处理两类视频源的进度追踪差异。
班级管理模块:后端通过多对多中间表 student_classroom 管理学生与班级的关联,自动生成唯一邀请码;前端在个人中心页分角色展示创建或加入入口。
作业与代码评测模块:后端 assignment.py 路由接收提交请求后,调用 code_executor.py 中的 CodeExecutor 类完成安全检测和沙箱执行。前端作业页集成 CodeMirror 代码编辑器,支持 Python、C、Java 三语言语法高亮和代码模板。
代码执行沙箱:Python 执行使用 RestrictedPython 字节码重写进行语法级沙箱,配合进程资源限制;C 语言通过 GCC 编译期选项(含 -fstack-protector-strong、-D_FORTIFY_SOURCE=2、-Werror=format-nonliteral 等)加固;Java 通过 JVM 参数 -Xmx128m 和 -Xss8m 限制堆内存与线程栈。三种语言均使用独立临时目录隔离,执行后自动清理。
学习进度模块:后端 progress.py 存储每个学生对每个章节的进度百分比、开始时间戳和完成标记;前端实时记录视频观看时间段并合并去重,计算有效观看比例,定期上报后端并触发防刷课多层校验。
统计分析模块:基于 Submission 和 Progress 表做聚合查询,为教师提供班级成绩分布报表,为学生提供个人学习进度汇总。
数据库:使用 MySQL,SQLAlchemy 作为 ORM 层,Alembic 管理数据库迁移版本。


示例图片视频


哔哔
15天前活跃
方向: 后端-Python、前端-Web前端、
交付率:100.00%
相似推荐
Java 应用集群迁移与 Elasticsearch 数据同步
一、背景与目标 客户因业务调整,需要将现有生产环境的网站服务及数据完整迁移至新服务器。涉及约 10 个 Java 网络应用程序及配套的搜索、消息队列服务。目标是在保证数据完整性的前提下,实现业务的平滑割接,确保迁移后服务可正常访问。 二、功能模块 1.全量服务迁移: 涵盖 Elasticsearch 7.8.0 搜索引擎、Nginx 反向代理、RabbitMQ 消息队列及 Redis 缓存服务的部署与配置还原。 2.Java 应用部署: 迁移并配置 10 个左右的 Java 后端应用,恢复其 JVM 参数及配置文件。 3.数据一致性保障: 执行数据库与索引数据的导出导入操作,确保新旧环境数据一致。
CentOS7 Docker 基础运行环境搭建与组件部署
客户需要在单台 CentOS 7 服务器上快速构建一套标准化的后端开发与运行环境。目标是替代繁琐的手动安装过程,通过容器化技术统一部署 MySQL、MongoDB、Redis、Kafka、Zookeeper、MinIO 等中间件,并预置 GoLang 开发环境,确保环境的一致性和可移植性。 功能模块: 1.中间件容器化: 集成 MySQL 5.7+、MongoDB 6.0+、Redis 7.0+、Kafka 及 Zookeeper 等核心组件,通过 Docker Compose 进行统一编排启动。 2.对象存储服务: 部署 MinIO 对象存储,用于非结构化数据的存储测试。 3.环境初始化: 编写初始化脚本,自动完成各组件的用户名密码配置(如 mysql/mongodb/redis/minio 统一认证),并安装 GoLang 1.18 及 Git 工具链,交付即可用的基础镜像环境。
考霸APP
面向小学、初中、高中学生,主打本地名校真题、同步教材、AI 智能刷题,题库超 350 万道,适配人教版、北师大版等主流教材版本。 核心功能 本地真题资源:名校月考、联考、教研室统考、分班考试卷,贴合本地考情 视频讲解:试卷、难题配套名师视频,支持投屏观看 AI 错题本:自动归集错题,按知识点分类;AI 举一反三推送同类变式题,做一道通一类;学情统计,定位薄弱知识点 音频磨耳朵:语文、历史、道法等文科考点音频,通勤碎片时间背诵记忆 同步教材练习:同步课本章节预习、课后巩固,试卷支持下载打印 PDF 备考计划:寒暑假提分计划、一轮二轮复习、中考真题专项训练
微信小程序商城
本项目围绕微信小程序商城及服务业务场景进行开发,集商品展示、在线预约、订单管理、微信支付、用户中心、服务管理和数据统计等功能于一体。用户可通过小程序完成商品浏览、服务预约、订单提交、在线支付及订单查询等操作,企业则可通过管理后台统一管理商品、服务、用户、订单、支付记录及运营数据,并可根据后续业务需求扩展会员、优惠券、积分、物流配送、消息通知及第三方系统接口等功能。
山姆拼团小程序
一、立项背景和目标 山姆会员店商品多为大容量家庭装,个人/小家庭用户常面临单品分量过大、不易储存或单独购买起送门槛高的问题。本项目旨在打造一款专为山姆商品设计的“社区/同城拼单与分装小程序”,支持用户快速发起拼单、凑单分装、分摊会员优惠与配送费,降低购买门槛,提升商品流通与履约效率。 二、软件功能与核心功能模块 1. 商品与拼团管理模块:支持山姆商品目录展示、拼单发起(支持按份数/按件拆分拼团)、拼团时效倒计时与成团状态流转。 2. 订单与支付分账模块:集成微信支付与预授权机制,支持成团自动扣款、拼团失败自动原路退款及差额多退少补。 3. 履约配送与自提核销:支持团长代收分装、同城配送对接、社区自提点选择及到货动态取件码核销。 4. 社交裂变与通知提醒:提供拼团海报一键生成、微信群转发分享及基于模板消息的成团/发货进度实时提醒。 三、业务流程与功能路径 团长/用户选择山姆商品并发起拼单 -> 设定拼团规则(成团人数/件数/有效时间)并分享至微信群或好友 -> 参团成员加车支付参团 -> 满员触发成团事件与采购通知(未满员超时自动退款) -> 商品到货团长分装/核销自提 -> 完成订单闭环。
帮助文档   Copyright @ 2021-2024 程聚宝 | 浙ICP备2021014372号
人工客服