我想用文件操作的方式实现登录与注册功能,测试时发现注册成功了,但按照注册的登录名进行登录却总是匹配不到用户名,是怎么回事啊?
下面是源代码:
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
class User{
public:
void Register();
void Login();
protected:
char name[10];
char password[20];
char email[20];
char sex[5];
char time[20];
char temp[20];
};
void User::Register()
{
void Main_menu();
ofstream fout("regist.txt",ios::app);
if(!fout)
{
cout<<"无法链接服务器!\n";
}
cout<<"请输入用户名:";
cin>>name;
fout<<"用户名:"<<name<<endl;
cout<<"请输入性别:";
cin>>sex;
fout<<"性别:"<<sex<<endl;
cout<<"请输入Email:";
cin>>email;
fout<<"邮箱:"<<email<<endl;
cout<<"请输入密码:";
cin>>password;
fout<<"密码:"<<password<<endl;
cout<<"注册成功!"<<endl;
fout.close();
Main_menu();
}
void User::Login()
{
void Son_menu();
void Main_menu();
ifstream fin("regist.txt");
if(!fin)
{
cout<<"无法连接服务器";
}
cout<<"请输入用户名:";
cin>>name;
while(fin>>temp)
{
if(temp==name)
{
cout<<"请输入密码:";
cin>>password;
if(temp==password)
{
cout<<"登陆成功!"<<endl;
Son_menu();
}
else
{
cout<<"密码错误,请重新输入"<<endl;
Main_menu();
}
}
else
{
cout<<"用户名不存在,请重新输入或者注册!"<<endl;
Main_menu();
}
}
}
void Main_menu()
{
User op;
cout<<"\t************************************************************"<<endl;
cout<<"\t\t\t1.登录\n";
cout<<"\t\t\t2.注册\n";
cout<<"\t\t\t3.退出\n";
cout<<"\t************************************************************"<<endl;
cout<<"请输入序号进行操作:";
int choice;
cin>>choice;
switch(choice)
{
case 1:op.Login();break;
case 2:op.Register();break;
case 3:exit(0);break;
default: cout<<"输入序号出错!";
}
}
void Son_menu()
{
cout<<"\t************************************************************"<<endl;
cout<<"\t\t\t1.导入聊天信息\n";
cout<<"\t\t\t2.显示聊天信息\n";
cout<<"\t\t\t3.删除聊天信息\n";
cout<<"\t\t\t4.查询聊天信息\n";
cout<<"\t\t\t5.退出";
cout<<"\t************************************************************"<<endl;
}
void main()
{
Main_menu();
}