Maison  >  Article  >  développement back-end  >  Comment utiliser PHP pour développer une fonction d'examen en ligne simple

Comment utiliser PHP pour développer une fonction d'examen en ligne simple

PHPz
PHPzoriginal
2023-09-21 09:13:411727parcourir

Comment utiliser PHP pour développer une fonction dexamen en ligne simple

Comment utiliser PHP pour développer une fonction d'examen en ligne simple, des exemples de code spécifiques sont nécessaires

Avec le développement rapide d'Internet, de plus en plus d'écoles et d'institutions ont commencé à utiliser des examens en ligne pour l'évaluation. En tant que langage de programmation largement utilisé dans le développement Web, PHP peut facilement implémenter des fonctions simples d'examen en ligne. Cet article explique comment utiliser PHP pour développer un système d'examen en ligne simple et fournit des exemples de code spécifiques.

1. Conception de la base de données
Le système d'examen en ligne doit utiliser une base de données pour stocker les questions d'examen et les réponses des utilisateurs. Nous pouvons utiliser la base de données MySQL pour y parvenir. Commencez par créer une base de données nommée examen, puis créez deux tables : questions et utilisateurs.

Le tableau des questions est utilisé pour stocker les informations sur les questions d'examen, y compris l'ID de la question (question_id), le contenu de la question (question_content) et la bonne réponse (question_answer). Ici, nous prenons comme exemple des questions à choix multiples, en utilisant une seule option comme réponse correcte.

L'instruction SQL pour créer la table des questions est la suivante :

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

La table des utilisateurs est utilisée pour stocker les informations de l'utilisateur et l'état de la réponse, y compris l'ID de l'utilisateur (user_id), le nom d'utilisateur (nom d'utilisateur) et l'état de la réponse de l'utilisateur (réponses). L'état de la réponse est stocké au format JSON, où la clé est l'ID de la question et la valeur est la réponse de l'utilisateur.

L'instruction SQL pour créer la table des utilisateurs est la suivante :

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

2. Conception de la page
La conception des pages du système d'examen en ligne est relativement simple, y compris la page de connexion et la page d'examen.

La page de connexion (login.php) permet aux utilisateurs de se connecter au système. Après avoir entré le nom d'utilisateur, soumettez le formulaire pour accéder à la page d'examen.

<!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>

La page d'examen (exam.php) est utilisée pour afficher les questions d'examen et permettre aux utilisateurs de choisir les réponses.

<!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. Soumission des réponses et statistiques de score
Après avoir soumis la réponse, la réponse soumise sera traitée et le score total sera calculé.

La page de soumission (submit.php) est utilisée pour traiter les réponses soumises par les utilisateurs, stocker les réponses de l'utilisateur dans la base de données et calculer les scores.

<?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);
?>

Ce qui précède explique comment utiliser PHP pour développer des fonctions d'examen en ligne simples, y compris la conception de bases de données, la conception de pages et la mise en œuvre de la soumission des réponses et des statistiques de scores. Ce système d’examen en ligne n’est qu’un exemple simple qui peut être étendu et optimisé en fonction des besoins réels. J'espère que cet article pourra vous être utile !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn