您的位置:首页 > 娱乐 > 八卦 > 微信小程序线上商城怎么申请_学设计哪个职业学校比较好_湖南seo公司_泰州seo推广公司

微信小程序线上商城怎么申请_学设计哪个职业学校比较好_湖南seo公司_泰州seo推广公司

2025/3/6 21:18:54 来源:https://blog.csdn.net/Tangver/article/details/142868359  浏览:    关键词:微信小程序线上商城怎么申请_学设计哪个职业学校比较好_湖南seo公司_泰州seo推广公司
微信小程序线上商城怎么申请_学设计哪个职业学校比较好_湖南seo公司_泰州seo推广公司

作业:将数据库和图像处理自己实现一遍

数据库操作
源文件
#include "widget.h"
#include "ui_widget.h"
#include<QMessageBox>
#include<QDebug>
#include <QTableWidget>
 
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()
{
    //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();
 
    //2.判断信息中是否有空的
    if(ui_numb == 0 || ui_name.isEmpty() || ui_sex.isEmpty() || ui_score == 0)
    {
        QMessageBox::information(this,"提示","请将信息填写完整");
        return;
    }
 
    //3.准备sql语句
    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);
//    qDebug() <<sql;
 
    //4.实例化sql语句执行者
    QSqlQuery querry;
    //5.执行sql语句
    if(!querry.exec(sql))
    {
        QMessageBox::information(this,"提示","添加信息失败");
        return;
    }else {
        QMessageBox::information(this,"提示","添加成功");
}
 
 
}
 
 
//展示信息对应的槽函数
void Widget::on_dispBtn_clicked()
{
    //实例化一个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++)
        {
//            qDebug() <<record.value(i).tostring();
            //该循环中的value(i),表示的就是第i行j列的那个元素
//            record.value(i).toString();
            ui->msgtable->setItem(i,j,new QTableWidgetItem(record.value(j).toString()));
 
        }
 
        i++;        //表示行数增加
    }
 
}
 
 
// 删除信息按钮对应的槽函数
void Widget::on_deleteBtn_clicked()
{
    // 获取要删除的学生ID
    int ui_numb = ui->idEdit->text().toUInt();
 
    // 检查ID是否有效
    if (ui_numb == 0) {
        QMessageBox::information(this, "提示", "请输入有效的学生ID");
        return;
    }
 
    // 准备SQL语句
    QString sql = QString("DELETE FROM STU WHERE id = %1;").arg(ui_numb);
 
    // 实例化SQL语句执行者
    QSqlQuery query;
    // 执行SQL语句
    if (!query.exec(sql)) {
        QMessageBox::information(this, "提示", "删除信息失败");
    } else {
        QMessageBox::information(this, "提示", "删除成功");
        // 更新UI显示
 
        ui->msgtable->clear();
        QStringList headers;
        headers<<"学号"<<"姓名"<<"性别"<<"成绩";
        ui->msgtable->setHorizontalHeaderLabels(headers);
 
    }
}
 
//void Widget::on_sortBtn_clicked()
//{
//    // 实例化一个SQL语句执行者
//    QSqlQuery query;
 
//    // 准备SQL语句,按分数升序排序
//    QString sql = "SELECT * FROM STU ORDER BY score ASC;";
 
//    // 执行SQL语句
//    if (!query.exec(sql)) {
//        QMessageBox::information(this, "提示", "查询失败");
//        return;
//    }
 
//    // 清空表格
//    ui->msgtable->clearContents();
//    ui->msgtable->setRowCount(0);
 
//    // 检查是否有结果
//    if (!query.next()) {
//        QMessageBox::information(this, "提示", "没有记录可显示");
//        return; // No records to display
//    }
 
//    // 重新设置表格行数
//    do {
//        // 获取当前记录
//        QSqlRecord record = query.record();
//        int j;
//        // 对当前记录进行操作,便利当前记录的所有字段
//        for (j = 0; j < record.count(); j++) {
//            ui->msgtable->setItem(j, j, new QTableWidgetItem(record.value(j).toString()));
//        }
//        j++; // 表示行数增加
//    } while (query.next());
//}
 
