假设现在有一个这样的db表,后端可以连接到这个表名为db的数据库,里面有n个t,前端页面可以随机抽取一个t.id<=n的题目,用户在文本框中输入答案,点击''提交''进行校对,在"我的错题集"中可以看到所有t.biaoji=1的题目。那么前端和后端的代码是什么
时间: 2024-03-19 07:44:19 浏览: 14
前端代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>随机抽取题目</title>
<meta charset="UTF-8">
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<h1>随机抽取题目</h1>
<p>题目:</p>
<p id="question"></p>
<input type="text" id="answer" placeholder="请输入答案">
<button id="submit">提交</button>
<br><br>
<h2>我的错题集</h2>
<ul id="error-questions"></ul>
<script>
$(function() {
var n = 0; // 题目数量
var tid = 0; // 题目ID
var question = ''; // 题目内容
// 获取题目数量
$.get('/get_question_num', function(res) {
n = res.num;
});
// 随机抽取题目
$('#submit').click(function() {
if (tid == 0) { // 第一次抽取
tid = Math.floor(Math.random() * n) + 1;
} else { // 已经抽取过了
tid = $('#question').data('tid');
}
$.get('/get_question', {tid: tid}, function(res) {
question = res.question;
$('#question').text(question).data('tid', tid);
});
});
// 提交答案
$(document).on('click', '#submit', function() {
var answer = $('#answer').val();
$.post('/check_answer', {tid: tid, answer: answer}, function(res) {
if (res.result == 'correct') {
alert('回答正确!');
} else {
alert('回答错误!');
$('#error-questions').append('<li>' + question + '</li>');
}
$('#answer').val('');
});
});
});
</script>
</body>
</html>
```
后端代码:
```python
from flask import Flask, request, jsonify
import sqlite3
app = Flask(__name__)
db_name = 'db'
# 获取题目数量
@app.route('/get_question_num', methods=['GET'])
def get_question_num():
conn = sqlite3.connect(db_name + '.db')
cursor = conn.cursor()
cursor.execute('SELECT COUNT(*) FROM t')
num = cursor.fetchone()[0]
conn.close()
return jsonify({'num': num})
# 获取题目
@app.route('/get_question', methods=['GET'])
def get_question():
tid = request.args.get('tid')
conn = sqlite3.connect(db_name + '.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM t WHERE id=?', (tid,))
question = cursor.fetchone()[1]
conn.close()
return jsonify({'question': question})
# 检查答案
@app.route('/check_answer', methods=['POST'])
def check_answer():
tid = request.form['tid']
answer = request.form['answer']
conn = sqlite3.connect(db_name + '.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM t WHERE id=? AND answer=?', (tid, answer))
if cursor.fetchone():
result = 'correct'
else:
result = 'wrong'
cursor.execute('UPDATE t SET biaoji=1 WHERE id=?', (tid,))
conn.commit()
conn.close()
return jsonify({'result': result})
if __name__ == '__main__':
app.run()
```
说明:
1. 前端页面使用了 jQuery 库,以方便操作 DOM 和发送 AJAX 请求。
2. 后端使用 Flask 框架,通过路由实现不同功能的处理。
3. 数据库使用 SQLite,使用 Python 的 sqlite3 模块进行操作。
4. 前端页面中的 `get_question_num` 和 `get_question` 接口用于获取题目数量和指定 ID 的题目内容,`check_answer` 接口用于校对答案并更新标记。