web大作业(5)教师出题与学生答题

2024-01-27 03:58

本文主要是介绍web大作业(5)教师出题与学生答题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先,教师点击“出题目”按钮时跳转到出题页面,出题页面的模板如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>题目列表</title>
</head>
<body>
<h2 align="center">题目列表</h2>
<table style="border: 1px;margin: 0 auto;background: snow" width="90%" cellpadding="5" cellspacing="0" ><tr><td style="background: salmon">题号</td><td>题目内容</td><td>a</td><td>b</td><td>c</td><td>d</td><td>正确选项</td></tr>{{each problems}}<tr><td>{{$index+1}}</td><td>{{$value.problem}}</td><td>{{$value.a}}</td><td>{{$value.b}}</td><td>{{$value.c}}</td><td>{{$value.d}}</td><td>{{$value.answer}}</td></tr>{{/each}}
</table>
<br/>
<br/>
<h3>上传题目</h3>
<form action="/upproblem" method="post"><input type="text" name="problem" placeholder="问题" required="required"><br/><input type="text" name="a" placeholder="a" required="required"><br/><input type="text" name="b" placeholder="b" required="required"><br/><input type="text" name="c" placeholder="c" required="required"><br/><input type="text" name="d" placeholder="d" required="required"><br/><select name="answer"><option value="a">a</option><option value="b">b</option><option value="c">c</option><option value="d">d</option></select><br/><button type="submit">提交</button>
</form>
<br/>
<br/>
<h3>答题情况</h3>
{{each situations}}<p>{{$value.description}}</p>
{{/each}}
</body>
</html>

这里有三个功能,一是查看题目列表,二是添加题目,三是查看答题情况。然后设计出题页面的路由:

app.get("/giveproblem",function(req,res){connection.query("select * from selector",function(err,rows){connection.query("select * from situation",function(error,info){//console.log(info)res.render("giveproblem.html",{problems:rows,situations:info})})})
})

要调用数据库中两个表的数据:一是题目表,二是答题情况表。教师出题时在在表单中填写题目名称,abcd四选项加上正确答案(以下拉框形式填写),提交后插入数据库,具体post请求的实现:

app.post("/upproblem",isteacherlogin,function(req,res){var data = req.body;//console.log(data)var params = [data.problem,data.a,data.b,data.c,data.d,data.answer]var insertquery = 'insert into selector(id,problem,a,b,c,d,answer) value(null,?,?,?,?,?,?)'connection.query(insertquery,params,function(err,result){if(err){console.log(err)}else{console.log(result);}})res.end("上传成功")
})

然后是学生答题界面模板:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>学生做题</title>
</head>
<body><p><span class="num">300</span>秒后考试结束</p><form action="/doneproblem" method="post">{{each problems}}<span>{{$index+1}}{{$value.problem}}</span><br/><input type="radio" name="{{$value.id}}" value="a" />a、{{$value.a}}<br/><input type="radio" name="{{$value.id}}" value="b" />b、{{$value.b}}<br/><input type="radio" name="{{$value.id}}" value="c" />c、{{$value.c}}<br/><input type="radio" name="{{$value.id}}" value="d" />d、{{$value.d}}<br/><br/>{{/each}}<button type="submit">提交</button></form>
</body>
<script>var n=60*5;setInterval(()=>{n--;if(n<0){location.href = "/doneproblem"}else{document.querySelector('.num').innerHTML = n}},1000)
</script>
</html>

这里规定了考试时间为五分钟,五分钟后自动提交,题目列表在数据库中:

app.get("/doproblem",function(req,res){connection.query("select * from selector",function(err,rows){res.render("doproblem.html",{problems:rows})})
})

然后在学生提交答案后自动判断学生答题情况:

app.post("/doneproblem",islogin,function(req,res){var data = req.body//console.log(data)var total = 0;var right = 0;connection.query("select * from selector",function(res_,rows){for(var i=0;i<rows.length;i++){total++;var id_ = rows[i].id;var answer_ = rows[i].answer;if(data[id_]==answer_){right++;}}params = [req.session.username+"做了"+total+"题,对了"+right+"个"]var insertquery = 'insert into situation(id,description) value(null,?)'connection.query(insertquery,params,function(err,result){if(err){console.log(err)}else{console.log(result);}})res.send(req.session.username+"做了"+total+"题,对了"+right+"个")})
})

这样教师出题和学生答题功能基本实现。

这里功能十分粗糙,我也没有呀echarts进行展示,因为题目一直在变,真正做公司项目肯定一次测试或者考试的题目是不能变的,然后就可以用echarts直接看出学生做题排名。

这篇关于web大作业(5)教师出题与学生答题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/648997

相关文章

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

JavaWeb【day09】--(Mybatis)

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

构建高性能WEB之HTTP首部优化

0x00 前言 在讨论浏览器优化之前,首先我们先分析下从客户端发起一个HTTP请求到用户接收到响应之间,都发生了什么?知己知彼,才能百战不殆。这也是作为一个WEB开发者,为什么一定要深入学习TCP/IP等网络知识。 0x01 到底发生什么了? 当用户发起一个HTTP请求时,首先客户端将与服务端之间建立TCP连接,成功建立连接后,服务端将对请求进行处理,并对客户端做出响应,响应内容一般包括响应

(javaweb)mysql---DDL

一.数据模型,数据库操作 1.二维表:有行有列 2. 3.客户端连接数据库,发送sql语句给DBMS(数据库管理系统),DBMS创建--以文件夹显示 二.表结构操作--创建 database和schema含义一样。 这样就显示出了之前的内容。