Ver Mensaje Individual
  #3 (permalink)  
Antiguo 20/11/2013, 00:04
WinderJerter
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: cambiar valor de return

Hola que tal, gracias por responder. La verdad no tengo mucha experiencia en c y con lo que te entendí modifique así mi código, pero siempre me sale que inicie sesión correctamente. Si me puedieras ayudar a corregir esto te lo agradecería demasiado. Saludos

Código C++:
Ver original
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6.  
  7. class Empleado {
  8.     public:
  9.         Empleado();
  10.         void registrar();
  11.         void iniciar_sesion( char *, char * );
  12.         bool estado();
  13.        
  14.     private:
  15.         bool flag_session_status;
  16.         char usuario[ 22 ], contrasena[ 22 ];
  17. } e;
  18.  
  19. Empleado::Empleado() {
  20.     flag_session_status = 0;
  21. }
  22.  
  23. bool Empleado::estado() {
  24.     return flag_session_status;
  25. }
  26.  
  27. void Empleado::registrar() {
  28.     int bandera = 0;
  29.     char comprobar_usuario[ 22 ];
  30.    
  31.     ifstream leer_empleados( "empleados.txt", ios::in | ios::app );
  32.    
  33.     if( leer_empleados.fail() ) {
  34.         cout << "\nError al leer el archivo empleados.txt" << endl;
  35.     } else {
  36.         cout << "Usuario: "; cin >> comprobar_usuario;
  37.        
  38.         while( !leer_empleados.eof() ) {
  39.             leer_empleados.read( (char*)&e, sizeof( e ) );
  40.            
  41.             if(leer_empleados.eof()) {
  42.                 break;
  43.             }
  44.            
  45.             if( strcmp( usuario, comprobar_usuario ) == 0 ) {
  46.                 bandera = 1;
  47.             }
  48.         }
  49.         leer_empleados.close();
  50.        
  51.         if( bandera == 1 ) {
  52.             cout << "\nEl nombre de usuario ya esta en uso" << endl;
  53.         } else {
  54.             ofstream escribir_empleados( "empleados.txt", ios::binary | ios::app );
  55.            
  56.             strcpy( usuario, comprobar_usuario );
  57.             cout << "Contraseña: "; cin >> contrasena;
  58.            
  59.             escribir_empleados.write( (char *) &e, sizeof( e ) );
  60.             escribir_empleados.close();
  61.         }
  62.     }
  63. }
  64.  
  65. void Empleado::iniciar_sesion( char comprobar_usuario[ 22 ], char comprobar_contrasena[ 22 ] ) {
  66.     int bandera = 0, opcion;
  67.    
  68.     ifstream leer_empleados( "empleados.txt", ios::in );
  69.    
  70.     if( leer_empleados.fail() ) {
  71.         cout << "\nError al leer el archivo empleados.txt" << endl;
  72.     } else {
  73.         while( !leer_empleados.eof() ) {
  74.             leer_empleados.read( (char*)&e, sizeof( e ) );
  75.            
  76.             if(leer_empleados.eof()) {
  77.                 break;
  78.             }
  79.            
  80.             if( strcmp( usuario, comprobar_usuario ) == 0 ) {
  81.                 if( strcmp( contrasena, comprobar_contrasena ) == 0 ) {
  82.                    
  83.                     flag_session_status = 1;
  84.                    
  85.                 }
  86.             }
  87.         }
  88.         leer_empleados.close();
  89.     }
  90. }
  91.  
  92.  
  93. main() {
  94.    
  95.     char comprobar_usuario[ 22 ], comprobar_contrasena[ 22 ];
  96.    
  97.     cout << "NOMBRE DE USUARIO: "; cin >> comprobar_usuario;
  98.     cout << "CONTRASEÑA: "; cin >> comprobar_contrasena;
  99.    
  100.     e.iniciar_sesion( comprobar_usuario, comprobar_contrasena );
  101.    
  102.     if( e.estado() == 1 ) {
  103.         cout << "\nSe ha iniciado sesion correctamente" << endl;
  104.     } else {
  105.         cout << "\nError al iniciar sesion" << endl;
  106.        
  107.     }
  108.    
  109.     return 0;
  110. }