【C++】C++ QT实现 学生信息管理系统(QT源码)【独一无二】

米码收割机 2024-07-09 14:35:20 阅读 75

请添加图片描述


👉博__主👈:米码收割机

👉技__能👈:C++/Python语言

👉公众号👈:测试开发自动化【获取源码+商业合作】

👉荣__誉👈:阿里云博客专家博主、51CTO技术博主

👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


C++ QT学生信息管理系统(原码)【独一无二】


目录

C++ QT学生信息管理系统(原码)【独一无二】一、功能设计二、功能展示三、代码分析3.1. 类和构造函数3.2. 控件初始化3.3. 布局设置3.4. 信号与槽的连接

3.5. 功能实现的方法


一、功能设计

添加学生信息

用户通过输入框输入学生的姓名、年龄、学号、课程以及分数。点击“添加”按钮,系统会检查输入是否完整,不允许任何字段为空。完整的学生信息将被添加到系统中,并显示在表格中以供查看。

删除学生信息

用户输入需要删除的学生的姓名。点击“删除”按钮,系统将查找该学生的信息。如果找到,学生信息将被从系统中删除,并更新表格显示。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “界面学生管理系统” 获取。👈👈👈

修改学生信息

用户首先需要输入学生的姓名作为搜索关键词。在其他输入框中输入需要修改的新信息。点击“修改”按钮后,如果找到该学生,其信息将根据输入更新。表格将刷新以显示更新后的信息。

查询学生信息

用户可以输入姓名、年龄、学号、课程或分数中的任一项作为查询条件。点击“查询”按钮后,系统将显示所有匹配的学生信息。查询结果将在表格中显示,不匹配的信息不会显示。

显示所有学生信息

点击“显示”按钮,系统将展示所有已存储的学生信息。无论之前进行了何种查询或操作,显示结果都包括所有学生信息。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “界面学生管理系统” 获取。👈👈👈


二、功能展示

添加信息

在这里插入图片描述

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “界面学生管理系统” 获取。👈👈👈

修改信息

在这里插入图片描述

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “界面学生管理系统” 获取。👈👈👈

查询信息

在这里插入图片描述

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “界面学生管理系统” 获取。👈👈👈

显示所有信息

在这里插入图片描述

删除信息

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “界面学生管理系统” 获取。👈👈👈

在这里插入图片描述


三、代码分析

3.1. 类和构造函数

类名为 <code>MainWindow,继承自 QWidget。在构造函数中,首先创建了一个名为 centralWidget 的中央部件,并设置为当前窗口的中夬部件。同时,设置了窗口的标题为 “学生信息管理系统”。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “界面学生管理系统” 获取。👈👈👈

3.2. 控件初始化

构造函数中初始化了五个输入框(QLineEdit)用于输入姓名、年龄、学号、课程、分数。

初始化了五个按钮(QPushButton)用于实现添加、删除、修改、查询和显示学生信息的功能。

初始化了一个表格控件(QTableWidget),用于显示学生信息,表头包括姓名、年龄、学号、课程和分数。

QPushButton* addButton = nullptr;

QPushButton* deleteButton = nullptr;

QPushButton* modifyButton = nullptr;

QPushButton* searchButton = nullptr;

QPushButton* showButton = nullptr;

QLineEdit* nameEdit = nullptr;

QLineEdit* ageEdit = nullptr;

QLineEdit* idEdit = nullptr;

QLineEdit* courseEdit = nullptr;

QLineEdit* scoreEdit = nullptr;

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “界面学生管理系统” 获取。👈👈👈

3.3. 布局设置

使用 QHBoxLayoutQVBoxLayoutQFormLayoutQGridLayout 来组织控件的布局。

使用 QFormLayout 布局来管理输入框,并通过 addRow 方法添加标签和对应的输入框。

使用 QGridLayout 布局来管理按钮。

最后将表格控件和其他布局组合到一个水平布局中,并设置给 centralWidget

QHBoxLayout* hLaylout = new QHBoxLayout;

QVBoxLayout* vLaylout = new QVBoxLayout;

QFormLayout* fLayout = new QFormLayout;

QGridLayout* gLayout = new QGridLayout;

fLayout->addRow("姓名:", nameEdit);

fLayout->addRow("年龄:", ageEdit);

fLayout->addRow("学号:", idEdit);

fLayout->addRow("课程:", courseEdit);

fLayout->addRow("分数:", scoreEdit);

gLayout->addWidget(addButton, 0, 0);

gLayout->addWidget(deleteButton, 0, 1);

gLayout->addWidget(modifyButton, 1, 0);

gLayout->addWidget(searchButton, 1, 1);

gLayout->addWidget(showButton, 2, 0, 1, 2);

vLaylout->addLayout(fLayout);

vLaylout->addLayout(gLayout);

hLaylout->addLayout(vLaylout);

hLaylout->addWidget(tableWidget);

3.4. 信号与槽的连接

SendSignal2Slot 方法中,将按钮的点击事件连接到对应的槽函数。这些槽函数用于处理添加、删除、修改、查询、显示全部信息的功能。

void MainWindow::SendSignal2Slot() {

connect(addButton, &QPushButton::clicked, this, &MainWindow::addMessage);

connect(searchButton, &QPushButton::clicked, this, &MainWindow::searchMessage);

connect(modifyButton, &QPushButton::clicked, this, &MainWindow::modifyMessage);

connect(deleteButton, &QPushButton::clicked, this, &MainWindow::deleteMessage);

connect(showButton, &QPushButton::clicked, this, &MainWindow::showAllMessage);

}

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “界面学生管理系统” 获取。👈👈👈

3.5. 功能实现的方法

添加信息 (addMessage):从输入框中获取数据,检查数据是否为空,然后创建一个学生信息对象并添加到列表(向量)中。最后将信息添加到表格中显示。

查询信息 (searchList):从输入框中获取数据,遍历学生信息列表,匹配数据并更新表格显示。

修改信息 (modifyMessage):从输入框中获取数据,遍历学生信息列表,匹配姓名后更新对应的其他信息,然后刷新显示。

删除信息 (deleteMessage):从输入框中获取名字,遍历列表,匹配名字后从列表中删除对应的信息,然后刷新显示。

显示所有信息 (showAllMessage):清空表格,并重新遍历学生信息列表,将所有信息添加到表格中显示。

void MainWindow::addMessage() {

bool ageFlag;

bool sidFlag;

bool scoreFlag;

QString name = nameEdit->text();

QString age = ageEdit->text();

QString sid = idEdit->text();

QString course = courseEdit->text();

QString score = scoreEdit->text();

if (name.isEmpty() && age.isEmpty() && sid.isEmpty() && course.isEmpty() && score.isEmpty()) {

QMessageBox::warning(this, "Warning", "请确保输入信息不为空 !");

return;

}

StudentMessage msg;

msg.name = name;

msg.age = age;

msg.sid = sid;

msg.course = course;

msg.score = score;

// 添加到vector中

allMessage.push_back(msg);

// 显示在table中

appendTable(msg.name, msg.age, msg.sid, msg.course, msg.score);

}

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “界面学生管理系统” 获取。👈👈👈



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。