ui与逻辑分离的简单实现(登录界面)

//注册函数
bool  Validator::LocalValidate(const std::string& name, const std::string& password)
    {


        m_pl.m_name = name;
        m_pl.m_password = password;

        //先判断链表是否为空
        if( m_list.empty())
        {
            //存放用户注册的账号与密码
            m_list.push_front(m_pl);
            m_pIO->Write();

            return true;
        }

        //不为空
        else
        {
            //定义一个迭代器
            list<DATA>::iterator it = m_list.begin();
            //查看链表中有没有这个账号
             for(it;it!=m_list.end();it++)
              {
                  //存在账号了
                  if((*it).m_name==name)
                  {
                    return false;
                  }
                  //不存在账号
                  else
                  {
                    //存放用户注册的账号与密码
                    m_list.push_front(m_pl);

                    m_pIO->Write();

                    return true;
                  }
              }
        }

    }

//登录函数
int Validator:: LocalValidote(const std::string& name, const std::string& password)
    {

                 if(name==m_pIO->Read_Name())
                 {
                     if(password == m_pIO->Read_Password())
                     {
                         //密码正确

                         return Sucess;
                     }
                     //密码错误

                     return PasswordError;
                 }
                  else
                  {
                    return  NoUser;
                  }

}

1.预期效果

       使用QT5实现一个简易的登录界面,可以实现账号与密码的注册与验证登录,并且将验证登录过程与UI界面实现分离。

2.思路分析

       将账号与密码的输入框(lineEdit)中的用户输入的字符提取出来,并且存入自定义的链表中或者写入文件中,登录程序为验证账号是否存在,并根据账号找到链表或文件中相对应下的密码,与用户输入的进行验证,实现简单的登录过程,并将登录与验证过程分离。

3.实现过程

先前步骤可以参考https://blog.csdn.net/qq_56369428/article/details/121414779?spm=1001.2014.3001.5501

界面UI效果

 验证过程

//注册函数
bool  Validator::LocalValidate(const std::string& name, const std::string& password)
    {


        m_pl.m_name = name;
        m_pl.m_password = password;

        //先判断链表是否为空
        if( m_list.empty())
        {
            //存放用户注册的账号与密码
            m_list.push_front(m_pl);
            m_pIO->Write();

            return true;
        }

        //不为空
        else
        {
            //定义一个迭代器
            list<DATA>::iterator it = m_list.begin();
            //查看链表中有没有这个账号
             for(it;it!=m_list.end();it++)
              {
                  //存在账号了
                  if((*it).m_name==name)
                  {
                    return false;
                  }
                  //不存在账号
                  else
                  {
                    //存放用户注册的账号与密码
                    m_list.push_front(m_pl);

                    m_pIO->Write();

                    return true;
                  }
              }
        }

    }

//登录函数
int Validator:: LocalValidote(const std::string& name, const std::string& password)
    {

                 if(name==m_pIO->Read_Name())
                 {
                     if(password == m_pIO->Read_Password())
                     {
                         //密码正确

                         return Sucess;
                     }
                     //密码错误

                     return PasswordError;
                 }
                  else
                  {
                    return  NoUser;
                  }

}
#ifndef VALIDATOR_H
#define VALIDATOR_H
#include <iostream>
#include <list>
#include <cstdbool>
#include <QDebug>
#include "io.h"
using std::string;
using std::list;
#define FILEPATH "C:\\name\\name.ini"
#define JSON_FILEPATH "C:\\name\\json.json"

class Validator
{
public:

    //枚举
    enum ValidResult
        {
            NoUser=1,
            Sucess,
            PasswordError,
            Other
        }value;

    //注册函数
     bool LocalValidate(const std::string& name, const std::string& password);

    //登录函数
    int LocalValidote(const std::string& name, const std::string& password);

     Validator()
     {

     };
     Validator(const std::string& name, const std::string& password);
private:

   //定义一个账号密码的结构体
   typedef struct exam
   {
    std::string m_name;
    std::string m_password;
   }DATA;
   //定义一个链表存放结构体
   list<DATA> m_list;
   DATA m_pl;
   IO *m_pIO = NULL;

};






#endif // VALIDATOR_H

UI与逻辑的关联

//用户注册
void MainWindow::on_pushButton_LocalValilogin_clicked()
{

   //获取用户输入的账号与密码
    code =ui->lineEdit->text();
    pwd =ui->lineEdit_2->text();

    //账号注册

    Validator  localValidator(code.toStdString(),pwd.toStdString());
    bool bRet = localValidator.LocalValidate(code.toStdString(),pwd.toStdString());
    if(!bRet)
    {
        ui->label->setText("账号已存在!");
        return;
    }
        ui->label->setText("账号注册成功!");
      



}

//用户登录
void MainWindow::on_pushButton_LocalValienter_clicked()
{
    //获取用户输入的账号与密码
     QString g_code=ui->lineEdit->text();
     QString g_pwd=ui->lineEdit_2->text();

    Validator LocalValidator(g_code.toStdString(),g_pwd.toStdString());
     int i = LocalValidator.LocalValidote( g_code.toStdString(),g_pwd.toStdString());
     if(i== LocalValidator.NoUser )
     {
         ui->label->setText("账号不存在,请先注册!");
     }
     else if(i==LocalValidator.Sucess)
     {
         ui->label->setText("登陆成功!");
       
         

     }
     else if(i==LocalValidator.PasswordError)
     {
         ui->label->setText("登陆失败,密码错误!");
        
     }

}

4.总结

       这样实现后,就可以针对某一过程进行单独的改进,而不会影响其他界面的操作,实现了UI与逻辑的分离。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值