基于 Vue 和 SpringBoot 的 C 语言程序在线测评系统的设计与实现

 作者主页毕业设计精选

作者简介:9年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家

  

为简化教师对学生练习的评   程,基      Vue      SpringBoot   与实 现 了 一套 C语言程序在线测评系统  此 系   现 了   码的    判,且   用户 、班     作业 下发的功能 

关键词:在线测评系统;Vue;SpringBoot;脚本;文件流;

1     引言

目前几乎所有大学都开通了 C语言的课程 C语言的教学在讲练结合的模式下 日趋完善   随着讲课 的  入,学   习的       杂, 教师的            且 因      多,教师无          序 的    否, 也就难以给出一个准确的分数[1] 

使用 Vue  Sprin gBoot   C      线测评 系        生 的      分,快速得出成绩,以取代低效率的 、机械的人  阅卷模式避免了    卷 中 由        致的不公平现象            生的学习水平和教师的教学成果  

2    设计思路

2.1    系统的主要功能

(1) 学生可以从题库选择题目 

(2) 学生可 以利           找到 想要练习的题目 

(3) 学生可以获得      果(答   确, 答案错误,运行超时,运行时错误)。

(4) 教师可以添加题目与测试点 

(5) 教师可以在班级里布置编程作业 

(6) 教师可以查看所有学生完成作业的情况 

2.2    前端设计

前端使用 Vue框架的组件式编程模式[2]  

系统由账户模  题 目         模块组成见 图 1   块 的     含 的   见表 1 

 1    系统的模块组成

 1    各模块的功能及包含的组件

模块

功能

 使用的组件

账户模块

用 户 的 注 册 、登 录与    息 的 管理

用户登录组件 Login. vue  用户注册组件 Regist. vue 用户资料组件 User. vue

题目模块

  的 添  、编  、检索 、阅读与 评测数据的上传  评判    交 的

题目列表组件 Problems . vue 题目组件 Problem. vue

评测模块

代码  返 回   的结果

评测界面组件 Judgement. vue

教师模块

班级 的     、作业的建立

教师端组件 Teacher. vue

2.3    后端设计

后端 采 用 MVC 架 构[3]  , 每 一 类 逻 辑 都 由 Controller Service Dao类构成详见表 2 

 2    后端类及功能

功能

User

操作用户的信息

Account

用户登录与注册

Problem

操作题目信息

Judgement 

评测操作

Class

班级操作

Homework

作业操作

前端通     端 的 接 口        交换系统接口表见表 3 

 3    系统接口表

接口路径                                     功能

checkLogIn

checkRegister

addAProblem

findProblemById findAllByPages

findLikeByPages

getProblemInformation uploadInOut

uploadImage isPass

checkCookie

getIco

selectUserById

selectUserByClassId

getJudgementId judgement

addHomework

getHomeworkByTeacherId

getHomeworkByClassId

检查登录的合法性

检查注册的合法性 添加新用户 添加新的题目

通过题目编号查找题目  分页接 口 返回当页题目

分页接 口 返回根据题目名   找后当页题目

获取题目内容

上传题目测试点文件

编辑题目时上传图片文件 某个题目是否通过

调用 后     前 统   用, 检查   登 录 是 否   30   钟,若       何 接    强制用户重新登录

获取用户头像

通过用户编号获取用户

通过班级      级 内   用户

评测之前获取评测号

评测提交的代码 添加新的作业

根据教师    取 当     置的作业

根据班级    取 当   级 的 所有作业

getProblemsByHomeworkId通过作业编号获取作业

listClasses

getClassByHomeworkId checkCode

根据教师    取 当     有的班级

根据作业          的所有班级

生成验证码

2.3.3    安全性设计

为确保用户的            个功能:

(1) 登录超时 用户登录超过 30 分钟无法访 问服务器,需重新登录 

(2) 并发保护 。对并发量大的操作添加锁,确 保多个用户同时访问时的数据安全 

2.4    数据库设计

2.4.1    数据库的概念

结构设计 E-R 图如图 2 所示 

 2    系统的 E-R 

学生只能属于            个学 生;一    可 以     级,一     能有    师;老  可 以      业,一   业只能被一个老   置;一          业,一 份    可 以 同         级;学 生可以练习多道 题 目  题 目        生练 习;一    可 以        录,一  评测记录只能被一个同学产生 

