qt数据库的系统

news2024/11/28 7:48:19

pro文件

QT       += core gui sql

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    widget.cpp

HEADERS += \
    widget.h

FORMS += \
    widget.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<qsqldatabase.h> //数据库管理类
#include<QSqlQuery>
#include<qsqlrecord.h>//记录类

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_addbtn_clicked();

    void on_showbtn_clicked();

    void on_delebtn_clicked();

    void on_sortbtn_clicked();

    void on_sortComboBox_activated(const QString &arg1);

private:
    Ui::Widget *ui;
    //实例化一个数据库对象
    QSqlDatabase db;
};
#endif // WIDGET_H

源文件

#include "widget.h"
#include "ui_widget.h"
#include<qmessagebox.h>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //想要添加某个数据库
    if(!db.contains("stu.db"))
    {
        //如果当前对象没有包含所需的数据库,则添加一个
        db=QSqlDatabase::addDatabase("QSQLITE");  //添加一个sqlite3的数据库
        db.setDatabaseName("stu.db");    //设置数据库名称
    }
   if( !db.open())
   {
       QMessageBox::information(this,"提示","数据库打开失败");
       return;
   }
   QSqlQuery querry;
   QString sql="create table if not exists STU(id int,name char,sex char, score double);";
   if(!querry.exec(sql))
   {
       QMessageBox::information(this,"提示","数据表打开失败");
       return;

   }

}

Widget::~Widget()
{
    delete ui;
}

//点击添加信息按钮的槽函数
void Widget::on_addbtn_clicked()
{
    //1.将ui界面上的信息获取下来
    int ui_numb=ui->idedit->text().toUInt();
    QString ui_name=ui->nameedit->text();
    QString ui_sex=ui->sexedit->text();
    double ui_score=ui->scoreedit->text().toDouble();
    if(ui_numb==0||ui_sex.isEmpty()||ui_sex.isEmpty()||ui_score==0)
    {
        QMessageBox::information(this,"提示","将信息填完整");
        return;
    }
    QString sql=QString("insert into STU(id,name,sex,score) values(%1,'%2','%3',%4);").arg(ui_numb).arg(ui_name).arg(ui_sex).arg(ui_score);


    QSqlQuery querry;
    if(!querry.exec(sql))
    {
        QMessageBox::information(this,"提示","添加信息失败");


    }
    else
    {
        ui->nameedit->clear();
        ui->sexedit->clear();
        ui->idedit->clear();
        ui->scoreedit->clear();
        QMessageBox::information(this,"提示","添加信息成功");
    }



}

void Widget::on_showbtn_clicked()
{
   //1.先实例化一个sql语句执行者
    QSqlQuery querry;
    //2.准备sql语句
    QString sql="select *from STU";
    if(!querry.exec(sql))
    {
        QMessageBox::information(this,"提示","查询失败");
        return;
    }
    ui->msgtable->clear();
    int i=0;
    while(querry.next())
    {
        QSqlRecord record=querry.record();

        for(int j=0;j<record.count();j++)
        {

            ui->msgtable->setItem(i,j,new QTableWidgetItem(record.value(j).toString()));
        }
        i++;

    }

}




void Widget::on_delebtn_clicked()
{
    int ui_numb = ui->idedit->text().toUInt();
     QString ui_name=ui->nameedit->text();
     QString ui_sex=ui->sexedit->text();
     double ui_score=ui->scoreedit->text().toDouble();
     if (ui_numb == 0 && ui_name.isEmpty()&&ui_sex.isEmpty()&&ui_score==0)
         {
             QMessageBox::information(this, "提示", "请输入有效的ID或姓名或性别或成绩");
             return;
         }


        if (ui_numb != 0)
        {

            QString sql = QString("DELETE FROM STU WHERE id = %1;").arg(ui_numb);
            QSqlQuery query;
            if (!query.exec(sql))
            {
                QMessageBox::information(this, "提示", "删除信息失败");
            }
            else
            {
                QMessageBox::information(this, "提示", "删除信息成功");
            }
        }

        // 准备删除SQL语句



   if (!ui_name.isEmpty())
   {

       QString sql1 = QString("DELETE FROM STU WHERE name = '%2';").arg(ui_name);
       QSqlQuery query1;
       if (!query1.exec(sql1))
       {
           QMessageBox::information(this, "提示", "删除信息失败");
       }
       else
       {
           QMessageBox::information(this, "提示", "删除信息成功");
       }
   }
   if (ui_score != 0)
   {

       QString sql2 = QString("DELETE FROM STU WHERE score = %3;").arg(ui_score);
       QSqlQuery query2;
       if (!query2.exec(sql2))
       {
           QMessageBox::information(this, "提示", "删除信息失败");
       }
       else
       {
           QMessageBox::information(this, "提示", "删除信息成功");
       }
   }
   if (!ui_sex.isEmpty())
   {

       QString sql3 = QString("DELETE FROM STU WHERE sex = '%2';").arg(ui_sex);
       QSqlQuery query3;
       if (!query3.exec(sql3))
       {
           QMessageBox::information(this, "提示", "删除信息失败");
       }
       else
       {
           QMessageBox::information(this, "提示", "删除信息成功");
       }
   }


}


