使用链表实现一个简单的登录系统

代码如下:

/*AUTOR:XIXI*/

#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct node{ char name[20]; //定义两个字符型数组 char pass[20]; struct node *next; }usernode; void init_user(usernode *h){ h=(usernode *)malloc(sizeof(usernode)); if(h==NULL) exit(0); h->next=NULL; } int get(usernode *h){ char A[20]; char B[20]; usernode *p; p=h->next; /* if(p){ printf("暂时没有用户! "); return 0; }*/ if(p!=NULL){ while(1){ printf("用户名:"); scanf("%s",A); //使用%s格式 // gets(A); printf("密码:"); scanf("%s",B); while(p!=NULL){ if(strcmp(p->name,A)==0&&strcmp(p->pass,B)==0){ return 1; } //使用strcpy函数进行字符串的比较 p=p->next; } printf("输入错误,请重新输入! "); } } else { printf("暂时没有用户! ") ; return 0; } } void insert(usernode *h){ char A[20]; char B[20]; usernode *p; p=(usernode *)malloc(sizeof(usernode)); printf("请设置用户名:"); // getchar(); scanf("%s",A); //使用scanf进行字符串的获取 // gets(A); strcpy(p->name,A); //使用strcpy函数对字符串进行赋值 printf("请设置密码:"); // getchar(); scanf("%s",B); strcpy(p->pass,B); p->next=h->next; h->next=p; printf("注册成功! "); } int main(int argc,char* argv[]){ printf(" *******登入界面****** "); printf(" * 1.登入 * "); printf(" * 2.注册 * "); printf(" ********************* "); usernode *user; init_user(user); int chance; int a; while(1){ printf("请输入您的选择:"); scanf("%d",&chance); if(chance==1){ a=get(user); if(a==1){ printf("登入成功! "); break; } if(a==0) printf("请先注册用户! "); } else if(chance==2){ insert(user); } else { printf("没有此功能,请重新选择! "); } } }

功能如下所示:

[ouyangxi@DESKTOP-QNJ4U2U flight]$ ./a.out
                *******登入界面******
                *       1.登入      *
                *       2.注册      *
                *********************
请输入您的选择:2
请设置用户名:oyx
请设置密码:oyx
注册成功!
请输入您的选择:2
请设置用户名:oyx1
请设置密码:oyx1
注册成功!
请输入您的选择:1
用户名:oyx
密码:oyx
登入成功!

此代码较简单就没有模块化,请读者自行领悟。

正是步行者,一步步登峰!

原文地址:https://www.cnblogs.com/ouyangmail/p/12772083.html