溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在C語(yǔ)言中利用數(shù)組和文件實(shí)現(xiàn)一個(gè)登錄注冊(cè)功能

發(fā)布時(shí)間:2020-12-28 13:54:19 來(lái)源:億速云 閱讀:393 作者:Leah 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)怎么在C語(yǔ)言中利用數(shù)組和文件實(shí)現(xiàn)一個(gè)登錄注冊(cè)功能,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

版本一:利用數(shù)組

最近有個(gè)朋友讓我?guī)退鲆粋€(gè)C語(yǔ)言的登錄注冊(cè)功能,考慮到他沒有學(xué)到數(shù)據(jù)庫(kù)于是想到了存入文件

此版本使用的數(shù)組,第二個(gè)版本使用的是鏈表,鏈表是一個(gè)很好的數(shù)據(jù)結(jié)構(gòu),推薦大家用鏈表

第二版:鏈接

話不多說(shuō)上代碼

#include <stdio.h>
#include <stdlib.h>

#define USER_MAX 20
//此系統(tǒng)能存放最多的用戶數(shù)

typedef struct
{
 char name[10];
 char password[10];
} User;
//定義一個(gè)存放用戶的結(jié)構(gòu)體

User list[USER_MAX];
//定義一個(gè)全局?jǐn)?shù)組,類型是User,大小是USER_MAX

char* filename = "user.txt";
//需要在你的程序目錄下新建一個(gè)user.txt文件


//登錄函數(shù)
User login()
{
 char name[10];
 char password[10];
 User lg;
 printf("enter name:");
 scanf("%s",name);
 strcpy(lg.name , name);
 printf("enter password:");
 scanf("%s",password);
 strcpy(lg.password,password);
 return lg;
}

//寫入txt文件,每一行存在一個(gè)用戶
void writeToFile(User u)
{
 FILE *fw = fopen(filename,"a+");
 fprintf(fw,u.name);
 fprintf(fw,"\t");
 fprintf(fw,u.password);
 fprintf(fw,"\n");
}

//判斷是否存在該用戶
int exist(User u)
{
 int i;
 for(i=0; i<USER_MAX; i++)
 {
 if(0==strcmp(list[i].name ,u.name) && 0==strcmp(list[i].password ,u.password))
 {
 return 1;
 }
 }
 return -1;
}

//注冊(cè)用戶
void registerUser()
{
 char name[10];
 char password[10];
 User user;
 int i;

 printf("enter your name:");
 scanf("%s",name);
 strcpy(user.name , name);

 //判斷注冊(cè)的用戶是否已存在
 for(i=0; i<USER_MAX; i++)
 {
 if(0==strcmp(list[i].name ,name))
 {
 printf("USER ALREADY EXIST");
 return;
 }
 }

 printf("enter your password:");
 scanf("%s",password);
 strcpy(user.password , password);
 writeToFile(user);
}

int menu()
{
 int choice;
 printf("1.login\n");
 printf("2.register\n");
 printf("#.exit\n");
 printf("enter your choice:");
 scanf("%d",&choice);
 return choice;
}




int main()
{
 User test[USER_MAX];
 FILE *fp = fopen(filename,"r");
 int i=0;
 User u;
 if(NULL == fp)
 {
 printf("FILE NOT FOUND");
 return -1;
 }
 for(i=0; i<USER_MAX; i++)
 {
 char uname[10];
 char upassword[10];
 fscanf(fp,"%s%s",uname,upassword);

 strcpy(list[i].name , uname);
 strcpy(list[i].password , upassword);
 }

 int choice = menu();
 if(1 == choice)
 {
 system("cls");
 u=login();
 if(1 == exist(u))
 {
 printf("success");
 }
 else
 {
 printf("WRONG USER OR PASS");
 }

 }
 else if(2 == choice)
 {
 system("cls");
 registerUser();
 }
 else
 {
 return 0;
 }


}

運(yùn)行結(jié)果

菜單,比較簡(jiǎn)陋,可以根據(jù)自己需求加?xùn)|西
PS我并未寫循環(huán)語(yǔ)句,只是簡(jiǎn)單實(shí)現(xiàn)功能,所以讀者可根據(jù)需求寫菜單的循環(huán)

怎么在C語(yǔ)言中利用數(shù)組和文件實(shí)現(xiàn)一個(gè)登錄注冊(cè)功能

注冊(cè)

怎么在C語(yǔ)言中利用數(shù)組和文件實(shí)現(xiàn)一個(gè)登錄注冊(cè)功能

看一下文件

怎么在C語(yǔ)言中利用數(shù)組和文件實(shí)現(xiàn)一個(gè)登錄注冊(cè)功能

登錄

怎么在C語(yǔ)言中利用數(shù)組和文件實(shí)現(xiàn)一個(gè)登錄注冊(cè)功能

異常路徑(登錄失敗)

怎么在C語(yǔ)言中利用數(shù)組和文件實(shí)現(xiàn)一個(gè)登錄注冊(cè)功能

關(guān)于怎么在C語(yǔ)言中利用數(shù)組和文件實(shí)現(xiàn)一個(gè)登錄注冊(cè)功能就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI