1. 程式人生 > 程式設計 >C語言實現登入註冊和忘記密碼功能

C語言實現登入註冊和忘記密碼功能

這是一個用純C語言和檔案操作實現的系統的登入、註冊和忘記密碼功能。可以用於c語言大作業的登入系統。下面分享一下具體的程式碼。

首先定義一個結構體來存放使用者的註冊資訊,賬號密碼等。

typedef struct The_users  //typedef 可以定義結構體別名
{
  char id[11]; //賬號 
  char pwd[20]; //密碼 
  char name[15];//姓名為字串 
  char sex; //性別為單個字元
 long phone; //電話號碼為長整型 
}users;

然後寫一個函式用來建立儲存使用者賬號密碼的檔案。

/*建立儲存使用者賬號密碼的檔案*/ 
void Create_File()
{
  FILE *fp;
  if ((fp = fopen("users.txt","rb"))==NULL)         /*如果此檔案不存在*/
  {
    if ((fp = fopen("users.txt","wb+"))==NULL)
    {
      printf("無法建立檔案!\n");
      exit(0);
      
    }
  }
}

註冊:將存放使用者的資訊的結構體直接存入檔案中,每次存入分配該結構體大小的空間,然後該使用者的資訊就可以按結構體整體來讀取。還加入了一些錯誤提示,如果輸入錯誤就提示重新輸入。

/*註冊賬號*/ 
void registers() //按結構體的大小,一次寫入或者讀入1個結構體大小
   {  
     users a,b;//結構體 The_users 重新命名定義
     FILE *fp;
     char temp[20];
     int count = 0;
     printf("歡迎來到註冊介面!\n");
     Sleep(1000);
     fp = fopen("users.txt","r");
     
     fread(&b,sizeof(struct The_users),1,fp); //讀入一個結構體字元塊 到b
     printf("請輸入賬號\n");
     scanf("%s",&a.id);
     
     
     while (1)
     {  
       if (strcmp(a.id,b.id)) /*如果兩串不相等*/
       {
         if (!feof(fp))  /*如果未到檔案尾*/                
           
           
         {
           fread(&b,fp);
         }
         else
           break;
       }
       else

       {  
         printf("此使用者名稱已存在!請重新註冊!\n"); 
         Sleep(1000);
         fclose(fp);
         return;   
       }
     }
     printf("請輸入姓名:\n");
     scanf("%s",&a.name);
     printf("請輸入性別(f(女)/m(男)):\n");
     scanf(" %c",&a.sex);
     do{
     if(a.sex != 'f' && a.sex != 'm'){
   printf("性別輸入錯誤!請重新輸入!\n");
     scanf("%c",&a.sex);
  }
  }while(a.sex != 'f' && a.sex != 'm');
  getchar();
     printf("請輸入電話號碼:\n");
     scanf("%ld",&a.phone);
     printf("請輸入密碼\n");
     scanf(" %s",&a.pwd);
     printf("請確認密碼\n");
     scanf(" %s",&temp);
  do{
     if(!strcmp(a.pwd,temp)){
      fp = fopen("users.txt","a");
      fwrite(&a,fp);
      printf("賬號註冊成功,請登入!\n"); 
      Sleep(500);
      fclose(fp);
   return;
  }else{
   printf("兩次密碼不匹配!請重新輸入!\n");
      scanf("%s",&a.pwd);
      printf("請確認密碼\n");
      scanf("%s",&temp);
  }
  }while(1);
}

登入:先輸入賬號和密碼。然後按賬號從檔案中讀取,如果賬號匹配就讀取密碼,如果密碼也匹配就登入成功,否則重新輸入密碼。

/*登入系統*/ 
void Input_login()
{
  users a,b;//定義結構體The_users別名
  
  FILE *fp;
  printf("歡迎來到登入介面!\n");
     Sleep(1000);
  fp = fopen("users.txt","r");
  
  fread(&b,fp); //讀入一個結構體字元塊 寫入b
  printf("請輸入賬號\n");
  scanf("%s",&a.id);  
  
       while (1)
      {  
      if (strcmp(a.id,b.id)==0)     //如果有此使用者名稱
      {
        break;    
      }
      
      else 
      {
        if (!feof(fp)) //如果檔案沒有讀完              
       
        {
          fread(&b,fp);
        }
        
        else
        {
          printf("此使用者名稱不存在,請重新輸入!\n");
    Sleep(500); 
          fclose(fp); 
    return;       
        }
      }
    }
    printf("請輸入密碼\n");
    scanf("%s",&a.pwd); 
  do{  
    
 if (strcmp(a.pwd,b.pwd)==0)      /*如果密碼匹配*/
      
    { 
      fclose(fp);
      printf("登入成功,歡迎使用!");
      Sleep(500);
      return;
      }
    else 
    {  printf("密碼不正確!請重新輸入密碼\n");
     scanf("%s",&a.pwd);     
    }
 }while(strcmp(a.pwd,b.pwd)==0);
    
}

找回密碼:根據輸入的賬號獲取該賬號的結構體資訊,然後與其他資訊進行匹配,如果全部匹配成功,則顯示該賬號的密碼。

/*找回密碼*/
 
void reback() //按結構體的大小,一次寫入或者讀入1個結構體大小
   {  
     users a,b;//結構體 The_users 重新命名定義
     FILE *fp;
     char temp[20];
     int count = 0;
     printf("歡迎來到找回密碼介面!\n");
     Sleep(1000);
     fp = fopen("users.txt","r");
  
   fread(&b,fp); //讀入一個結構體字元塊 寫入b
   printf("請輸入賬號\n");
   scanf("%s",fp);
        }
        
        else
        {
          printf("此使用者名稱不存在,請重新輸入!\n");
    Sleep(500); 
          fclose(fp); 
    return;       
        }
      }
    }
     printf("請輸入姓名:\n");
     scanf("%s",&a.name);
     do{
     if(strcmp(a.name,b.name)){
   printf("姓名輸入錯誤!請重新輸入!\n");
     scanf("%s",&a.name);
  }
  }while(strcmp(a.name,b.name));
     printf("請輸入電話號碼:\n");
     scanf("%ld",&a.phone);
     do{
     if(a.phone != b.phone){
   printf("電話號碼輸入錯誤!請重新輸入!\n");
     scanf("%ld",&a.phone);
  }
  }while(a.phone != b.phone);
    printf("您的密碼是:%s",b.pwd);
    Sleep(3000);
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。