Qt - 驾校科目-考试系统-验证账号密码

本文介绍了如何使用Qt进行驾校科目考试系统的账号密码验证,涉及正则表达式的应用,展示了具体的代码实现及运行结果。
摘要由CSDN通过智能技术生成

Qt - 驾校科目-考试系统-验证账号密码

在这里插入图片描述
在这里插入图片描述

具体代码

在这里插入图片描述

#include "logindialog.h"
#include "ui_logindialog.h"
#include <QMessageBox>
#include <QFile>
#include <QTextStream>

LoginDialog::LoginDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::LoginDialog)
{
    ui->setupUi(this);
    ui->imgLabel->setScaledContents(true);
    this->resize(ui->imgLabel->width(), ui->imgLabel->height());
    this->setWindowTitle("驾校科目一考试登录");
    this->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
}

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

void LoginDialog::on_loginBtn_clicked()
{
    //正则验证邮箱地址 用户名@域名 888888@qq.com
    //元字符解析: ^表示规则字符串的开始 $表示规则字符串的结束
    //+表示匹配次数>=1次 *表示匹配任意次数(可为0次) {n, m} 表示匹配次数至少n次, 至多m次
    QRegExp rx("^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$");
    bool res = rx.exactMatch(ui->accountEdit->text());
    if (res==false) //匹配不成功
    {
        QMessageBox::information(this, "提示", "非法的邮箱地址, 请你重新输入! ");
        ui->accountEdit->close();
        ui->accountEdit->setFocus();
        return;
    }
    else
    {
        QString filename;    //账号密码数据文件
        QString strAccInput; //用户输入的账号
        QString strCode;     //用户输入的密码
        QString strLine;     //每次读取的一行数据
        QStringList strList; //保存分割读取的第一行数据

        filename="../account.txt";
        strAccInput = ui->accountEdit->text();
        strCode = ui->codeEdit->text();

        QFile file(filename);
        QTextStream stream(&file);
        if(file.open(QIODevice::ReadOnly | QIODevice::Text)) //打开成功
        {
            while(!stream.atEnd())
            {
                strLine = stream.readLine();
                strList = strLine.split(",");
                if (strAccInput==strList.at(0)) //验证账号
                {
                    if(strCode==strList.at(1)) //验证密码
                    {
                        QMessageBox::information(this, "提示", "欢迎进入科目一考试系统! ");
                        file.close();
                        return;
                    }
                    else
                    {
                        QMessageBox::information(this, "提示", "您输入的密码有误, 请重新输入! ");
                        ui->codeEdit->clear();
                        ui->codeEdit->setFocus();
                        file.close();
                        return;
                    }
                }
            }
            QMessageBox::information(this, "提示", "您输入的账号有误, 请重新输入! ");
            ui->accountEdit->clear();
            ui->codeEdit->clear();
            ui->accountEdit->setFocus();
            file.close();
            return;
        }
        else //打开失败
        {
            QMessageBox::information(this, "提示", "读取账号数据文件失败!");
            return;
        }
    }
}

运行结果:
在这里插入图片描述

结语:

时间: 2020-07-19

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值