2.4.2    数据库的逻辑结构设计

数据库包              信息表 、评测信息 、班级作业 

为满足第三范 [4]  , 多            这些表    级-作    业-题    用户通过题目表 

数据库的表结构设计详见表 4-10  

 4    用户基本信息表 tbl 

名称

类型

约束条件

 说明

user_(id)

varchar(255)

p rimary key

主键 用户编号

user

varchar(255)

not null unique

昵称

user__password

varchar(255)

not null

密码

user

varchar(255)

not null

学号

user_(class)

varchar(255)

not null

班级

name

varchar(255)

not null

真实姓名

signature

varchar(255)

个人签名

email

varchar(255)

not null

邮箱

type

char(1)

not null

用户类型

submission

int

not null

提交数

pass

int

not null default

通过数

register_(time)

timestamp

CURRENTTI(_)

MESTAMP

注册时间

 5    班级作业表 tbl _(homework)

名称

类型

约束条件

说明

homework_(id)

int

p rimary key

主键 作业编号

homework_(teacher)

int

not null

布置作业的 教师编号

homework_(title)

varchar(255)

not null

作业标题

 6    评测信息表 tbl__judgement

名称

类型

约束条件

说明

judgement_(id)

int

p rimary key

主键 评测号

judgement_(time)

varchar(40)

not null

评测时间

judgement

_(id)

int

not null

评测者

judgement__prob- lem_(id)

int

not null

需要评测的题目

 7    题目表 tbl__problem

名称

类型

约束条件

说明

p roblem_(id)

int

primary key

主键 题目编号

p roblem_(title)

varchar(40)

not null

题目标题

p roblem_(submitted)

int

not null

提交人数

p roblem__passed

int

not null

通过人数

p roblem_(timelimit)

double

not null  default 1

题目限制时间(s)

 8    作业题目表 tbl _(homework)__problem

名称

类型             约束条件

说明

id                      int

p rimary key

主键 编号

homework_(id) int

not null

作业编号

p roblem_(id)     int

not null

题目编号

 9    班级作业表 tbl _(homework)_(class)

名称

类型             约束条件

说明

id                      int

p rimary key

主键 编号

homework_(id) int

not null

作业编号

p roblem_(id)     int

not null

班级编号

 10    用户通过题目表 tbl __problem

名称

类型

约束条件

说明

id

int

p rimary key

主键 编号

user_(id)

int

not null

用户编号

Problem_(id)

int

not null

题目编号

2.5    评测模型

后端通       制 台        脚本可 以       不 同   不 同   器对代码进行编            保存然后与    出文  对 比       比结果并返回前端 

3    评测系统的实现 

3.1    验证码控制

为了防止恶意           使用了验证码 

 3    评测的数据流图

 4    前端表单的验证码

用户在       码 图  可 以 申  新 的 验证码 此时系    成 四        扭曲,添    线       码 图 片,同   正确验证码都存入到 Session  Session对象是 针对会话创建的            证码时验证码不会冲突 

3.2    注册

3.2.1    注册判断流程

注册界面共有 5    框:用        确认密码 和验证             达式判断是         没有   将     入  的        后  端  的  UserController类会将        User   UserService类    UserDao       查  看输入的数      如果        会将注册信  储存            UserController类会将注    返 回       果注册状    功,则          面, 否则会生成对应的失败弹窗 

3.2.2    格式错误判断

前端使           式 的     如果输  框 内 的      框 的     式不匹配,则视为格式错误[5] 

 5    对格式错误的判断

为防止      端 的         接 口后端会对数据的格式进行二次验证 

密码的      :/q[a-zA-Z0-9] {6 , 16} $ /。 用户名的正则表达式:/q[a-zA-Z0-9\u4e00- \u9fa5-__] { 2 , 10} 

3.2.3     户信息保存

注册成功后UserController会利用 MyBatis 将用户信息保存到数据库中 

3.3    登录

登录界面共有 3 个输入框:用户名 密码与验 证码 前端判定              后端的 UserController类会将所有信息封装 User UserService类会通过 UserDao类调 用数据库查看输  的数       结果  回至前端 。若登   功,前          之显示失败弹窗 

登录同  使           入 的  确与否 

用户登录成功      浏览 器 中  存  一个      息 的 Cookie ,  使      再次打开网              30  分钟用户在此 30 分钟之内访问服务器会刷新有  效期  30   之 内     访 问     Cookie会失效用户需重新登录 

