Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk membangunkan sistem peperiksaan mudah menggunakan MySQL dan C++

Bagaimana untuk membangunkan sistem peperiksaan mudah menggunakan MySQL dan C++

WBOY
WBOYasal
2023-09-20 10:45:401242semak imbas

Bagaimana untuk membangunkan sistem peperiksaan mudah menggunakan MySQL dan C++

Cara menggunakan MySQL dan C++ untuk membangunkan sistem peperiksaan yang mudah

Pada masa ini, dalam bidang pendidikan, permintaan terhadap sistem peperiksaan elektronik semakin meningkat. Artikel ini akan memperkenalkan cara menggunakan MySQL dan C++ untuk membangunkan sistem peperiksaan yang mudah. Melalui sistem ini, guru boleh mencipta bank soalan dan menjana kertas ujian, dan pelajar boleh log masuk ke sistem untuk mengambil peperiksaan dan menjaringkannya secara automatik.

  1. Reka bentuk pangkalan data MySQL
    Pertama, kita perlu mereka bentuk pangkalan data MySQL untuk menyimpan bank soalan, maklumat pelajar, kertas ujian dan data lain. Berikut ialah contoh reka bentuk pangkalan data yang mudah:
  • Jadual soalan (soalan): mengandungi medan seperti soalan, pilihan dan jawapan.
    CIPTA soalan JADUAL (
    id INT PRIMARY KEY AUTO_INCREMENT,
    soalan VARCHAR(255) NOT NULL,
    pilihan TEKS,
    jawab VARCHAR(255) NOT NULL
    );
  • Nama pelajar, jadual nama pelajar: (id_pelajar) dan bidang lain.
    CIPTA JADUAL pelajar (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nama VARCHAR(255) NOT NULL,
    student_id VARCHAR(255) NOT NULL
    );
  • Peperiksaan: Mengandungi nama guru (nama kertas) teacher_id) dan bidang lain.
    CIPTA peperiksaan JADUAL (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    teacher_id INT NOT NULL
    );
  • Helaian jawapan peperiksaan (respons): termasuk pelajar yang mengambil bahagian dalam peperiksaan (id_peperiksaan) yang sepadan kertas ( medan seperti exam_id) dan status jawapan (pilihan).
    BUAT jawapan JADUAL (
    id INT PRIMARY KEY AUTO_INNCREMENT,
    student_id INT NOT NULL,
    exam_id INT NOT NULL,
    pilihan TEKS,
    skor FLOAT(2, 1)
    );
C pembangunan;

  1. ); kita perlu menggunakan MySQL C++ Connector untuk menyambung ke pangkalan data MySQL. Berikut ialah contoh kod C++ yang mudah:
#include <mysql_driver.h>
#include <mysql_connection.h>

using namespace std;
using namespace sql;

int main() {
  sql::mysql::MySQL_Driver *driver;
  sql::Connection *con;

  driver = sql::mysql::get_mysql_driver_instance();
  con = driver->connect("tcp://127.0.0.1:3306", "root", "password");

  con->setSchema("exam_system");

  // 进行数据库操作

  delete con;

  return 0;
}

Dalam kod ini, kami mula-mula memperkenalkan dua fail pengepala mysql_driver.h dan mysql_connection.h. Kemudian, dapatkan contoh pemacu MySQL melalui fungsi get_mysql_driver_instance() dan sambungkan ke pangkalan data menggunakan fungsi connect(). Seterusnya, pilih pangkalan data untuk digunakan melalui fungsi setSchema(). Akhir sekali, lepaskan sambungan selepas melakukan operasi pangkalan data.

  1. Melaksanakan fungsi sistem peperiksaan
    Untuk melaksanakan fungsi sistem peperiksaan dalam C++, kita perlu menulis beberapa fungsi untuk melaksanakan fungsi seperti operasi bank soalan, penjanaan kertas ujian, menjawab peperiksaan dan pemarkahan automatik. Berikut ialah contoh kod mudah:
#include <iostream>
#include <string>
#include <vector>
#include <mysql_driver.h>
#include <mysql_connection.h>

