用C++写一个学生信息系统,程序要求包括:用到继承,重载,信号与槽,图形界面设计
时间: 2024-01-11 10:03:32 浏览: 86
500行单文件学生信息管理系统,c++实现+文件读写+单链表+排序,可直接运行 应付课程设计绝对没问题
5星 · 资源好评率100%
好的,我会尽力回答你的问题。首先,你需要使用 Qt 框架来设计图形界面,同时使用 C++ 编写后端逻辑。以下是一个简单的示例:
```C++
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QVBoxLayout>
#include <QtCore/QDebug>
class Student {
public:
QString name;
int age;
QString major;
virtual void display() {
qDebug() << "Name:" << name << ", Age:" << age << ", Major:" << major;
}
};
class Undergraduate : public Student {
public:
QString degree;
void display() override {
qDebug() << "Name:" << name << ", Age:" << age << ", Major:" << major << ", Degree:" << degree;
}
};
class MainWindow : public QMainWindow {
public:
MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
auto label = new QLabel("Student Information System", this);
label->setAlignment(Qt::AlignCenter);
auto addButton = new QPushButton("Add Student", this);
connect(addButton, &QPushButton::clicked, this, &MainWindow::addStudent);
auto displayButton = new QPushButton("Display Students", this);
connect(displayButton, &QPushButton::clicked, this, &MainWindow::displayStudents);
auto layout = new QVBoxLayout();
layout->addWidget(label);
layout->addWidget(addButton);
layout->addWidget(displayButton);
auto widget = new QWidget(this);
widget->setLayout(layout);
setCentralWidget(widget);
}
private:
QList<Student *> students;
void addStudent() {
auto student = new Undergraduate();
student->name = "John Doe";
student->age = 20;
student->major = "Computer Science";
student->degree = "Bachelor";
students.append(student);
}
void displayStudents() {
for (auto student : students) {
student->display();
}
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MainWindow mainWindow;
mainWindow.show();
return app.exec();
}
```
在上面的示例中,我们定义了一个基类 `Student` 和一个派生类 `Undergraduate`,并实现了一个 `display` 函数。我们还创建了一个 `MainWindow` 类来显示图形界面,并使用 `QVBoxLayout` 和 `QLabel`、`QPushButton` 等控件来设计界面。我们还定义了两个槽函数 `addStudent` 和 `displayStudents` 来添加和展示学生信息。
当点击“Add Student”按钮时,会创建一个 `Undergraduate` 对象并添加到 `students` 列表中;当点击“Display Students”按钮时,会遍历 `students` 列表并调用 `display` 函数展示学生信息。
当然,这只是一个简单的示例。你可以根据实际需求来扩展和完善代码,比如添加更多的学生属性和操作等。
阅读全文