3.4    题目 检索与分页 

3.4.1    题目 分页

用户访问题目             有题目数据     题 目数    利用   是数据 库 的 限                 3 每页 20 条记录则服务端就会计算 出需  要从数据 库 的  41  记 录     20   用户在翻页时               目条数这两条信    给后    返 回  前  页面的题目 

3.4.2    题目 检索

使用数据库的           含某些   字 的              行检索后下次分              的题目进行分页并返回 

3.5    评测

3.5.1    评测号

每个评测必须            便于用                  测时生成,是一      的 自  [6]  。评   生成 后,主 线        返 回,同     另外一  线   后 台        线    访问时将评测结果返回给主线程详见图 6 

 6    评测的线程流程图 

3.5.2    评测过程

评测分为编译      部分      时,系统                败, 系统便不再往下            入  到结果对象 中              下评测             象 中     系统返回此对象到前端 

脚本 根 据 传 入 的 路 径 找 到     使  gcc[7]  C语言   进行          后没有输出所以              输出,就 可 以        败,并   本 的  出作为编译信息返回 

编译成功后            检测用户提交的  哪一  题 目  到其     之后脚     户的          入文件并得到相应的输出文件详见图 7 

 7    评测流程图

3.5.3    获取评测结果

评测的原理是   的程    题 目    将输出结果与题 目    做 比 如果 比     一致,则对于这组数据,用户的程序运行正确,否  则运行                   信息 用户的      会 出       者  规定时间内  输 出的  误,导   法 比  输 出, 这样评测系统不 会 比            息作为评测信息 

如果程序未出   行时        8 所示

 8    程序正确时脚本的输出

服务器只需识别#&#前缀就可以获取每个 测试点的测    如果         本的输出如图 9 所示

 9    运行时错误时脚本的输出

如果服务器在识别到 &#前缀之前识别到 了其   缀,则         误,停    此测试      点 的       行 时 错误 

3.6    教师端

教师可以通过 MarkDown 编辑器编辑题 目 并可以 实 时    MarkDown   传 的 图    被上传   端 以 便       访 问      目后需                   上传测试数据的 题 目            一并上          目 的        夹并将          输 出  件 的     式是从 1 开始增大的自然数输入文件以 in 为后  缀名输出文件以 out 为后缀名 

教师可以从题库中选择一些题目组成作业  可以下发给选中的班级  由于作业和题目是多对  多的关系,作业和班级也是多对多的关系,因此需  要在数据库中多建立两张表来存放多对多的关系  若老师布置了一次作业(idm),选择了题目 ab ,   布置给了班级 1 和班级 2 , 则作业-题目表会插入  两条数据(作业 m , 题目 a) 与(作业 m , 题目 b);作  业-班级表会插入两条数据(作业 m , 班级1) 与(作  m , 班级 2)。 如果此时班级 1 的学生想查看自己  的作业就会查询到有一次作业 m , 内含题目 ab

用户和题目的关系也是多对多关系 用户 a每完成一道题目,用 户-题 目   就会     数据(用户编号,题 目  号)。 教        完成  况,服        表,以  格 的   将完成情况呈现给教师 

3.7    访问控制

添加题目  传测            户的类型如果为学生则无法使用这些功能 

在前端学生    法进         端,系      户的 权 限,如        调用教师专用的接 口 

参考文献

[1]  刘东基于 WEB  C语        计[D] . 广 州: 华南理工大学2010:2- 3.

[2]  方生基于Vue. js前端框架技术的研究[J] .  电脑知识 与技术:学术版2021 , 17(19) :59-60.

[3]  张屹峰基于 MVC    WEB   项 目      [J] . 电子世界2021 , 43(17) :53-54.

[4]  Ben Forta. MySQL 必知必会[ M] .  京:人      2009 :155-164.

[5]  朱林琴 . C语言查重与 自       究[D] .  潭:湘 潭大学2017 :5-7.

[6]  Cay S.   Horstmann.Java核心技术 ·  I[ M] .  10  . 北京:机械工业出版社2016 :640-661.

[7]  曹学琪 线              进[D] .  萨:西藏大学2020:31-34.

5    结束语

设计的                床垫检测人体 睡姿   APP       人健康数据为使用者制定个人健康作息计划 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕业设计精选

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值