Advertisement
Guest User

SDASDASDASDAS

a guest
Jun 25th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.77 KB | None | 0 0
  1. /// ESTE ES EL NUEVO
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. const int maxF=2;
  5. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  6. typedef struct
  7. {
  8. int id;
  9. char nombre[30];
  10. char domicilio[30];
  11. char localidad[30];
  12. int eliminado; /// Indica 1 o 0 si el cliente fue eliminado.
  13. } stCliente;
  14.  
  15. typedef struct
  16. {
  17. int id_cliente;
  18. char usuario[20];
  19. int pass[2][5];
  20. int eliminado; /// Indica 1 o 0 si el cliente fue eliminado.
  21. } stUsuario;
  22.  
  23. typedef struct
  24. {
  25. int id_Cliente;
  26. char usuario[20];
  27. char pass[10];
  28. } stUsuarioListado;
  29. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  30. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  31. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  32. int main()
  33. {
  34. system("color 0B");
  35. /// ESTOS SON LOS ARCHIVOS.
  36. char nombrearchivo[]= "Cliente.dat";
  37. char nombre2[]= "Usuarios.dat";
  38. char nombre3[]= "Listado.dat";
  39.  
  40.  
  41. /// VARIABLES
  42. int opcion=0;
  43. char pass[10];
  44. int matriz_testigo[2][2]= {2,3,-1,1};
  45. float matriz_inversa[2][2]= {0.2,-0.6,0.2,0.4};
  46. int contra[2][5];
  47. int contraEncriptada[2][5];
  48. float contraDesencriptada[2][5];
  49. int i=0;
  50. int cantidad;
  51. int cantUsuarios;
  52.  
  53.  
  54. /// MENU
  55. while(opcion!=5)
  56. {
  57. system("cls");
  58. gotoxy(1, 0);
  59. printf("____________________________________\n");
  60. gotoxy(1, 1);
  61. printf("|____________BIENVENIDO____________|\n");
  62. gotoxy(1, 2);
  63. printf("\n");
  64. printf(" 1)Registrarse\n");
  65. gotoxy(1, 4);
  66. printf("2)Iniciar sesion\n");
  67. gotoxy(1, 5);
  68. printf("3)Buscar cliente\n");
  69. gotoxy(1, 6);
  70. printf("4)Mostrar clientes\n");
  71. gotoxy(1, 7);
  72. printf("5)Salir\n");
  73. gotoxy(1, 8);
  74. scanf("%d", &opcion);
  75.  
  76. switch(opcion)
  77. {
  78. case 1:
  79. system("cls");
  80. printf("\t|____REGISTRO____|\n");
  81. printf("\n");
  82. registrar(nombrearchivo, nombre2);
  83. cantidad=cargarContrasenia(pass, nombre3);
  84. numeroAletra(pass);
  85. pasarAnumeros(pass,25,contra, cantidad);
  86. printf("Matriz contra:\n");
  87. mostrarMatriz(contra);
  88.  
  89. encriptar(matriz_testigo,contra,contraEncriptada, nombre2);
  90. mostrarGuardada(nombre2);
  91. printf("Matriz contraEncriptada:\n");
  92. mostrarMatrizEncriptada(contraEncriptada, nombre2);
  93.  
  94. desencriptar(matriz_inversa,contraEncriptada,contraDesencriptada);
  95. printf("Matriz contraDesencriptada:\n");
  96. mostrarMatrizDesencriptada(contraDesencriptada);
  97. system("pause");
  98. break;
  99. case 2:
  100. system("cls");
  101. login(nombrearchivo, nombre2, nombre3);
  102. //compararMatrices(nombre2, contraEncriptada);
  103. system("pause");
  104. break;
  105. case 3:
  106. system("cls");
  107. buscarUsuario(nombrearchivo, cantUsuarios);
  108. system("pause");
  109. break;
  110. case 4:
  111. system("cls");
  112. cantUsuarios=cuentaUsuarios(nombrearchivo);
  113. mostrarTodosLosUsuarios(nombrearchivo);
  114. system("pause");
  115. break;
  116. case 5:
  117. printf("Hasta luego!\n");
  118. break;
  119. }
  120. }
  121. return 0;
  122. }
  123.  
  124. /// FUNCIONES
  125. /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  126. /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  127. /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  128.  
  129. void registrar (char cliente[], char usuario[]) /// FUNCION PARA REGISTRARSE
  130. {
  131. stCliente c;
  132. stUsuario u;
  133.  
  134. /// ARCHIVO ES PARA CLIENTES | nombrearchivo | Cliente.dat
  135. /// ARCHI ES PARA USUARIOS | nombre2 | Usuario.dat
  136.  
  137. /// ACA SE REGISTRA PIDIENDO SUS DATOS PERSONALES
  138. FILE * archivo = fopen(cliente, "ab");
  139. if (archivo==NULL)
  140. {
  141. archivo = fopen(cliente, "wb");
  142. }
  143. if (archivo!=NULL)
  144. {
  145.  
  146. printf("Ingrese nombre:\n");
  147. fflush(stdin);
  148. gets(c.nombre);
  149. printf("\n");
  150.  
  151. printf("Ingrese su domicilio:\n");
  152. fflush(stdin);
  153. gets(c.domicilio);
  154. printf("\n");
  155.  
  156. printf("Ingrese su localidad:\n");
  157. fflush(stdin);
  158. gets(&c.localidad);
  159. printf("\n");
  160.  
  161. fseek(archivo, 0, SEEK_END);
  162. c.id=ftell(archivo)/sizeof(stCliente);
  163. printf("Su ID sera la numero: %d\n", c.id);
  164.  
  165. fwrite(&c, sizeof(stCliente), 1, archivo);
  166. }
  167. fclose(archivo);
  168.  
  169. /// ACA LE PIDE USUARIO
  170.  
  171. FILE * archi = fopen(usuario, "ab");
  172. if (archi==NULL)
  173. {
  174. archi = fopen(usuario, "wb");
  175. }
  176. if (archi!=NULL)
  177. {
  178. printf("Ingrese su nombre de usuario:\n");
  179. fflush(stdin);
  180. gets(u.usuario);
  181.  
  182. fseek(archi, 0, SEEK_END);
  183. u.id_cliente=ftell(archi)/sizeof(stUsuario);
  184. fwrite(&u, sizeof(stUsuario), 1, archi);
  185. }
  186. fclose(archi);
  187. }
  188. int numeroAletra(char letra[]) /// Se fija la posicion para saber cual es el numero correspondiente a la Letra
  189. {
  190. 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'};
  191. int i=0;
  192. while(i<=26)
  193. {
  194. if(letra==abc[i])
  195. {
  196. return i;
  197. }
  198. i++;
  199. }
  200. }
  201. void pasarAnumeros(char pass[],int cant_letras,int contra[][5], int cantidad) /// Ingresa el numero a la matriz
  202. {
  203. int j=0;
  204. int k=0;
  205. int i=0;
  206. for(k=0; k<5; k++)
  207. {
  208. for(j=0; j<2; j++)
  209. {
  210. if(i<cantidad)
  211. {
  212. contra[j][k]=numeroAletra(pass[i]);
  213. }
  214. else
  215. {
  216. contra[j][k]=0;
  217. }
  218. i++;
  219. }
  220. j=0;
  221. }
  222. }
  223.  
  224. int cargarContrasenia (char pass[], char listado[]) /// Aca se ingresa la contraseña
  225. {
  226. stUsuarioListado l;
  227. int cantidad=0;
  228. FILE * archivo = fopen(listado, "ab");
  229. if(archivo!=NULL)
  230. {
  231. printf("Ingrese su contrasenia:\n");
  232. gets(l.pass);
  233. strcpy(pass, l.pass);
  234. cantidad=strlen(pass);
  235. }
  236. fclose(archivo);
  237.  
  238. return cantidad;
  239. }
  240. void mostrarMatriz(int contra[][5]) /// Funcion auxiliar para mostrar la matriz contra antes de ser encriptada
  241. {
  242. int i=0;
  243. int j=0;
  244.  
  245. for (i=0; i<2; i++)
  246. {
  247. printf ("(");
  248. for (j=0; j<5; j++)
  249. {
  250. printf(" %d ", contra[i][j]);
  251. }
  252. printf(")\n");
  253. }
  254. }
  255. void encriptar(int matriz_testigo[][2], int contra[][5],int contraEncriptada[][5], char usuario[]) /// Matriz para hacer la matriz encriptada
  256. {
  257. stUsuario aux;
  258. FILE * archivo = fopen(usuario, "ab");
  259. if(archivo!=NULL)
  260. {
  261. ///-------------------------------------------(Primera fila)----------------------------------------///
  262. contraEncriptada[0][0]=(matriz_testigo[0][0]*contra[0][0])+(matriz_testigo[0][1]*contra[1][0]);
  263. contraEncriptada[0][1]=(matriz_testigo[0][0]*contra[0][1])+(matriz_testigo[0][1]*contra[1][1]);
  264. contraEncriptada[0][2]=(matriz_testigo[0][0]*contra[0][2])+(matriz_testigo[0][1]*contra[1][2]);
  265. contraEncriptada[0][3]=(matriz_testigo[0][0]*contra[0][3])+(matriz_testigo[0][1]*contra[1][3]);
  266. contraEncriptada[0][4]=(matriz_testigo[0][0]*contra[0][4])+(matriz_testigo[0][1]*contra[1][4]);
  267. ///-------------------------------------------(Segunda fila)----------------------------------------///
  268. contraEncriptada[1][0]=(matriz_testigo[1][0]*contra[0][0])+(matriz_testigo[1][1]*contra[1][0]);
  269. contraEncriptada[1][1]=(matriz_testigo[1][0]*contra[0][1])+(matriz_testigo[1][1]*contra[1][1]);
  270. contraEncriptada[1][2]=(matriz_testigo[1][0]*contra[0][2])+(matriz_testigo[1][1]*contra[1][2]);
  271. contraEncriptada[1][3]=(matriz_testigo[1][0]*contra[0][3])+(matriz_testigo[1][1]*contra[1][3]);
  272. contraEncriptada[1][4]=(matriz_testigo[1][0]*contra[0][4])+(matriz_testigo[1][1]*contra[1][4]);
  273.  
  274. ///-------------------------------------------(Primera fila)----------------------------------------///
  275. aux.pass[0][0]=(matriz_testigo[0][0]*contra[0][0])+(matriz_testigo[0][1]*contra[1][0]);
  276. aux.pass[0][1]=(matriz_testigo[0][0]*contra[0][1])+(matriz_testigo[0][1]*contra[1][1]);
  277. aux.pass[0][2]=(matriz_testigo[0][0]*contra[0][2])+(matriz_testigo[0][1]*contra[1][2]);
  278. aux.pass[0][3]=(matriz_testigo[0][0]*contra[0][3])+(matriz_testigo[0][1]*contra[1][3]);
  279. aux.pass[0][4]=(matriz_testigo[0][0]*contra[0][4])+(matriz_testigo[0][1]*contra[1][4]);
  280. ///-------------------------------------------(Segunda fila)----------------------------------------///
  281. aux.pass[1][0]=(matriz_testigo[1][0]*contra[0][0])+(matriz_testigo[1][1]*contra[1][0]);
  282. aux.pass[1][1]=(matriz_testigo[1][0]*contra[0][1])+(matriz_testigo[1][1]*contra[1][1]);
  283. aux.pass[1][2]=(matriz_testigo[1][0]*contra[0][2])+(matriz_testigo[1][1]*contra[1][2]);
  284. aux.pass[1][3]=(matriz_testigo[1][0]*contra[0][3])+(matriz_testigo[1][1]*contra[1][3]);
  285. aux.pass[1][4]=(matriz_testigo[1][0]*contra[0][4])+(matriz_testigo[1][1]*contra[1][4]);
  286.  
  287. fwrite(&aux, sizeof(stUsuario), 1, archivo);
  288. }
  289. fclose(archivo);
  290. }
  291. void mostrarGuardada (char usuario[]) /// Funcion auxiliar para mostrar si se guarda correctamente la matriz encriptada en el archivo
  292. {
  293. int i=0;
  294. int j=0;
  295. stUsuario u;
  296. FILE * archivo = fopen(usuario, "rb");
  297. printf("\nESTA ES LA CONTRASENIA EN EL ARCHIVO:\n");
  298. if(archivo!=NULL)
  299. {
  300. while(fread(&u, sizeof(stUsuario), 1, archivo)>0)
  301. {
  302. printf("\n----------------------\n");
  303. interfazGuardada(u);
  304. printf("\n----------------------\n");
  305. }
  306. }
  307. fclose(archivo);
  308. }
  309. void interfazGuardada(stUsuario u)
  310. {
  311. int i=0;
  312. int j=0;
  313. for(i=0; i<2; i++)
  314. {
  315. printf("(");
  316. for(j=0; j<5; j++)
  317. {
  318. printf(" %d ", u.pass[i][j]);
  319. }
  320. printf(")\n");
  321. }
  322. }
  323. void mostrarMatrizEncriptada(int contraEncriptada[][5]) /// funcion auxiliar. Muestra la contraseña encriptada, pero antes de guardarla en el archivo
  324. {
  325. int i=0;
  326. int j=0;
  327.  
  328. printf("CONTRASENIA SIN GUARDAR:\n");
  329. for (i=0; i<2; i++)
  330. {
  331. printf ("(");
  332. for (j=0; j<5; j++)
  333. {
  334. printf(" %d ", contraEncriptada[i][j]);
  335. }
  336. printf(")\n");
  337. }
  338.  
  339. }
  340. void desencriptar(float matriz_inversa[][2], int contraEncriptada[][5], float contraDesencriptada [][5])
  341. {
  342. ///-------------------------------------------------------------(Primera fila)----------------------------------------------------------///
  343. contraDesencriptada[0][0]=(matriz_inversa[0][0]*(float)contraEncriptada[0][0])+(matriz_inversa[0][1]*(float)contraEncriptada[1][0]);
  344. contraDesencriptada[0][1]=(matriz_inversa[0][0]*(float)contraEncriptada[0][1])+(matriz_inversa[0][1]*(float)contraEncriptada[1][1]);
  345. contraDesencriptada[0][2]=(matriz_inversa[0][0]*(float)contraEncriptada[0][2])+(matriz_inversa[0][1]*(float)contraEncriptada[1][2]);
  346. contraDesencriptada[0][3]=(matriz_inversa[0][0]*(float)contraEncriptada[0][3])+(matriz_inversa[0][1]*(float)contraEncriptada[1][3]);
  347. contraDesencriptada[0][4]=(matriz_inversa[0][0]*(float)contraEncriptada[0][4])+(matriz_inversa[0][1]*(float)contraEncriptada[1][4]);
  348. ///-------------------------------------------------------------(Segunda fila)----------------------------------------------------------///
  349. contraDesencriptada[1][0]=(matriz_inversa[1][0]*(float)contraEncriptada[0][0])+(matriz_inversa[1][1]*(float)contraEncriptada[1][0]);
  350. contraDesencriptada[1][1]=(matriz_inversa[1][0]*(float)contraEncriptada[0][1])+(matriz_inversa[1][1]*(float)contraEncriptada[1][1]);
  351. contraDesencriptada[1][2]=(matriz_inversa[1][0]*(float)contraEncriptada[0][2])+(matriz_inversa[1][1]*(float)contraEncriptada[1][2]);
  352. contraDesencriptada[1][3]=(matriz_inversa[1][0]*(float)contraEncriptada[0][3])+(matriz_inversa[1][1]*(float)contraEncriptada[1][3]);
  353. contraDesencriptada[1][4]=(matriz_inversa[1][0]*(float)contraEncriptada[0][4])+(matriz_inversa[1][1]*(float)contraEncriptada[1][4]);
  354. }
  355. void mostrarMatrizDesencriptada(float contraDesencriptada[][5]) /// Funcion auxiliar para mostrar la matriz desencriptada
  356. {
  357. int i=0;
  358. int j=0;
  359.  
  360. for (i=0; i<2; i++)
  361. {
  362. printf ("(");
  363. for (j=0; j<5; j++)
  364. {
  365. printf(" %0.f ", contraDesencriptada[i][j]);
  366. }
  367. printf(")\n");
  368. }
  369. }
  370. int cuentaUsuarios(char usuarios[]) /// Cuenta la cantidad de usuarios registrados y retorna la cantidad
  371. {
  372. int cantidad=0;
  373. stCliente c;
  374. FILE * archivo = fopen(usuarios, "rb");
  375. if(archivo!=NULL)
  376. {
  377. fseek(archivo, 0, SEEK_END);
  378. cantidad=ftell(archivo)/sizeof(stCliente);
  379. }
  380. fclose(archivo);
  381. printf("USUARIOS REGISTRADOS: %d\n", cantidad);
  382. return cantidad;
  383. }
  384. void buscarUsuario(char clientes[], int validos) /// Busca un usuario segun su ID
  385. {
  386. /// HAY QUE HACER ALGO ACA POR SI INGRESA UNA ID INVALIDA
  387. int id=0;
  388. int aux=0;
  389. stCliente c;
  390. FILE * archivo = fopen(clientes, "rb");
  391. if(archivo!=NULL)
  392. {
  393. while(aux==0)
  394. {
  395. printf("Ingrese la ID del usuario:\n");
  396. scanf("%d", &id);
  397. if(id>validos)
  398. {
  399. printf("ID invalido\n");
  400. }
  401. else if(id<validos)
  402. {
  403. aux=1;
  404. fseek(archivo, id * sizeof(stCliente), SEEK_SET);
  405. fread(&c, sizeof(stCliente), 1, archivo);
  406. interfazUsuarios(c);
  407. }
  408. }
  409.  
  410. }
  411.  
  412. fclose(archivo);
  413. }
  414. void mostrarTodosLosUsuarios(char clientes[])
  415. {
  416. printf("\n");
  417. stCliente c;
  418. FILE * archivo = fopen(clientes, "rb");
  419. if(archivo!=NULL)
  420. {
  421. while(fread(&c, sizeof(stCliente), 1, archivo)>0)
  422. {
  423. interfazUsuarios(c);
  424. }
  425. }
  426. fclose(archivo);
  427. }
  428. void interfazUsuarios(stCliente c) /// Interfaz para mostrar usuarios
  429. {
  430. printf("__________________________\n");
  431. printf(" Nombre: %s\n", c.nombre);
  432. printf(" Domicilio: %s\n", c.domicilio);
  433. printf(" Localidad: %s\n", c.localidad);
  434. printf(" ID: %d\n", c.id);
  435. printf("__________________________\n");
  436. }
  437. void compararMatrices(char usuario[], int contraEncriptada[][5])
  438. {
  439. int i=0;
  440. int j=0;
  441. int comp=0;
  442. stUsuario u;
  443. FILE * archivo = fopen(usuario, "rb");
  444. if(archivo!=NULL)
  445. {
  446. while(fread(&u, sizeof(stUsuario), 1, archivo)>0)
  447. {
  448. printf("--------------------------------\n");
  449. for(i=0; i<2; i++)
  450. {
  451. for(j=0; j<5; j++)
  452. {
  453. if(u.pass[i][j]==contraEncriptada[i][j])
  454. {
  455. comp=1;
  456. printf("Fila %d Columna %d: Igual\n", i, j);
  457. }
  458. else
  459. {
  460. comp=2;
  461. printf("Fila %d Columna %d: No igual\n", i);
  462. }
  463. }
  464. }
  465. }
  466. }
  467. fclose(archivo);
  468. }
  469. void login(char clientes[], char usuarios[], char listados[])
  470. {
  471. stCliente c;
  472. stUsuario u;
  473. stUsuarioListado l;
  474.  
  475. char userIngresado[20];
  476. int userRetornado=0;
  477.  
  478. char passIngresada[10];
  479. int passRetornada=0;
  480.  
  481. int retornoFinal=0;
  482.  
  483. FILE * archivo = fopen(clientes, "rb"); /// CLIENTES
  484. FILE * archi = fopen(usuarios, "rb"); /// USUARIOS
  485. FILE * archivito = fopen(listados, "rb"); /// LISTADOS
  486. if(archivo!=NULL && archi!=NULL && archivito!=NULL)
  487. {
  488. printf("Ingrese su usuario:\n");
  489. scanf("%s", userIngresado);
  490. while(fread(&u, sizeof(stUsuario), 1, archi)>0)
  491. {
  492. userRetornado=strcmp(userIngresado, u.usuario);
  493. if(userRetornado!=0)
  494. {
  495. printf("Usuario no encontrado\n");
  496. }
  497. }
  498. if(userRetornado==0)
  499. {
  500. printf("Ingrese su contrasenia:\n");
  501. gets(passIngresada);
  502. while(fread(&u, sizeof(stUsuario), 1, archi))
  503. {
  504. passRetornada=strcmp(passIngresada, l.pass);
  505. if(passRetornada!=0)
  506. {
  507. printf("Contrasenia incorrecta!\n");
  508. }
  509. }
  510. }
  511. }
  512. fclose(archivo);
  513. fclose(archi);
  514. fclose(archivito);
  515. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement