MFC簡單的登錄註冊實現

註冊


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("用戶名不存在或密碼錯誤");//用戶密碼錯誤或用戶不存在提示
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章