Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// ESTE ES EL NUEVO
- #include <stdio.h>
- #include <stdlib.h>
- const int maxF=2;
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- typedef struct
- {
- int id;
- char nombre[30];
- char domicilio[30];
- char localidad[30];
- int eliminado; /// Indica 1 o 0 si el cliente fue eliminado.
- } stCliente;
- typedef struct
- {
- int id_cliente;
- char usuario[20];
- int pass[2][5];
- int eliminado; /// Indica 1 o 0 si el cliente fue eliminado.
- } stUsuario;
- typedef struct
- {
- int id_Cliente;
- char usuario[20];
- char pass[10];
- } stUsuarioListado;
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- int main()
- {
- system("color 0B");
- /// ESTOS SON LOS ARCHIVOS.
- char nombrearchivo[]= "Cliente.dat";
- char nombre2[]= "Usuarios.dat";
- char nombre3[]= "Listado.dat";
- /// VARIABLES
- int opcion=0;
- char pass[10];
- int matriz_testigo[2][2]= {2,3,-1,1};
- float matriz_inversa[2][2]= {0.2,-0.6,0.2,0.4};
- int contra[2][5];
- int contraEncriptada[2][5];
- float contraDesencriptada[2][5];
- int i=0;
- int cantidad;
- int cantUsuarios;
- /// MENU
- while(opcion!=5)
- {
- system("cls");
- gotoxy(1, 0);
- printf("____________________________________\n");
- gotoxy(1, 1);
- printf("|____________BIENVENIDO____________|\n");
- gotoxy(1, 2);
- printf("\n");
- printf(" 1)Registrarse\n");
- gotoxy(1, 4);
- printf("2)Iniciar sesion\n");
- gotoxy(1, 5);
- printf("3)Buscar cliente\n");
- gotoxy(1, 6);
- printf("4)Mostrar clientes\n");
- gotoxy(1, 7);
- printf("5)Salir\n");
- gotoxy(1, 8);
- scanf("%d", &opcion);
- switch(opcion)
- {
- case 1:
- system("cls");
- printf("\t|____REGISTRO____|\n");
- printf("\n");
- registrar(nombrearchivo, nombre2);
- cantidad=cargarContrasenia(pass, nombre3);
- numeroAletra(pass);
- pasarAnumeros(pass,25,contra, cantidad);
- printf("Matriz contra:\n");
- mostrarMatriz(contra);
- encriptar(matriz_testigo,contra,contraEncriptada, nombre2);
- mostrarGuardada(nombre2);
- printf("Matriz contraEncriptada:\n");
- mostrarMatrizEncriptada(contraEncriptada, nombre2);
- desencriptar(matriz_inversa,contraEncriptada,contraDesencriptada);
- printf("Matriz contraDesencriptada:\n");
- mostrarMatrizDesencriptada(contraDesencriptada);
- system("pause");
- break;
- case 2:
- system("cls");
- login(nombrearchivo, nombre2, nombre3);
- //compararMatrices(nombre2, contraEncriptada);
- system("pause");
- break;
- case 3:
- system("cls");
- buscarUsuario(nombrearchivo, cantUsuarios);
- system("pause");
- break;
- case 4:
- system("cls");
- cantUsuarios=cuentaUsuarios(nombrearchivo);
- mostrarTodosLosUsuarios(nombrearchivo);
- system("pause");
- break;
- case 5:
- printf("Hasta luego!\n");
- break;
- }
- }
- return 0;
- }
- /// FUNCIONES
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////
- void registrar (char cliente[], char usuario[]) /// FUNCION PARA REGISTRARSE
- {
- stCliente c;
- stUsuario u;
- /// ARCHIVO ES PARA CLIENTES | nombrearchivo | Cliente.dat
- /// ARCHI ES PARA USUARIOS | nombre2 | Usuario.dat
- /// ACA SE REGISTRA PIDIENDO SUS DATOS PERSONALES
- FILE * archivo = fopen(cliente, "ab");
- if (archivo==NULL)
- {
- archivo = fopen(cliente, "wb");
- }
- if (archivo!=NULL)
- {
- printf("Ingrese nombre:\n");
- fflush(stdin);
- gets(c.nombre);
- printf("\n");
- printf("Ingrese su domicilio:\n");
- fflush(stdin);
- gets(c.domicilio);
- printf("\n");
- printf("Ingrese su localidad:\n");
- fflush(stdin);
- gets(&c.localidad);
- printf("\n");
- fseek(archivo, 0, SEEK_END);
- c.id=ftell(archivo)/sizeof(stCliente);
- printf("Su ID sera la numero: %d\n", c.id);
- fwrite(&c, sizeof(stCliente), 1, archivo);
- }
- fclose(archivo);
- /// ACA LE PIDE USUARIO
- FILE * archi = fopen(usuario, "ab");
- if (archi==NULL)
- {
- archi = fopen(usuario, "wb");
- }
- if (archi!=NULL)
- {
- printf("Ingrese su nombre de usuario:\n");
- fflush(stdin);
- gets(u.usuario);
- fseek(archi, 0, SEEK_END);
- u.id_cliente=ftell(archi)/sizeof(stUsuario);
- fwrite(&u, sizeof(stUsuario), 1, archi);
- }
- fclose(archi);
- }
- int numeroAletra(char letra[]) /// Se fija la posicion para saber cual es el numero correspondiente a la Letra
- {
- char abc[]= {' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
- int i=0;
- while(i<=26)
- {
- if(letra==abc[i])
- {
- return i;
- }
- i++;
- }
- }
- void pasarAnumeros(char pass[],int cant_letras,int contra[][5], int cantidad) /// Ingresa el numero a la matriz
- {
- int j=0;
- int k=0;
- int i=0;
- for(k=0; k<5; k++)
- {
- for(j=0; j<2; j++)
- {
- if(i<cantidad)
- {
- contra[j][k]=numeroAletra(pass[i]);
- }
- else
- {
- contra[j][k]=0;
- }
- i++;
- }
- j=0;
- }
- }
- int cargarContrasenia (char pass[], char listado[]) /// Aca se ingresa la contraseña
- {
- stUsuarioListado l;
- int cantidad=0;
- FILE * archivo = fopen(listado, "ab");
- if(archivo!=NULL)
- {
- printf("Ingrese su contrasenia:\n");
- gets(l.pass);
- strcpy(pass, l.pass);
- cantidad=strlen(pass);
- }
- fclose(archivo);
- return cantidad;
- }
- void mostrarMatriz(int contra[][5]) /// Funcion auxiliar para mostrar la matriz contra antes de ser encriptada
- {
- int i=0;
- int j=0;
- for (i=0; i<2; i++)
- {
- printf ("(");
- for (j=0; j<5; j++)
- {
- printf(" %d ", contra[i][j]);
- }
- printf(")\n");
- }
- }
- void encriptar(int matriz_testigo[][2], int contra[][5],int contraEncriptada[][5], char usuario[]) /// Matriz para hacer la matriz encriptada
- {
- stUsuario aux;
- FILE * archivo = fopen(usuario, "ab");
- if(archivo!=NULL)
- {
- ///-------------------------------------------(Primera fila)----------------------------------------///
- contraEncriptada[0][0]=(matriz_testigo[0][0]*contra[0][0])+(matriz_testigo[0][1]*contra[1][0]);
- contraEncriptada[0][1]=(matriz_testigo[0][0]*contra[0][1])+(matriz_testigo[0][1]*contra[1][1]);
- contraEncriptada[0][2]=(matriz_testigo[0][0]*contra[0][2])+(matriz_testigo[0][1]*contra[1][2]);
- contraEncriptada[0][3]=(matriz_testigo[0][0]*contra[0][3])+(matriz_testigo[0][1]*contra[1][3]);
- contraEncriptada[0][4]=(matriz_testigo[0][0]*contra[0][4])+(matriz_testigo[0][1]*contra[1][4]);
- ///-------------------------------------------(Segunda fila)----------------------------------------///
- contraEncriptada[1][0]=(matriz_testigo[1][0]*contra[0][0])+(matriz_testigo[1][1]*contra[1][0]);
- contraEncriptada[1][1]=(matriz_testigo[1][0]*contra[0][1])+(matriz_testigo[1][1]*contra[1][1]);
- contraEncriptada[1][2]=(matriz_testigo[1][0]*contra[0][2])+(matriz_testigo[1][1]*contra[1][2]);
- contraEncriptada[1][3]=(matriz_testigo[1][0]*contra[0][3])+(matriz_testigo[1][1]*contra[1][3]);
- contraEncriptada[1][4]=(matriz_testigo[1][0]*contra[0][4])+(matriz_testigo[1][1]*contra[1][4]);
- ///-------------------------------------------(Primera fila)----------------------------------------///
- aux.pass[0][0]=(matriz_testigo[0][0]*contra[0][0])+(matriz_testigo[0][1]*contra[1][0]);
- aux.pass[0][1]=(matriz_testigo[0][0]*contra[0][1])+(matriz_testigo[0][1]*contra[1][1]);
- aux.pass[0][2]=(matriz_testigo[0][0]*contra[0][2])+(matriz_testigo[0][1]*contra[1][2]);
- aux.pass[0][3]=(matriz_testigo[0][0]*contra[0][3])+(matriz_testigo[0][1]*contra[1][3]);
- aux.pass[0][4]=(matriz_testigo[0][0]*contra[0][4])+(matriz_testigo[0][1]*contra[1][4]);
- ///-------------------------------------------(Segunda fila)----------------------------------------///
- aux.pass[1][0]=(matriz_testigo[1][0]*contra[0][0])+(matriz_testigo[1][1]*contra[1][0]);
- aux.pass[1][1]=(matriz_testigo[1][0]*contra[0][1])+(matriz_testigo[1][1]*contra[1][1]);
- aux.pass[1][2]=(matriz_testigo[1][0]*contra[0][2])+(matriz_testigo[1][1]*contra[1][2]);
- aux.pass[1][3]=(matriz_testigo[1][0]*contra[0][3])+(matriz_testigo[1][1]*contra[1][3]);
- aux.pass[1][4]=(matriz_testigo[1][0]*contra[0][4])+(matriz_testigo[1][1]*contra[1][4]);
- fwrite(&aux, sizeof(stUsuario), 1, archivo);
- }
- fclose(archivo);
- }
- void mostrarGuardada (char usuario[]) /// Funcion auxiliar para mostrar si se guarda correctamente la matriz encriptada en el archivo
- {
- int i=0;
- int j=0;
- stUsuario u;
- FILE * archivo = fopen(usuario, "rb");
- printf("\nESTA ES LA CONTRASENIA EN EL ARCHIVO:\n");
- if(archivo!=NULL)
- {
- while(fread(&u, sizeof(stUsuario), 1, archivo)>0)
- {
- printf("\n----------------------\n");
- interfazGuardada(u);
- printf("\n----------------------\n");
- }
- }
- fclose(archivo);
- }
- void interfazGuardada(stUsuario u)
- {
- int i=0;
- int j=0;
- for(i=0; i<2; i++)
- {
- printf("(");
- for(j=0; j<5; j++)
- {
- printf(" %d ", u.pass[i][j]);
- }
- printf(")\n");
- }
- }
- void mostrarMatrizEncriptada(int contraEncriptada[][5]) /// funcion auxiliar. Muestra la contraseña encriptada, pero antes de guardarla en el archivo
- {
- int i=0;
- int j=0;
- printf("CONTRASENIA SIN GUARDAR:\n");
- for (i=0; i<2; i++)
- {
- printf ("(");
- for (j=0; j<5; j++)
- {
- printf(" %d ", contraEncriptada[i][j]);
- }
- printf(")\n");
- }
- }
- void desencriptar(float matriz_inversa[][2], int contraEncriptada[][5], float contraDesencriptada [][5])
- {
- ///-------------------------------------------------------------(Primera fila)----------------------------------------------------------///
- contraDesencriptada[0][0]=(matriz_inversa[0][0]*(float)contraEncriptada[0][0])+(matriz_inversa[0][1]*(float)contraEncriptada[1][0]);
- contraDesencriptada[0][1]=(matriz_inversa[0][0]*(float)contraEncriptada[0][1])+(matriz_inversa[0][1]*(float)contraEncriptada[1][1]);
- contraDesencriptada[0][2]=(matriz_inversa[0][0]*(float)contraEncriptada[0][2])+(matriz_inversa[0][1]*(float)contraEncriptada[1][2]);
- contraDesencriptada[0][3]=(matriz_inversa[0][0]*(float)contraEncriptada[0][3])+(matriz_inversa[0][1]*(float)contraEncriptada[1][3]);
- contraDesencriptada[0][4]=(matriz_inversa[0][0]*(float)contraEncriptada[0][4])+(matriz_inversa[0][1]*(float)contraEncriptada[1][4]);
- ///-------------------------------------------------------------(Segunda fila)----------------------------------------------------------///
- contraDesencriptada[1][0]=(matriz_inversa[1][0]*(float)contraEncriptada[0][0])+(matriz_inversa[1][1]*(float)contraEncriptada[1][0]);
- contraDesencriptada[1][1]=(matriz_inversa[1][0]*(float)contraEncriptada[0][1])+(matriz_inversa[1][1]*(float)contraEncriptada[1][1]);
- contraDesencriptada[1][2]=(matriz_inversa[1][0]*(float)contraEncriptada[0][2])+(matriz_inversa[1][1]*(float)contraEncriptada[1][2]);
- contraDesencriptada[1][3]=(matriz_inversa[1][0]*(float)contraEncriptada[0][3])+(matriz_inversa[1][1]*(float)contraEncriptada[1][3]);
- contraDesencriptada[1][4]=(matriz_inversa[1][0]*(float)contraEncriptada[0][4])+(matriz_inversa[1][1]*(float)contraEncriptada[1][4]);
- }
- void mostrarMatrizDesencriptada(float contraDesencriptada[][5]) /// Funcion auxiliar para mostrar la matriz desencriptada
- {
- int i=0;
- int j=0;
- for (i=0; i<2; i++)
- {
- printf ("(");
- for (j=0; j<5; j++)
- {
- printf(" %0.f ", contraDesencriptada[i][j]);
- }
- printf(")\n");
- }
- }
- int cuentaUsuarios(char usuarios[]) /// Cuenta la cantidad de usuarios registrados y retorna la cantidad
- {
- int cantidad=0;
- stCliente c;
- FILE * archivo = fopen(usuarios, "rb");
- if(archivo!=NULL)
- {
- fseek(archivo, 0, SEEK_END);
- cantidad=ftell(archivo)/sizeof(stCliente);
- }
- fclose(archivo);
- printf("USUARIOS REGISTRADOS: %d\n", cantidad);
- return cantidad;
- }
- void buscarUsuario(char clientes[], int validos) /// Busca un usuario segun su ID
- {
- /// HAY QUE HACER ALGO ACA POR SI INGRESA UNA ID INVALIDA
- int id=0;
- int aux=0;
- stCliente c;
- FILE * archivo = fopen(clientes, "rb");
- if(archivo!=NULL)
- {
- while(aux==0)
- {
- printf("Ingrese la ID del usuario:\n");
- scanf("%d", &id);
- if(id>validos)
- {
- printf("ID invalido\n");
- }
- else if(id<validos)
- {
- aux=1;
- fseek(archivo, id * sizeof(stCliente), SEEK_SET);
- fread(&c, sizeof(stCliente), 1, archivo);
- interfazUsuarios(c);
- }
- }
- }
- fclose(archivo);
- }
- void mostrarTodosLosUsuarios(char clientes[])
- {
- printf("\n");
- stCliente c;
- FILE * archivo = fopen(clientes, "rb");
- if(archivo!=NULL)
- {
- while(fread(&c, sizeof(stCliente), 1, archivo)>0)
- {
- interfazUsuarios(c);
- }
- }
- fclose(archivo);
- }
- void interfazUsuarios(stCliente c) /// Interfaz para mostrar usuarios
- {
- printf("__________________________\n");
- printf(" Nombre: %s\n", c.nombre);
- printf(" Domicilio: %s\n", c.domicilio);
- printf(" Localidad: %s\n", c.localidad);
- printf(" ID: %d\n", c.id);
- printf("__________________________\n");
- }
- void compararMatrices(char usuario[], int contraEncriptada[][5])
- {
- int i=0;
- int j=0;
- int comp=0;
- stUsuario u;
- FILE * archivo = fopen(usuario, "rb");
- if(archivo!=NULL)
- {
- while(fread(&u, sizeof(stUsuario), 1, archivo)>0)
- {
- printf("--------------------------------\n");
- for(i=0; i<2; i++)
- {
- for(j=0; j<5; j++)
- {
- if(u.pass[i][j]==contraEncriptada[i][j])
- {
- comp=1;
- printf("Fila %d Columna %d: Igual\n", i, j);
- }
- else
- {
- comp=2;
- printf("Fila %d Columna %d: No igual\n", i);
- }
- }
- }
- }
- }
- fclose(archivo);
- }
- void login(char clientes[], char usuarios[], char listados[])
- {
- stCliente c;
- stUsuario u;
- stUsuarioListado l;
- char userIngresado[20];
- int userRetornado=0;
- char passIngresada[10];
- int passRetornada=0;
- int retornoFinal=0;
- FILE * archivo = fopen(clientes, "rb"); /// CLIENTES
- FILE * archi = fopen(usuarios, "rb"); /// USUARIOS
- FILE * archivito = fopen(listados, "rb"); /// LISTADOS
- if(archivo!=NULL && archi!=NULL && archivito!=NULL)
- {
- printf("Ingrese su usuario:\n");
- scanf("%s", userIngresado);
- while(fread(&u, sizeof(stUsuario), 1, archi)>0)
- {
- userRetornado=strcmp(userIngresado, u.usuario);
- if(userRetornado!=0)
- {
- printf("Usuario no encontrado\n");
- }
- }
- if(userRetornado==0)
- {
- printf("Ingrese su contrasenia:\n");
- gets(passIngresada);
- while(fread(&u, sizeof(stUsuario), 1, archi))
- {
- passRetornada=strcmp(passIngresada, l.pass);
- if(passRetornada!=0)
- {
- printf("Contrasenia incorrecta!\n");
- }
- }
- }
- }
- fclose(archivo);
- fclose(archi);
- fclose(archivito);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement