注册登录系统2.0

延续上个系统的升级,相较1.0 版本,2.0 程序语句更简练。

  1 #include<stdio.h>
  2  #include<stdlib.h>
  3  #include<string.h>
  4  struct sj   //构造账号,密码
  5  {
  6      char zh[20];
  7      char mm[20];
  8  };
  9  typedef struct sj sj ;
 10  sj k={' '};  
 11  void menu ()    // 开始菜单
 12  {
 13      printf("请选择:\n");
 14      printf("-----0. 退出-----\n");
 15      printf("-----1. 登录-----\n");
 16      printf("-----2. 注册-----\n");
 17   }
 18  int denglu ()   // 登录
 19  {
 20      FILE *p;
 21      int i =0;
 22      int j =0;
 23      int d;
 24      int t=0;
 25      int q=0;
 26      sj  g;
 27      p=fopen ("D:\\shuju.dat","rb");    //打开文件
 28      fread(&g,sizeof(k),1,p);
 29      while((strcmp(k.zh,g.zh)!=0 || strcmp(k.mm,g.mm)!= 0) &&  fread(&g,sizeof(k),1,p) == 1)
 30      {
 31        fread(&g,sizeof(k),1,p);
 32      }
 33      if (strcmp(k.zh,g.zh)==0 && strcmp(k.mm,g.mm)== 0 )     
 34      {
 35          printf("登录成功!!!\n");
 36          fclose(p);
 37          system("pause");
 38          return 0;
 39      }
 40      fclose(p);
 41      printf ("账号或密码错误,请选择:\n 1. 重新输入 \n 2. 注册 \n 0. 退出系统 \n"); // 验证失败
 42      scanf ("%d", &d);
 43      switch (d)
 44     {
 45      case 1: 
 46            return 1 ; 
 47            break ;
 48      case 2:
 49            
 50            return 2;
 51            break ;
 52      case 0:
 53            exit (1);
 54            break ;
 55      }    
 56      return 0;
 57  }
 58  int zhuce ( )
 59  {
 60      FILE *p;
 61      sj k;
 62      printf("请输入注册账号以及密码\n账号:"); // 输入注册信息
 63      scanf("%s",k.zh );
 64      printf("密码:");
 65      scanf("%s",k.mm );
 66      p = fopen ("D:\\shuju.dat","ab");  //打开文件
 67      if (p== NULL)                        // 验证文件打开是否成功
 68      {
 69          printf("source text file error \n");
 70          exit (1);
 71      }
 72      fwrite(&k,sizeof(k),1,p);    // 写入文件
 73      fclose (p);      // 关闭文件
 74      printf ("注册成功!!");
 75      return 0 ;
 76  }
 77  int main ()
 78  {
 79      menu ();  // 显示菜单
 80      int c;
 81      int a;
 82      char h;
 83      FILE *p;
 84      sj g;
 85      p = fopen ("D:\\shuju.dat","ab");
 86      fclose(p);
 87      scanf ("%d",&c);
 88      switch (c)  //选择
 89      {
 90      case 1 :
 91              begin:printf("请输入账号密码\n账号:"); //登录
 92              scanf("%s",k.zh );
 93              printf("密码:");
 94              scanf("%s",k.mm );
 95              a = denglu ();
 96              if (a == 1 )   // 密码错误
 97              {
 98                  goto begin ;
 99              }
100              else if (a == 2) //注册
101              {
102                  zhuce ();
103                  goto begin ;
104              }
105              break;
106      case 2 :
107              zhuce  ();  // 注册
108              printf("请登录\n");
109              goto begin ;
110              break;
111      case 0 :exit(1); // 退出系统
112              break;
113      }
114  return 0;
115  }

更新思路:

这次的存储采用二进制文件,

登录方面采用结构体整体比较的方式,省略了大部分的繁琐代码。

猜你喜欢

转载自www.cnblogs.com/btimepes/p/11651361.html
今日推荐