Maison  >  Article  >  base de données  >  Comment développer un système d'examen simple en utilisant MySQL et C++

Comment développer un système d'examen simple en utilisant MySQL et C++

WBOY
WBOYoriginal
2023-09-20 10:45:401338parcourir

Comment développer un système dexamen simple en utilisant MySQL et C++

Comment utiliser MySQL et C++ pour développer un système d'examen simple

Actuellement, dans le domaine de l'éducation, la demande de systèmes d'examen électroniques augmente. Cet article explique comment utiliser MySQL et C++ pour développer un système d'examen simple. Grâce à ce système, les enseignants peuvent créer des banques de questions et générer des copies de test, et les étudiants peuvent se connecter au système pour passer des examens et les noter automatiquement.

  1. Conception de base de données MySQL
    Tout d'abord, nous devons concevoir une base de données MySQL pour stocker la banque de questions, les informations sur les étudiants, les copies de test et d'autres données. Ce qui suit est un exemple simple de conception de base de données :
  • Table de questions (questions) : contient des champs tels que des questions, des options, des réponses, etc.
    CREATE TABLE questions (
    id INT PRIMARY KEY AUTO_INCREMENT,
    question VARCHAR(255) NOT NULL,
    options TEXT,
    réponse VARCHAR(255) NOT NULL
    );
  • Table des étudiants : contient les noms des étudiants (nom), le numéro de l'étudiant (student_id) et d’autres champs.
    CREATE TABLE étudiants (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    student_id VARCHAR(255) NOT NULL
    );
  • Exams : Contient le nom de l'épreuve (nom), l'enseignant ( Teacher_id) et d'autres champs.
    Examens CREATE TABLE (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    professor_id INT NOT NULL
    );
  • Fiche de réponses à l'examen (réponses) : inclut les étudiants participant à l'examen (student_id), test correspondant papiers (champs tels que exam_id) et statut de réponse (choix).
    CREATE TABLE réponses (
    id INT PRIMARY KEY AUTO_INCREMENT,
    student_id INT NOT NULL,
    exam_id INT NOT NULL,
    choix TEXT,
    score FLOAT(2, 1)
    );
  1. C++ development
    in C++ development, nous devons utiliser le connecteur MySQL C++ pour nous connecter à la base de données MySQL. Voici un exemple de code C++ simple :
#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;
}

Dans ce code, nous introduisons d'abord les deux fichiers d'en-tête mysql_driver.h et mysql_connection.h. Ensuite, obtenez l'instance du pilote MySQL via la fonction get_mysql_driver_instance() et connectez-vous à la base de données à l'aide de la fonction connect(). Ensuite, sélectionnez la base de données à utiliser via la fonction setSchema(). Enfin, libérez la connexion après avoir effectué les opérations de base de données.

  1. Implémentation des fonctions du système d'examen
    Pour implémenter les fonctions du système d'examen en C++, nous devons écrire certaines fonctions pour implémenter des fonctions telles que le fonctionnement de la banque de questions, la génération de copies de test, la réponse aux examens et la notation automatique. Voici un exemple de code simple :
#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;
}

Dans cet exemple, nous construisons une classe ExamSystem pour implémenter les fonctions du système d'examen. Dans le constructeur, on se connecte à la base de données MySQL et on sélectionne la base de données à utiliser. La fonction getQuestions() est utilisée pour interroger la table de la banque de questions et obtenir des questions et des options, et générer un vecteur contenant des questions et des options. La fonction generateExam() est utilisée pour générer des copies de test et les insérer dans la table de test. La fonction submitResponse() est utilisée pour insérer la feuille de réponses de l'examen dans la feuille de réponses. La fonction calculateScore() est utilisée pour calculer le score en fonction de la feuille de réponses.

Dans la fonction principale, nous utilisons les fonctions du système d'examen en appelant les fonctions de la classe ExamSystem.

Résumé :
Cet article explique comment utiliser MySQL et C++ pour développer un système d'examen simple. La banque de questions, les informations sur les étudiants, les copies de test et d'autres données sont stockées dans la base de données MySQL, et le code écrit en C++ est utilisé pour implémenter des fonctions telles que le fonctionnement de la banque de questions, la génération de copies de test, la réponse aux examens et la notation automatique. Les développeurs peuvent étendre et optimiser le code en fonction de besoins spécifiques pour mettre en œuvre des systèmes d'examen plus complexes.

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