QT练习学生成绩管理系统

QT练习学生成绩管理系统,第1张

学生管理系统
    • 一、使用Qt Creater创建项目
    • 二、在工程文件添加相关模块
    • 三、交互界面设置
    • 四、四个按钮转到槽 *** 作
    • 五、头文件添加相关模块以及成员变量
    • 六、编写源代码
    • 七、测试
    • 八、进一步完善
    • 打包


准备环境
*** 作系统:Windows
数据库:Sqlite3
打包工具:Enigma Virtual Box
模板:QT Widgets Application
项目名:Student
基类:QDialog
类名:StudentDialog



一、使用Qt Creater创建项目

模板:QT Widgets Application
项目名:Student
基类:QDialog
类名:StudentDialog

创建完工程后如下:

二、在工程文件添加相关模块

三、交互界面设置
  1. 本次需要用到的控件有如下:
    Combo Box
    PushButton
    tableView
    Label
    Line Edit

  2. 添加第一个组合框Combo Box

  3. 第二个组合框

  4. 添加一个排序按钮pushButton

  5. 添加显示表的内容tableView控件

  6. 添加提示Label控件和输入Line Edit

  7. 添加 *** 作按钮PushButton

  8. 更改窗口标题为学生管理系统

  9. 修改控件名字

  10. 布局:自定义就可以了



四、四个按钮转到槽 *** 作

插入、删除、修改、排序按钮

自动生成槽函数



五、头文件添加相关模块以及成员变量
  1. 头文件studentdialog.h添加相关模块

     //工程文件需要添加:QT+=sql
     #include 
     #include 
     #include 
     #include 
     #include 
    


  1. 添加成员




  2. studentdialog.h参考代码

     #ifndef STUDENTDIALOG_H
     #define STUDENTDIALOG_H
     
     #include 
     //工程文件需要添加:QT+=sql
     #include 
     #include 
     #include 
     #include 
     #include 
     
     QT_BEGIN_NAMESPACE
     namespace Ui { class StudentDialog; }
     QT_END_NAMESPACE
     class StudentDialog : public QDialog
     {
         Q_OBJECT
     public:
         StudentDialog(QWidget *parent = nullptr);
         ~StudentDialog();
     private:
         //创建或连接sqlite数据库
         void createDB();
         //创建学生成绩数据表
         void createTable();
         //查询和显示数据表的内容
         void queryTable();
     
     private slots:
         //插入
         void on_insertButton_clicked();
         //删除
         void on_deleteButton_clicked();
         //修改
         void on_updateButton_clicked();
         //排序
         void on_sortButton_clicked();
     private:
         Ui::StudentDialog *ui;
         QSqlDatabase db; //建立应用程序和数据库连接
         QSqlQueryModel model; //保存查询的结果集
     };
     #endif // STUDENTDIALOG_H   
    


