ホームページ >バックエンド開発 >PHPチュートリアル >オンライン解答における試験問題のインポート・エクスポート機能の実装方法

オンライン解答における試験問題のインポート・エクスポート機能の実装方法

WBOY
WBOYオリジナル
2023-09-24 15:27:162017ブラウズ

オンライン解答における試験問題のインポート・エクスポート機能の実装方法

オンライン解答で試験用紙のインポートおよびエクスポート機能を実装するには、具体的なコード例が必要です

テクノロジーの発展に伴い、オンライン解答システムは学生の間でますます人気が高まっていますそして教師の好意は教育において重要な役割を果たします。オンライン質問応答システムは、生徒の学習意欲を高めるだけでなく、教師が効率的に添削することも可能にします。ただし、優れたオンライン応答システムには、システムの柔軟性と利便性を向上させるために、試験用紙をインポートおよびエクスポートする機能が必要です。この記事では、オンライン解答システムに試験用紙のインポート・エクスポート機能を実装する方法と具体的なコード例を紹介します。

1. 試験紙インポート機能の実装

試験紙インポート機能を実装する前に、まず試験紙のデータ構造を明確にする必要があります。通常、試験用紙には、試験用紙のタイトル、質問のリスト、および回答のリストが含まれます。質問リストには複数の質問が含まれており、各質問には質問タイプ、質問内容、および選択肢リストがあります。各質問に対する回答は回答リストに含まれています。データベースでは、試験用紙テーブル、質問テーブル、解答テーブルの 3 つのテーブルを使用して試験用紙のデータ構造を表すことができます。

  1. テスト用紙テーブルの作成

テスト用紙情報を保存するために、paper という名前のテーブルを作成します。テーブル構造は次のとおりです。

CREATE TABLE ペーパー (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL
);

  1. 質問テーブルの作成

質問情報を保存するために、question という名前のテーブルを作成します。テーブル構造は次のとおりです。

CREATE TABLE question (
id INT PRIMARY KEY AUTO_INCREMENT,
Paper_id INT NOT NULL,
type ENUM('単一選択の質問', '複数選択の質問', ' 空白を埋めてください') NOT NULL,
content TEXT NOT NULL,
options TEXT,
FOREIGN KEY (paper_id) REFERENCES Paper(id)
);

  1. 回答テーブルの作成

質問の回答情報を保存するために、answer という名前のテーブルを作成します。テーブル構造は次のとおりです。

CREATE TABLE 回答 (
id INT PRIMARY KEY AUTO_INCREMENT,
question_id INT NOT NULL,
回答 TEXT NOT NULL,
FOREIGN KEY (question_id)参考資料 question( id)
);

上記はデータベースのテーブル構造ですが、次にテスト用紙をインポートする機能を実装する必要があります。

  1. テスト用紙をインポートするためのページを作成する

まず、テスト用紙をインポートするためのページを作成する必要があります。このページには、ファイルを選択するためのアップロード ボタンと送信ボタンが含まれている必要があります。

<form action="import.php" method="POST" enctype="multipart/form-data">
  <input type="file" name="file" accept=".json">
  <button type="submit">导入试卷</button>
</form>
  1. テスト用紙をインポートするリクエストの処理

テスト用紙をインポートするページで、テスト用紙をインポートするリクエストを処理し、アップロードされたファイル。サーバー側では、PHP の json_decode 関数を使用して JSON ファイルを解析し、S​​QL ステートメントを使用して試験用紙データをデータベースに保存できます。

$file = $_FILES['file']['tmp_name'];
$json = file_get_contents($file);
$data = json_decode($json, true);

$title = $data['title'];
$questions = $data['questions'];

// 存储试卷信息
$sql = "INSERT INTO paper (title) VALUES ('$title')";
$result = mysqli_query($conn, $sql);
$paper_id = mysqli_insert_id($conn);

// 存储题目信息
foreach ($questions as $question) {
  $type = $question['type'];
  $content = $question['content'];
  $options = $question['options'];

  $sql = "INSERT INTO question (paper_id, type, content, options) VALUES ('$paper_id', '$type', '$content', '$options')";
  $result = mysqli_query($conn, $sql);
  $question_id = mysqli_insert_id($conn);

  // 存储答案信息
  $answer = $question['answer'];
  $sql = "INSERT INTO answer (question_id, answer) VALUES ('$question_id', '$answer')";
  $result = mysqli_query($conn, $sql);
}

2. 試験紙エクスポート機能の実装

試験紙エクスポート機能の実装は比較的簡単で、データベースから試験紙データを取り出してエクスポートするだけです。 JSON形式で。

  1. テスト用紙をエクスポートするためのページを作成する

まず、テスト用紙をエクスポートするためのページを作成し、エクスポートをトリガーするボタンを追加する必要があります。

<button onclick="exportPaper()">导出试卷</button>

<script>
  function exportPaper() {
    window.location.href = 'export.php';
  }
</script>
  1. テスト用紙をエクスポートするリクエストの処理

テスト用紙をエクスポートするページで、テスト用紙をエクスポートするリクエストを処理し、データベースからの試験用紙データ。その後、試験用紙データが JSON 形式でユーザーに出力されます。

header('Content-Type: application/json');
header('Content-Disposition: attachment; filename="paper.json"');

$data = array();

// 获取试卷信息
$sql = "SELECT * FROM paper";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);

$data['title'] = $row['title'];

// 获取题目信息
$sql = "SELECT * FROM question WHERE paper_id = " . $row['id'];
$result = mysqli_query($conn, $sql);
$questions = array();

while ($row = mysqli_fetch_assoc($result)) {
  $question = array(
    'type' => $row['type'],
    'content' => $row['content'],
    'options' => $row['options'],
    'answer' => $row['answer']
  );

  $questions[] = $question;
}

$data['questions'] = $questions;

echo json_encode($data);

上記のコード例を通じて、オンライン応答システムに試験用紙のインポートおよびエクスポート機能を実装できます。ユーザーは、テスト用紙を JSON 形式でシステムにインポートし、システム内の質問に答えることができます。また、システムからテスト用紙をエクスポートして、テスト用紙のバックアップ、共有、印刷を容易にすることもできます。

以上がオンライン解答における試験問題のインポート・エクスポート機能の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。