void Widget::on_sortBtn_clicked()
{
    // 实例化一个SQL语句执行者
    QSqlQuery query;
 
    // 准备SQL语句,按分数升序排序
    QString sql = "SELECT * FROM STU ORDER BY score ASC;";
 
    // 执行SQL语句
    if (!query.exec(sql)) {
        QMessageBox::information(this, "提示", "查询失败");
        return;
    }
 
    // 清空表格
    ui->msgtable->clearContents();
    ui->msgtable->setRowCount(0);
 
    // 统计记录数
    int rowCount = 0;
    while (query.next()) {
        rowCount++; // 统计记录数
    }
 
    // 设置表格行数
    ui->msgtable->setRowCount(rowCount);
    query.first(); // 重置查询结果到第一条记录
 
    // 遍历结果集并填充表格
    int i = 0; // 遍历结果集的行
    do {
        // 获取当前记录
        QSqlRecord record = query.record();
 
        // 对当前记录进行操作,便利当前记录的所有字段
        for (int j = 0; j < record.count(); j++) {
            ui->msgtable->setItem(i, j, new QTableWidgetItem(record.value(j).toString()));
        }
        i++; // 表示行数增加
    } while (query.next()); // 继续处理所有记录
}
main.cpp
#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<QSqlDatabase>      //数据库的管理类
#include<QSqlQuery>
#include<QSqlRecord>
 
 
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_dispBtn_clicked();
 
    void on_deleteBtn_clicked();
 
    void on_sortBtn_clicked();
 
private:
    Ui::Widget *ui;
 
    //实例化一个数据库对象
    QSqlDatabase db;
};
#endif // WIDGET_H
注意:pro文件中加入sql并保存

ui界面

图像处理

源文件

#include "widget.h"
#include "ui_widget.h"
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
 
    //实例化 一个视频流对象
    VideoCapture video;
 
    if(!video.open("D:/opencv/resource/01.mp4"))//参数为零则打开自己设备 摄像头
    {
        QMessageBox::information(this,"提示","视频文件打开失败");
        return;
    }
 
    //从视频流对象中不断读取出图像
    Mat src;            //用于存储读取出的图像
    Mat gray;           //用于存放灰度 图
    Mat dest;           //用于存储均衡化图像
 
 
    //定义级联分类器对象
    CascadeClassifier c;
 
    //定义存储人脸矩阵的容器
    vector<Rect> faces;
    //给级联 分类器装 载分类模型
    if(!c.load("D:/opencv/resource/haarcascade_frontalface_alt.xml"))
    {
        QMessageBox::information(this,"提示","级联分类器加载失败");
        return;
    }
 
 
    while(video.read(src))
    {
        //翻转图像
        //翻转规则:0表示按x 轴翻转、证书表示 按y轴翻转,负数表示按xy轴都翻转
        cv::flip(src,src,1);
 
        //灰度处理:将三通道的彩色处理转变成单通道的灰白图
        cv::cvtColor(src,gray,CV_BGR2GRAY);
        //均衡化图像处理
        cv::equalizeHist(gray,dest);
 
/*        //对像素数据进行读写
        //at
        for(int j=0;j<src.rows;j++)
        {
            for(int i=0;i<src.cols;i++)
            {
                //每个像素又是一个长度为3的一维数组src.at<cv::Vec3b>(i,j)[k]
                for(int k=0;k<3;k++)
                {
                    src.at<cv::Vec3b>(j,i)[k] = 255 - src.at<cv::Vec3b>(j,i)[k];
                }
            }
        }
*/
 
        //使用 级联分类器获取人脸 矩形区域
         c.detectMultiScale(dest,faces);
 
         //将得到的矩形框绘制到图像上
         for(uint i=0;i<faces.size();i++)
         {
             // 调用cv提供的函数
             cv::rectangle(src,faces[i],Scalar(0,0,255),2);
             cv::rectangle(gray,faces[i],Scalar(0,0,255),2);
             cv::rectangle(dest,faces[i],Scalar(0,0,255),2);
         }
 
        //  将图像进行展示
        imshow("src",src);
        imshow("gray",gray);
        imshow("dest",dest);
 
        //使用 延时函数
        if(waitKey(50) == 27)
        {
            break;
        }
 
    }
}
 
Widget::~Widget()
{
    delete ui;
}
main.cpp
#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 <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_NAMESPACE
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
 
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
注意:PRO文件中加入以下代码并保存
INCLUDEPATH += D:/opencv/opencv3.4-qt-intall/install/include
INCLUDEPATH += D:/opencv/opencv3.4-qt-intall/install/include/opencv
INCLUDEPATH += D:/opencv/opencv3.4-qt-intall/install/include/opencv2
LIBS += D:/opencv/opencv3.4-qt-intall/install/x86/mingw/lib/libopencv_*.a

Xmind

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com