APP下载

基于SSM的“C++微课堂”在线实验平台的设计与实现

2022-07-06姜丽莉孙自梅

现代信息科技 2022年3期

姜丽莉 孙自梅

摘  要:为了保证C++程序设计课程的在线实验教学的质量,文章设计并实现了一个C++在线实验平台。平台采用B/S架构、SSM框架、Tomcat服务器、MySQL数据库等开发工具与技术。系统分为教师端与学生端。教师可以发布实验任务与资源,并实时监督学生的学习进度。学生可以在线观看视频、编辑和编译代码、提交成果等。该系统可以为教师的实验课堂管理提供帮助,同时可以督促学生学习,也为学生实验提供资源和平台。

关键词:SSM;在线学习平台;在线编译

中图分类号:TP311;G434        文献标识码:A文章编号:2096-4706(2022)03-0036-03

Design and Implementation of “C++ Micro Classroom” Online Experimental Platform Based on SSM

JIANG Lili, SUN Zimei

(Nanjing Tech University Pujiang Institute, Nanjing  211200, China)

Abstract: In order to ensure the quality of online experimental teaching of C++ programming design course, this paper designs and implements a C++ online experimental platform. The platform adopts B/S architecture, SSM framework, Tomcat server, MySQL database and other development tools and technologies. The system is divided into teacher client and student client. Teachers can release experimental tasks and resources, and monitor students learning progress in real time. Students can watch videos online, edit and compile code, submit results, etc. The system can provide help for teachers experimental classroom management, supervise students learning at the same time, and provide resources and platforms for students experiments.

Keywords: SSM; online learning platform; online compilation

0  引  言

在國内高校,目前交互平台主要用于远程教学,例如超星学习通、雨课堂、中国大学MOOC等平台[1-3]。平台的功能适合大部分传统课程,但针对具有编程类的实验课程则并没有提供足够的支持。

实验教学对程序设计类课程的教学质量具有至关重要的作用[4],教学效果最终要体现在学生的编程能力上。对实验课程来说,单纯的直播、录播并不能满足教师和学生的需求。教师端需要及时发布实验内容,并能监督学生实验,及时获取学生的实验成果和进度。学生端需要及时提交学习成果,并在实验过程中与教师进行交互。

“C++面向对象程序设计”是计算机科学与技术相关专业一门重要的专业基础课。为解决上述问题,结合C++语言的特性,本文设计并开发了C++线上实验平台。

1  系统分析与技术方案

1.1  系统分析

系统分为教师端与学生端,不同使用者给予不同功能入口。教师端需要具有发布信息并对其进行管理的功能,教师可以根据实际教学进度,发布实验与作业,同时也可将课程资源进行上传以供学生下载。学生端可以通过网页进行对应课程与实验视频的观看,也可在网页中编写代码并进行作业的提交,在网页中实现C++代码编译、运行并查看结果,对于简单的课后作业不需要打开ide即可完成。

系统基于B/S架构进行开发,通过Maven进行jar包版本管理,针对用户的要求并不高,大多数Windows系统都可通过浏览器正常进行访问与使用。对Windows系统,服务器端要配置数据库和C++编译环境即可。若在Linux系统上运行,则可使用Docker配置容器并拉取对应环境,即可进行项目部署。因此,在技术上系统开发是可行的。

1.2  技术方案

1.2.1  在线编译功能

