MySQLとC++を使った簡単な検査システムの開発方法
MySQL と C を使って簡単な試験システムを開発する方法
現在、教育現場では電子試験システムの需要が高まっています。この記事ではMySQLとCを使って簡単な検査システムを開発する方法を紹介します。このシステムを通じて、教師は質問バンクを作成し、試験問題を作成することができ、学生はシステムにログインして試験を受け、自動的に採点することができます。
- MySQL データベースの設計
まず、問題バンク、学生情報、試験用紙、その他のデータを保存するための MySQL データベースを設計する必要があります。以下は簡単なデータベース設計の例です:
- 質問テーブル (質問): 質問、選択肢、回答などのフィールドが含まれます。
CREATE TABLE の質問 (
id INT PRIMARY KEY AUTO_INCREMENT,
質問 VARCHAR(255) NOT NULL,
オプション TEXT,
回答 VARCHAR(255) NOT NULL
); - Students テーブル (students): 学生名 (name)、学生番号 (student_id) などのフィールドが含まれます。
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
student_id VARCHAR(255) NOT NULL
); - 試験テーブル(exams): テスト用紙の名前 (name)、テスト用紙が属する教師 (Teacher_id) などのフィールドが含まれます。
CREATE TABLE 試験 (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
Teacher_id INT NOT NULL
); - 試験解答用紙 (解答) ): 試験に参加する学生 (student_id)、対応するテスト用紙 (exam_id)、解答ステータス (選択肢) などのフィールドが含まれます。
CREATE TABLE 応答 (
id INT PRIMARY KEY AUTO_INCREMENT,
Student_id INT NOT NULL,
Exam_id INT NOT NULL,
選択肢 TEXT,
スコア FLOAT(2, 1)
);
- C 開発
C 開発では、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() 関数を通じて使用するデータベースを選択します。最後に、データベース操作を実行した後、接続を解放します。
- 試験システムの機能の実装
試験システムの機能を C で実装するには、問題バンクの操作、問題用紙の生成、試験などの機能を実装するいくつかの関数を記述する必要があります。解答と自動採点。以下は簡単なコード例です:
#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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。

VSコードでCを書くことは実行可能であるだけでなく、効率的でエレガントです。重要なのは、コードの完了、構文の強調表示、デバッグなどの関数を提供する優れたC/C拡張機能をインストールすることです。 VSコードのデバッグ機能は、バグをすばやく見つけるのに役立ちますが、Printf出力は昔ながらのデバッグ方法です。さらに、動的メモリの割り当ての場合、メモリリークを防ぐためにリターン値をチェックしてメモリを解放する必要があり、これらの問題のデバッグはVSコードで便利です。 VSコードはパフォーマンスの最適化に直接役立つことはできませんが、コードパフォーマンスを簡単に分析するための優れた開発環境を提供します。優れたプログラミング習慣、読みやすさ、保守性も非常に重要です。とにかく、VSコードはです

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

VSコードは、Microsoftが開発した無料のオープンソースクロスプラットフォームコードエディターと開発環境であるフルネームVisual Studioコードです。幅広いプログラミング言語をサポートし、構文の強調表示、コード自動完了、コードスニペット、および開発効率を向上させるスマートプロンプトを提供します。リッチな拡張エコシステムを通じて、ユーザーは、デバッガー、コードフォーマットツール、GIT統合など、特定のニーズや言語に拡張機能を追加できます。 VSコードには、コードのバグをすばやく見つけて解決するのに役立つ直感的なデバッガーも含まれています。

Docker LNMPコンテナコールステップ:コンテナの実行:Docker Run -D - Name LNMP -Container -P 80:80 -P 443:443 LNMPスタックコンテナIPを取得する:Docker Inspect LNMP -Container | GREP iPaddress Access Webサイト:http://&lt; container ip&gt;/index.phpsshアクセス:docker exec -it lnmp -container bash access mysql:mysql -u roo

VSコードはMACOでうまく機能し、開発効率を向上させることができます。インストールと構成の手順には、インストールとコードと構成が含まれます。言語固有の拡張機能(JavaScriptのESLINTなど)をインストールします。拡張機能を慎重に取り付けて、過度のスタートアップが遅くなることを避けます。 GIT統合、ターミナル、デバッガーなどの基本的な機能を学びます。適切なテーマとコードフォントを設定します。潜在的な問題に注意:拡張互換性、ファイル許可など。
