QT C++ MySQL实现学生成绩管理系统

一、功能设计

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

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

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

4.查询学生信息:
用户可以选择姓名或者学号任一项作为查询条件,然后输入查询信息。
点击“查询”按钮后,系统将显示所有匹配的学生信息。
查询结果将在表格中显示,不匹配的信息不会显示。

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

二、功能展示

1.添加学生信息:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.删除学生信息:
在这里插入图片描述

3.修改学生信息:
在这里插入图片描述

4.查询学生信息:
在这里插入图片描述
在这里插入图片描述

5.浏览所有学生信息:
在这里插入图片描述

三、代码分析

1.目录结构
在这里插入图片描述
2.数据库表
在这里插入图片描述

3.关键代码实现

#include "widget.h"
#include "ui_widget.h"

//构造函数
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //连接数据库
    db=QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName("test");
    db.setHostName("127.0.0.1");
    db.setUserName("root");
    db.setPassword("12345678");
    db.setConnectOptions("MYSQL_OPT_RECONNECT=TRUE;MYSQL_OPT_USE_RESULT=FALSE;CHARSET=utf8");


    if(db.open())
    {
        this->on_queryBtn_clicked();
    }
    else
    {
         QMessageBox::information(this,"提示","连接失败");
    }
}

//析构
Widget::~Widget()
{
    delete ui;
}


//刷新数据
void Widget::refreshData()
{
    this->on_queryBtn_clicked();
}
void Widget::refreshQueryData(QStandardItemModel *model)
{
    ui->tableView->setModel(model);

}

//添加数据
void Widget::on_addBtn_clicked()
{

    Add* addInfo=new Add();
    addInfo->show();
    connect(addInfo,&Add::addSuccess,this,&Widget::refreshData);

}
//浏览数据
void Widget::on_queryBtn_clicked()
{
    // 创建模型
    QStandardItemModel *model = new QStandardItemModel(0, 3);
    model->setHeaderData(0, Qt::Horizontal, "学号");
    model->setHeaderData(1, Qt::Horizontal, "姓名");
    model->setHeaderData(2, Qt::Horizontal, "成绩");

    // 执行查询
    QSqlQuery query(db);
    QString sql="SELECT id, name, score FROM score";
    if (query.exec(sql))
    {
        while (query.next())
        {
            int id = query.value(0).toInt();
            QString name = query.value(1).toString();
            float score = query.value(2).toFloat();

            // 创建项并添加到模型
            QStandardItem *idItem = new QStandardItem(QString::number(id));
            QStandardItem *nameItem = new QStandardItem(name);
            QStandardItem *scoreItem = new QStandardItem(QString::number(score));

            // 将项添加到行中
            QList<QStandardItem*> row;
            row << idItem << nameItem << scoreItem;
            model->appendRow(row);
        }
    } else {
        QMessageBox::information(this, "错误", "查询失败");
    }


    // 设置模型到QTableView
    ui->tableView->setModel(model);


}
//删除数据
void Widget::on_deleteBtn_clicked()
{
    Delete* deleteInfo=new Delete();
    deleteInfo->show();

    connect(deleteInfo, &Delete::dataDeletedSuccessfully, this, &Widget::refreshData);

}
//修改数据
void Widget::on_updateBtn_clicked()
{
    Update* updateInfo=new Update();
    updateInfo->show();
    connect(updateInfo,&Update::updateSuccess,this,&Widget::refreshData);
}
//查询数据
void Widget::on_selectBtn_clicked()
{
    Select* selectInfo=new Select();
    selectInfo->show();

    connect(selectInfo,&Select::selectSuccess,this,&Widget::refreshQueryData);

}


  • 21
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值