Escribir programas de registro e inicio de sesión en lenguaje C
Espero que te ayude
#include
#include
#include
#include
#define N 100
estructura de usuario
{
int user_id;
char nombre_usuario[19];//Máximo 18 dígitos
char contraseña[13];//Máximo 13 dígitos
char like [255];
char sign[255];
};
/*
* Verificar la longitud del nombre de usuario Legal p>
*/
int length_user_name(char *p)
{
int l;
l =strlen( p);
if(l>18||l<1)
{
devolver 0;
}
else
return l;
}
/*
* Determinar si el nombre de usuario es válido
p>
*/
int valid_user_name(char *p)
{
int i=0;
int len = strlen(p);
if((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z' )) //Determina si el primer carácter es una letra
{
for(i = 0; i < len; i++)
{
if(!(p[i] == '_' || (p[i] >= 'a' && p[i] <= 'z') || (p[i] >= 'A' && p[i] <='Z')
||(p[i] >='0' && p[i] <= '9'))) // Determine si los siguientes caracteres son válidos
devuelve 0;
}
devuelve 1;
}
else
return 0;
}
/*
* Determinar si el nombre de usuario es válido
* /
int is_username_valid(char *p)
{
if((*p >= 'a' && *p <= 'z') | (*p >= 'A ' && *p <='Z'))
{
p++;
mientras(*p) p>
{ p>
if(!(isalpha(*p) || *p == '_' || isdigit(*p)))
return 0;
p++ ;
}
devuelve 1;
}
más
> {
return 0;
}
}
/*
* Verificación de validez de la longitud de la contraseña
*/
int length_password(char *p)
{
int len;
len = strlen (p);
if(len<6||len>12)
{
return 0;
} p>
else
return len;
}
/*
* Verificación de validez de contraseña
*/
int is_password_valid(char *p)
{
int i=0;
for(; *p ! = '\0'; p++)
{
if(!( (*p >= 'a' && *p <= 'z') || ( *p > = 'A' && *p <='Z')
||(*p >='0' && *p <= '9'))) //Determina si el carácter es válido
devuelve 0;
}
devuelve 1;
}
int two_password_valid(char *p1, char *p2)
{
if(strcmp(p1,p2)==0)
devuelve 1;
else< / p>
return 0;
}
/*
* Función de registro completa
*/
int user_register(struct user *ptr_user,int size)
{
char contraseña[13];
char recontraseña[13]; p >
if(size==N)
{
puts("¡El número de registros está completo!");
return 0;
p>}
printf("Ingrese el nombre de registro:");
fflush(stdin);
gets(ptr_user [tamaño]. nombre_usuario);
if(!(length_user_name(ptr_user[size].user_name)&&valid_user_name(ptr_user[size].user_name)))
{
printf ("El nombre que ingresó no es válido, el nombre de usuario está entre 1 y 18, el primer carácter es una letra y el siguiente debe ser letras, números o guiones bajos!!!");
return 0;
}
printf("Ingrese la contraseña de registro:");
fflush(stdin);
gets(contraseña);
printf("Ingrese la contraseña de registro nuevamente:");
fflush(stdin);
gets(repassword);
if(!two_password_valid (contraseña,recontraseña))
{
printf("\n¡Las contraseñas ingresadas dos veces son inconsistentes!");
return 0;
}
else
{< / p>
strcpy(ptr_user[tamaño].contraseña,contraseña);
}
if(!(length_password(ptr_user[tamaño].contraseña)&&is_password_valid(ptr_user[ tamaño ].contraseña)))
{
printf("La contraseña que ingresó no es válida. La contraseña debe estar entre 6 y 12. ¡La contraseña solo puede contener letras y números! ! ");
return 0;
}
printf("Ingrese sus pasatiempos:");
fflush(stdin );
gets(ptr_user[size].like);
printf("Ingrese su firma personalizada:");
fflush(stdin) ;
gets(ptr_user[size].sign);
printf("Su número es: %d, esta será su cuenta de inicio de sesión.",ptr_user[size] .user_id= 1000size);
return 1;
}
/*
* Si el inicio de sesión es exitoso, devuelve el i- th +1 información del usuario; de lo contrario, devuelve 0
*/
int is_my_user(struct user *p,int size)
{
int i;
int zhanghu;
char mima[15];
printf("Ingrese su número de cuenta: ");
scanf("%d",&zhanghu);
fflush(stdin);
printf("Ingrese su contraseña: ");
obtiene(mima);
for(i=0;i { if((zhanghu == p[i ]. user_id)&&(strcmp(mima,p[i].contraseña)==0)) { return i + 1; } p> } devuelve 0 } void display_user(estructura usuario u) { p> printf("\nSu número de cuenta es: %d", u.user_id); printf("\nSu nombre registrado es: %s", u.user_name printf("\nTus aficiones: %s",u.like); printf("\nTu firma personalizada: %s",u.sign) ; } void update_password(struct user *ptr_user,int size) { char mima1[13],mima2[ 13]; int i = is_my_user(ptr_user,size); if(i) { i--; más { p> printf("\n¡La contraseña de la cuenta no existe!"); return; } printf("Por favor, ingrese una nueva contraseña : "); scanf("%s",mima1); printf("Por favor, ingrese la nueva contraseña nuevamente: "); scanf( "% s",mima2); if(two_password_valid(mima1,mima2) && length_password(mima1) && is_password_valid(mima1)) { strcpy (ptr_user [i].password,mima1);//Completa el intercambio de contraseñas nuevas y antiguas printf("\n¡Tu contraseña se ha cambiado correctamente!"); } else printf("\¡Error al modificar su contraseña!"); } //Mostrar menú int show_menu() { int elección; printf("\n1.Register"); printf ("\ n2.Iniciar sesión"); printf("\n3.Cambiar contraseña"); printf("\n4.Salir"); printf( "\nPor favor elija 1-4\n"); scanf("%d",&choice); devolver elección; } p> int main() { estructura usuario our_users[N]; int recuento = 0; int current_user; while(1) { switch(show_menu()) { caso 1: if(user_register(nuestros_usuarios,count)) { count++; printf("\nRegistro exitoso !"); } break; //Registrarse caso 2: si ( (usuario_actual = es_mi_usuario(nuestros_usuarios,cuenta))) { printf("\n¡Inicio de sesión exitoso!"); display_user(nuestros_usuarios[usuario_actual - 1]); } else printf("\n¡Error de inicio de sesión!"); break; //Iniciar sesión caso 3: update_password(our_users,count); break; //Modificar contraseña caso 4: salir(1); romper; //Salir predeterminado: printf("Por favor, ingresa correctamente"); > } } devuelve 0; }