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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Hola !!! me pueden ayudar a comentar un codigo que no entiendo en c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Hola !!! me pueden ayudar a comentar un codigo que no entiendo en c++  (Leído 2,301 veces)
Franck_Javi13

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Hola !!! me pueden ayudar a comentar un codigo que no entiendo en c++
« en: 10 Diciembre 2013, 15:11 pm »

el código es de registro de personal aguien que me pueda explicar el funcionamiento del código, o que me pueda ayudar con otro mas sencillo gracias!!

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <vector>
#include <algorithm>
#include <conio.h>
#define CLEAR_SCREEN "cls"


using namespace std;

class Trabajador {
public:
    int numero_de_empleado;
    string apellidos;
    string nombre;
    int anno_de_nacimiento;
    int mes_de_nacimiento;
    int dia_de_nacimiento;
    char sexo;
    string estado_civil;
    float sueldo;
    string puesto;
    string departamento;

    Trabajador() {} // constructor
   ~Trabajador() {}

    bool operator==(const Trabajador&trabajador) const
    {
        return this==&trabajador || this->numero_de_empleado==trabajador.numero_de_empleado;
    }

    bool operator!=(const Trabajador&trabajador) const
    {
        return this!=&trabajador && this->numero_de_empleado!=trabajador.numero_de_empleado;
    }

    bool operator<(const Trabajador&trabajador) const
    {
        return this->numero_de_empleado<trabajador.numero_de_empleado;
    }

    Trabajador &operator=(const Trabajador &trabajador)
    {
        if (this!=&trabajador)
    {
            this->numero_de_empleado = trabajador.numero_de_empleado;
            this->apellidos =trabajador.apellidos;
            this->nombre =trabajador.nombre;
            this->anno_de_nacimiento =trabajador.anno_de_nacimiento;
            this->mes_de_nacimiento =trabajador.mes_de_nacimiento;
            this->dia_de_nacimiento =trabajador.dia_de_nacimiento;
            this->sexo = trabajador.sexo;
            this->estado_civil =trabajador.estado_civil;
            this->sueldo =trabajador.sueldo;
            this->puesto =trabajador.puesto;
            this->departamento =trabajador.departamento;
        }
        return *this;
    }

    static void imprimir (Trabajador&trabajador, int *contador);
    static void imprimir_en_archivo(Trabajador &trabajador, ostream*archivo);
};

void   pausar        (const char*mensaje);
string leer_cadena   (const char*mensaje);
int    leer_entero   (const char*mensaje);
float  leer_decimal  (const char*mensaje);
char   leer_caracter (const char*mensaje);
bool   leer_campo    (istream&archivo,char *campo, char delimitador);

const char *ruta = "trabajadores.tsv";

