开发一个题库系统的题目管理模块可以分为几个主要部分:题目添加、题目编辑、题目删除、题目查询等。
下面是无忧题库一个简单的实现思路和代码示例。
1. 数据库设计
首先,你需要设计一个题目表(questions
),可以包含以下字段:
CREATE TABLE questions (
id INT AUTO_INCREMENT PRIMARY KEY,
question_text TEXT NOT NULL,
option_a VARCHAR(255) NOT NULL,
option_b VARCHAR(255) NOT NULL,
option_c VARCHAR(255) NOT NULL,
option_d VARCHAR(255) NOT NULL,
correct_option CHAR(1) NOT NULL, -- A, B, C, D
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
2. 题目添加
用户可以通过表单提交题目数据,后端将其存储到数据库中。
function addQuestion($questionText, $optionA, $optionB, $optionC, $optionD, $correctOption) {
// 数据库连接
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 检查连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// 插入题目数据
$stmt = $conn->prepare("INSERT INTO questions (question_text, option_a, option_b, option_c, option_d, correct_option) VALUES (?, ?, ?, ?, ?, ?)");
$stmt->bind_param("ssssss", $questionText, $optionA, $optionB, $optionC, $optionD, $correctOption);
if ($stmt->execute()) {
echo "题目添加成功!";
} else {
echo "添加失败:" . $stmt->error;
}
$stmt->close();
$conn->close();
}
3. 题目编辑
用户可以编辑已存在的题目。
function editQuestion($id, $questionText, $optionA, $optionB, $optionC, $optionD, $correctOption) {
// 数据库连接
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 更新题目数据
$stmt = $conn->prepare("UPDATE questions SET question_text = ?, option_a = ?, option_b = ?, option_c = ?, option_d = ?, correct_option = ? WHERE id = ?");
$stmt->bind_param("ssssssi", $questionText, $optionA, $optionB, $optionC, $optionD, $correctOption, $id);
if ($stmt->execute()) {
echo "题目更新成功!";
} else {
echo "更新失败:" . $stmt->error;
}
$stmt->close();
$conn->close();
}
4. 题目删除
用户可以删除已存在的题目。
function deleteQuestion($id) {
// 数据库连接
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 删除题目
$stmt = $conn->prepare("DELETE FROM questions WHERE id = ?");
$stmt->bind_param("i", $id);
if ($stmt->execute()) {
echo "题目删除成功!";
} else {
echo "删除失败:" . $stmt->error;
}
$stmt->close();
$conn->close();
}
5. 题目查询
用户可以查询题目列表,支持分页和搜索功能。
function getQuestions($limit = 10, $offset = 0) {
// 数据库连接
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 查询题目
$stmt = $conn->prepare("SELECT id, question_text, option_a, option_b, option_c, option_d, correct_option FROM questions LIMIT ? OFFSET ?");
$stmt->bind_param("ii", $limit, $offset);
$stmt->execute();
$result = $stmt->get_result();
$questions = [];
while ($row = $result->fetch_assoc()) {
$questions[] = $row;
}
$stmt->close();
$conn->close();
return $questions;
}
6. 安全性考虑
- 使用 HTTPS 保护数据传输。
- 对用户输入进行验证和过滤,防止 SQL 注入和 XSS 攻击。
- 定期更新和维护系统,确保安全性。
总结
以上是一个简单的题目管理模块的实现思路和代码示例。根据具体需求,还可以扩展功能,比如添加题目分类、难度等级、题目标签等。还可以实现更复杂的查询功能,如根据条件筛选题目。