Qt mysql版学生成绩管理系统

Posted tangbolibao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt mysql版学生成绩管理系统相关的知识,希望对你有一定的参考价值。

基于Qt的mysql版学生管理系统

Qt加载驱动博主这里用的Qt提供的QODBC

有关QODBC的使用可以访问:
https://blog.csdn.net/joey_ro/article/details/105411135

注意事项:

   1.mysql和qt的位数一定要一致,要么都是32位,要么都是64位!!
   2.添加ODBC的数据库源名称一定要记住

1.在可视化数据库应用中创建一个数据库,名称为student;
在这里插入图片描述
博主这里使用的是sqlyon

  1. 打开我们的ODBC,添加student数据库,具体设置如下
    在这里插入图片描述
    这里ok就行了
    3.打开Qt进行ui设计
    我们这里先ui设计一下前端模块
    在这里插入图片描述
    这一步大家根据自身喜好可以自己设置,然后对pushbtton按钮进行一个转到槽的操作,下面是源码:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QSqlDatabase>
#include<QSqlQuery>
#include<QSqlQueryModel>
#include<QSqlError>
#include<QDebug>
#include<QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);

    ~Widget();
private:
    //创建数据库
    void createDB();
    //创建数据表
    void ceraTabel();
    //执行查询操作
    void queryTabel();
private slots:
    //添加
    void on_add_Pusbtn_clicked();
    //删除
    void on_de_Pusbtn_clicked();
    //修改
    void on_upd_Pusbtn_clicked();
    //排序
    void on_sort_Psbton_clicked();

private:
    Ui::Widget *ui;
    QSqlDatabase db;  //建立和数据库的连接
    QSqlQueryModel model;  //保存结果集
};
#endif // WIDGET_H

4.构造函数的执行

	//这个是固定窗口的大小,根据自身需求可以保留或者去掉
    this->setFixedSize(this->width(),this->height());
    //创建数据库
    this->createDB();
    //创建数据表
    this->ceraTabel();
    //显示成员
    this->queryTabel();
    //构造函数加这么几句话就行了

5.接下来是模块化的编写,第一步,连接数据库,createDB模块编写

this->db = QSqlDatabase::addDatabase("QODBC");
//这里的2代表着刚刚在OBDC中设置的数据库源名称
    db.setDatabaseName("2");
    //打开数据库
    if(db.open()==true)
    {
        qDebug()<<"数据库连接成功";
    }
    else
    {
        qDebug()<<"数据库连接失败";
    }
    //这里只会连接成功一次,不会重复连接,二次操作会失败,属于正常现象

6.创建数据表 ceraTabel模块

//QSqlQuery是Qt执行mysql语句的类
 QSqlQuery query;
    QString str = QString ("CREATE TABLE student("
                           "id INT PRIMARY KEY NOT NULL,"
                           "name TEXT NOT NULL,"
                           "sorce REAL NOT NULL)");
    if(query.exec(str)==false)
    {
        qDebug()<<"str";
    }
    else
    {
        qDebug()<<"创建成功";
    }

7.执行查询语句 queryTabel模块

 QString str = QStringLiteral("SELECT * FROM student");
 //储存查询表结果集
    model.setQuery(str);
    //在tableView控件中显示
    ui->tableView->setModel(&model);

8.添加信息 on_add_Pusbtn_clicked模块

QSqlQuery query;
    int id = ui->iD_Edit->text().toInt();
    if(id==0)
    {
        QMessageBox::critical(this,"Error","学号输入错误");
        return;
    }
    QString name = ui->name_Edit->text();
    if(name=="")
    {
        QMessageBox::critical(this,"Error","姓名输入错误");
        return;
    }
    double score = ui->sorce_Edit->text().toDouble();
    if(score>100||score<0)
    {
        QMessageBox::critical(this,"Error","成绩输入错误");
        return;
    }
    QString str = QString("INSERT INTO student VALUES(%1,'%2',%3)"
                          ).arg(id).arg(name).arg(score);
    if(query.exec(str)==false)
    {
        qDebug()<<str;
    }
    else
    {
        qDebug()<<"执行插入数据成功!!";
        queryTabel();
    }

9.删除信息 on_de_Pusbtn_clicked模块

QSqlQuery query;
    int id = ui->iD_Edit->text().toInt();
    QString str = QString("DELETE FROM student WHERE id=%1").arg(id);
    if(QMessageBox::question(
                this,"删除","确定删除吗?",QMessageBox::Yes|QMessageBox::No)==QMessageBox::No)
    {
        return;
    }

    if(query.exec(str)==false)
    {
        qDebug()<<str;
    }
    else
    {
        qDebug()<<"删除成功";
    }
    this->queryTabel();

10.修改信息 on_upd_Pusbtn_clicked 模块

//这里我们只需要在学号和成绩处修改就行了,先识别学号,然后对成绩做出修改的这么一个逻辑
QSqlQuery query;
    int id =ui->iD_Edit->text().toInt();
    double score = ui->sorce_Edit->text().toDouble();
    QString str = QString("UPDATE student SET sorce=%1 WHERE id=%2").arg(score).arg(id);
    if(query.exec(str)==false)
    {
        qDebug()<<str;
    }
    else
    {
        qDebug()<<"修改成功";
    }
    this->queryTabel();

11.排序模块

 QString value ="学号";
    if(value=="学号")
    {
        value="id";
    }
    else
    {
        value="sorce";
    }
    QString condition;
    if(ui->sort_Combox->currentIndex() == 0)
    {
        condition = "ASC";
    }
    else
    {
        condition = "DESC";
    }
    QString str = QString("SELECT * FROM student ORDER BY %1 %2").arg(value).arg(condition);
    qDebug()<<value;
    model.setQuery(str);
    ui->tableView->setModel(&model);

以上,是学生成绩管理系统的整体模块和编程思想,有问题欢迎和博主一起讨论!!

以上是关于Qt mysql版学生成绩管理系统的主要内容,如果未能解决你的问题,请参考以下文章

mysql版 查询各科成绩前三名的记录:(不考虑成绩并列情况)

[课程设计] 学生成绩管理系统(Python版)

基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版建议收藏

基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版建议收藏

C语言学生成绩管理系统代码

IDEA+Java+SSM+Mysql+Layui实现Web学生成绩管理系统建议收藏