void Widget::on_sortbtn_clicked()
{

    // 1. 获取选中的排序关键字
        QString sortColumn;

        if (ui->sortComboBox->currentText() == "ID") {
            sortColumn = "id";
        } else if (ui->sortComboBox->currentText() == "姓名") {
            sortColumn = "name";
        } else if (ui->sortComboBox->currentText() == "性别") {
            sortColumn = "sex";
        } else if (ui->sortComboBox->currentText() == "成绩") {
            sortColumn = "score";
        }

        QString sortOrder = "ASC"; // 可以根据需要修改为 "DESC"

        // 2. 构建 SQL 查询语句
        QString sql = QString("SELECT * FROM STU ORDER BY %1 %2;").arg(sortColumn).arg(sortOrder);

        QSqlQuery query;
        if (!query.exec(sql))
        {
            QMessageBox::information(this, "提示", "排序失败");
            return;
        }

        // 3. 清空表格并显示排序后的结果
        ui->msgtable->clear();
        int i = 0;
        while (query.next())
        {
            QSqlRecord record = query.record();
            for (int j = 0; j < record.count(); j++)
            {
                ui->msgtable->setItem(i, j, new QTableWidgetItem(record.value(j).toString()));
            }
            i++;
        }


}


void Widget::on_sortComboBox_activated(const QString &arg1)
{

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2206425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四款电脑录屏的软件,谁更胜一筹?

作为一名喜欢搜罗各种办公软件的打工人&#xff0c;我每天的工作都离不开电脑&#xff0c;而录屏软件就成了我工作中不可或缺的小帮手。最近&#xff0c;我试用了四款流行的录屏软件&#xff0c;今天就来跟大家分享一下我的使用感受&#xff0c;看看哪款软件更得我心。 一、福…

Python和C++及MATLAB低温磁态机器学习模型

&#x1f3af;要点 使用小规模磁态训练模型&#xff0c;并在二维三维爱德华兹-安德森模型上使用四种算法测试&#xff1a;贪婪算法、模拟退火算法、并行回火算法和本模型。将磁态基态搜索视为马尔可夫决策过程 (MDP)&#xff0c;学习最优策略以累积其最大回报。设计图神经网络…

从0开始深度学习(9)——softmax回归的逐步实现

文章使用Fashion-MNIST数据集&#xff0c;做一次分类识别任务 Fashion-MNIST中包含的10个类别&#xff0c;分别为&#xff1a; t-shirt&#xff08;T恤&#xff09;、trouser&#xff08;裤子&#xff09;、pullover&#xff08;套衫&#xff09;、dress&#xff08;连衣裙&…

SSD |(二)SSD主控

文章目录 &#x1f4da;控制器架构&#x1f407;PCIe和NVMe控制器前端子系统&#x1f407;NAND闪存控制器后端子系统&#x1f407;内存子系统&#x1f407;安全子系统&#x1f407;CPU计算子系统 &#x1f4da;控制器架构 控制器作为一个片上系统&#xff0c;处理来自用户端的…

Linux下的Makefile基本操作

1.Makefile与 make介绍 在Linux中&#xff0c; Makefile 是⼀个⽂件&#xff0c; 令会在当前⽬录下找 make 是⼀个指令&#xff0c;当使⽤ Makefile ⽂件从⽽执⾏内部的内容 2.创建第一个 Makefile并使用make ⾸先&#xff0c;在当前⽬录下创建⼀个makefile文件 接下来在同级…

【小工具分享】下载保存指定网页的所有图片

一、保存百度首页所有的图片 先看一下保存的图片情况 二、思路 1、打开网页 2、获取所有图片 3、依次下载保存图片到指定路径 三、完整代码 from selenium import webdriver from selenium.webdriver.common.by import By b webdriver.Firefox() import urllib.request…

企业如何借力AI,提升人力资源管理的效率完成组织提效变革

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 企业面临的压力&#xff1a; 在当今这个充…

LeetCode|70.爬楼梯

这道题很像斐波那契数列&#xff0c;但是初始值不同&#xff0c;也有动态规划的解法&#xff0c;但是一开始我想到的是递归写法。现在我们站在第n阶台阶&#xff0c;那么&#xff0c;我们上一步就有两种可能&#xff1a;1、我们从第n-1阶台阶走一步上来的&#xff1b;2、我们从…

商家转账到零钱接口开通

商家想要开通“商家转账到零钱”功能&#xff0c;需要遵循一系列详细步骤和条件&#xff0c;以确保顺利通过审核。以下是开通办法的详解&#xff1a; 申请流程&#xff1a; 主体资格确认&#xff1a;确保申请主体为公司性质&#xff08;有限公司&#xff09;&#xff0c;个体工…

ScribbleDiff:使用涂鸦引导扩散,实现无需训练的文本到图像生成

ScribbleDiff可以通过简单的涂鸦帮助计算机生成图像。比如你在纸上随意画了一些线条&#xff0c;表示你想要的图像的轮廓。ScribbleDiff会利用这些线条来指导图像生成的过程。 首先&#xff0c;它会分析这些涂鸦&#xff0c;确保生成的图像中的对象朝着你画的方向。比如&#…

品民俗、看展演、逛非遗市集……在海淀,重阳节还可以这样过

秋菊溢彩、叠翠鎏金。由北京市海淀区文化和旅游局主办,北京市海淀区文化馆承办,海淀区上庄镇文化活动中心支持的品鉴民俗 巧手绘梦——2024年海淀区重阳节非遗主题文化活动于10月11日在上庄镇市民活动中心顺利举办。海淀非遗传承人以非遗为媒,与地区群众度过了一个温馨、热闹、…

第四次论文问题知识点及问题

1、NP-hard问题 NP-hard&#xff0c;指所有NP问题都能在多项式时间复杂度内归约到的问题。 2、启发式算法 ‌‌启发式算法&#xff08;heuristic algorithm&#xff09;是相对于最优化算法提出的。它是一种基于直观或经验构造的算法&#xff0c;旨在以可接受的花费给出待解决…

Android 如何实现远程网页控制售卖机出商品:RabbitMQ的对接,如何使用?如何断网重连?连接不上后台的MQ有哪些方面的原因

目录 一、如何实现远程网页控制售卖机出商品&#xff1f; 比如&#xff0c;我们想实现&#xff0c;通过一个网页去控制自动售卖机&#xff08;自动售卖机装有Android系统&#xff0c;装有App&#xff09;出商品&#xff0c;也就是我们熟知的远程控制&#xff0c;不用你人到现场…

搭建电商商城系统各项功能时需要用到的电商API数据采集接口

在搭建电商商城系统时&#xff0c;选择合适的电商API接口至关重要。以下是一些常用的电商API接口提供商及其功能&#xff1a; 常用电商API接口提供商 淘宝开放平台&#xff1a;提供淘宝、天猫、1688等阿里巴巴集团旗下的电商平台接口&#xff0c;用于商品检索、订单管理、物流…

如何把pdf转换成jpg图片?在线pdf转图片,这6种方法很简单!

“如何把pdf转换成jpg图片&#xff1f;”相信很多小伙伴们都有这个疑问。pdf格式是如今在商业和其他正式场合中使用最广泛的文档类型&#xff0c;因为它能以安全且方便的方式共享信息。然而&#xff0c;查看pdf文件通常需要使用一些专业的pdf阅读器&#xff0c;这可能给一些用户…

服务端给客户端push消息的demo的实现流程

摘要&#xff1a; 本示例演示了一个基本的服务端5分钟定时向客户端app推送消息的WebSocket机制。服务端使用WebSocket协议接受客户端的订阅和取消订阅请求&#xff0c;并根据客户端的订阅状态发送实时消息。服务端记录并打印带有时间戳的日志&#xff0c;以监控订阅活动。客户…

python画图|二维动态柱状图输出

【1】引言 在前面的学习过程中&#xff0c;已经探索过二维柱状图和三维柱状图的绘制教程&#xff0c;包括且不限于的文章链接有&#xff1a; python画图|水平直方图绘制_绘制水平直方图-CSDN博客 python画图|3D bar进阶探索_ax.bar3d-CSDN博客 此外也学习了动态的直线输出和…

调用AI 通过相机识别地标

https://www.youtube.com/watch?vViRfnLAR_Uc&listPLQkwcJG4YTCRJxkPPDBcKqDWrfF5qanQs&index3学习视频 TensorFlow Hub 机器学习模型的代码库 找到地标模型 如何在Android上使用ts模型 https://blog.tensorflow.org/2018/03/using-tensorflow-lite-on-android.html…

10.11每日作业

数据表 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//想要添加某个数据库if(!db.contains("stu.db")){//如果当前对象中没有包含所需数据库&…

dowhy中反驳实验怎么做?

首先&#xff0c;我们打开最新的dowhy版本网站。 https://www.pywhy.org/dowhy/v0.11.1/index.html 我们主要看标题栏的User Guide和Examples就可以了&#xff0c;如果在User Guide 里找不到使用方法&#xff0c;就去Examples里找例子&#xff0c;里面的数据读取修改为自己的数…