本系统的在线编译功能拟采用GCC编译器[5]实现。Linux系统下的GCC(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。GCC是可以在多种硬体平台上编译出可执行程序的超级编译器。

GCC提供了多条警告信息以及多个警告级别,方便用户调试时查找原因,通过它们可以增强程序稳定性和可移植性[6]。此外,GCC还对标准C/C++语言进行扩展,提高了程序的执行效率,有助于编译器进行代码优化,可以减轻编程工作量。

1.2.2  在线视频学习功能

本系统的在线视频播放功能拟采用开源的多媒体框架FFmpeg和网络视频播放器Chimee实现[7]。2BE22783-D69A-47F0-93D0-1EB02B3C6EA3

FFmpeg采用LGPL或GPL许可证。可用于对媒体文件进行记录、转换并将其转化为流,按照用户的功能需求进行订制。它可以在各种系统、构建环境、机器架构和配置下编译运行,对于视频来说其自带库libavcodec提供了常见的视频文件处理的完整方案,能满足大多数处理需求。自带的各种库可以被应用程序使用,也可依据其进行二次开发扩展功能,保证了编解码质量的同时还具有高可移植性。

Chimee是Qiwoo团队创建的网络视频播放器,是一套基于video视频元素的组件框架,可直接用于H5页面中,无须安装,引入组件库即可使用。大多数情况下,对于视频的处理如果仅限于使用video元素编写那不利于维护与扩展。所以可以使用Chimee,它支持mp4、m3u8、flv等多种媒体流,因为本质上还是video元素,所以并不会有太大的兼容性问题,同时也扩展出各种插件可用于满足大多数交互,如透明效果插件、穿透插件、内外部插件等,这些插件可以直接使用在video元素上,除了解决常见的视频需求以外,也可以将复杂功能拆分为多个插件,通过这种开发方法可以相对容易的实现其他功能。

2  系统设计与实现

2.1  架构设计

系统基于SSM框架进行开发,选择B/S架构,开发语言为JavaEE,数据库使用MySQL。系统采用三层结构,分别是表示层、Web应用层和数据层。

2.2  功能设计

根据需求分析,本系统分为教师端与学生端。教师端可分为学生管理模块、微视频管理模块、实验管理模块、作业管理模块、课程资源管理模块。学生端可分为个人信息模块、在线学习模块、实验模块、作业管理、课程资源下载模块。系统功能模块图如图1所示。

2.3  关键功能实现

2.3.1  微视频管理

微视频管理模块可对视频文件进行管理,实现对视频的上传、信息编辑、删除等功能。下面以视频上传为例,介绍系统的处理流程。

首先选择所需上传的一个或多个视频文件,再对文件大小进行判断,若超出设定的上传大小,则抛出异常并结束流程,若满足大小则将其转化为二进制数据传入。

接着,对文件存放目录进行检测,若不存在则创建文件存放目录,并配置对应的虚拟目录,可用于访问服务器上的视频文件。在目录中创建File,将二进制数据写入标准File类中,然后对其进行视频编码格式的判断,若不符合要求则先对其进行编码格式的转换,再判断编码格式是否可被转换,对于可直接转换的编码格式直接将其转换为符合要求的格式,对于不可直接转换的编码格式(wmv9,rm,rmvb等)可通过其他工具(mencoder)先将其转换为可直接转换的格式(如avi),之后再进行二次转换,然后再进行下一步,若是mp4、flv等符合要求的视频编码格式便可通过FFmpeg截取视频封面,使用抓取器FFmpegFrameGrabber抓取视频特定帧生成图片作为视频封面。

最后再将对应属性存入数据库,即可实现视频上传功能。

视频管理界面如图2所示,预览视频信息如图3所示,可以查看视频的标题、简介、封面等信息。

2.3.2  在线实验功能

学生在使用作业模块或实验模块时可在网页中进行代码的编写,并实现在线编译、运行并查看结果。

代码编写完毕后点击编译按钮,发送编译请求,检测目录是否存在,若不存在则创建临时文件目录,用以存放对应生成的文件,如源文件以及可执行程序等。

将代码内容写入文件作为源文件,通过字符串拼接将编译命令构造出来,通过JAVAAPI创建进程,调用CMD,将构建好的编译命令传入并执行,通过抓取异常判断是否出现错误,如程序中断、超时、执行错误等,若出错则返回错误码以及对应的错误原因,结束流程。

若编译成功即运行生成的可执行文件,同样的通过抓取异常判断是否出现错误,如gcc调用出错以及C程序运行出错等,若出错则返回错误码及对应的错误原因,结束流程。

运行成功时返回标准输出,并且继续调用CMD将对应exe的进程杀掉,如果不对其进行处理再次发送请求则会提示权限问题,因为之前运行的exe程序并未停止。即每次提交编译请求便创建进程调用CMD,直到流程结束时再将对应进程杀死,只保留输出结果。

学生在线实验的界面如图4所示。

2.3.3  课程资源下载

课程资源下载模块主要实现资源下载功能。学生选择所需下载的文件,点击按钮后将文件名与url等信息传入后台,之后通过File类获取到存放目录中的对应文件,而后通过springmvc实现文件下载,设置好对应属性后将其封装入ResponseEntity返回浏览器,浏览器将收到的请求解析处理以实现浏览器的文件下载。

文件加载到内存中,转换为字节数组作为响应体,设置响应头,其中包含MIME协议扩展出的Content-disposition以及Contetnt-Type,设置对应的编码、文件名、扩展名等信息,再加上响应状态,封装为ResponseEntity返回即可在浏览器中获取到文件下载请求,在浏览器中使用mime类型application/octet-stream进行传输。

对于学生来说可下载教师发布的各种资源,点击对应资源可进行下载,浏览器通过解析返回的http请求将返回的响應体转化为对应文件,进行下载。

课程资源下载界面如图5所示。

3  结  论

“C++微课堂”在线实验平台可以对学生的任务完成情况进行实时查询和统计。教师可在课后根据统计数据,了解学生的学习状态和掌握情况,得到及时的反馈信息。根据反馈信息,教师调整教学方法和教学内容,对进度落后的学生,也可以进行督促。

通过该系统,可以实现C++实验课的线上教学。在线下教学时,也可以使用该系统进行线上线下的混合式教学,教学方式灵活,保证教学效果。

参考文献:

[1] 闫剑锋.新形势下高校在线教育模式探索与实践 [J].教育信息化论坛,2022(1):3-5.

[2] 程蹊,任诗航,马梅.基于SPOC/MOOC“在线教学工具+会议系统”的混合教学创新——以“超星直播+腾讯会议”混合教学为例 [J].大学教育,2022(1):155-157.

[3] 刘海涛,张春妹.全视角学习理论下高校在线教学质量保障研究 [J].教育评论,2021(12):26-32.

[4] 张千友,刘梅竹,沈力,等.后疫情时代高校教学模式改革研究 [J].西昌学院学报(社会科学版),2021,33(4):124-128.

[5] 张开活.基于Web的C语言交互式可视化教学平台的设计与实现 [D].西安:西安电子科技大学,2017.

[6] 梅刚,林龄,潘峰.基于Web的在线编译环境设计 [J].计算机时代,2015(5):29-31.

[7] 王超,李晶晶,朱晶晶.基于SpringCloud的在线视频教育系统的设计与实现 [J].数字技术与应用,2021,39(12):198-200.

作者简介:姜丽莉(1985—),女,汉族,江苏徐州人,讲师,硕士,研究方向:深度学习、数据挖掘、软件工程;孙自梅(1986—),女,汉族,河南商丘人,讲师,硕士,研究方向:云计算、软件工程。2BE22783-D69A-47F0-93D0-1EB02B3C6EA3