您的位置:首页 > 其它

MFC简单的登录注册实现

2017-04-16 17:05 281 查看
注册

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("用户名不存在或密码错误");//用户密码错误或用户不存在提示
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mfc cstring