在本项目中,我们将使用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模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓

Qt开发学生信息管理系统相关推荐

  1. 基于JavaSwing开发学生信息管理系统(SQLServer数据库版本) 毕业设计 课程设计 大作业

    基于JavaSwing开发学生信息管理系统(SQLServer数据库版本):   (大作业) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk+SQLServer数据库 运行 ...

  2. WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(完)

    最近通过WPF开发项目,为了对WPF知识点进行总结,所以利用业余时间,开发一个学生信息管理系统[Student Information Management System].前四篇文章进行了框架搭建和 ...

  3. 后端框架 Nest 入门教程: 开发学生信息管理系统

    作为一个前端,是否有想过学习下后端,做一个完整的应用? 如果你只是想体验下服务器端,可以选择 Express[1].它更容易上手.如果你想做一个企业级应用,推荐使用 Nest. Nest[2] (Ne ...

  4. 如何用qt实现学生信息管理系统

    源码资源:https://gitee.com/dxl96/qt_resource/blob/master/%E5%AD%A6%E7%94%9F%E4%BF%A1%E6%81%AF%E7%AE%A1%E ...

  5. WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(一)

    最近通过WPF开发项目,为了对WPF知识点进行总结,所以利用业余时间,开发一个学生信息管理系统[Student Information Management System].本文主要简述如何通过WPF ...

  6. 原生php开发学生信息管理系统源码

    主要功能: 1.班级管理 (1)添加班级:输入班级名称,选择系别,确认添加 (2)班级列表:班级列表显示,班级修改,删除班级,列表分页 2.学生管理 (1)添加学生:输入学生姓名,选择系别,选择班级名 ...

  7. Android应用开发-学生信息管理系统

    设计目的 1.网上很少有关于SQLite简单综合项目的测试APP. 2.把自己所学的部分UI综合一下,希望能给新手一些帮助. 涉及知识点 1.包括SQLite的增删查找等功能.查找中加入了" ...

  8. c语言学生信息系统 完整版,C语言 学生信息管理系统(完整版).docx

    C语言 学生信息管理系统(完整版) 电子科技大学成都学院 程序综合设计论文 论文题目 学生信息管理系统 学生姓名 魏国 学 号 1340840625 专 业 机械设计制造及其自动化 系(分院) 电子工 ...

  9. JSP+SQL基于JSP的学生信息管理系统(源代码+论文+答辩PPT)

    随着学校规模的不断扩大,学生数量急剧增加,有关学生的各种信息也成倍增长.面对如此庞大的信息量,开发学生信息管理系统来提高学生管理工作的效率就成为必然.通过该系统,可以做到信息的规范管理.科学统计和快速 ...

最新文章

  1. CTFshow 命令执行 web61
  2. Android MagicIndicator系列之一 —— 使用MagicIndicator打造千变万化的ViewPager指示器...
  3. github 修改fork的代码之后如何提交代码并pull request
  4. cesium学习之环境搭建
  5. 如何实现线程池的 QueueUserWorkItem 方法的延续?
  6. 注入域对象而不是基础结构组件
  7. ES6的class方法基本用法
  8. 经典同步问题三——读者写者问题
  9. 【PostgreSQL-9.6.3】触发器实例
  10. 【09-06】数据结构学习笔记-图篇00
  11. A - Six Degrees of Cowvin Bacon POJ - 2139 最短路Floyd
  12. Spring Session
  13. 非线性系统稳定性理论分析、设计方法
  14. NI 国家仪器 各版本软件下载链接
  15. 树莓派 Ubuntu 18.04 启动2.4Ghz或5Ghz热点及部分5G信道启动失败解决方法
  16. 视觉里程计 matlab实现,基于CarSim和Matlab的智能车辆视觉里程计仿真平台设计
  17. 电脑蓝屏的几种状况处理
  18. HTML5编写船上航行,描写帆船航行的诗句
  19. 方便快捷!身份证OCR带你一秒录入
  20. python 导航框 | 哔哩哔哩推荐100万收藏的导航网页

热门文章

  1. 说说 Bootstrap 表格样式
  2. C++复习炒剩饭(1)心一意
  3. 嵌入式开发学习笔记9-做一个好玩的LED闪烁
  4. 人机交互新时代:多维度快速看清ChatGPT(附下载)
  5. MPI并行编程: 矩阵乘法,积分计算,PSPR排序
  6. 回味无穷:历史名人的幽默隽语[转自人民网]
  7. 四种形态图解_波浪理论:调整浪的四种形态(图解)
  8. 建模语言UML在软件开发中的应用
  9. android—性能优化2—内存优化
  10. 每日一题:1894.找到需要补充粉笔的学生编号 简单的模拟题目,注意求余的技巧!...