int main ()
{
    vector<Trabajador> trabajadores;
    vector<Trabajador>::iterator i;
    Trabajador *dato, trabajador;
    int contador=0, opcion, subopcion;
    char campo[255];
    ifstream entrada (ruta);
    if (entrada!=NULL)
    {
        while (leer_campo (entrada,campo, '\t'))
        {
trabajador.numero_de_empleado = atoi (campo); //
            leer_campo (entrada, campo,'\t');
            trabajador.apellidos = campo;leer_campo (entrada, campo,'\t');
            trabajador.nombre = campo;
            leer_campo (entrada, campo,'\t');
            trabajador.anno_de_nacimiento = atoi(campo);
            leer_campo (entrada, campo,'\t');
            trabajador.mes_de_nacimiento = atoi(campo);
            leer_campo (entrada, campo,'\t');
            trabajador.dia_de_nacimiento= atoi (campo);
            leer_campo (entrada, campo,'\t');
            trabajador.sexo = campo[0];
            leer_campo (entrada, campo,'\t');
            trabajador.estado_civil =campo;
            leer_campo (entrada, campo,'\t');
            trabajador.sueldo = atof(campo);
            leer_campo (entrada, campo,'\t');
            trabajador.puesto = campo;
            leer_campo (entrada, campo,'\n');
            trabajador.departamento =campo;
            trabajadores.push_back(trabajador);
        }
        entrada.close();
    }
    do {
        system (CLEAR_SCREEN);
        cout << "MENU" << endl;
        cout << "1.- Altas" << endl;
        cout << "2.- Consultas" << endl;
        cout << "3.- Actualizaciones" <<endl;
        cout << "4.- Bajas" << endl;
        cout << "5.- Ordenar registros"<< endl;
        cout << "6.- Listar registros" <<endl;
        cout << "7.- Salir" << endl;
        cout << "Seleccione una opcion:";

        do
            opcion = _getch ();
        while (opcion<'1' || opcion>'7');
        cout << (char)opcion << endl <<endl;

        if (trabajadores.empty() &&opcion!='1' && opcion!='7')
        {
            pausar ("No hay registros.\n");
            continue;
        }
        if (opcion<'5')
        {


trabajador.numero_de_empleado = leer_entero ("Ingrese el numero deempleado del trabajador");
            i = find (trabajadores.begin(),

trabajadores.end(), trabajador);
            dato = i != trabajadores.end()? &trabajadores[i -trabajadores.begin()] : NULL;

            if (dato!=NULL)
            {
                cout << endl;
                Trabajador::imprimir (*dato,&contador);
            }
        }
        if (opcion=='1' && dato!=NULL)
            cout << "El registro ya existe."<< endl;
        else if (opcion>='2' &&opcion<='4' && dato==NULL)
            cout << endl << "Registro no encontrado." << endl;
        else switch (opcion)
        {
            case '1':
                trabajador.apellidos =leer_cadena ("Ingrese El Apellidos  ");
                trabajador.nombre =leer_cadena ("Ingrese El Nombre(s) ");
                trabajador.anno_de_nacimiento =leer_entero ("Ingrese El año De Nacimiento (AAAA)  ");
                trabajador.mes_de_nacimiento =leer_entero ("Ingrese El Mes De Nacimiento (MM)  ");
                trabajador.dia_de_nacimiento =leer_entero ("Ingrese El Dia De Nacimiento (DD) ");
                trabajador.sexo =leer_caracter ("Ingrese El Sexo  H/M ");
                trabajador.estado_civil =leer_cadena ("Ingrese El Estado Civil");
                trabajador.sueldo =leer_decimal ("Ingrese El Sueldo  ");
                trabajador.puesto =leer_cadena ("Ingrese El Puesto  ");
                trabajador.departamento =leer_cadena ("Ingrese El Departamento  ");
                trabajadores.push_back(trabajador);
                cout << endl << "Registro Agregado Correctamente." << endl;
                                break;
            case '3':
                cout << "Menu de modificacion de campos" <<endl;
                cout << "1.- Apellidos" <<endl;
                cout << "2.- Nombre(S)" <<endl;
                cout << "3.- año De Nacimiento (AAAA)" << endl;
                cout << "4.- Mes De Nacimiento (MM)" << endl;
                cout << "5.- Dia De Nacimiento (DD)" << endl;
                cout << "6.- Sexo  H/M" << endl;
                cout << "7.- estado civil" <<endl;
                cout << "8.- sueldo" <<endl;
                cout << "9.- puesto" <<endl;
                cout << "10.- departamento"<< endl;

                do {
                    subopcion = leer_entero("Seleccione un numero de campo a modificar");
                    if (subopcion<1 ||subopcion>10)
                        printf ("Opcion no valida.\n");
                } while (subopcion<1 ||subopcion>10);
                switch (subopcion)
                {
                    case 1:
                        dato->apellidos =leer_cadena ("Ingrese el Nuevo Apellidos");
                        break;
                    case 2:
                        dato->nombre =leer_cadena ("Ingrese El Nuevo Nombre/s ");
                        break;
                    case 3:
                        dato->anno_de_nacimiento = leer_entero("Ingrese El Nuevo año Denacimiento (AAAA)");
                        break;
                    case 4:
                        dato->mes_de_nacimiento = leer_entero("Ingrese El Nuevo Mes De nacimiento (MM)");
                        break;
                    case 5:
                        dato->dia_de_nacimiento = leer_entero("Ingrese El Nuevo Dia De Nacimiento (DD)");
                        break;
                    case 6:
                        dato->sexo =leer_caracter ("Ingrese El Nuevo Sexo H/M");
                        break;
                    case 7:
                        dato->estado_civil =leer_cadena ("Ingrese El Nuevo Estado Civil ");

                        break;
                    case 8:
                        dato->sueldo = leer_decimal ("Ingrese El Nuevo Sueldo");
                        break;
                    case 9:
                        dato->puesto = leer_cadena ("Ingrese El Nuevo Puesto");
                        break;
                    case 10:
                        dato->departamento = leer_cadena ("Ingrese El Nuevo Departamento");
                        break;
                }
                cout << endl << "Registro Actualizado Correctamente." << endl;
                break;
            case '4':
                trabajadores.erase (find(trabajadores.begin(),trabajadores.end(), *dato));
                cout << "Registro Borrado Correctamente." << endl;
                break;
            case '5':
                sort (trabajadores.begin(),trabajadores.end());
                cout << "Registros, Ordenados Correctamente." << endl;
                break;
            case '6':
                contador = 0;
                for (i=trabajadores.begin();i!=trabajadores.end(); i++)
                    Trabajador::imprimir (*i,&contador);
                cout << "Total De Registros: "<< contador << "." << endl;
                break;
        }
        if (opcion!='7')
         pausar ("");
    } while (opcion!='7');
    ofstream salida (ruta);
    if (salida!=NULL)
    {
        for (i=trabajadores.begin(); i!=trabajadores.end(); i++)
        Trabajador::imprimir_en_archivo (*i,&salida);
        salida.close();
    }



    return EXIT_SUCCESS;
}

