自动取款机升级版

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<conio.h>
struct User
{
 long bankcard;
 char username[30];
 char password[20];
 char homeaddress[50];
 char phone[12];
 char idnumber[19];
 long money;
 int freeze;
};User user[10000000];
char name[30],word[20],phone[12],idnumber[19];
int welcome110();//、、、、、、、、 登陆前界面********
void findpassword();
void freeze();//冻结
void free_();//解冻
void creat();//开户
long entry();//登陆
int welcome2();//*************登陆后页面
void search(long m);//查询余额
void deposit(long m);//存款
void draw(long m);//取钱
void del(long m);//销户
void transfer(long m);//转账
void changepassword(long m);/修改密码
int main()
{  
 int j,i;
 long count=0;
 while(1)
 {
   system("color e9");
  j=welcome110();
  if(j==0)
   break;
  switch(j)
  { 
  case 1:creat();break;  //开户
  case 2:count=entry();break;//登录
  case 3:freeze();break;//冻结
  case 4:free_();break; /解冻                              
  case 5:findpassword();break;找回密码
  default:printf("你输入的选项号不正确,请重新输入!"); system("pause");break;
  }
  if(count!=0)
   break;
 }
 ///登陆后//
 while(j!=0)
 {
 
  i=welcome2();//进入主页面
  if(i==0)
   break;
  switch(i)
  {
  case 1:search(count);break;查询余额
  case 2:deposit(count);break;存款
  case 3:draw(count);break; /取款                              
  case 4:transfer(count);break;/转账
  case 5:changepassword(count);break;修改密码
  case 6:del(count);count=0;main(); break;销户
  default:printf("你输入的选项号不正确,请重新输入!"); system("pause");break;
  }
  
 }
 printf("感谢您的使用,欢迎下次使用。\n");
 system("pause");
 return 0;
}
///函数实现、/
int welcome110()/登陆前界面//
{
 system("cls");
 printf("    ***********************************************************************    \n");
 printf("    *                                                                     *    \n");
 printf("    *                       欢迎进入银行管理系统                          *    \n");
 printf("    *                                                                     *    \n");
 printf("    ***********************************************************************    \n");
 printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    \n");
 printf("    $                                $                                    $    \n");
 printf("    $             1.开户             $           2.登陆                   $    \n");
 printf("    $                                $                                    $    \n");
 printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    \n");
 printf("    $                                $                                    $    \n");
 printf("    $             3 冻结             $           4.解冻                   $    \n");
 printf("    $                                $                                    $    \n");
 printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    \n");
 printf("    $                                $                                    $    \n");
 printf("    $             5 找回密码         $           0 退出                   $    \n");
 printf("    $                                $                                    $    \n");
 printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    \n");
 printf("*请选择您要的功能:");
 int i;
 scanf("%d",&i);
 return i;
}
void creat()///开户
{
 system("cls");
 int i=0,j=0;
 int sum=1;
 FILE *fp1,*fp2;
 fp1=fopen("d:\\file1.txt","a+");
 if(!fp1)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 while(fscanf(fp1,"%ld  %s   %s   %s   %s   %s   %ld  %d\n",&user[i].bankcard,user[i].username,user[i].password,user[i].homeaddress,user[i].phone,user[i].idnumber,&user[i].money,&user[i].freeze)!=EOF)
  //每次读取一行,读取出文件中所有的数据
 {
  i++; sum++;
 }
 
 for(j=0;j<sum-1;j++)
 {
  if(user[j].bankcard==0)
  {
   sum--;  break;
  }
 }
 i=j;
 fclose(fp1); 
 user[i].bankcard=i+1;//使得银行卡号不会重复,
 printf("卡号为:");
 printf("%09ld",user[i].bankcard);//卡号非用户输入,避免重复
 printf("\n请输入姓名:");
 scanf("%s",user[i].username);
 printf("\n请输入密码:");
 for (j=0; j<20; j++) 
 {      
  user[i].password[j] = getch();  /*逐次赋值,但不回显*/    
  if (user[i].password[j]==' '||user[i].password[j]==13)/*回车则终止循环*/  
  {  
   user[i].password[j]='\0';  
   break;
  }    
  printf("*");       /*以星号代替字符个数*/  
 }
 int len=strlen(user[i].password);
 for(int k=0;k<len;k++)
  user[i].password[k]=user[i].password[k]^1010;//异或 加密
 printf("\n请输入住址:");
 scanf("%s",user[i].homeaddress); 
 printf("\n请输入手机号:");
 scanf("%s",user[i].phone);  
 printf("\n请输入身份证号码:");
 scanf("%s",user[i].idnumber);
 printf("\n请输入存款金额:");
 scanf("%ld",&user[i].money);
 user[i].freeze=1;
 fp2=fopen("d:\\file1.txt","w+");/再次写入
 if(!fp2)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 for(int num=0;num<sum;num++)
  fprintf(fp1,"%09ld   %s   %s   %s   %s   %s   %ld %d\n",user[num].bankcard,user[num].username,user[num].password,user[num].homeaddress,user[num].phone,user[num].idnumber,user[num].money,user[num].freeze);
 //将数据写入文件
 fclose(fp2);
 return;
}
long entry()登陆/
{
 system("cls");
 FILE *fp1;
 int i=0,k=0;
 char word[20];
 long card;
 printf("请输入卡号:");
 scanf("%ld",&card);
 fp1=fopen("d:\\file1.txt","r");
 if(!fp1)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 
 while(fscanf(fp1,"%ld %s %s %s %s %s %ld %d\n",&user[i].bankcard,user[i].username,user[i].password,user[i].homeaddress,user[i].phone,user[i].idnumber,&user[i].money,&user[i].freeze)!=EOF)
 {
  if(card==user[i].bankcard)
  { k=1;    break;} 
  
 }
 if(k==0)
 {
  printf("您输入的卡号不存在。\n");
  system("pause");
  return 0;
 }
 if(user[i].freeze==0)
 {
  printf("该卡号已经被冻结,不可用\n");
  system("pause");
  return 0;
 }
 
 printf("\n请输入密码:") ;
 for(int j=0;j<20;j++)
 {   
  word[j] = getch();  /*逐次赋值,但不回显*/    
  if (word[j]==' ' || word[j]==13)/*  则终止循环*/  
  {  
   word[j]='\0'; 
   break;
  }    
  printf("*");/*以星号代替字符个数*/
 }
 int len=strlen(word);
 for(k=0;k<len;k++)
  word[k]=word[k]^1010;
 if(strcmp(word,user[i].password)==0)
 {
  printf("\n恭喜你,登陆成功。\n");
  system("pause");
  return card;    //
    }
 printf("密码错误,请注意大小写。");
 system("pause");
 return 0;   /
}
void freeze()冻结
{
 system("cls");
    int i=0,j=0,t=0,sum=1;
 int m;
 char word[20];
 printf("请输入要冻结的卡号:");
 scanf("%d",&m);
 FILE *fp1,*fp2;
 fp1=fopen("d:\\file1.txt","a+");
 if(!fp1)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 while(fscanf(fp1,"%ld  %s  %s %s  %s  %s  %ld  %d\n",&user[i].bankcard,user[i].username,user[i].password,user[i].homeaddress,user[i].phone,user[i].idnumber,&user[i].money,&user[i].freeze)!=EOF)
  //每次读取一行,读取出文件中所有的数据
 {
  i++; sum++;
 }
 for(j=0;j<sum-1;j++)
 {
  if(user[j].bankcard==m)
  {
   t=1; break;
  }
 }
 i=j;
 fclose(fp1);
 if(t==0 || user[j].freeze==0)
 {
  printf("输入的卡号不存在。\n");
  system("pause");
  return;
 }
 printf("\n请再次输入密码:");//密码验证
 for (j=0; j<20; j++) 
 {      
  word[j] = getch();  /*逐次赋值,但不回显*/    
  if (word[j]==' '||word[j]==13)/*  则终止循环*/  
  {  
   word[j]='\0';  
   break;
  }    
  printf("*");       /*以星号代替字符个数*/  
 }
 int len=strlen(word);
 for(int k=0;k<len;k++)
  word[k]=word[k]^1010;
 printf("\n请输入姓名:");
 scanf("%s",name);
 printf("\n请输入身份证号:");
 scanf("%s",idnumber); 
 printf("\n请输入手机号:");
 scanf("%s",phone);
 
 if(strcmp(word,user[m-1].password)==0 && strcmp(name,user[m-1].username)==0 && strcmp(phone,user[m-1].phone)==0 && strcmp(idnumber,user[m-1].idnumber)==0 )  
  user[m-1].freeze=0;//冻结
 else
 {
  printf("\n输入信息错误,冻结失败。\n");
  system("pause");
  return; 
 }
 fp2=fopen("d:\\file1.txt","w+");/再次写入
 if(!fp2)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 for(int num=0;num<sum-1;num++)
  fprintf(fp1,"%09ld %s  %s  %s  %s  %s  %ld  %d\n",user[num].bankcard,user[num].username,user[num].password,user[num].homeaddress,user[num].phone,user[num].idnumber,user[num].money,user[num].freeze);
 //将数据写入文件 
 fclose(fp2);
 printf("恭喜你,冻结成功。\n");
 system("pause");
 return;
}
void free_()解冻//
{
 system("cls");
    int i=0,j=0;
 int sum=1,y,t=0;
 int m;
 printf("请输入要解除冻结的卡号:");
 scanf("%d",&m);
 FILE *fp1,*fp2;
 fp1=fopen("d:\\file1.txt","a+");
 if(!fp1)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 while(fscanf(fp1,"%ld  %s  %s %s  %s  %s  %ld  %d\n",&user[i].bankcard,user[i].username,user[i].password,user[i].homeaddress,user[i].phone,user[i].idnumber,&user[i].money,&user[i].freeze)!=EOF)
  //每次读取一行,读取出文件中所有的数据
 {
  i++; sum++;
 }
 for(j=0;j<sum-1;j++)
 {
  if(user[j].bankcard==m)
  {
   t=1; break;
  }
 }
 if(t==0)
 {
  printf("输入的卡号不存在。\n");
  system("pause");
  return;
 }
 i=j;
 fclose(fp1);
 if(user[i].freeze==1 ||user[i].bankcard==0)
 {
  printf("输入的卡号未被冻结 或 已销户\n");
  printf("重输请输入:1\n 输入其他则退出\n");
  scanf("%d",&y);
  if(y==1)
   free_();
  else  return;///
 }
 printf("\n请再次输入密码:");//密码验证
 for (j=0; j<20; j++) 
 {      
  word[j] = getch();  /*逐次赋值,但不回显*/    
  if (word[j]==' '||word[j]==13)/*  则终止循环*/  
  {  
   word[j]='\0';  
   break;
  }    
  printf("*");       /*以星号代替字符个数*/  
 }
 int len=strlen(word);
 for(int k=0;k<len;k++)
  word[k]=word[k]^1010;
 printf("\n请输入姓名:");
 scanf("%s",name);
 printf("\n请输入身份证号:");
 scanf("%s",idnumber); 
 printf("\n请输入手机号:");
 scanf("%s",phone);
 if(strcmp(word,user[m-1].password)==0 && strcmp(name,user[m-1].username)==0 && strcmp(phone,user[m-1].phone)==0 && strcmp(idnumber,user[m-1].idnumber)==0 )  
  user[m-1].freeze=1;//jie冻
 else
 {
  printf("\n输入信息错误,解除冻结失败。");
  system("pause");
  return; 
 }
 fp2=fopen("d:\\file1.txt","w+");/再次写入
 if(!fp2)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 for(int num=0;num<sum-1;num++)
  fprintf(fp1,"%09ld %s %s %s %s %s %ld %d\n",user[num].bankcard,user[num].username,user[num].password,user[num].homeaddress,user[num].phone,user[num].idnumber,user[num].money,user[num].freeze);
 //将数据写入文件
 fclose(fp2);
 printf("恭喜你,解冻成功。\n");
 system("pause");
 return;
}
void findpassword()/找回密码///
{
 system("cls");
 int i=0,j=0;
 int sum=1;
 int m,t=0;
 printf("请输入要找回密码的卡号:");
 scanf("%d",&m);
 FILE *fp1,*fp2;
 fp1=fopen("d:\\file1.txt","a+");
 if(!fp1)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 while(fscanf(fp1,"%ld  %s  %s %s  %s  %s  %ld  %d\n",&user[i].bankcard,user[i].username,user[i].password,user[i].homeaddress,user[i].phone,user[i].idnumber,&user[i].money,&user[i].freeze)!=EOF)
  //每次读取一行,读取出文件中所有的数据
 {
  i++; sum++;
 }
 for(j=0;j<sum-1;j++)
 {
  if(user[j].bankcard==m)
  {
   t=1; break;
  }
 }
 if(t==0)
 {
  printf("输入的卡号不存在\n");
  system("pause");
  return;
 }
 i=j;
 fclose(fp1);
 printf("\n请输入姓名:");
 scanf("%s",name);
 printf("\n请输入身份证号:");
 scanf("%s",idnumber); 
 printf("\n请输入手机号:");
 scanf("%s",phone);
 if(strcmp(name,user[m-1].username)==0 && strcmp(phone,user[m-1].phone)==0 && strcmp(idnumber,user[m-1].idnumber)==0 && user[m-1].freeze==0 )  
    {
  printf("\n请输入新密码:");
  for ( int j=0; j<20; j++) 
  {      
   user[m-1].password[j] = getch();  /*逐次赋值,但不回显*/    
   if (user[m-1].password[j]==' '||user[m-1].password[j]==13)/*  则终止循环*/  
   {  
    user[m-1].password[j]='\0';  
    break;
   }    
   printf("*");       /*以星号代替字符个数*/  
  }
  int len=strlen(user[m-1].password);
  for(int k=0;k<len;k++)
   user[m-1].password[k]=user[m-1].password[k]^1010;
 }
 else
 {
  printf("\n输入信息错误或未冻结,销户失败。");
  system("pause");
  return; 
 }
 fp2=fopen("d:\\file1.txt","w+");/再次写入
 if(!fp2)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 for(int num=0;num<sum-1;num++)
  fprintf(fp1,"%09ld %s %s %s %s %s %ld %d\n",user[num].bankcard,user[num].username,user[num].password,user[num].homeaddress,user[num].phone,user[num].idnumber,user[num].money,user[num].freeze);
 //将数据写入文件
 fclose(fp2);
 printf("\n恭喜你,找回密码成功。\n");
 system("pause");
 return;
}
/登陆后//
int welcome2()///登陆后界面///
{
 system("color ec");
 system("cls");
    printf("    ***********************************************************************    \n");
 printf("    *                                                                     *    \n");
 printf("    *                  恭喜你成功登陆银行管理系统                         *    \n");
 printf("    *                                                                     *    \n");
 printf("    ***********************************************************************    \n");
 printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    \n");
 printf("    $                                $                                    $    \n");
 printf("    $          1.查询余额            $             2.存款                 $    \n");
 printf("    $                                $                                    $    \n");
 printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    \n");
 printf("    $                                $                                    $    \n");
 printf("    $          3.取款                $             4.转账                 $    \n");
 printf("    $                                $                                    $    \n");
 printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    \n");
 printf("    $                                $                                    $    \n");
 printf("    $          5.修改密码            $             6. 销户                $    \n");
 printf("    $                                $                                    $    \n");
 printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    \n");
 printf("    $                                                                     $    \n");
 printf("    $                             0.退出                                  $    \n");
 printf("    $                                                                     $    \n");
 printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    \n");
 printf("*请选择您要的功能:");
 int i;
 scanf("%d",&i);
 return i;
}
void search(long m)查询余额/
{
 system("cls");
 int i=0,j=0;
 int sum=1;
 FILE *fp1;
 fp1=fopen("d:\\file1.txt","a+");
 if(!fp1)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 while(fscanf(fp1,"%ld  %s  %s %s  %s  %s  %ld  %d\n",&user[i].bankcard,user[i].username,user[i].password,user[i].homeaddress,user[i].phone,user[i].idnumber,&user[i].money,&user[i].freeze)!=EOF)
  //每次读取一行,读取出文件中所有的数据
 {
  i++; sum++;
 }
 for(j=0;j<sum-1;j++)
 {
  if(user[j].bankcard==m)
  {
   printf("%ld\n",user[j].money);
   system("pause");
   return;
  }
 }
}
void deposit(long m)///存款
{
 system("cls");
 int i=0,j=0;
 int sum=1;
 long money;
 FILE *fp1,*fp2;
 fp1=fopen("d:\\file1.txt","a+");
 if(!fp1)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 while(fscanf(fp1,"%ld  %s  %s %s  %s  %s  %ld  %d\n",&user[i].bankcard,user[i].username,user[i].password,user[i].homeaddress,user[i].phone,user[i].idnumber,&user[i].money,&user[i].freeze)!=EOF)
  //每次读取一行,读取出文件中所有的数据
 {
  i++; sum++;
 }
    for(j=0;j<sum-1;j++)
  if(user[j].bankcard==m)
   break;
        i=j;
  printf("请输入存款金额:");
  scanf("%ld",&money);
  user[i].money+=money;
  fclose(fp1);
  fp2=fopen("d:\\file1.txt","w+");/再次写入
  if(!fp2)//打开失败
  {
   printf("file1.txt cannot open!\n");//输出打开错误
   exit(0);//结束
  }
  for(int num=0;num<sum-1;num++)
   fprintf(fp1,"%09ld %s %s %s %s %s %ld %d\n",user[num].bankcard,user[num].username,user[num].password,user[num].homeaddress,user[num].phone,user[num].idnumber,user[num].money,user[num].freeze);
  //将数据写入文件
  fclose(fp2);
  return;
}
void draw(long m)/取款//
{
 system("cls");
 int i=0,j=0;
 int sum=1;
 long money;
 FILE *fp1,*fp2;
 fp1=fopen("d:\\file1.txt","a+");
 if(!fp1)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 while(fscanf(fp1,"%ld  %s  %s %s  %s  %s  %ld  %d\n",&user[i].bankcard,user[i].username,user[i].password,user[i].homeaddress,user[i].phone,user[i].idnumber,&user[i].money,&user[i].freeze)!=EOF)
  //每次读取一行,读取出文件中所有的数据
 {
  i++; sum++;
 }
 for(j=0;j<sum-1;j++)
 {
  if(user[j].bankcard==m)
  {
   break;
  }
 }
 i=j;
 printf("请输入取款金额:");
 scanf("%ld",&money);
 if(money>user[i].money)
 {
  printf("余额不足。");
  system("pause");
  return;
 }
 user[i].money-=money;
 fclose(fp1);
 fp2=fopen("d:\\file1.txt","w+");/再次写入
 if(!fp2)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 for(int num=0;num<sum-1;num++)
  fprintf(fp1,"%09ld %s %s %s %s %s %ld %d\n",user[num].bankcard,user[num].username,user[num].password,user[num].homeaddress,user[num].phone,user[num].idnumber,user[num].money,user[num].freeze);
 //将数据写入文件
 fclose(fp2);
 return;
}
void transfer(long m)//转账
{
 system("cls");
    int i=0,j=0,r=0;
 int sum=1,o=0;
 long money,card;
 FILE *fp1,*fp2;
 fp1=fopen("d:\\file1.txt","a+");
 if(!fp1)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 printf("请输入要转入的卡号:");
 scanf("%ld",&card);
 while(fscanf(fp1,"%ld  %s  %s %s  %s  %s  %ld  %d\n",&user[i].bankcard,user[i].username,user[i].password,user[i].homeaddress,user[i].phone,user[i].idnumber,&user[i].money,&user[i].freeze)!=EOF)
 {
  i++; sum++; 
 }
 fclose(fp1);
 for(j=0;j<sum-1;j++)
  if(card==user[j].bankcard)
  {
   o=1;break;
  }
  if(o!=1)
  {
   int out1;
   printf("输入的卡号不存在。\n重新输入请输入:1.\n输入其他则退出\n");
   scanf("%d",&out1);
   if(out1==1)
    transfer(m);
   else  return;
  }
  if(user[j].freeze==0)
   
  {
   printf("该卡号已经被冻结,转账失败.\n");
            system("pause");
   return;
  }
  printf("姓名:%s\n",user[j].username);
  printf("确定请输入:1 \n输入其他则退出\n");
  scanf("%d",&r);
  if(r==1)
  {
   printf("请输入转账金额:");
   scanf("%ld",&money);
   if(money>user[i].money)
   {
    printf("余额不足。");
    system("pause");
    return;
   }
   user[j].money+=money; 
   user[m-1].money-=money;
  }
  else   return;
  fp2=fopen("d:\\file1.txt","w+");/再次写入
  if(!fp2)//打开失败
  {
   printf("file1.txt cannot open!\n");//输出打开错误
   exit(0);//结束
  }
  for(int num=0;num<sum-1;num++)
   fprintf(fp1,"%09ld %s %s %s %s %s %ld %d\n",user[num].bankcard,user[num].username,user[num].password,user[num].homeaddress,user[num].phone,user[num].idnumber,user[num].money,user[num].freeze);
  //将数据写入文件
  fclose(fp2);
  return;
}
void del(long m)/销户///
{
 system("cls");
    int i=0,j=0;
 int sum=1;
 FILE *fp1,*fp2;
 fp1=fopen("d:\\file1.txt","a+");
 if(!fp1)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 while(fscanf(fp1,"%ld  %s  %s %s  %s  %s  %ld  %d\n",&user[i].bankcard,user[i].username,user[i].password,user[i].homeaddress,user[i].phone,user[i].idnumber,&user[i].money,&user[i].freeze)!=EOF)
  //每次读取一行,读取出文件中所有的数据
 {
  i++; sum++;
 }
    for(j=0;j<sum-1;j++)
  if(user[j].bankcard==m)
   break;
  i=j;
  fclose(fp1);
  printf("\n请再次输入密码:");//密码验证
  for (j=0; j<20; j++) 
  {      
   word[j] = getch();  /*逐次赋值,但不回显*/    
   if (word[j]==' '||word[j]==13)/*  则终止循环*/  
   {  
    word[j]='\0';  
    break;
   }    
   printf("*");       /*以星号代替字符个数*/  
  }
  int len=strlen(word);
  for(int k=0;k<len;k++)
   word[k]=word[k]^1010;
  printf("\n请输入姓名:");
  scanf("%s",name);
  printf("\n请输入身份证号:");
  scanf("%s",idnumber); 
  printf("\n请输入手机号:");
  scanf("%s",phone);
  if(strcmp(word,user[m-1].password)==0 && strcmp(name,user[m-1].username)==0 && strcmp(phone,user[m-1].phone)==0 && strcmp(idnumber,user[m-1].idnumber)==0 )  
  {
   user[m-1].bankcard=0;
   user[m-1].money=0;
   // user[m-1].freeze=0;
  }
  else
  {
   printf("\n输入信息错误,销户失败。");
   system("pause");
   return; 
  }
  fp2=fopen("d:\\file1.txt","w+");/再次写入
  if(!fp2)//打开失败
  {
   printf("file1.txt cannot open!\n");//输出打开错误
   exit(0);//结束
  }
  for(int num=0;num<sum-1;num++)
   fprintf(fp1,"%09ld %s %s %s %s %s %ld %d\n",user[num].bankcard,user[num].username,user[num].password,user[num].homeaddress,user[num].phone,user[num].idnumber,user[num].money,user[num].freeze);
  //将数据写入文件
  fclose(fp2);
  printf("\n恭喜你,销户成功。\n");
  system("pause");
  return;
}
void changepassword(long m)/修改密码///
{
 system("cls");
 int i=0,j=0,t=0,sum=1;
 int k;
 char word[20];
 FILE *fp1,*fp2;
 fp1=fopen("d:\\file1.txt","a+");
 if(!fp1)//打开失败
 {
  printf("file1.txt cannot open!\n");//输出打开错误
  exit(0);//结束
 }
 while(fscanf(fp1,"%ld  %s  %s %s  %s  %s  %ld  %d\n",&user[i].bankcard,user[i].username,user[i].password,user[i].homeaddress,user[i].phone,user[i].idnumber,&user[i].money,&user[i].freeze)!=EOF)
  //每次读取一行,读取出文件中所有的数据
 {
  i++; sum++;
 }
 for(j=0;j<sum-1;j++)
  if(user[j].bankcard==m)
   break;
  i=j;
  fclose(fp1);
  printf("\n请输入旧密码:");//密码验证
  for (int k1=0;k1<20;k1++) 
  {      
   word[k1] = getch();  /*逐次赋值,但不回显*/    
   if (word[k1]==' '||word[k1]==13)/*  则终止循环*/  
   {  
    word[k1]='\0';  
    break;
   }    
   printf("*");       /*以星号代替字符个数*/  
  }
  int len=strlen(word);
  for(k=0;k<len;k++)
   word[k]=word[k]^1010;
  //puts(word);
  if(strcmp(word,user[i].password)!=0)
  {
   printf("\n密码输入错误。\n");
   system("pause");
   return;
  }
  printf("\n请输入新密码:");
  for (j=0; j<20; j++) 
  {      
   user[m-1].password[j] = getch();  /*逐次赋值,但不回显*/    
   if (user[m-1].password[j]==' '||user[m-1].password[j]==13)/*  则终止循环*/  
   {  
    user[m-1].password[j]='\0';  
    break;
   }    
   printf("*");       /*以星号代替字符个数*/  
  }
  int len1=strlen(user[m-1].password);
  for(int k2=0;k2<len1;k2++)
   user[m-1].password[k2]=user[m-1].password[k2]^1010;
  fp2=fopen("d:\\file1.txt","w+");/再次写入
  if(!fp2)//打开失败
  {
   printf("file1.txt cannot open!\n");//输出打开错误
   exit(0);//结束
  }
  for(int num=0;num<sum-1;num++)
   fprintf(fp1,"%09ld %s %s %s %s %s %ld %d\n",user[num].bankcard,user[num].username,user[num].password,user[num].homeaddress,user[num].phone,user[num].idnumber,user[num].money,user[num].freeze);
  //将数据写入文件
  fclose(fp2);
  printf("\n恭喜你,修改密码成功。\n");
  system("pause");
  return;
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值