当前位置: 首页 > news >正文

QT day06

在QT使用数据库实现学生管理系统

头文件:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_addBtn_clicked();void on_showBtn_clicked();void on_deleteBtn_clicked();void on_sortBtn_clicked();private:Ui::Widget *ui;//实例化一个数据库对象QSqlDatabase db;
};
#endif // WIDGET_H

源文件:

#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>
#include <QDebug>
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;}//准备创建数据表//实例化一个sql语句的执行者QSqlQuery querry;//准备sql语句QString sql = "create table if not exists STU(id int, name char, sex char, score double);";//执行sql语句if(!querry.exec(sql)){QMessageBox::information(this,"提示","数据表创建失败");return;}}Widget::~Widget()
{delete ui;
}//添加信息按钮对应的槽函数
void Widget::on_addBtn_clicked()
{//获取ui界面上的相关信息int ui_id = 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_id==0 || ui_name.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_id).arg(ui_name).arg(ui_sex).arg(ui_score);//实例化sql语句执行者QSqlQuery querry;//执行sql语句if(!querry.exec(sql)){QMessageBox::information(this,"提示","添加失败");return;}else{QMessageBox::information(this,"提示","添加成功");}
}//展示信息按钮对应的槽函数
void Widget::on_showBtn_clicked()
{ui->msgTable->clearContents();//实例化一个sql语句执行者QSqlQuery querry;//准备sql语句QString sql = "select * from STU";//执行sql语句if(!querry.exec(sql)){QMessageBox::information(this,"提示","查询失败");return;}int i = 0;while(querry.next()){//获取当前记录QSqlRecord record = querry.record();//对当前记录进行操作for(int j=0; j<record.count(); j++){//该循环中的value(j)表示的就是第i行j列的那个元素//record.value(j).toString();ui->msgTable->setItem(i,j,new QTableWidgetItem(record.value(j).toString()));//将数据库中的字段封装成ui界面上的一条信息QTableWidgetItem *item = new QTableWidgetItem(record.value(j).toString());//展示信息ui->msgTable->setItem(i,j,item);}i++;}}//删除信息按钮对应的槽函数
void Widget::on_deleteBtn_clicked()
{QString ui_name = ui->nameEdit->text();//实例化一个sql语句执行者QSqlQuery querry;//准备sql语句QString sql = "DELETE FROM STU where name = ?";querry.prepare(sql);//根据添加绑定的姓名删除学生信息querry.addBindValue(ui_name);if(!querry.exec()){QMessageBox::information(this,"提示","删除失败");return;}QMessageBox::information(this,"提示","删除成功");
}//排序按钮对应的槽函数
void Widget::on_sortBtn_clicked()
{//实例化一个sql语句的执行者QSqlQuery querry;//准备sql语句QString sql = "SELECT * FROM STU ORDER BY score ASC";if(!querry.exec(sql)){QMessageBox::information(this,"提示","排序失败");return;}QMessageBox::information(this,"提示","排序成功");//展示排序后的学生信息int i = 0;while(querry.next()){//获取当前记录QSqlRecord record = querry.record();//对当前记录进行操作for(int j=0; j<record.count(); j++){//该循环中的value(j)表示的就是第i行j列的那个元素//record.value(j).toString();ui->msgTable->setItem(i,j,new QTableWidgetItem(record.value(j).toString()));//将数据库中的字段封装成ui界面上的一条信息QTableWidgetItem *item = new QTableWidgetItem(record.value(j).toString());//展示信息ui->msgTable->setItem(i,j,item);}i++;}
}

主函数:

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

人脸识别:

头文件:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
#include<opencv2/face.hpp>
#include <vector>
#include <map>
#include <QMessageBox>
#include <QDebug>
#include <QFile>
#include <QTextStream>
#include <QDateTime>
#include <QTimerEvent>
#include<QtSerialPort/QtSerialPort>
#include<QtSerialPort/QSerialPortInfo>
using namespace  cv;
using namespace cv::face;
using namespace std;
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;
};
#endif // WIDGET_H

源文件:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//打开本机摄像头只需将参数改为0if(!video.open(0)){QMessageBox::information(this,"提示","视频我文件打开失败");return;}//从视频流对象中不断读取出图像Mat src;    //用于存储读取出的图像Mat gary;Mat dest;//定义级联分类器CascadeClassifier c;//定义存储人脸矩形框的容器vector<Rect> faces;//给级联分类器装载分类模型if(!c.load("D:\\opencv\\resourse\\haarcascade_frontalface_alt.xml")){QMessageBox::information(this,"提示","级联分类器加载失败");return;}while(video.read(src)){//src中就是成功读取下来的一张图像//解决镜像问题cv::flip(src, src, 1);//灰度处理:将三通道的彩色图转换成单通道的灰白图cv::cvtColor(src,gary,CV_BGR2GRAY);//均衡化处理图像 放大特征点cv::equalizeHist(gary,dest);c.detectMultiScale(dest,faces);//将得到的矩形框绘制到图像上for(uint i = 0;i<faces.size();i++){cv::rectangle(src,faces[i],Scalar(0,0,255),2);cv::rectangle(gary,faces[i],Scalar(0,0,255),2);cv::rectangle(dest,faces[i],Scalar(0,0,255),2);}//将图像进行展示imshow("src",src);imshow("gary",gary);imshow("dest",dest);//使用延时函数if(waitKey(30) == 27){break;}}}Widget::~Widget()
{delete ui;
}

主函数:

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

相关文章:

QT day06

在QT使用数据库实现学生管理系统 头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QSqlDatabase> #include <QSqlQuery> #include <QSqlRecord> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAME…...

微信小程序-npm支持-如何使用npm包

文章目录 1、在内建终端中打开2、npm init -y3、Vant Weapp4、通过 npm 安装5、构建 npm 1、在内建终端中打开 Windows PowerShell 版权所有 (C) Microsoft Corporation。保留所有权利。尝试新的跨平台 PowerShell https://aka.ms/pscore6PS C:\Users\dgq\WeChatProjects\minip…...

Spring Cloud Stream 3.x+kafka 3.8整合

Spring Cloud Stream 3.xkafka 3.8整合&#xff0c;文末有完整项目链接 前言一、如何看官方文档(有深入了解需求的人)二、kafka的安装tar包安装docker安装 三、代码中集成创建一个测试topic&#xff1a;testproducer代码producer配置&#xff08;配置的格式&#xff0c;上篇文章…...

JavaScript中的数组

1.数组的概念 数组可以把一组相关的数据一起存放&#xff0c;并提供方便的访问/获取方式数组是指一组数据的集合&#xff0c;其中每个数据称之为元素(element)&#xff0c;在数组中可以存放任意类型的元素&#xff0c;数组是一种将一组数据存储在单个变量名下的优雅方式。 2.…...

UE5运行时动态加载场景角色动画任意搭配-场景角色相机动画音乐加载方法(三)

