void Transfer() { //首先肯定需要查询一下 //先把账户信息读进来 必须输入该账号和对应的密码,输入错误则给出警告 int i,flag=0,flag1=0,flag2=0; int item1=0,count=0,n=0; FILE *fp,*fp1; char accountnum1[LEN+1]; char accountnum2[LEN+1]; double wd; if((fp=fopen("account.txt","r"))==NULL) { printf("cannot open the file!!!\n"); return; } while(fscanf(fp,"%s %s %s %lf %s\n",&bank[count].account,&bank[count].name,&bank[count].key,&bank[count].balance,&bank[count].VIPoNormal)==5) { count++;//记录账户条数 } n=count; fclose(fp); if((fp1=fopen("account.txt","w"))==NULL) { printf("cannot open the file!!!\n"); return; } printf("请输入要转出钱款的账户:"); scanf("%s",&accountnum1); printf("请输入要转入钱款的账户:"); scanf("%s",&accountnum2); for(i=0;i<n;i++) //依次输出 { if(strcmp(accountnum1,bank[i].account)==0) { flag=1; item1=i; } if(strcmp(accountnum2,bank[i].account)==0) { flag1=1; } } if(flag==0||flag1==0) { printf("您输入的账户不存在!!!\n"); return; } if(flag==1&&flag1==1) { char s2[LEN]; while(flag2!=1) { for(i=3;i>0;i--) { printf("请输入密码:"); scanf("%s",&s2); if(strcmp(s2,bank[item1].key)==0) { flag2=1; break; } printf("!!!密码输入错误!!!\n");// printf("你还有%d次机会可以输入密码\n\n",i-1); } if(i==0) { printf("三次输入均密码错误,请重新选择功能\n"); return; } } } if(flag2==1) { printf("请输入要转出的金额:"); scanf("%lf",&wd); if(wd>bank[item1].balance) { printf("您的余额不足!"); return; } for(i=0;i<n;i++) //依次输出 { if(strcmp(accountnum1,bank[i].account)==0) fprintf(fp1,"%s %s %s %lf %s\n",bank[i].account,bank[i].name,bank[i].key,bank[i].balance-wd,bank[i].VIPoNormal); else if(strcmp(accountnum2,bank[i].account)==0) fprintf(fp1,"%s %s %s %lf %s\n",bank[i].account,bank[i].name,bank[i].key,bank[i].balance+wd,bank[i].VIPoNormal); else fprintf(fp1,"%s %s %s %lf %s\n",bank[i].account,bank[i].name,bank[i].key,bank[i].balance,bank[i].VIPoNormal); } } printf("转款成功!\n"); fclose(fp1); }
{
//首先肯定需要查询一下
//先把账户信息读进来 必须输入该账号和对应的密码,输入错误则给出警告
int i,flag=0,flag1=0,flag2=0;
int item1=0,count=0,n=0;
FILE *fp,*fp1;
char accountnum1[LEN+1];
char accountnum2[LEN+1];
double wd;
if((fp=fopen("account.txt","r"))==NULL)
{
printf("cannot open the file!!!\n");
return;
}
while(fscanf(fp,"%s %s %s %lf %s\n",&bank[count].account,&bank[count].name,&bank[count].key,&bank[count].balance,&bank[count].VIPoNormal)==5)
{
count++;//记录账户条数
}
n=count;
fclose(fp);
if((fp1=fopen("account.txt","w"))==NULL)
{
printf("cannot open the file!!!\n");
return;
}
printf("请输入要转出钱款的账户:");
scanf("%s",&accountnum1);
printf("请输入要转入钱款的账户:");
scanf("%s",&accountnum2);
for(i=0;i<n;i++) //依次输出
{
if(strcmp(accountnum1,bank[i].account)==0)
{
flag=1;
item1=i;
}
if(strcmp(accountnum2,bank[i].account)==0)
{
flag1=1;
}
}
if(flag==0||flag1==0)
{
printf("您输入的账户不存在!!!\n");
return;
}
if(flag==1&&flag1==1)
{
char s2[LEN];
while(flag2!=1)
{
for(i=3;i>0;i--)
{
printf("请输入密码:");
scanf("%s",&s2);
if(strcmp(s2,bank[item1].key)==0)
{
flag2=1;
break;
}
printf("!!!密码输入错误!!!\n");//
printf("你还有%d次机会可以输入密码\n\n",i-1);
}
if(i==0)
{
printf("三次输入均密码错误,请重新选择功能\n");
return;
}
}
}
if(flag2==1)
{
printf("请输入要转出的金额:");
scanf("%lf",&wd);
if(wd>bank[item1].balance)
{
printf("您的余额不足!");
return;
}
for(i=0;i<n;i++) //依次输出
{
if(strcmp(accountnum1,bank[i].account)==0)
fprintf(fp1,"%s %s %s %lf %s\n",bank[i].account,bank[i].name,bank[i].key,bank[i].balance-wd,bank[i].VIPoNormal);
else if(strcmp(accountnum2,bank[i].account)==0)
fprintf(fp1,"%s %s %s %lf %s\n",bank[i].account,bank[i].name,bank[i].key,bank[i].balance+wd,bank[i].VIPoNormal);
else
fprintf(fp1,"%s %s %s %lf %s\n",bank[i].account,bank[i].name,bank[i].key,bank[i].balance,bank[i].VIPoNormal);
}
}
printf("转款成功!\n");
fclose(fp1);
}
27行和29行代码错误,flag和flag1的值不会改变(还是原来的0),直接退出了,所以不会写文件
printf("请输入要转出钱款的账户:");
scanf("%s",accountnum1);//修改1,accountnum1之前不需要&,
printf("请输入要转入钱款的账户:");
scanf("%s",accountnum2);//修改2,accountnum2之前不需要&,