elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda URGENTE con este programa en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda URGENTE con este programa en C  (Leído 1,491 veces)
mari2diaz

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Ayuda URGENTE con este programa en C
« en: 22 Octubre 2018, 01:13 am »

Tengo problemas con estas  dos funciones void RegistrarUsuario(); void InicioSesion(); la registrar usuario me guarda el primer usuario cuando se crea al archivo pero luego me dice email registrado con todos los demás que intento guardar y inicio sesión después de introducir email y contraseña dice programa dejo de funcionar

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<windows.h>
  5.  
  6. #define MAX 50
  7.  
  8. char Linea[MAX];
  9.  
  10. /* ----------------------
  11.   | Definir Estructuras |
  12.   ----------------------*/
  13.  
  14. // Usuario
  15. typedef struct Billetera{
  16. char moneda[MAX];
  17. float saldo;
  18. }Monedas;
  19.  
  20. typedef struct Datos{
  21. char nombre[MAX];
  22. char apellido[MAX];
  23. char telefono[MAX];
  24. char pais[MAX];
  25. }DatosPersonales;
  26.  
  27. typedef struct PerfilUsuario{
  28. char e_mail[MAX];
  29. char pasword[MAX];
  30. DatosPersonales p;
  31. Monedas m;
  32. }Usuario;
  33. // Administrador
  34. typedef struct CompraVenta{
  35. char moneda[MAX];
  36. float precioD;
  37. float precioE;
  38. float precioBS;
  39. float compra;
  40. float venta;
  41. }Moneda;
  42.  
  43. typedef struct PerfilAdministrador{
  44. Moneda monedas;
  45. }Administrador;
  46.  
  47. int MostrarMenu_BilleteraVirtual();
  48. int MostrarMenu_InicioSesion();
  49. int LeerCadena(char *cadena, int n);
  50. int ConfirmarEmail(char email[], Usuario *usuario);
  51.  
  52. void InicioSesion();
  53. void RegistrarUsuario();
  54. void GuardarCuentaUsuario(Usuario *usuario);
  55.  
  56. void MenuPrincipal();
  57. void MenuInicioSesion();
  58. void FinalizarPrograma();
  59.  
  60.  
  61. int main(){
  62.  
  63. switch(MostrarMenu_BilleteraVirtual()){
  64. case 1:
  65. system("cls");
  66. InicioSesion();
  67. system("cls");
  68. break;
  69. case 2:
  70. system("cls");
  71. RegistrarUsuario();
  72.    break;
  73. case 3:
  74.    break;
  75. case 4:
  76.    FinalizarPrograma();
  77.    break;
  78. default:
  79.    system("cls");
  80.    printf("\n\t\t ===================");
  81.    printf("\n\t\t| Opcion incorrecta |");
  82.    printf("\n\t\t ===================");
  83.    MenuPrincipal();
  84.    main();
  85. }
  86.  
  87. return 0;
  88. }
  89.  
  90. int MostrarMenu_BilleteraVirtual(){
  91. int opcion = 0;
  92. printf("\n\t\t\t\t ===================");
  93. printf("\n\t\t\t\t| Billetera Virtual |");
  94. printf("\n\t\t\t\t ===================\n\n");
  95.  
  96. printf("\t\t[1] Ingresar como Usuario\n");
  97. printf("\t\t[2] Registrarse\n");
  98. printf("\t\t[3] Ingresar como Administrador\n");
  99. printf("\t\t[4] Salir del Programa\n");
  100.  
  101. printf("\n\t\tDigite su opcion: [ ]\b\b");
  102. LeerCadena(Linea, MAX);
  103. sscanf(Linea, "%d", &opcion);
  104. return opcion;
  105. }
  106.  
  107. int MostrarMenu_InicioSesion(){
  108. int opcion = 0;
  109.  
  110. printf("\t\t[1] Perfil de Usuario\n");
  111. printf("\t\t[2] Su Billetera\n");
  112. printf("\t\t[3] Comprar Criptomonedas\n");
  113. printf("\t\t[4] Vender Criptomonedas\n");
  114. printf("\t\t[5] Cerrar Sesion\n");
  115.  
  116. printf("\n\t\tDigite su opcion: [ ]\b\b");
  117. LeerCadena(Linea, MAX);
  118. sscanf(Linea, "%d", &opcion);
  119. return opcion;
  120. }
  121.  
  122. void RegistrarUsuario(){
  123. Usuario usuario;
  124. printf("\n\t\t\t\t ================");
  125. printf("\n\t\t\t\t| Cree su Cuenta |");
  126. printf("\n\t\t\t\t ================\n\n");
  127.    printf("\t\tNombre de pila: ");
  128. LeerCadena(usuario.p.nombre, MAX);
  129. printf("\t\tApellido: ");
  130. LeerCadena(usuario.p.nombre, MAX);
  131. printf("\n\t\tCorreo elctronico: ");
  132. LeerCadena(usuario.e_mail, MAX);
  133. printf("\t\tElegir una contasena: ");
  134. LeerCadena(usuario.pasword, MAX);
  135.  
  136. if(ConfirmarEmail(usuario.e_mail, &usuario) == 0){
  137. GuardarCuentaUsuario(&usuario);
  138. MenuPrincipal();
  139. }else{
  140. printf("\n\t\tEste Email ya tiene Cuenta de Usuario");
  141. MenuPrincipal();
  142. }
  143. }
  144.  
  145. void InicioSesion(){
  146. FILE *archivo = fopen("BilleteraVirtualUsuarios.dat", "rb");
  147. char pass[MAX], e_mail[MAX], encontrado;
  148. Usuario usuario;
  149.  
  150. if(archivo == NULL){
  151. printf("\n\t\t ========================");
  152. printf("\n\t\t|Lo siento. ERROR Interno|");
  153. printf("\n\t\t ========================");
  154. MenuPrincipal();
  155. }else{
  156. encontrado = 0;
  157. printf("\n\t\t\t =====================================");
  158.    printf("\n\t\t\t| Iniciar sesion en Billetera Virtual |");
  159.    printf("\n\t\t\t =====================================\n\n");
  160.  
  161.    printf("\t\tCorreo electronico: ");
  162.    LeerCadena(e_mail, MAX);
  163.    printf("\t\tContrasena: ");
  164.    LeerCadena(pass, MAX);
  165.  
  166.    /* Se recorre el archivo secuencialmente */
  167. fseek(archivo, 0, SEEK_SET); /* Posiciona el cursor al principio del archivo */
  168.    fread(&usuario, sizeof(usuario), 1, archivo);
  169.  
  170.    while(!feof(archivo)){
  171.     if((strcmp(usuario.e_mail, e_mail) == 0) && (strcmp(usuario.pasword, pass) == 0)){
  172.     encontrado = 1;
  173. }
  174. fread(&usuario, sizeof(usuario), 1, archivo);
  175. }
  176.  
  177. if(encontrado == 1){
  178. system("cls");
  179. printf("\n\tBilletera Virtual\t\t%s %s\n\n", usuario.p.nombre, usuario.p.apellido);
  180.  
  181. switch(MostrarMenu_InicioSesion()){
  182. case 1:
  183. break;
  184. case 2:
  185.    break;
  186. case 3:
  187.    break;
  188. case 4:
  189.    break;
  190. case 5:
  191. MenuPrincipal();
  192.    break;
  193. default:
  194. printf("\n\t\t ===================");
  195.            printf("\n\t\t| Opcion incorrecta |");
  196.            printf("\n\t\t ===================");
  197.        MenuInicioSesion();
  198.    break;
  199. }
  200.  
  201. }else{
  202. printf("\n\n\t\tUsuario no registrado");
  203. MenuPrincipal();
  204. }
  205.  
  206. fclose(archivo);
  207. }
  208. }
  209.  
  210. int ConfirmarEmail(char email[], Usuario *usuario){
  211. FILE *archivo = fopen("BilleteraVirtualUsuarios.dat", "rb");
  212. int existe;
  213.  
  214. if(archivo == NULL){
  215. existe = 0;
  216. }else{
  217. existe = 0;
  218.  
  219. fread(usuario, sizeof(usuario), 1, archivo);
  220.  
  221. while(!feof(archivo)){
  222. if(strcmp(usuario->e_mail, email) == 0){
  223. existe = 1;
  224. break;
  225. }
  226. fread(usuario, sizeof(usuario), 1, archivo);
  227. }
  228.  
  229. fclose(archivo);
  230. }
  231. return existe;
  232. }
  233.  
  234. void GuardarCuentaUsuario(Usuario *usuario){
  235. FILE *archivo = fopen("BilleteraVirtualUsuarios.dat", "ab");
  236.  
  237. if(archivo == NULL){
  238. printf("\n\t\t ========================");
  239. printf("\n\t\t|Lo siento. ERROR Interno|");
  240. printf("\n\t\t ========================");
  241. MenuPrincipal();
  242. }else{
  243. fwrite(usuario, sizeof(usuario), 1, archivo);
  244. fclose(archivo);
  245. printf("\n\t\tUsuario Registrado con EXITO");
  246. }
  247. }
  248.  
  249. int LeerCadena(char *cadena, int n){
  250. int i, c;
  251.  
  252. c = getchar();
  253. if (c == EOF) {
  254. cadena[0] = '\0';
  255. return 0;
  256. }
  257.  
  258. if (c == '\n') {
  259. i = 0;
  260. } else {
  261. cadena[0] = c;
  262. i = 1;
  263. }
  264.  
  265. for (; i < n - 1 && (c = getchar()) != EOF && c != '\n'; i++) {
  266. cadena[i] = c;
  267. }
  268. cadena[i] = '\0';
  269.  
  270. if (c != '\n' && c != EOF)
  271. while ((c = getchar()) != '\n' && c != EOF);
  272.  
  273. return 1;
  274. }
  275.  
  276. void MenuPrincipal(){
  277. Sleep(3000);
  278. system("cls");
  279. main();
  280. }
  281.  
  282. void MenuInicioSesion(){
  283. Sleep(3000);
  284. system("cls");
  285. MostrarMenu_InicioSesion();
  286. }
  287.  
  288. void FinalizarPrograma(){
  289. system("cls");
  290.    printf("\n\t ===================================================");
  291. printf("\n\t| LA Billetera Virtual CERRARA en Cualquier Momento |");
  292. printf("\n\t ===================================================\n\n");
  293. Sleep(3000);
  294.    exit(0);
  295. }


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
urgente como resuelvo este programa!!!
Programación C/C++
knyfer 0 1,954 Último mensaje 10 Noviembre 2011, 00:42 am
por knyfer
Porfa ayuda con este programa urgente
Programación C/C++
Konoha 2 2,386 Último mensaje 14 Junio 2012, 17:23 pm
por int_0x40
ayuda con este codigo es urgente
Ejercicios
jrkikey 0 2,588 Último mensaje 26 Noviembre 2012, 02:05 am
por jrkikey
Necesito ayuda urgente con este programa Nod32 Update Viewer ?
Software
TrashAmbishion 2 1,692 Último mensaje 9 Mayo 2015, 22:16 pm
por TrashAmbishion
ayuda urgente para resolver este programa|
Java
deank23 3 3,009 Último mensaje 29 Noviembre 2020, 16:40 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines