关于文件流的操作
请大家仔细看一下下面的文件。这是我在课程设计中需要增加一个密码的功能。当第一次打开程序时,系统要求注册账号和密码,注册完后,马上显示输入账号和密码。
但结果却是系统不断重复提示这是第一次使用该程序,请注册账号和密码。
但是当第一次输入国账号和密码后,其实密码文件就已经生成了。如果直接把程序关了,再重新开这个课执行行文件
程序就可以显示“请输入账号和密码了”!!!!
十万火急啊!!!!!!!!!!!!!!!!!!!!!!
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<iomanip.h>
int pin()
{
int t;
char pwd[11];
char num[11];
cout<<"欢迎进入通讯录管理系统"<<endl;
fstream file1,file2;
cout<<"1->用户登陆"<<endl;
cout<<"2->退出程序"<<endl;
cin>>t;
while(t!=1&&t!=2)
{
cout<<"指令错误,请重新输入"<<endl;
cin>>t;
}
while(t==1)
{
file1.open("password.dat",ios::in|ios::nocreate|ios::binary);
if(!file1)
{
cout<<"您是第一次使用该系统,请输入用户名和密码"<<endl;
cout<<"用户名和密码均不超过10个字母(数字)"<<endl;
cout<<"用户名:";
cin>>pwd;
cout<<"密码:";
cin>>num;
file2.open("password.dat",ios::out|ios::binary);
file2.write((char*)pwd,11);
file2.write((char*)num,11);
file2.close();
cout<<"密码文件已经创建"<<endl;
}
else
{
char temp1[11],temp2[11];
cout<<"提示:用户名和密码均不超过10个字母(数字)"<<endl;
cout<<"用户名:";
cin>>pwd;
cout<<"密码:";
cin>>num;
while(file1.peek()!=EOF)
{
file1.read((char*)temp1,11);
file1.read((char*)temp2,11);
}
file1.close();
if(strcmp(temp1,pwd)==0&&strcmp(temp2,num)==0)
return 1;
else
{
cout<<"您输入的用户名或密码有问题"<<endl;
cout<<"是否重新输入,进入该系统"<<endl;
cout<<"1.是"<<setw(10)<<"2.否"<<endl;
cin>>t;
while(t!=1&&t!=2)
{
cout<<"指令错误,请重新输入"<<endl;
cin>>t;
}
if(t==2)
return 0;
}
}
}
return 0;
}
void main()
{
cout<<pin();
}