程序有误,麻烦高手看一下
#include<fstream>#include<iomanip>
#include<iostream>
#include<cstdlib>
#include<conio.h>
bool namepanduan(char n[20]);
bool coderight(char cd[20]);
void denlu(char name[20],char code[20]);
int wenjian();
using namespace std;
struct yuangon
{
char name[20];
char code[20];
};
yuangon y;
void read(yuangon y[],int size)
{
ifstream file;
file.setf(ios::fixed);
file.setf(ios::showpoint);
file.precision(2);
file.open("yuangon.dat",ios::in|ios::binary);
if(!file)
{
cout<<"文件打开失败!\n";
system ("pause");
exit(1);
//xit(1)是指整个程序的退出
//return是指一个函数的退出
}
for(int m=0;m<size;m++)
{
file.read((char*)&y[m],sizeof(y[m]));
}
file.close();
}/**/
bool namepanduan(char n[20])
//判断该账户是否重复
{
int renshu=2;
int xiangtong=0;
yuangon y[renshu];
read(y,renshu);
//将所有账户资料读入数组s[renshu]中
for(int i=0;i<renshu;i++)
{
if(strcmp(y[i].name,n)==0)
//如果y[i].name等于n返回0
{
xiangtong=1;
break;
}
}
return xiangtong;
}
bool coderight(char cd[20])
//判断密码是否正确
{
int zongshu=2;
yuangon y[zongshu];
read(y,zongshu);
//将所有账户资料读入数组y[zongshu]中
for(int i=0;i<zongshu;i++)
{
if(strcmp(y[i].code,cd)!=0)
//密码不相同,返回假
return 0;
else
return 1;
break;
}
}
int wenjian()
{
yuangon y[2]={{"wanglin","874034509"},
{"liming","9745669963"}};
ofstream file("yuangon.dat",ios::out|ios::binary);
//将数据写入文件
for(int i=0;i<2;i++)
{
file.write((char*)&y[i],sizeof(y[i]));
}
file.close();
return 0;
void denlu(char name[20],char code[20])
{
cout<<"请输入你的姓名和密码开始工作\n" ;
cout<<"姓名:";
cin>>name;
while(!namepanduan(name))
//有无该账户
{
cout<<"账户中无此姓名,请核对后重新输入\n";
cin>>name;
}
cout<<"请输入你的密码:\n";
int i=-1;
do
{
i++;
code[i]=getch();
putch('*');
}while(code[i]!=13);
//13表示回车
code[i]=0;
//字符串结束标
while(strcmp(code,"q")!=0&&coderight(code)==0)
//密码正确返回真
{
cout<<"你的密码不正确,请重新输入密码或键入“q”:\n";
int i=-1;
do
{
i++;
code[i]=getch();
putch('*');
}while(code[i]!=13);
code[i]=0;
//字符串结束标
}//密码正确或者输入"q"时退出while循环,否则继续密码验证
if(coderight(code)==1)
// 密码正确进入并进入二级菜单
cout<<"输入正确进入二级菜单 \n";
if(strcmp(code,"q")==0)
{
system ("cls");
cout<<"输入“退出”放弃登录\n";
return;
}
}
int main()
{
wenjian();
denlu();
system("pause");
return 0;
}