六、编写源代码
  1. 源文件studentdialog.cpp 添加相关函数




  2. 编写创建数据库驱动

     //创建或连接sqlite数据库
     void StudentDialog::createDB(){
         //添加sqlite数据库驱动
         db = QSqlDatabase::addDatabase("QSQLITE");
         //设置数据库名字,如果“student.db”不存在会自动创建
         db.setDatabaseName("student.db");
         //打开数据库
         if(db.open()== false){
             qDebug()<<db.lastError().text();
         }else{
             qDebug()<<"创建或连接数据库成功";
         }
     }
    


  3. 编写创建表的函数

     //创建学生成绩数据表
     void StudentDialog::createTable(){
          //准备创建数据库表sql语句的字符串
          QString str = QString("CREATE TABLE student("
                        "id INT PRIMARY KEY NOT NULL,"
                        "name TEXT NOT NULL,"
                        "score REAL NOT NULL)");
          //执行sql语句
          QSqlQuery query;
          if(query.exec(str)==false){
              qDebug()<<str;
          }else{
              qDebug()<<"创建数据表成功";
          }
      }
    
  4. 编写查询数据表函数

     //查询和显示数据表的内容
     void StudentDialog::queryTable(){
       //准备查询的sql语句字符串
       QString str  =QString("SELECT* FROM student");
       //执行查询语句病保存结果集到model对象
       model.setQuery(str);
       //将结果集显示到界面
       ui->tableView->setModel(&model);
     }
    


  5. 编写插入按钮的槽函数

     //插入
     void StudentDialog::on_insertButton_clicked()
     {
         //准备插入 *** 作的sql语句字符串
         int id = ui->idEdit->text().toInt();  //学生学号
         QString name = ui->nameEdit->text();  //学生姓名
         double score = ui->scoreEdit->text().toDouble();//学生成绩
         QString str = QString("INSERT INTO student VALUES(%1,'%2',%3)").arg(id).arg(name).arg(score);
         //执行sql语句
         QSqlQuery query;
         if(query.exec(str) == false){
             qDebug()<<str;
         }else{
             qDebug()<<"插入数据成功";
             queryTable();
         }
     }
    


  6. 编写删除按钮的槽函数

    //删除
    void StudentDialog::on_deleteButton_clicked()
    {
        //准备删除 *** 作的sql语句字符串
        int id = ui->idEdit->text().toInt();  //学生学号
        QString str = QString("DELETE FROM student WHERE id=%1").arg(id);
        //执行sql语句
        QSqlQuery query;
        if(query.exec(str) == false){
            qDebug()<<str;
        }else{
            qDebug()<<"删除数据成功";
            queryTable();
        }
    }
    


  7. 编写修改按钮的槽函数

    //修改
    void StudentDialog::on_updateButton_clicked()
    {
       //准备修改 *** 作的sql语句字符串
       int id = ui->idEdit->text().toInt();  //学生学号
       double score = ui->scoreEdit->text().toDouble();//学生成绩
       QString str = QString("UPDATE student SET score=%1 WHERE id=%2").arg(score).arg(id);
       //执行sql语句
       QSqlQuery query;
       if(query.exec(str) == false){
           qDebug()<<str;
       }else{
           qDebug()<<"修改数据成功";
           queryTable();
       }
    }
    


  8. 编写排序按钮槽函数

    //排序
    void StudentDialog::on_sortButton_clicked()
    {
        //准备排序查询的sql语句字符串
        QString value = ui->valuecomboBox->currentText();
        QString condition; //排序方式:升序(0)/降序(1)
        if(ui->valuecomboBox->currentIndex() == 0){
            condition = "ASC";
        }else{
            condition = "DESC";
        }
        QString str  =QString("SELECT* FROM student ORDER BY %1 %2").arg(value).arg(condition);
        //执行查询语句病保存结果集到model对象
        model.setQuery(str);
        //将结果集显示到界面
        ui->tableView->setModel(&model);
    }
    


  9. 完整的头文件和源代码

    1. 头文件studentdialog.h
     #ifndef STUDENTDIALOG_H
     #define STUDENTDIALOG_H
     
     #include 
     //工程文件需要添加:QT+=sql
     #include 
     #include 
     #include 
     #include 
     #include 
     
     QT_BEGIN_NAMESPACE
           namespace Ui { class StudentDialog; }
     QT_END_NAMESPACE
     class StudentDialog : public QDialog
     { 
           Q_OBJECT
     public:
         StudentDialog(QWidget *parent = nullptr);
         ~StudentDialog();
     private:
         //创建或连接sqlite数据库
         void createDB();
         //创建学生成绩数据表
         void createTable();
         //查询和显示数据表的内容
         void queryTable();
         // *** 作后重置输入框为空
         void opEmpty();
     
     private slots:
         //插入
         void on_insertButton_clicked();
         //删除
         void on_deleteButton_clicked();
         //修改
         void on_updateButton_clicked();
         //排序
         void on_sortButton_clicked();
     private:
         Ui::StudentDialog *ui;
         QSqlDatabase db; //建立应用程序和数据库连接
         QSqlQueryModel model; //保存查询的结果集
     };
     #endif // STUDENTDIALOG_H
    


    1. 源文件studentdialog.cpp
     #include "studentdialog.h"
     #include "ui_studentdialog.h"
     
     StudentDialog::StudentDialog(QWidget *parent)
         : QDialog(parent)
         , ui(new Ui::StudentDialog)
     {
         ui->setupUi(this);
         createDB();
         createTable();
         queryTable();
     }
     
     StudentDialog::~StudentDialog()
     {
         delete ui;
     }
     
     //创建或连接sqlite数据库
     void StudentDialog::createDB(){
         //添加sqlite数据库驱动
         db = QSqlDatabase::addDatabase("QSQLITE");
         //设置数据库名字,如果“student.db”不存在会自动创建
         db.setDatabaseName("student.db");
         //打开数据库
         if(db.open()== false){
             qDebug()<<db.lastError().text();
         }else{
             qDebug()<<"创建或连接数据库成功";
         }
     }
     
     //创建学生成绩数据表
     void StudentDialog::createTable(){
         //准备创建数据库表sql语句的字符串
         QString str = QString("CREATE TABLE student("
                          "id INT PRIMARY KEY NOT NULL,"
                          "name TEXT NOT NULL,"
                          "score REAL NOT NULL)");
         //执行sql语句
         QSqlQuery query;
         if(query.exec(str)==false){
             qDebug()<<str;
         }else{
             qDebug()<<"创建数据表成功";
         }
     }
     
     //查询和显示数据表的内容
     void StudentDialog::queryTable(){
         //准备查询的sql语句字符串
         QString str  =QString("SELECT* FROM student");
         //执行查询语句病保存结果集到model对象
         model.setQuery(str);
         //将结果集显示到界面
         ui->tableView->setModel(&model);
     }
     
     void StudentDialog::opEmpty(){
         ui->idEdit->setText("");
         ui->scoreEdit->setText("");
         ui->nameEdit->setText("");
    }
     
     //插入
     void StudentDialog::on_insertButton_clicked()
     {
         //准备插入 *** 作的sql语句字符串
         int id = ui->idEdit->text().toInt();  //学生学号
         QString name = ui->nameEdit->text();  //学生姓名
         double score = ui->scoreEdit->text().toDouble();//学生成绩
         QString str = QString("INSERT INTO student VALUES(%1,'%2',%3)").arg(id).arg(name).arg(score);
         //执行sql语句
         QSqlQuery query;
         if(query.exec(str) == false){
             qDebug()<<str;
         }else{
             qDebug()<<"插入数据成功";
             queryTable();
             opEmpty();
         }
     }
     
     //删除
     void StudentDialog::on_deleteButton_clicked()
       {
         //准备删除 *** 作的sql语句字符串
         int id = ui->idEdit->text().toInt();  //学生学号
         QString str = QString("DELETE FROM student WHERE id=%1").arg(id);
         //执行sql语句
         QSqlQuery query;
         if(query.exec(str) == false){
             qDebug()<<str;
         }else{
             qDebug()<<"删除数据成功";
             queryTable();
             opEmpty();
         }
     }
     
     //修改
     void StudentDialog::on_updateButton_clicked()
     {
         //准备修改 *** 作的sql语句字符串
         int id = ui->idEdit->text().toInt();  //学生学号
         double score = ui->scoreEdit->text().toDouble();//学生成绩
         QString str = QString("UPDATE student SET score=%1 WHERE id=%2").arg(score).arg(id);
         //执行sql语句
         QSqlQuery query;
         if(query.exec(str) == false){
             qDebug()<<str;
         }else{
             qDebug()<<"修改数据成功";
             queryTable();
             opEmpty();
         }
     }
     
     //排序
     void StudentDialog::on_sortButton_clicked()
     {
         //准备排序查询的sql语句字符串
         QString value = ui->valuecomboBox->currentText();
         QString condition; //排序方式:升序(0)/降序(1)
         if(ui->valuecomboBox->currentIndex() == 0){
            condition = "ASC";
         }else{
             condition = "DESC";
         }
         QString str  =QString("SELECT* FROM student ORDER BY %1 %2").arg(value).arg(condition);
         //执行查询语句病保存结果集到model对象
         model.setQuery(str);
         //将结果集显示到界面
         ui->tableView->setModel(&model);
     }
    


七、测试





八、进一步完善
  1. 插入、删除、修改后清空输入框
    头文件添加定义函数opEmpty();

    源文件添加函数

    2. *** 作信息打印到前台终端
    1. 添加listWidget 控件
    2. 把qDebug 改写入到控件
      ui->listWidget->addItem(QString(“修改数据成功”));




打包

请查考:https://blog.csdn.net/weixin_41560737/article/details/124298389

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/717877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存