1、将场景打包为Pak并加载 1、参考这篇文章将场景打包为pak,UE4打包并加载Pak-Windows/iOS/Android不同平台Editor/Runtime不同运行模式兼容 2、在Mount Pak后直接打开Map即可 void UMapManager::OpenMap(FString Path) {UWorld* World = UGlobalManager::GetInstance()->…...

c# 中 中文、英文、数字、空格、标点符号占的字符大小

在C#中&#xff0c;中文、英文、数字、空格和标点符号在不同编码下所占的字节大小是不一样的。常见的编码有UTF-8、UTF-16、GB2312等。以下是在不同编码下各种字符类型所占的字节大小&#xff1a; UTF-8&#xff1a; 中文字符&#xff1a;3个字节 英文字符&#xff1a;1个字…...

前端_003_js扫盲

文章目录 var,let,const严格模式数据类型运算符事件常用对象函数绑定call() ,apply(),bind() 闭包浏览器中事件循环回调和异步Promiseasync和await DOMBOMAjax var,let,const let是var的升级版本&#xff0c;对于块作用域&#xff0c;var无法进行限制&#xff0c;let不会存在该…...

ValueError: You cannot perform fine-tuning on purely quantized models.

在使用peft 微调8bit 或者4bit 模型的时候&#xff0c;可能会报错&#xff1a; You cannot perform fine-tuning on purely quantized models. Please attach trainable adapters on top of the quantized model to correctly perform fine-tuning. Please see: https://huggi…...

DELL R720服务器阵列数据恢复,磁盘状态为Foreign

服务器无法正常进入系统&#xff0c;物理磁盘状态变成了Foreign 虚拟磁盘状态变成了Failed 阵列已经丢失了&#xff0c;需要手工强制导入外部配置 单击 Main Menu 屏幕上的 Configuration Management。单击 Manage Foreign Configuration 单击 Preview Foreign Configurati…...

VMDK 0X80BB0005 VirtualBOX虚拟机错误处理-数据恢复——未来之窗数据恢复

打开虚拟盘文件in7.vmdk 失败. Could not get the storage format of the medium 7\win7.vmdk (VERR_NOT_SUPPORTED). 返回 代码:VBOX_E_IPRT_ERROR (0X80BB0005) 组件:MediumWrap 界面:IMedium {a a3f2dfb1} 被召者:IVirtualBox {768 cd607} 被召者 RC:VBOX_E_OBJECT_NOT_F…...

【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL67

十六进制计数器 描述 请用Verilog设计十六进制递增计数器电路&#xff0c;每个时钟周期递增1。 电路的接口如下图所示。Q[3:0]中&#xff0c;Q[3]是高位。 接口电路图如下&#xff1a; 输入描述&#xff1a; input clk , input rst_n ,…...

51、AVR、ARM、DSP等常用芯片之对比

51芯片 51芯片通常指的是基于8051内核的单片机&#xff0c;这是一种经典的微控制器&#xff08;MCU&#xff09;。虽然关于51芯片的详细现代应用和发展可能因具体型号和厂商而有所不同&#xff0c;但基于8051内核的单片机通常具有以下特点&#xff1a; 结构经典&#xff1a;8…...

PostgreSQL 和Oracle 表压缩的对比

PostgreSQL 和Oracle 表压缩的对比 Oracle 和 PostgreSQL 在表压缩的性能方面存在显著差异&#xff0c;主要体现在实现方式、压缩效果、对系统性能的影响以及适用场景等方面。以下是对两者表压缩性能的详细对比&#xff1a; 1. 实现方式 Oracle 表压缩 Oracle 提供了多种压…...

【pyspark学习从入门到精通3】弹性分布式数据集_1

目录 RDD 的内部工作机制 创建 RDDs Schema 从文件中读取 弹性分布式数据集&#xff08;RDDs&#xff09;是一种分布式的不可变 JVM 对象集合&#xff0c;它允许你非常快速地执行计算&#xff0c;并且它们是 Apache Spark 的支柱。 顾名思义&#xff0c;数据集是分布式的&a…...

宠物健康监测仪健康守护者

在宠物护理领域&#xff0c;一款名为宠物健康监测仪的智能设备正逐渐成为宠物主人的新宠。这款设备不仅仅是一个简单的听诊器&#xff0c;它更像是宠物健康的智能管家&#xff0c;能够实时监测宠物的生理指标&#xff0c;并根据这些数据提供个性化的健康建议。 宠物健康监测仪…...

手写mybatis之解析和使用ResultMap映射参数配置

前言 学习源码是在学习什么呢&#xff1f; 就是为了通过这些源码级复杂模型中&#xff0c;学习系统框架的架构思维、设计原则和设计模式。在这些源码学习手写的过程中&#xff0c;感受、吸收并也是锻炼一种思维习惯&#xff0c;并尝试把这些思路技术迁移到平常的复杂业务设计开…...

LDR6500:低成本一拖二快充线解决方案

随着科技的飞速发展&#xff0c;我们的电子设备日益增多&#xff0c;从智能手机到平板电脑&#xff0c;再到各种可穿戴设备&#xff0c;它们已成为我们日常生活不可或缺的一部分。然而&#xff0c;随之而来的充电问题也日益凸显。为了解决这一难题&#xff0c;Type-C接口一拖二…...

DS线性表之单链表的讲解和实现(2)

文章目录 前言一、链表的概念二、链表的分类三、链表的结构四、前置知识准备五、单链表的模拟实现定义头节点初始化单链表销毁单链表打印单链表申请节点头插数据尾插数据头删数据尾删数据查询数据在pos位置之后插入数据删除pos位置之后的数据 总结 前言 本篇的单链表完全来说是…...

LeetCode 73 Set Matrix Zeroes 题目解析和python代码

题目&#xff1a; Given an m x n integer matrix matrix, if an element is 0, set its entire row and column to 0’s. You must do it in place. Example 1: Input: matrix [[1,1,1],[1,0,1],[1,1,1]] Output: [[1,0,1],[0,0,0],[1,0,1]] Example 2: Input: matrix …...

鸿蒙--WaterFlow 实现商城首页

目录结构 ├──entry/src/main/ets // 代码区 │ ├──common │ │ ├──constants │ │ │ └──CommonConstants.ets // 公共常量类 │ │ └──utils │ │ └──Logger.ets // 日志打印类 │ ├──entryability │ │ └──EntryAbility.ets // 程序入口…...

开源可部署!PyTorch 2.8 RTX 4090D镜像在企业AIGC生产环境落地实践

开源可部署&#xff01;PyTorch 2.8 RTX 4090D镜像在企业AIGC生产环境落地实践 1. 为什么选择这个深度学习镜像 在当今AI技术快速发展的背景下&#xff0c;企业面临的最大挑战之一是如何快速搭建稳定高效的AI开发环境。传统方式需要手动配置CUDA、PyTorch和各种依赖库&#x…...

深入解析RevokeMsgPatcher:Windows平台防撤回补丁的技术实现与架构设计

深入解析RevokeMsgPatcher&#xff1a;Windows平台防撤回补丁的技术实现与架构设计 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: ht…...

毕业设计实战:基于Java+MySQL的教务管理系统设计与实现指南

毕业设计实战&#xff1a;基于JavaMySQL的教务管理系统设计与实现指南 在开发“基于JavaMySQL的教务管理系统”毕业设计时&#xff0c;曾因课程报名表未通过学生ID与课程ID双外键关联踩过关键坑——初期仅设计报名编号、报名时间等基础字段&#xff0c;未与学生表、课程表建立关…...

【数据结构】树的定义、核心术语与关键性质全解析

在数据结构的世界里&#xff0c;树&#xff08;Tree&#xff09; 是一种极其重要的非线性结构&#xff0c;它完美模拟了自然界中树的层次关系&#xff0c;从文件系统、组织结构&#xff0c;到算法中的二叉搜索树、堆&#xff0c;再到 AI 中的决策树&#xff0c;树的身影无处不在…...

CentOS部署PHP项目完整步骤

CentOS 7.9 部署 PHP 7.4 MySQL 5.7.44 完整步骤 由于 CentOS 7 已于 2024 年 6 月 30 日停止官方维护&#xff0c;原有的 yum 源已不可用&#xff0c;因此必须首先更换为阿里云镜像源才能正常安装软件。 一、系统环境准备 1.1 更换阿里云 YUM 源 # 1. 备份原有源 mv /etc/yum…...

眼图分析:高速数字信号完整性的关键工具

1. 眼图基础概念解析 眼图&#xff08;Eye Diagram&#xff09;是数字信号完整性分析中最重要的工具之一。作为一名硬件工程师&#xff0c;我每天都会用眼图来评估信号质量。简单来说&#xff0c;眼图就是将数字信号在时间轴上重复叠加后形成的图形&#xff0c;因其形状类似人眼…...

GUI-Guider工具:LVGL嵌入式GUI开发实战指南

1. GUI-Guider工具概述GUI-Guider是恩智浦公司专为LVGL图形库开发的一款可视化设计工具。作为一名长期从事嵌入式GUI开发的工程师&#xff0c;我亲身体验到这款工具如何彻底改变了传统的手写代码开发模式。它通过拖拽式操作界面&#xff0c;让开发者能够快速构建出精美的用户界…...

本地Cookie管理工具:安全导出与高效应用指南

本地Cookie管理工具&#xff1a;安全导出与高效应用指南 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 在当今数字化环境中&#xff0c;Cookie作为…...

告别重复编码:用快马ai自动生成c语言基础工具模块提升效率

告别重复编码&#xff1a;用快马AI自动生成C语言基础工具模块提升效率 在C语言开发中&#xff0c;我们经常需要重复编写一些基础工具模块&#xff0c;比如安全的字符串输入、动态数组管理、日志记录等功能。这些代码虽然不复杂&#xff0c;但每次都从头开始写确实很浪费时间。…...

Amlogic S9XXX设备Armbian系统刷机全攻略:从问题诊断到优化配置

Amlogic S9XXX设备Armbian系统刷机全攻略&#xff1a;从问题诊断到优化配置 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l,…...