Qt C/C++编程小案例(1)Sqlite数据库操作之学生选课管理系统

Qt C/C++编程小案例(1)Sqlite数据库操作之学生选课管理系统

提示 :若积分太高,就私聊或者评论,我去降低,谢谢大家支持

ps:在这篇你能学到:
01.Qt操作Sqlite数据库
02.点击获取每行View里面的数据
03.view里面的数据转Excel表格
04.了解窗口之间的函数传递

1.视频演示地址:

Qt C++界面化 sqlite数据库的学生选课系统

2.案例需求:
2.1 基本要求:
课程信息包括:课程编号、课程名称、任课教师、学分、课程性质、开课院系等。
2.2 功能要求:
1)能够对课程信息进行输入、修改、删除操作;
2)按给定的条件(编号、名称、任课教师、开课院系等)查询课程信息;
3)以文件形式保存相关信息,可以读取默认文件中的信息进行查询等操作。

3.需求分析:
3.1根据需求我们可以选择3个方案,分别是使用SQL数据库、Sqlite数据库以及Excel表格。
1)可以使用电脑安装的SQL Server 2008 进行数据的存储,可以直接使用Qt直接操作sql的各类功能。
2)使用Qt平台自带的Sqlite直接进行编程,操作简单。
3)利用Qt使用Excel进行数据的存储。
在以上选择中我使用了 Sqlite数据库编程,因为是Qt平台支持的Sqlite相对于其他两种较为简单,在测试数据库时,可使用 Navicat Premium 15来进行本地数据库正确性的测试,如图:

Qt C/C++编程小案例(1)Sqlite数据库操作之学生选课管理系统
剩下的就是对数据库进行 增、删、查、改操作。

4.功能源代码解析:


#include
#include
#include
#include
#include

QSqlDatabase db;
QSqlQueryModel model;
QString tableName = "qTableInfo";

db = QSqlDatabase::addDatabase("QSQLITE");

db.setDatabaseName("schoolTestDB.db");

if(db.open() == false){

    QMessageBox::critical(this,"DataError",
                          db.lastError().text());
}
else {
}

QString createSql =
            QString("CREATE TABLE %1(\
                '课程编号' INT PRIMARY KEY NOT NULL,\
                '课程名称' TEXT NOT NULL,\
                '任课教师' TEXT NOT NULL,\
                '学分' REAL NOT NULL,\
                '课程性质' TEXT NOT NULL,\
                '开课院系' TEXT NOT NULL)").arg(tableName);
     QSqlQuery query;
     query.exec(createSql);

QString str = QString("SELECT * FROM %1").arg(tableName);
    model.setQuery(str);
    ui->sqlite_View->setModel(&model);

QSqlQuery query;

    int cNum = ui->cNum_Edit->text().toInt();

    QString cName = ui->cName_Edit->text();

    QString tName = ui->tName_Edit->text();

    double score = ui->scoreEdit->text().toDouble();

    QString cNature = ui -> cb_cNature -> currentText();

    QString schoolName = ui->school_cmb->currentText();

    QString insertSql = QString(
        "INSERT INTO %1 VALUES(%2,'%3','%4',%5,'%6','%7');"
                ).arg(tableName).arg(cNum).arg(cName).arg(tName).arg(score).arg(cNature).arg(schoolName);

    query.exec(insertSql);

    query.exec("commit");

QSqlQuery query;

        QString dropRowId = QString("delete from qTableInfo where 课程编号 = %1").arg(keyId);

        query.exec(dropRowId);

QString selectInfo = QString("SELECT * FROM %1 WHERE %2 LIKE '%%3%'")
            .arg(tableName).arg(columnName).arg(serachKey);

    model.setQuery(selectInfo);
    ui->cQueryView->setModel(&model);

QSqlQuery query;

    QString tName = ui->tName_Edit->text();

    double score = ui->scoreEdit->text().toDouble();

    QString cName = ui->cName_Edit->text();

    QString cNature = ui->cb_cNature->currentText();

    QString scholl = ui->school_cmb->currentText();

    QString updatatSql = QString(
        "UPDATE %1 SET 课程名称 = '%2', 任课教师 = '%3', 学分 = %4, 课程性质 = '%5', 开课院系 = '%6' WHERE 课程编号 = %7"
                ).arg(tableName).arg(cName).arg(tName).arg(score).arg(cNature).arg(scholl).arg(sqlIdInfo);

    query.exec(updatatSql);

5.view数据怎么保存为Excel表格:
这里需要exportexcelobject.c和exportexcelobject.h文件加入工程才可以操作。
源码解析(这段代码为网上修改 不能保存第一行数据原因不知 有小伙伴知道的记得私聊或者评论):


    QString fileName = QFileDialog::getSaveFileName(this, tr("Excel file"), qApp->applicationDirPath (),
                                                    tr("Excel Files (*.xls)"));
    if (fileName.isEmpty())
        return;

    ExportExcelObject obj(fileName, "infoData", ui->InfoView);

    obj.addField(1, "课程名称", "char(20)");
    obj.addField(2, "任课老师", "char(20)");

    obj.addField(3, "学分", "char(20)");
    obj.addField(4, "课程性质", "char(20)");
    obj.addField(5, "开课院系", "char(20)");

    ui->progressBar->setValue(0);
    ui->progressBar->setMaximum(ui->InfoView->model()->rowCount());

    connect(&obj, SIGNAL(exportedRowCount(int)), ui->progressBar, SLOT(setValue(int)));

    int retVal = obj.export2Excel();
    if( retVal > 0)
    {
        QMessageBox::information(this, tr("Done"),
                                 QString(tr("%1 records exported!")).arg(retVal)
                                 );
    }

以上便是Qt对数据库Sqlite 增、删、查、改的基本操作以及对数据存储Excel的转换操作,有疑问的可以下载源码来进行查看。
源码地址:https://download.csdn.net/download/qq_43122582/21064541

Original: https://blog.csdn.net/qq_43122582/article/details/119737778
Author: 别打落了
Title: Qt C/C++编程小案例(1)Sqlite数据库操作之学生选课管理系统

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816474/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球