using namespace std;
using namespace sql;

class ExamSystem {
private:
  sql::mysql::MySQL_Driver *driver;
  sql::Connection *con;

public:
  ExamSystem() {
    driver = sql::mysql::get_mysql_driver_instance();
    con = driver->connect("tcp://127.0.0.1:3306", "root", "password");
    con->setSchema("exam_system");
  }

  ~ExamSystem() {
    delete con;
  }

  vector<string> getQuestions() {
    vector<string> questions;

    // 查询题库表,获取题目和选项
    sql::Statement *stmt;
    sql::ResultSet *res;

    stmt = con->createStatement();
    res = stmt->executeQuery("SELECT question, options FROM questions");

    while (res->next()) {
      string question = res->getString("question");
      string options = res->getString("options");
      // 将题目和选项拼接成一个字符串并添加到vector中
      questions.push_back(question + "
" + options);
    }

    delete res;
    delete stmt;

    return questions;
  }

  void generateExam(string name) {
    // 生成试卷并插入考试表
    sql::Statement *stmt;

    stmt = con->createStatement();
    stmt->execute("INSERT INTO exams (name, teacher_id) VALUES ('" + name + "', 1)");

    delete stmt;
  }

  void submitResponse(int student_id, int exam_id, vector<string> choices) {
    // 将考试答卷插入答卷表
    sql::Statement *stmt;

    stmt = con->createStatement();
    stmt->execute("INSERT INTO responses (student_id, exam_id, choices) VALUES (" + to_string(student_id) + ", " + to_string(exam_id) + ", '" + choices + "')");

    delete stmt;
  }

  float calculateScore(int student_id, int exam_id) {
    float score = 0;

    // 查询答卷表,计算得分
    sql::Statement *stmt;
    sql::ResultSet *res;

    stmt = con->createStatement();
    res = stmt->executeQuery("SELECT choices FROM responses WHERE student_id = " + to_string(student_id) + " AND exam_id = " + to_string(exam_id));

    string choices;
    if (res->next()) {
      choices = res->getString("choices");
    }

    // 根据题目和答案的对应关系计算得分

    delete res;
    delete stmt;

    return score;
  }
};

int main() {
  ExamSystem examSystem;
  vector<string> questions = examSystem.getQuestions();
  
  // 输出题目和选项

  return 0;
}

Dalam contoh ini, kami membina kelas ExamSystem untuk melaksanakan fungsi sistem peperiksaan. Dalam pembina, kami menyambung ke pangkalan data MySQL dan memilih pangkalan data untuk digunakan. Fungsi getQuestions() digunakan untuk menanyakan jadual bank soalan dan mendapatkan soalan dan pilihan, serta menjana vektor yang mengandungi soalan dan pilihan. Fungsi generateExam() digunakan untuk menjana kertas ujian dan memasukkannya ke dalam jadual ujian. Fungsi submitResponse() digunakan untuk memasukkan kertas jawapan peperiksaan ke dalam kertas jawapan. Fungsi calculateScore() digunakan untuk mengira markah berdasarkan kertas jawapan.

Dalam fungsi utama, kami menggunakan fungsi sistem peperiksaan dengan memanggil fungsi kelas ExamSystem.

Ringkasan:
Artikel ini memperkenalkan cara menggunakan MySQL dan C++ untuk membangunkan sistem peperiksaan yang mudah. Bank soalan, maklumat pelajar, kertas ujian dan data lain disimpan melalui pangkalan data MySQL, dan kod yang ditulis dalam C++ digunakan untuk melaksanakan fungsi seperti operasi bank soalan, penjanaan kertas ujian, menjawab peperiksaan dan pemarkahan automatik. Pembangun boleh mengembangkan dan mengoptimumkan kod mengikut keperluan khusus untuk melaksanakan sistem peperiksaan yang lebih kompleks.

Atas ialah kandungan terperinci Bagaimana untuk membangunkan sistem peperiksaan mudah menggunakan MySQL dan C++. 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