自学之路day02---qt小项目

二、学生成绩管理系统(简版)
简介:将SQLite数据库和QT界面结合,完成学生成绩的增删改已经排序功能
步骤:

  1. 绘制界面
    在这里插入图片描述
    主要功能:插入、删除、修改、以及排序(根据不同要求进行排序);

  2. 完成相应的构件命名,在编辑代码阶段不至于太混乱

  3. 数据库的建立

    • 创建数据库:
      db = QSqlDatabase::addDatabase(“QSQLITE”);
      db.setDatabaseName(“menu.db”);
      if(db.open() == false){
      qDebug() << db.lastError();
      }

    • 创建表格
      void SqliteDialog::createTable(void)
      {
      QSqlQuery query;
      QString str = QString(
      “CREATE TABLE student(”
      “id INT PRIMARY KEY,”
      “name TEXT NOT NULL,”
      “score REAL NOT NULL)”);
      query.exec(str);
      }

    • 显示表格内容
      void SqliteDialog::queryTable(void)
      {
      QString str = QString(
      “SELECT * FROM student”);
      model.setQuery(str);
      ui->tableView->setModel(&model);
      }

  4. 编写相应的槽函数:

    • insertButton:(完成对数据的插入,利用QT的类,对SQL语句进行翻译,然后执行)
      void SqliteDialog::on_insertButton_clicked()
      {
      QSqlQuery query;
      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);
      query.exec(str);
      queryTable();
      }
    • deleteButton:(完成对数据的删除)
      void SqliteDialog::on_deleteButton_clicked()
      {
      QSqlQuery query;
      int id = ui->idEdit->text().toInt();
      QString str = QString (
      “DELETE FROM student WHERE id = %1”).arg(id);
      query.exec(str);
      queryTable();
      }
    • updateButton:(完成对数据的修改)
      void SqliteDialog::on_updateButton_clicked()
      {
      QSqlQuery query;
      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);
      query.exec(str);
      queryTable();
      }
    • sortButton:(完成对数据的排序)
      void SqliteDialog::on_sortButton_clicked()
      {
      QString value = ui->valueCombox->currentText();
      QString condition;
      if(ui->condCombox->currentText() == 0){
      condition = “ASC”;
      }
      else{
      condition = “DESC”;
      }
      QString str = QString (
      "SELECT * FROM student "
      “ORDER BY %1 %2”).arg(value).arg(condition);
      model.setQuery(str);
      ui->tableView->setModel(&model);
      }
  5. 总结:
    ①在QT中,由于不能直接使用SQL语句对数据库进行操作,所以需要QT封装的类,讲SQL语句转换成能够执行的语句,QSqlQuery。
    ②在每次对数据进行操作之后,要将操作后的界面重现显示,这个不能忘记。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值