註冊
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("用戶名不存在或密碼錯誤");//用戶密碼錯誤或用戶不存在提示
}
}