Qt开发学生信息管理系统

在本项目中,我们将使用Qt开发一个简单的学生信息管理系统,实现以下功能:

  • 添加学生信息(姓名、学号、性别、年龄、班级);
  • 显示学生信息列表;
  • 根据学号或姓名搜索学生信息;
  • 修改学生信息;
  • 删除学生信息。

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,C++设计模式,Qt编程入门,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++设计模式,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

猜你喜欢

转载自blog.csdn.net/m0_60259116/article/details/130132861