c/c++編程日記:純C實現登陸註冊和忘記密碼功能(附源碼)

這是一個用純C語言和文件操做實現的系統的登陸、註冊和忘記密碼功能。能夠用於c語言大做業的登陸系統。下面分享一下具體的代碼。編程


 

首先定義一個結構體來存放用戶的註冊信息,帳號密碼等。函數

typedefstructThe_users//typedef能夠定義結構體別名 { charid[11];//帳號 charpwd[20];//密碼 charname[15];//姓名爲字符串 charsex;//性別爲單個字符 longphone;//電話號碼爲長整型 }users;

而後寫一個函數用來建立儲存用戶帳號密碼的文件。

/*建立儲存用戶帳號密碼的文件*/ voidCreate_File() { FILE*fp; if((fp=fopen("users.txt","rb"))==NULL)/*若是此文件不存在*/ { if((fp=fopen("users.txt","wb+"))==NULL) { printf("沒法創建文件!\n"); exit(0); } } }

  

註冊:

將存放用戶的信息的結構體直接存入文件中,每次存入分配該結構體大小的空間,而後該用戶的信息就能夠按結構體總體來讀取。還加入了一些錯誤提示,若是輸入錯誤就提示從新輸入。學習

/*註冊帳號*/ voidregisters()//按結構體的大小,一次寫入或者讀入1個結構體大小 

{ usersa,b;//結構體The_users重命名定義 FILE*fp; chartemp[20]; intcount=0; printf("歡迎來到註冊界面!\n"); Sleep(1000); fp=fopen("users.txt","r"); fread(&b,sizeof(structThe_users),1,fp);

//讀入一個結構體字符塊到b printf("請輸入帳號\n"); scanf("%s",&a.id); while(1) { if(strcmp(a.id,b.id))

/*若是兩串不相等*/ { if(!feof(fp))/*若是未到文件尾*/ { fread(&b,sizeof(structThe_users),1,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,sizeof(structThe_users),1,fp); 

printf("帳號註冊成功,請登陸!\n"); Sleep(500); fclose(fp); return; }else{ printf("兩次密碼不匹配!請從新輸入!\n"); scanf("%s",&a.pwd); printf("請確認密碼\n"); scanf("%s",&temp); } }while(1); }

  

登陸:

先輸入帳號和密碼。而後按帳號從文件中讀取,若是帳號匹配就讀取密碼,若是密碼也匹配就登陸成功,不然從新輸入密碼。spa

/*登陸系統*/ voidInput_login() { usersa,b;//定義結構體The_users別名 FILE*fp; printf("歡迎來到登陸界面!\n"); Sleep(1000); fp=fopen("users.txt","r"); fread(&b,sizeof(structThe_users),1,fp);

//讀入一個結構體字符塊寫入b printf("請輸入帳號\n"); scanf("%s",&a.id); while(1) { if(strcmp(a.id,b.id)==0)//若是有此用戶名 { break; } else { if(!feof(fp))//若是文件沒有讀完 { fread(&b,sizeof(structThe_users),1,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); }

  

找回密碼:

根據輸入的帳號獲取該帳號的結構體信息,而後與其餘信息進行匹配,若是所有匹配成功,則顯示該帳號的密碼。code

/*找回密碼*/ voidreback()//按結構體的大小,一次寫入或者讀入1個結構體大小 { usersa,b;//結構體The_users重命名定義 FILE*fp; chartemp[20]; intcount=0; printf("歡迎來到找回密碼界面!\n"); 

Sleep(1000); fp=fopen("users.txt","r"); fread(&b,sizeof(structThe_users),1,fp);//讀入一個結構體字符塊寫入b printf("請輸入帳號\n"); 

scanf("%s",&a.id); while(1) { if(strcmp(a.id,b.id)==0)//若是有此用戶名 { break; } else { if(!feof(fp))//若是文件沒有讀完 { fread(&b,sizeof(structThe_users),1,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); }

 

另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這裏或許能夠幫到你~視頻

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)blog

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!教程

編程學習:字符串


 

編程學習:get

相關文章
相關標籤/搜索