代码如下

登录界面功能实现:

from1.cpp

#include "form1.h"
#include "ui_form1.h"
#include "widget.h"
#include "ui_widget.h"
#include "newuser.h"
#include "ui_newuser.h"
#include <QMessageBox>
#include <QtSql/QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QStandardItem>
#include <QPalette>
#include <QDebug>

Form1::Form1(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form1)
{
    ui->setupUi(this);
    this->setWindowFlags(Qt::FramelessWindowHint);//隐藏标题栏
    this->setAutoFillBackground(true);
    QPalette palette;
    QPixmap pixmap(":/new/cool.jpg");
    palette.setBrush(QPalette::Window, QBrush(pixmap));
    this->setPalette(palette);

    mysql_connet();

    Widget *man=new Widget;
    newuser *user=new newuser;

    connect(ui->pushButton,&QPushButton::clicked,this,[=](){
        QSqlQuery quey;
        if((ui->lineEdit->text()=="") && (ui->lineEdit_2->text()==""))
        {
            QMessageBox *waring=new QMessageBox(QMessageBox::Warning,"警告","用户名或密码不能为空",QMessageBox::Ok);
            waring->exec();
        }
        else
        {
            quey.exec("select * from userdata");
            while(quey.next())
            {
                if((ui->lineEdit->text()==quey.value(1).toString()) && (ui->lineEdit_2->text()==quey.value(2)))
                {
                    QMessageBox *box=new QMessageBox(QMessageBox::Information,"登录成功",quey.value(1).toString(),QMessageBox::Ok);
                    box->show();
                    this->hide();
                    man->show();
                }
            }
            QMessageBox *cri=new QMessageBox(QMessageBox::Critical,"错误","用户名或密码错误,请重新输入",QMessageBox::Ok);
            cri->show();
        }
    });

    connect(ui->pushButton_2,&QPushButton::clicked,this,[=](){
        this->hide();
        user->show();
    });

    connect(ui->pushButton_3,&QPushButton::clicked,this,[=](){
        int ret;
        QMessageBox *tui=new QMessageBox(QMessageBox::Question,"提示","确定退出该程序吗?",QMessageBox::Ok|QMessageBox::Close);
        ret=tui->exec();
        if(ret==QMessageBox::Ok)
        {
            this->close();
        }
    });

    /*************信号机制**************/
    connect(user,&newuser::signal_user,this,[=](){
        this->show();
        user->hide();
    });

    connect(man,&Widget::signal_main,this,[=](){
        this->show();
        man->hide();
    });
}

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

void Form1::mysql_connet()
{
    QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
    db.setHostName("47.98.61.60");
    db.setPort(3306);
    db.setUserName("root");
    db.setPassword("123456");
    db.setDatabaseName("test");
    if(!db.open()){
        QMessageBox::warning(this,"错误",db.lastError().text());
    }
    else
    {
        qDebug()<<"连接成功1";
    }
}

用户注册界面功能实现:

newuser.cpp

#include "newuser.h"
#include "ui_newuser.h"
#include <QMessageBox>
#include <QtSql/QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QStandardItem>
#include <QPalette>
#include <QDebug>

newuser::newuser(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::newuser)
{
    ui->setupUi(this);
    this->setWindowFlags(Qt::FramelessWindowHint);
    this->setAutoFillBackground(true);
    QPalette palette;
    QPixmap pixmap(":/new/GIF.jpg");
    palette.setBrush(QPalette::Window, QBrush(pixmap));
    this->setPalette(palette);
    MySQL_Connect();

    connect(ui->pushButton,&QPushButton::clicked,this,[=](){
        if((ui->lineEdit->text()=="") || (ui->lineEdit_2->text()=="") || (ui->lineEdit_3->text()==""))
        {
             QMessageBox *cri=new QMessageBox(QMessageBox::Critical,"错误","填写的信息不完整,请重新填写",QMessageBox::Ok);
             cri->exec();
        }
        else
        {
            if(ui->lineEdit_2->text()!=ui->lineEdit_3->text())
            {
                QMessageBox *waring=new QMessageBox(QMessageBox::Warning,"警告","填写的密码不一致,请检查输入是否正确",QMessageBox::Ok);
                waring->exec();
            }
            else
            {
                QSqlQuery quey;
                QString data1 = ui->lineEdit->text(), data2 = ui->lineEdit_2->text();
                quey.prepare("insert into userdata(username,password) values(?,?)");
                quey.addBindValue(data1);
                quey.addBindValue(data2);
                quey.exec(); //执行
                int ret;
                QMessageBox *sucess=new QMessageBox(QMessageBox::Question,"提示","用户已注册成功,是否返回登陆界面?",QMessageBox::Ok | QMessageBox::Close);
                ret=sucess->exec();
                if(ret==QMessageBox::Ok)
                {
                    emit signal_user();
                }
            }
        }
    });

    connect(ui->pushButton_2,&QPushButton::clicked,this,[=](){
        ui->lineEdit->setText("");
        ui->lineEdit_2->setText("");
        ui->lineEdit_3->setText("");
    });

    connect(ui->pushButton_3,&QPushButton::clicked,this,[=](){
        int ret;
        QMessageBox *tui=new QMessageBox(QMessageBox::Question,"提示","确定退出注册界面吗?",QMessageBox::Ok|QMessageBox::Close);
        ret=tui->exec();
        if(ret==QMessageBox::Ok)
        {
            emit signal_user();
        }
    });
}


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

void newuser::MySQL_Connect()
{
    QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
    db.setHostName("47.98.61.60");
    db.setPort(3306);
    db.setUserName("root");
    db.setPassword("123456");
    db.setDatabaseName("test");
    if(!db.open()){
        QMessageBox::warning(this,"错误",db.lastError().text());
    }
    else
    {
        qDebug()<<"连接成功3";
    }
}

主界面功能实现:

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>
#include <QTimer>
#include <QDebug>
#include <QMovie>
#include <QDateTime>
#include <QDebug>
#include <QtSql/QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QStandardItem>
#include <QPalette>

