MFC简单的登录注册实现

https://blog.csdn.net/Rankir/article/details/70196469

Void CSignDlg::OnSubmit() 

{
    CString username;//从文件中读取用户名进行校验,如果输入的用户名在文件已存在则不进行注册
    CString sex;
    bool flag=false;//标记
    char * path="username.txt";//文件路径

    CFile fp;//使用MFC的CFile将暑假写入文件
                fp.Open(path,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);
fp.SeekToBegin();//移动文件指针位置至文件头

CArchive ar(&fp,CArchive::load);//使用CArchive进行读取文件

UpdateData();//将数据从控件复制到控件变量

//进行左右空格清除
m_Sign_Account.TrimLeft();
m_Sign_Account.TrimRight();

m_Sign_Pass.TrimLeft();
m_Sign_Pass.TrimRight();

//单选框选择并获取其文本
UINT nID=GetCheckedRadioButton(IDC_RADIO_MAN,IDC_RADIO_WOMAN);
GetDlgItemText(nID,sex);
//校验操作
while(ar.ReadString(username)){
    username.TrimLeft();
    username.TrimRight();
    if(strcmp(username,m_Sign_Account)==0)
    {
        flag=true;//如果已存在用户名,则标记flag为true
        break;
    }else
    {
        ar.ReadString(username);//读取下一行(每一行为一个属性,比如用户名,密码,性别,总共3 个属性)
        ar.ReadString(username);//读取下一行
    }
}
ar.Close();

fp.SeekToEnd();//文件写入为追加操作,所以写入前必须将文件指针移动至文件尾

    if(!flag)
    {
        //CFile Write(*str,GetLength())写入
        fp.Write(m_Sign_Account,m_Sign_Account.GetLength());
        //win虽是\r\n,在写程序只需要\n即可换行
        fp.Write("\n",sizeof(char));
        fp.Write(m_Sign_Pass,m_Sign_Pass.GetLength());
        fp.Write("\n",sizeof(char));
        fp.Write(sex,sex.GetLength());
        fp.Write("\n",sizeof(char));
        fp.Close();
        MessageBox("注册成功");
        CDialog::OnOK();
    }
    else
    {
        MessageBox("用户已存在");//用户已存在提示框,不关闭注册框,可让用户自由选择是否继续注册
    }
}

登录

void CMyDlg::OnLogin() 
{
    UpdateData();//将控件数据复制给控件变量
    CString username;
    CString password;
    CString sex;
    //与注册类似操作
    bool flag=false;
    char * path="username.txt";
    CFile file;
    file.Open(path,CFile::modeRead);
    file.SeekToBegin();
    CArchive ar(&file,CArchive::load);
    //去除数据左右空格数据
    m_Login_Account.TrimLeft();
    m_Login_Account.TrimRight();
    m_Login_Pass.TrimLeft();
    m_Login_Pass.TrimRight();
    //校验用户密码,与注册校验相同的操作,这里多验证了一步,即校验密码
    while(ar.ReadString(username))
    {
        if(ar.ReadString(password))
            {
                username.TrimLeft();
                username.TrimRight();
                password.TrimLeft();
                password.TrimRight();
                if(strcmp(username,m_Login_Account)==0
            &&strcmp(password,m_Login_Pass)==0)
                {
                    flag=true;
                    ar.ReadString(sex);//如果用户验证正确,flag=true,并且sex为用户的性别
                    break;          
                }               
            }
        ar.ReadString(sex);     
    }
    //关闭CFile和CArchive
    ar.Close();
    file.Close();
    if(flag)
    {
        m_Login_Result=m_Login_Account+" "+sex+" "+"已登录";//找到则显示的是用户名+性别+已登录
        m_Login_Account="";//成功登录后把用户框和密码框文本清除
        m_Login_Pass="";
        UpdateData(FALSE);//将数据从控件变量传递给控件
    }
    else{
        MessageBox("用户名不存在或密码错误");//用户密码错误或用户不存在提示
    }
}
 

猜你喜欢

转载自blog.csdn.net/active2489595970/article/details/88292514