MySQL と C を使って簡単な試験システムを開発する方法
現在、教育現場では電子試験システムの需要が高まっています。この記事ではMySQLとCを使って簡単な検査システムを開発する方法を紹介します。このシステムを通じて、教師は質問バンクを作成し、試験問題を作成することができ、学生はシステムにログインして試験を受け、自動的に採点することができます。
#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; }
このコードでは、最初に 2 つのヘッダー ファイル mysql_driver.h と mysql_connection.h を導入しました。次に、get_mysql_driver_instance() 関数を使用して MySQL ドライバー インスタンスを取得し、connect() 関数を使用してデータベースに接続します。次に、setSchema() 関数を通じて使用するデータベースを選択します。最後に、データベース操作を実行した後、接続を解放します。
#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; }
この例では、試験システムの機能を実装するための ExamSystem クラスを構築します。コンストラクターでは、MySQL データベースに接続し、使用するデータベースを選択します。 getQuestions() 関数は、質問バンク テーブルをクエリして質問と選択肢を取得し、質問と選択肢を含むベクトルを生成するために使用されます。 generateExam() 関数は、テスト用紙を生成し、テストテーブルに挿入するために使用されます。 submitResponse() 関数は、試験の解答用紙を解答用紙に挿入するために使用されます。 CalculateScore() 関数は、解答用紙に基づいてスコアを計算するために使用されます。
main関数では、ExamSystemクラスの関数を呼び出すことで試験システムの機能を利用します。
概要:
この記事では、MySQL と C を使用して簡単な検査システムを開発する方法を紹介します。問題バンク、生徒情報、試験問題などのデータは MySQL データベースを介して保存され、問題バンクの操作、問題用紙の生成、試験解答、自動採点などの機能は C で記述されたコードで実装されます。開発者は、特定のニーズに応じてコードを拡張および最適化し、より複雑な検査システムを実装できます。
以上がMySQLとC++を使った簡単な検査システムの開発方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。