string data1;
char data2[20];
float score=0;
int i=0;
int row=0;

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowFlags(Qt::FramelessWindowHint);//隐藏标题栏
    this->setAutoFillBackground(true);
    QPalette palette;
    QPixmap pixmap(":/new/ku.jpg");
    palette.setBrush(QPalette::Window, QBrush(pixmap));
    this->setPalette(palette);


    MySQL_Connect();
    QStringList headertext;
    headertext<<"姓名"<<"班级"<<"成绩";
    ui->tableWidget->setColumnCount(headertext.count());
    for(int i=0;i<headertext.count();i++)
    {
        ui->tableWidget->setHorizontalHeaderItem(i,new QTableWidgetItem(headertext.at(i)));
    }

    QSqlQuery quey;
    quey.exec("select * from data");
    qint32 rowno=0;

    while(quey.next())
    {
        qDebug()<<quey.value(0).toString()<<quey.value(1).toString()<<quey.value(2).toString()<<quey.value(3).toString();
        ui->tableWidget->insertRow(rowno);
        for(int i=0;i<4;i++)
        {
             ui->tableWidget->setItem(rowno,i,new QTableWidgetItem(quey.value(i+1).toString()));
        }
        rowno++;
    }
    
    connect(ui->pushButton,&QPushButton::clicked,this,[=](){
        if(ui->lineEdit->text()=="" && ui->lineEdit_2->text()=="" && ui->lineEdit_3->text()=="")
        {
            QMessageBox *inser_no=new QMessageBox(QMessageBox::Warning,"警告","请将信息填写完整",QMessageBox::Ok);
            inser_no->exec();
        }
        else
        {
           QSqlQuery quey;
           QString data1 = ui->lineEdit->text(), data2 = ui->lineEdit_3->text() ,data3=ui->lineEdit_2->text();
           quey.prepare("insert into data(name,class,score) values(?,?,?)");
           quey.addBindValue(data1);
           quey.addBindValue(data2);
           quey.addBindValue(data3);
           quey.exec(); //执行
           updata();
           ui->lineEdit->setText("");
           ui->lineEdit_2->setText("");
           ui->lineEdit_3->setText("");
        }
    });

    connect(ui->pushButton_2,&QPushButton::clicked,this,[=](){
        QSqlQuery quey;
        QString delaname=ui->lineEdit->text();
        quey.prepare(QString("DELETE FROM data WHERE name=?"));
        quey.addBindValue(delaname);
        quey.exec();
        updata();
        ui->lineEdit->setText("");
        ui->lineEdit_2->setText("");
        ui->lineEdit_3->setText("");
    });

    connect(ui->pushButton_3,&QPushButton::clicked,this,[=](){
     QSqlQuery quey;
     int flag=0;
     quey.exec("select * from data");
     while(quey.next())
     {
         if(ui->lineEdit->text()==quey.value(1).toString())
         {
             QMessageBox *box=new QMessageBox(QMessageBox::Information,"查询成功",quey.value(1).toString(),QMessageBox::Ok | QMessageBox::Close);
             box->exec();
             flag=1;
         }
     }
     if(flag==0)
     {
         QMessageBox *box_no=new QMessageBox(QMessageBox::Information,"查询结果","未查询到相关信息",QMessageBox::Ok | QMessageBox::Close);
         box_no->exec();
     }
    });

    connect(ui->pushButton_4,&QPushButton::clicked,this,[=](){
        QSqlQuery quey;
        QString valueStr=ui->lineEdit_2->text();
        QString flag = ui->lineEdit->text();
            quey.prepare("update data set score = ? where name = ?");
            quey.addBindValue(valueStr);
            quey.addBindValue(flag);
            quey.exec(); //执行
        updata();
        ui->lineEdit->setText("");
        ui->lineEdit_2->setText("");
        ui->lineEdit_3->setText("");
    });

    connect(ui->pushButton_5,&QPushButton::clicked,this,[=](){
        int ret;
        QMessageBox *fan=new QMessageBox(QMessageBox::Question,"提示","确定退出该界面吗?",QMessageBox::Ok|QMessageBox::Close);
        ret=fan->exec();
        if(ret==QMessageBox::Ok)
        {
            emit signal_main();
        }
    });

    connect(ui->pushButton_6,&QPushButton::clicked,this,[=](){
        int ret;
        QMessageBox *tui=new QMessageBox(QMessageBox::Question,"提示","确定退出该程序吗?",QMessageBox::Ok|QMessageBox::Close);
        ret=tui->exec();
        if(ret==QMessageBox::Ok)
        {
            this->close();
        }
    });

    QTimer *time=new QTimer(this);
    time->start(1000);

    connect(time,&QTimer::timeout,this,[=](){
        QDateTime curent_time=QDateTime::currentDateTime();
        QString time_data=curent_time.toString("yyyy-MM-dd hh:mm:ss ddd");
        ui->label_4->setText(time_data);
    });

    QMovie *mo=new QMovie(":/new/miao.gif");
    ui->label_6->setMovie(mo);
    mo->start();
}

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

void Widget::MySQL_Connect()
{
    QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");

    db.setHostName("47.98.61.60");
    db.setPort(3306);
    db.setUserName("root");
    db.setPassword("123456");
    db.setDatabaseName("test");
    if(!db.open()){
        QMessageBox::warning(this,"错误",db.lastError().text());
    }
    else
    {
        qDebug()<<"连接成功2";
    }

}

void Widget::updata()
{
    ui->tableWidget->clearContents();
    QSqlQuery quey;
    quey.exec("select * from data");
    qint32 rowno=0;
    while(quey.next())
    {
        qDebug()<<quey.value(0).toString()<<quey.value(1).toString()<<quey.value(2).toString()<<quey.value(3).toString();
        ui->tableWidget->insertRow(rowno);
        for(int i=0;i<4;i++)
        {
             ui->tableWidget->setItem(rowno,i,new QTableWidgetItem(quey.value(i+1).toString()));
        }
        rowno++;
    }
}

运行效果如下:

 

 

Logo

一站式 AI 云服务平台

更多推荐