Ephf Markuten

所过之处 万物生长

『QT』创客空间元件管理系统|账户登录的实现

账户登录的实现

基本思路

建一个类专门用来读取txt文档以及做account是否正确的判断,同时这个类还要担任之后的元件的读取和写入、用户的操作记录

代码实现

只po上判断用户密码是否正确的一个函数

void JudgeData::OpenAccount(QLineEdit *account, QLineEdit *password)  //两个控件
{
    QFile file("Account.txt");          //暂时不考虑自定义路径
    file.open(QIODevice::ReadWrite);
    QTextStream stream(&file);            

    QString realAccount;              //读取到的账户
    int realPassword;              //读取到的正确密码
    QString accountS = account->text();   //用户输入的账户
    QString passwordS = password->text();        //用户输入的密码

    QMessageBox passMessage;            
    QMessageBox errorMessage;

    while(!stream.atEnd())
    {
        realAccount = stream.readLine(10);        //用户名都是十位的十进制数字
        if (realAccount == accountS)
        {
            stream.read(1);                 //跳过空格
            stream >> realPassword;                    
            if (realPassword == passwordS.toInt())
            {
                passMessage.setText("Login Success");
                passMessage.exec();
                break;
            }
            else
            {
                errorMessage.setText("Password Error,Please Check");
                errorMessage.exec();
                break;
            }
        }
    }

    if (stream.atEnd())                 //到了末尾还没检索到账户 报错
    {
        errorMessage.setText("No Account Data,Please Check or Contact the Teacher");
        errorMessage.exec();
    }


    file.close();
}

Account.txt:

1200132212 123456
1200132210 123456

这里比较重要的是 QTextStream 的操作,readLine() 函数以及>> 操作

这里的readLine(10) 表示读取此行的前个数字,当 while 进入下一个循环的时候,就会自动读取下一行,至于如何定位现在在哪一行,因为暂且不需要这功能就不管了,貌似是seek()

>> 操作其实和C++自带的fstream 差不多,但网上的教程似乎都用read ,很不方便,还是这个快

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fxt0706/article/details/51554998
文章标签: qt
个人分类: QT
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

『QT』创客空间元件管理系统|账户登录的实现

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