void Trabajador::imprimir (Trabajador&trabajador, int *contador) // funcion miembro imprimir
{
    cout << "Num. De Empleado           : "<< trabajador.numero_de_empleado<< endl;
    cout << "Apellidos                  : " <<trabajador.apellidos.c_str() << endl;
    cout << "Nombre(s)                  : " <<trabajador.nombre.c_str() << endl;
    cout << "año De Nacimiento (AAAA)  : " <<trabajador.anno_de_nacimiento <<endl;
    cout << "Mes De Nacimiento  (MM)    : " <<trabajador.mes_de_nacimiento <<endl;
    cout << "Dia De Nacimiento (DD)     : " <<trabajador.dia_de_nacimiento <<endl;
    cout << "Sexo     H/M               : " <<trabajador.sexo << endl;
    cout << "Estado Civil               : " <<trabajador.estado_civil.c_str() <<endl;
    cout << "Sueldo                     : " <<trabajador.sueldo << endl;
    cout << "Puesto                     : " <<trabajador.puesto.c_str() << endl;
    cout << "Departamento               : " <<trabajador.departamento.c_str() <<endl;
    cout << endl;
    (*contador)++;
}

void Trabajador::imprimir_en_archivo

(Trabajador &trabajador, ostream*archivo){
    *archivo <<trabajador.numero_de_empleado <<"\t";
    *archivo <<trabajador.apellidos.c_str() << "\t";
    *archivo <<trabajador.nombre.c_str() << "\t";
    *archivo <<trabajador.anno_de_nacimiento <<"\t";
    *archivo <<trabajador.mes_de_nacimiento <<"\t";
    *archivo <<trabajador.dia_de_nacimiento << "\t";
    *archivo << trabajador.sexo << "\t";
    *archivo <<trabajador.estado_civil.c_str() << "\t";
    *archivo << trabajador.sueldo <<"\t";
    *archivo << trabajador.puesto.c_str() << "\t";
    *archivo <<trabajador.departamento.c_str() <<endl;
}

string leer_cadena (const char*mensaje)
{
    char cadena[255];
    cout << mensaje << ": ";
    cin.get (cadena, sizeof (cadena),'\n');
    cin.get();
    string str(cadena);
    return str;
}

int leer_entero (const char *mensaje)
{
    int entero;
    cout << mensaje << ": ";
    cin  >> entero;
    cin.get();
    return entero;
}

float leer_decimal (const char*mensaje)
{
    float decimal;
    cout << mensaje << ": ";
    cin  >> decimal;
    cin.get();
    return decimal;
}

char leer_caracter (const char*mensaje)
{
    cout << mensaje << " : ";
    char caracter = (char)cin.get();
    cin.get();
    return caracter;
}

bool leer_campo (istream &archivo,char *cadena, char delimitador)
{
    archivo.get (cadena, 255,delimitador);
    archivo.get();
    return !archivo.eof();
}

void pausar (const char *mensaje)
{
    cout << mensaje << endl <<"Presione Una Tecla Para Continuar . . ." << endl;
    _getch ();
}

si me pueden ayudar con un código que haga lo mismo pero sea mas sencillo se los agradecería


En línea

Sputnik_

Desconectado Desconectado

Mensajes: 80



Ver Perfil
Re: Hola !!! me pueden ayudar a comentar un codigo que no entiendo en c++
« Respuesta #1 en: 10 Diciembre 2013, 15:50 pm »

Quizá en el subforo de C++ tendrás mejor suerte, y pon el código entre etiquetas para que se pueda leer mejor.

Saludos


En línea

Las personas lo suficientemente locas como para pensar que pueden cambiar el mundo son las que lo cambian.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
hola me podeis ayudar entiendo rapido soy informatica pero necesito saber como
Software
zapatorosa2005 1 2,198 Último mensaje 28 Diciembre 2004, 10:40 am
por Songoku
Hola! me pueden ayudar?
Diseño Gráfico
chibihacker 3 2,343 Último mensaje 25 Abril 2005, 06:48 am
por Morris
Hola amigos me pueden ayudar con java.
Java
LordWilliam 1 2,010 Último mensaje 29 Junio 2012, 05:53 am
por goll9d
Hola me pueden ayudar a entender esta imagen
Foro Libre
||Toxic|| 4 3,614 Último mensaje 9 Septiembre 2012, 21:10 pm
por -- KiLiaN --
hola me puede ayudar con mi tarea por favor,no le entiendo y ya me estrese :(
Programación C/C++
MGL9 6 3,555 Último mensaje 7 Diciembre 2020, 21:07 pm
por Danielㅤ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines