Qt が学生情報管理システムを開発

このプロジェクトでは、Qt を使用して簡単な学生情報管理システムを開発し、次の機能を実現します。

  • 学生情報(名前、学生番号、性別、年齢、クラス)を追加します。
  • 学生情報の一覧を表示します。
  • 学生番号または名前に基づいて学生情報を検索します。
  • 学生情報の変更;
  • 学生情報を削除します。

この記事の特典として、 Qt 開発学習教材パッケージ、テクニカル ビデオ (C++ 言語の基礎、C++ デザイン パターン、Q​​t プログラミング入門、QT シグナルとスロット メカニズム、QT インターフェイス開発イメージ図、QT ネットワーク、QT を含む) を無料で受け取ることができます。データベースプログラミング、QTプロジェクト実戦、QSS、OpenCV、Quickモジュール、取材質問等) ↓↓↓↓↓↓下記参照↓↓料金の受け取りは記事下部をクリック↓↓

プロジェクト構造

このプロジェクトには、次のファイルが含まれます。

  • main.cpp: プログラム エントリ ファイル。
  • student.h および student.cpp: 学生クラスを定義します。
  • studentwidget.h および studentwidget.cpp: 学生情報管理インターフェイスを定義します。
  • studentwidget.ui: 学生情報管理インターフェースのUIデザインファイルです。

学生クラスの実施

まず、生徒の情報を保存および管理するための生徒クラスを定義する必要があります。student.h ファイルでは、次のクラスを定義します。

#ifndef STUDENT_H
#define STUDENT_H
#include <QString>
class Student
{
public:
    Student();
    Student(QString name, QString id, QString gender, int age, QString className);
    QString getName() const;
    void setName(const QString &value);
    QString getId() const;
    void setId(const QString &value);
    QString getGender() const;
    void setGender(const QString &value);
    int getAge() const;
    void setAge(int value);
    QString getClassName() const;
    void setClassName(const QString &value);
private:
    QString name; // 姓名
    QString id; // 学号
    QString gender; // 性别
    int age; // 年龄
    QString className; // 班级
};
#endif // STUDENT_H

student.cpp ファイルでは、このクラスのすべてのメンバー関数を実装します。

#include "student.h"
Student::Student()
{
}
Student::Student(QString name, QString id, QString gender, int age, QString className)
{
    this->name = name;
    this->id = id;
    this->gender = gender;
    this->age = age;
    this->className = className;
}
QString Student::getName() const
{
    return name;
}
void Student::setName(const QString &value)
{
    name = value;
}
QString Student::getId() const
{
    return id;
}
void Student::setId(const QString &value)
{
    id = value;
}
QString Student::getGender() const
{
    return gender;
}
void Student::setGender(const QString &value)
{
    gender = value;
}
int Student::getAge() const
{
    return age;
}
void Student::setAge(int value)
{
    age = value;
}
QString Student::getClassName() const
{
    return className;
}
void Student::setClassName(const QString &value)
{
    className = value;
}

学生情報管理インターフェースの実現

次に、学生情報を追加、表示、検索、変更、および削除するための学生情報管理インターフェイスを作成する必要があります。Qt Designer を使用してインターフェイスを設計し、studentwidget.ui ファイルとして保存します。studentwidget.h ファイルでは、次のクラスを定義します。

#ifndef STUDENTWIDGET_H
#define STUDENTWIDGET_H
#include <QWidget>
#include <QList>
#include "student.h"
namespace Ui {
class StudentWidget;
}
class StudentWidget : public QWidget
{
    Q_OBJECT
public:
    explicit StudentWidget(QWidget *parent = nullptr);
    ~StudentWidget();
private slots:
    void on_addButton_clicked();
    void on_searchButton_clicked();
    void on_modifyButton_clicked();
    void on_deleteButton_clicked();
private:
    Ui::StudentWidget *ui;
    QList<Student> students; // 学生信息列表
    void showStudentList(); // 显示学生信息列表
};
#endif // STUDENTWIDGET_H

studentwidget.cpp ファイルでは、このクラスのすべてのメンバー関数を実装します。

