CREATE TABLE `questions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`question` 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_answer` char(1) NOT NULL,
PRIMARY KEY (`id`)
);
-试卷表
CREATE TABLE `papers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`paper_name` varchar(100) NOT NULL,
`question_ids` text NOT NULL, -存储题目ID列表(如:1,3,5)
PRIMARY KEY (`id`)
);
-考试记录表
CREATE TABLE `exam_records` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`paper_id` int(11) NOT NULL,
`answers` text NOT NULL, -存储用户答案(如:1:A,2:C)
`score` int(11) DEFAULT NULL,
`exam_time` timestamp DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);
// add_question.php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$question = $_POST['question'];
$options = [
'A' => $_POST['option_a'],
'B' => $_POST['option_b'],
'C' => $_POST['option_c'],
'D' => $_POST['option_d']
];
$correct = $_POST['correct_answer'];
// 插入数据库
$sql = "INSERT INTO questions (question, option_a, option_b, option_c, option_d, correct_answer)
VALUES ('$question', '{$options['A']}', '{$options['B']}', '{$options['C']}', '{$options['D']}', '$correct')";
mysqli_query($conn, $sql);
echo "题目添加成功!";
}
// generate_paper.php
$paper_name = "期末测试";
$question_count = 10; // 10道题
// 随机抽取题目
$sql = "SELECT id FROM questions ORDER BY RAND() LIMIT $question_count";
$result = mysqli_query($conn, $sql);
$question_ids = [];
while ($row = mysqli_fetch_assoc($result)) {
$question_ids[] = $row['id'];
}
// 存储试卷
$ids_str = implode(',', $question_ids);
mysqli_query($conn, "INSERT INTO papers (paper_name, question_ids) VALUES ('$paper_name', '$ids_str')");
// exam.php
$paper_id = $_GET['id'];
$paper = mysqli_fetch_assoc(mysqli_query($conn, "SELECT * FROM papers WHERE id=$paper_id"));
$question_ids = explode(',', $paper['question_ids']);
foreach ($question_ids as $q_id) {
$q = mysqli_fetch_assoc(mysqli_query($conn, "SELECT * FROM questions WHERE id=$q_id"));
echo "<div class='question'>";
echo "<p>{$q['question']}</p>";
echo "<label><input type='radio' name='answer[$q_id]' value='A'> {$q['option_a']}</label>";
echo "<label><input type='radio' name='answer[$q_id]' value='B'> {$q['option_b']}</label>";
// ... 其他选项
echo "</div>";
}
// 提交表单
echo "<form method='post' action='submit_exam.php'>";
echo "<input type='hidden' name='paper_id' value='$paper_id'>";
echo "<button type='submit'>提交考试</button>";
echo "</form>";
// submit_exam.php
$paper_id = $_POST['paper_id'];
$answers = $_POST['answer'];
$paper = mysqli_fetch_assoc(mysqli_query($conn, "SELECT * FROM papers WHERE id=$paper_id"));
$question_ids = explode(',', $paper['question_ids']);
// 计算得分
$score = 0;
foreach ($question_ids as $q_id) {
$q = mysqli_fetch_assoc(mysqli_query($conn, "SELECT correct_answer FROM questions WHERE id=$q_id"));
if ($answers[$q_id] == $q['correct_answer']) {
$score++;
}
}
// 保存考试记录
mysqli_query($conn, "INSERT INTO exam_records (user_id, paper_id, answers, score)
VALUES ({$_SESSION['user_id']}, $paper_id, '" . json_encode($answers) . "', $score)");
echo "考试完成!得分:$score/" . count($question_ids);
开源平台:


PHP exam system、在线考试系统资源网站:
注意事项:
config.php)中的连接信息。如果需要更详细的完整代码或具体模块实现,请告知需求方向,我可提供进一步指导!
