QT+mysql实现类似QQ的登录界面(密码用MD5加密)

目录

先来看看最终的效果图:

第一步创建数据库:

 数据库的链接与绑定:

登录按钮的实现

注册按钮:

密码加密:

先来看看最终的效果图:

第一步创建数据库:

可以直接用他在带的,也可以自己创建,双击的开

可以用mysqly语句进行创建或者在图形化界面创建,创建一个表用来存密码和用户名

 可以用QT自带的ui来设计登录界面和注册界面(比代码创建快的多),如果想让ui看起来更好看些可以用css代码来对UI进行美化,项目用到素材和完整代码有需要的写在评论区我会发给你的,例如:

 数据库的链接与绑定:

 db = new QSqlDatabase(QSqlDatabase::addDatabase("QMYSQL"));
    // 数据库连接需要设置的信息
    db->setHostName("127.0.0.1"); // 数据库服务器IP
    db->setDatabaseName("******");// 数据库名
    db->setUserName("root");// 用户名
    db->setPassword("*******");// 密码
    db->setPort(3306);// 端口号
    // 连接数据库
    bool ok = db->open();
    if (ok)
    {
        qDebug() << "数据库打开成功";
    }
    else
    {
        qDebug() << "数据库打开失败";
    }
    sql_query = new QSqlQuery(*db);

登录按钮的实现

//做检测,如果密码错误则弹窗口
    QString userName = ui->username->currentText();
    QString password = ui->passwd->text().trimmed();
    if(userName.isEmpty())
    {
        QMessageBox::about(this, "注意!", "用户名不能为空");
        return;
    }
    else if(password.isEmpty())
    {
        QMessageBox::about(this, "注意!", "用户密码不能为空");
        return;
    }
    else
    {
        //数据库中查询是否输入正确
        QString sql= QString("SELECT *from login where username='%1';").arg(userName);//检查用户是否存在
        if(sql_query->exec(sql))//用户不为空
        {
            if(sql_query->next())
            {

                        QString pwd_str = password;
                        QByteArray pwd = pwd_str.toUtf8();
                        QByteArray result = QCryptographicHash::hash(pwd, QCryptographicHash::Md5);
                        password= QString(result.toHex());
                if(password == sql_query->value("password").toString())   // 密码相等
                {
                    //画面切换
                    this->hide();
                    my_label->show();
                }
                else
                {
                    QMessageBox::about(this, "注意", "输入密码错误!");
                }
            }
            else
            {
                QMessageBox::about(this, "注意", "用户不存在!");
            }
        }

    }

注册按钮:

qDebug()<<"点击了注册按钮";
    //做检测,如果密码错误则弹窗口
    QString userName = ui->LineEdit_us->text().trimmed();
    QString password = ui->lineEdit_ans->text().trimmed();
    QString password2 = ui->lineEdit_ans2->text().trimmed();
    QSqlQuery query2;
    QString sql2= QString("SELECT username from login where username='%1';").arg(userName);//检查用户是否存在
    if(query2.exec(sql2))
    {
        qDebug()<<"sql执行成功";
    }
    if(userName==nullptr)
    {
        QMessageBox::about(this, "注意", "用户名不能为空");
    }
    else if(password==nullptr||password2==nullptr)
    {
        QMessageBox::about(this, "注意", "密码不能为空");
    }
    else if(password!=password2)
    {
        QMessageBox::about(this, "注意", "两次密码不一致");
    }
    else{

        if(query2.next())
        {
            QMessageBox::about(this, "注意", "用户已经存在");
        }
        else
        {
            //qDebug()<<"开始插入";
            QString pwd_str =password;
            QByteArray pwd = pwd_str.toUtf8();
            QByteArray result = QCryptographicHash::hash(pwd, QCryptographicHash::Md5);
            password=QString(result.toHex());
            QString c=QString("insert into login value('%1','%2')").arg(password).arg(userName);
            if(query2.exec(c))
            {
                 qDebug()<<"开始插入";
                 QMessageBox::about(this, "注意", "注册成功恭喜成为何耳林qqDemo用户");
                 ui->LineEdit_us->clear();
                 ui->lineEdit_ans->clear();
                 ui->lineEdit_ans2->clear();
                 QThread::msleep(50);
                 emit this->mysignupBack();
            }

        }
    }

密码加密:

!!!注意!!!,你在注册时对密码进行了MD5加密在登录时你也要进行相同的操作后再对密码进行验证,否则登录会出错(原因就不用多解释了吧)

QString pwd_str =password;
            QByteArray pwd = pwd_str.toUtf8();
            QByteArray result = QCryptographicHash::hash(pwd, QCryptographicHash::Md5);
            password=QString(result.toHex());
            QString c=QString("insert into login value('%1','%2')").arg(password).arg(userName);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值