#include "studentwidget.h"
#include "ui_studentwidget.h"
#include <QMessageBox>
StudentWidget::StudentWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::StudentWidget)
{
    ui->setupUi(this);
    // 添加一些默认学生信息
    students.append(Student("张三", "1001", "男", 20, "计算机科学与技术"));
    students.append(Student("李四", "1002", "女", 19, "计算机科学与技术"));
    students.append(Student("王五", "1003", "男", 21, "计算机科学与技术"));
    showStudentList();
}
StudentWidget::~StudentWidget()
{
    delete ui;
}
// 显示学生信息列表
void StudentWidget::showStudentList()
{
    ui->studentTableWidget->setRowCount(students.count());
    for (int i = 0; i < students.count(); i++) {
        Student student = students.at(i);
        QTableWidgetItem *nameItem = new QTableWidgetItem(student.getName());
        QTableWidgetItem *idItem = new QTableWidgetItem(student.getId());
        QTableWidgetItem *genderItem = new QTableWidgetItem(student.getGender());
        QTableWidgetItem *ageItem = new QTableWidgetItem(QString::number(student.getAge()));
        QTableWidgetItem *classItem = new QTableWidgetItem(student.getClassName());
        ui->studentTableWidget->setItem(i, 0, nameItem);
        ui->studentTableWidget->setItem(i, 1, idItem);
        ui->studentTableWidget->setItem(i, 2, genderItem);
        ui->studentTableWidget->setItem(i, 3, ageItem);
        ui->studentTableWidget->setItem(i, 4, classItem);
    }
}
// 添加学生信息
void StudentWidget::on_addButton_clicked()
{
    QString name = ui->nameLineEdit->text();
    QString id = ui->idLineEdit->text();
    QString gender = ui->genderComboBox->currentText();
    int age = ui->ageSpinBox->value();
    QString className = ui->classLineEdit->text();
    students.append(Student(name, id, gender, age, className));
    showStudentList();
}
// 根据学号或姓名搜索学生信息
void StudentWidget::on_searchButton_clicked()
{
    QString searchText = ui->searchLineEdit->text();
    QList<Student> result;
    for (int i = 0; i < students.count(); i++) {
        Student student = students.at(i);
        if (student.getId().contains(searchText) || student.getName().contains(searchText)) {
            result.append(student);
        }
    }
    if (result.count() == 0) {
        QMessageBox::information(this, "提示", "未找到符合条件的学生信息!");
    } else {
        QString msg = QString("搜索结果:共找到%1个学生信息\n").arg(result.count());
        for (int i = 0; i < result.count(); i++) {
            Student student = result.at(i);
            msg += QString("姓名:%1,学号:%2,性别:%3,年龄:%4,班级:%5\n").arg(student.getName()).arg(student.getId()).arg(student.getGender()).arg(student.getAge()).arg(student.getClassName());
        }
        QMessageBox::information(this, "搜索结果", msg);
    }
}
// 修改学生信息
void StudentWidget::on_modifyButton_clicked()
{
    int row = ui->studentTableWidget->currentRow();
    if (row == -1) {
        QMessageBox::warning(this, "警告", "请先选择一行!");
        return;
    }
    QString name = ui->nameLineEdit->text();
    QString id = ui->idLineEdit->text();
    QString gender = ui->genderComboBox->currentText();
    int age = ui->ageSpinBox->value();
    QString className = ui->classLineEdit->text();
    students.replace(row, Student(name, id, gender, age, className));
    showStudentList();
}
// 删除学生信息
void StudentWidget::on_deleteButton_clicked()
{
    int row = ui->studentTableWidget->currentRow();
    if (row == -1) {
        QMessageBox::warning(this, "警告", "请先选择一行!");
        return;
    }
    students.removeAt(row);
    showStudentList();
}

上記のコードでは、QList を定義して生徒情報リストを格納し、showStudentList() 関数で QTableWidget に生徒情報を表示します。学生情報の追加、検索、変更、削除の操作はすべてこのリストに基づいて行われます。

プログラムエントリー

最後に、main.cpp ファイルに QApplication オブジェクトを作成し、メイン ウィンドウとして StudentWidget を表示する必要があります。

cppCopy code#include "studentwidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    StudentWidget w;
    w.show();
    return a.exec();
}

要約する

以上の手順で、簡単な学生情報管理システムを作成できました。このシステムには、学生情報の追加、表示、検索、変更、および削除の機能があり、Qt の基本的な操作とインターフェイス設計をよりよく理解し、習得するのに役立ちます。

この記事の特典として、 Qt 開発学習教材パッケージ、テクニカル ビデオ (C++ 言語の基礎、C++ デザイン パターン、Q​​t プログラミング入門、QT シグナルとスロット メカニズム、QT インターフェイス開発イメージ図、QT ネットワーク、QT を含む) を無料で受け取ることができます。データベースプログラミング、QTプロジェクト実戦、QSS、OpenCV、Quickモジュール、取材質問等) ↓↓↓↓↓↓下記参照↓↓料金の受け取りは記事下部をクリック↓↓

おすすめ

転載: blog.csdn.net/m0_60259116/article/details/130132861