Rumah >pembangunan bahagian belakang >tutorial php >Cara menggunakan PHP untuk membangunkan fungsi peperiksaan dalam talian yang mudah

Cara menggunakan PHP untuk membangunkan fungsi peperiksaan dalam talian yang mudah

PHPz
PHPzasal
2023-09-21 09:13:411768semak imbas

Cara menggunakan PHP untuk membangunkan fungsi peperiksaan dalam talian yang mudah

Cara menggunakan PHP untuk membangunkan fungsi peperiksaan dalam talian yang mudah, contoh kod khusus diperlukan

Dengan perkembangan pesat Internet, semakin banyak sekolah dan institusi telah mula menggunakan peperiksaan dalam talian untuk penilaian. Sebagai bahasa pengaturcaraan yang digunakan secara meluas dalam pembangunan web, PHP boleh melaksanakan fungsi peperiksaan dalam talian yang mudah. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan sistem peperiksaan dalam talian yang mudah dan menyediakan contoh kod khusus.

1. Reka bentuk pangkalan data
Sistem peperiksaan dalam talian perlu menggunakan pangkalan data untuk menyimpan soalan peperiksaan dan jawapan pengguna. Kita boleh menggunakan pangkalan data MySQL untuk mencapai ini. Mula-mula, buat pangkalan data bernama peperiksaan, dan kemudian buat dua jadual: soalan dan pengguna.

Jadual soalan digunakan untuk menyimpan maklumat soalan peperiksaan, termasuk ID soalan (id_soalan), kandungan soalan (isi_soalan) dan jawapan betul (jawapan_soalan). Di sini kami mengambil soalan aneka pilihan sebagai contoh, menggunakan hanya satu pilihan sebagai jawapan yang betul.

Pernyataan SQL untuk membuat jadual soalan adalah seperti berikut:

CREATE TABLE questions (
   question_id INT AUTO_INCREMENT PRIMARY KEY,
   question_content TEXT NOT NULL,
   question_answer CHAR(1) NOT NULL
);

Jadual pengguna digunakan untuk menyimpan maklumat pengguna dan status jawapan, termasuk ID pengguna (user_id), nama pengguna (nama pengguna) dan status jawapan pengguna (jawapan). Status jawapan disimpan dalam format JSON, dengan kuncinya ialah ID soalan dan nilainya ialah jawapan pengguna.

Pernyataan SQL untuk membuat jadual pengguna adalah seperti berikut:

CREATE TABLE users (
   user_id INT AUTO_INCREMENT PRIMARY KEY,
   username VARCHAR(50) NOT NULL,
   answers TEXT NOT NULL
);

2. Reka bentuk halaman
Reka bentuk halaman sistem peperiksaan dalam talian agak mudah, termasuk halaman log masuk dan halaman peperiksaan.

Laman log masuk (login.php) digunakan untuk pengguna log masuk ke sistem Selepas memasukkan nama pengguna, serahkan borang untuk memasuki halaman peperiksaan.

<!DOCTYPE html>
<html>
<head>
   <title>在线考试系统 - 登录</title>
</head>
<body>
   <h2>登录</h2>
   <form action="exam.php" method="POST">
      <label for="username">用户名:</label>
      <input type="text" name="username" required>
      <br><br>
      <input type="submit" value="开始考试">
   </form>
</body>
</html>

Halaman peperiksaan (exam.php) digunakan untuk memaparkan soalan peperiksaan dan membolehkan pengguna memilih jawapan.

<!DOCTYPE html>
<html>
<head>
   <title>在线考试系统 - 考试</title>
</head>
<body>
   <h2>考试</h2>
   <form action="submit.php" method="POST">
      <?php
         // 连接数据库
         $conn = mysqli_connect("localhost", "root", "", "exam");
         if (!$conn) {
            die("数据库连接失败:" . mysqli_connect_error());
         }

         // 查询题目
         $sql = "SELECT * FROM questions";
         $result = mysqli_query($conn, $sql);

         // 显示题目
         if (mysqli_num_rows($result) > 0) {
            while ($row = mysqli_fetch_assoc($result)) {
               echo "<h3>题目ID:" . $row['question_id'] . "</h3>";
               echo "<p>" . $row['question_content'] . "</p>";
               echo "<label><input type='radio' name='answers[" . $row['question_id'] . "]' value='A'> A</label>";
               echo "<label><input type='radio' name='answers[" . $row['question_id'] . "]' value='B'> B</label>";
               echo "<label><input type='radio' name='answers[" . $row['question_id'] . "]' value='C'> C</label>";
               echo "<label><input type='radio' name='answers[" . $row['question_id'] . "]' value='D'> D</label>";
               echo "<br><br>";
            }
         }

         // 关闭数据库连接
         mysqli_close($conn);
      ?>
      <input type="submit" value="提交答案">
   </form>
</body>
</html>

3. Penyerahan jawapan dan statistik markah
Selepas menghantar jawapan, jawapan yang dihantar akan diproses dan jumlah markah akan dikira.

Halaman penyerahan (submit.php) digunakan untuk memproses jawapan yang dihantar oleh pengguna, menyimpan jawapan pengguna ke pangkalan data, dan mengira markah.

<?php
   // 连接数据库
   $conn = mysqli_connect("localhost", "root", "", "exam");
   if (!$conn) {
      die("数据库连接失败:" . mysqli_connect_error());
   }

   // 处理提交的答案
   $answers = $_POST['answers'];
   $username = $_COOKIE['username'];

   // 将答案存储到数据库
   $sql = "INSERT INTO users (username, answers) VALUES ('$username', '" . json_encode($answers) . "')";
   mysqli_query($conn, $sql);

   // 计算成绩
   $score = 0;
   $sql = "SELECT question_id, question_answer FROM questions";
   $result = mysqli_query($conn, $sql);
   while ($row = mysqli_fetch_assoc($result)) {
      if (isset($answers[$row['question_id']]) && $answers[$row['question_id']] == $row['question_answer']) {
         $score++;
      }
   }

   // 显示成绩
   echo "<h2>成绩:$score 分</h2>";

   // 关闭数据库连接
   mysqli_close($conn);
?>

Di atas ialah cara menggunakan PHP untuk membangunkan fungsi peperiksaan dalam talian yang mudah, termasuk reka bentuk pangkalan data, reka bentuk halaman dan pelaksanaan penyerahan jawapan dan statistik markah. Sistem peperiksaan dalam talian ini hanyalah contoh mudah yang boleh dikembangkan dan dioptimumkan mengikut keperluan sebenar. Harap artikel ini dapat membantu anda!

Atas ialah kandungan terperinci Cara menggunakan PHP untuk membangunkan fungsi peperiksaan dalam talian yang mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn