9/27/2016

Ejercicio 18

Se tiene la siguiente información de un empleado:
· Código del empleado
· Nombres
· Número de horas trabajadas al mes
· Valor hora trabajada
· Porcentaje de retención en la fuente.
Haga un algoritmo que muestre: código, nombres, salario bruto y salario neto.


#include <iostream>
//Se incluye la clase Empleado para despues llamar a sus metodos 
#include "Empleado.h"

using namespace std;

//se define e implementa el metodo llenarDatos(), para almacenar la información del empelado
//y luego llamarla desde el main. 
void llenarDatos(Empleado* obj)
{
    int c, h_t, v_h;//se definen las variables c(codigo), h_t(horas trabajadas)
    //v_h(valor hora) de tipo entero 
    string n;//se define la variable n(nombre) de tipo string 
    double p_rt;//se define la variable p_rt(porcentaje retencion fuente) de tipo float. 

    //se pide el codigo 
    cout << "Digite codigo del empleado" << endl;
    cin >> c;//se guarda el codigo en "c"; 
    obj->setCodigo(c);//se encapsula el codigo(c) 

    //se pide el nombre 
    cout << "Digite nombre del empleado" << endl;
    cin >> n;//se guarda el nombre en "n"; 
    obj->setNombre(n);//se encapsula el nombre(n) 

    //se pide las horas trabajadas 
    cout << "Digite las horas trabajadas del empleado" << endl;
    cin >> h_t;//se guarda las horas trabajadas en "h_t" 
    obj->setHorasTrabajadas(h_t);//se encapsula las horas trabajadas(h_t) 

    //se pide el valor de la hora 
    cout << "Digite el valor de la hora" << endl;
    cin >> v_h;//se guarda el valor de la hora "v_h" 
    obj->setValorHora(v_h);//se encapsula el valor de la hora(v_h) 

    //se pide el porcentaje de retencion de fuente 
    cout << "Digite el porcentaje de retencion de fuente" << endl;
    cin >> p_rt;//se el porcentaje de retencion de fuente "p_rt" 
    obj->setPorcentajeRetencionFuente(p_rt);//se encapsula el valor del porcentaje(p_rt) 
}

int main(void)
{
    //Se crea un objeto de la clase Empleado (Instanciaciación) 
    Empleado *obj = new Empleado();

    //le pasaremos un objeto de la clase Empleado al metodo llenarDatos()
    //para poder llamar a sus metodos, y no tener que instanciar ya que si
    //instanciamos en el metodo llenarDatos el constructor volvera a asignar
    //atributos por defecto 
    llenarDatos(obj);

    //Se muestra el nombre del empleado 
    cout << "Nombre del empleado: " << obj->getCodigo() << endl;
    //Se muestra el codigo del empleado 
    cout << "Codigo: " << obj->getNombre() << endl;
    //Se muestra el salario bruto 
    cout << "Salario Bruto: $" << obj->salarioBruto() << endl;
    //Se muestra el salario neto 
    cout << "Salario Neto: $" << obj->salarioNeto() << endl;
}
     

#ifndef EMPLEADO_H
#define EMPLEADO_H
#include 

using namespace std;

class Empleado
{
    public:
        Empleado();
        virtual ~Empleado();
        //Se definen los metodos publicos: 
        int salarioBruto();//salarioBruto() de tipo entero 
        int retencionEnFuente();//retencionEnFuente() de tipo entero 
        int salarioNeto();//salarioNeto() de tipo entero 

        //Se definen los metodos Setters y Getters de los atributos privados
        //codigo, nombre, horas_t, valor_h, porcentaje_rt. 
        void setCodigo(int val);
        int getCodigo();
        void setNombre(string val);
        string getNombre();
        void setHorasTrabajadas(int val);
        int getHorasTrabajadas();
        void setValorHora(int val);
        int getValorHora();
        void setPorcentajeRetencionFuente(double val);
        double getPorcentajeRetencionFuente();
    protected:

    private:
        //se definen los atributos privados: 
        int codigo;//codigo de tipo entero 
        string nombre;//nombre de tipo string 
        int horas_t;//horas_t de tipo entero 
        int valor_h;//valor_t de tipo entero 
        double porcentaje_rt;//porcentaje_rt de tipo double 
};

#endif // EMPLEADO_H
     

#include "Empleado.h"

Empleado::Empleado()
{
    //se asignan los siguiente valores por defecto al constructor de la clase 
    codigo = 0;
    nombre = "";
    horas_t = 0;
    valor_h = 0;
    porcentaje_rt = 0;
}

Empleado::~Empleado()
{
    //dtor 
}

//Implementacion del metodo salarioBruto(): 
int Empleado::salarioBruto()
{
    //para calcular el salario bruto, se debe multiplicar las horas
    //trabajadas por el valor de la hora 
    return horas_t * valor_h;
}

//Implementacion del metodo retencionEnFuente() 
int Empleado::retencionEnFuente()
{
    //definiremos una variable para convertir el porcentaje a decimal
    //para poder realizar el calculo de porcentaje... 
    float convertir_decimal;
    //el porcentaje se dividira entre 100 y el resultado sera un decimal 
    convertir_decimal = porcentaje_rt/100;

    //La retención en la fuente es igual al salario bruto por el porcentaje
    //de retención en la fuente. 
    return salarioBruto() * convertir_decimal;//se retorna el resultado
}

//Implementacion del metodo salarioNeto(): 
int Empleado::salarioNeto()
{
    //El salario neto es el salario bruto menos la retencion en fuente. 
    return salarioBruto() - retencionEnFuente();
}

//Implementacion de los Metodos Setters y Getters de los atributos:
//codigo, nombre, horas_t, valor_h, poercentaje_rt. 
void Empleado::setCodigo(int val)
{
    codigo = val;
}

int Empleado::getCodigo()
{
    return codigo;
}

void Empleado::setNombre(string val)
{
    nombre = val;
}

string Empleado::getNombre()
{
    return nombre;
}

void Empleado::setHorasTrabajadas(int val)
{
    horas_t = val;
}

int Empleado::getHorasTrabajadas()
{
    return horas_t;
}

void Empleado::setValorHora(int val)
{
    valor_h = val;
}

int Empleado::getValorHora()
{
    return valor_h;
}

void Empleado::setPorcentajeRetencionFuente(double val)
{
    porcentaje_rt = val;
}

double Empleado::getPorcentajeRetencionFuente()
{
    return porcentaje_rt;
}
     

//Se importa paquete "JOptionPane" para dibujar un cuadro de dialogo en pantalla
//que muestre información o para llenar información. 
import javax.swing.JOptionPane;

public class Main
{
    //se define e implementa el metodo llenarDatos(), para almacenar la información del empelado
    //y luego llamarla desde el main. 
    public static void llenarDatos(Empleado obj)
    {
        int c, h_t, v_h;//se definen las variables c(codigo), h_t(horas trabajadas)
        //v_h(valor hora) de tipo entero 
        String n;//se define la variable n(nombre) de tipo string 
        double p_rt;//se define la variable p_rt(porcentaje retencion fuente) de tipo float. 

        //se pide el codigo y se guarda el codigo en "c"; 
        c = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite codigo del empleado"));
        obj.setCodigo(c);//se encapsula el codigo(c) 

        //se pide el nombre y se guarda el nombre en "n"; 
        n = JOptionPane.showInputDialog(null,"Digite nombre del empleado");
        obj.setNombre(n);//se encapsula el nombre(n) 

        //se pide las horas trabajadas y se guarda las horas trabajadas en "h_t" 
        h_t = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite las horas trabajadas del empleado"));
        obj.setHorasTrabajadas(h_t);//se encapsula las horas trabajadas(h_t) 

        //se pide el valor de la hora y se guarda el valor de la hora "v_h" 
        v_h = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite el valor de la hora"));
        obj.setValorHora(v_h);//se encapsula el valor de la hora(v_h) 

        //se pide el porcentaje de retencion de fuente y se guarda el porcentaje de retencion de fuente "p_rt" 
        p_rt = Double.parseDouble(JOptionPane.showInputDialog(null,"Digite el porcentaje de retencion de fuente"));
        obj.setPorcentajeRetencionFuente(p_rt);//se encapsula el valor del porcentaje(p_rt) 
    }

    public static void main(String[] args)
    {
        //Se crea un objeto de la clase Empleado (Instanciaciación) 
        Empleado obj = new Empleado();

        //le pasaremos un objeto de la clase Empleado al metodo llenarDatos()
        //para poder llamar a sus metodos, y no tener que instanciar ya que si
        //instanciamos en el metodo llenarDatos el constructor volvera a asignar
        //atributos por defecto 
        llenarDatos(obj);

        //Se muestra el nombre del empleado 
        JOptionPane.showMessageDialog(null, "Nombre del empleado: " + obj.getCodigo());
        //Se muestra el codigo del empleado 
        JOptionPane.showMessageDialog(null, "Codigo: " + obj.getNombre());
        //Se muestra el salario bruto 
        JOptionPane.showMessageDialog(null, "Salario Bruto: $" + obj.salarioBruto());
        //Se muestra el salario neto 
        JOptionPane.showMessageDialog(null, "Salario Neto: $" + obj.salarioNeto());
    }
}
     

public class Empleado
{
    //se definen los atributos privados: 
    private int codigo;//codigo de tipo entero 
    private String nombre;//nombre de tipo string 
    private int horas_t;//horas_t de tipo entero 
    private int valor_h;//valor_h de tipo entero 
    private double porcentaje_rt;//porcentaje_rt de tipo double 
    
    public Empleado()
    {
        //se asignan los siguiente valores por defecto al constructor de la clase 
        codigo = 0;
        nombre = "";
        horas_t = 0;
        valor_h = 0;
        porcentaje_rt = 0;
    }

    //Implementacion del metodo salarioBruto(): 
    public double salarioBruto()
    {
        //para calcular el salario bruto, se debe multiplicar las horas
        //trabajadas por el valor de la hora 
        return horas_t * valor_h;
    }

    //Implementacion del metodo retencionEnFuente() 
    public double retencionEnFuente()
    {
        //definiremos una variable para convertir el porcentaje a decimal
        //para poder realizar el calculo de porcentaje... 
        double convertir_decimal;
        //el porcentaje se dividira entre 100 y el resultado sera un decimal 
        convertir_decimal = porcentaje_rt/100;

        //La retención en la fuente es igual al salario bruto por el porcentaje
        //de retención en la fuente. 
        return salarioBruto() * convertir_decimal;//se retorna el resultado 
    }

    //Implementacion del metodo salarioNeto(): 
    public double salarioNeto()
    {
        //El salario neto es el salario bruto menos la retencion en fuente. 
        return salarioBruto() - retencionEnFuente();
    }

    //Implementacion de los Metodos Setters y Getters de los atributos:
    //codigo, nombre, horas_t, valor_h, poercentaje_rt. 
    public void setCodigo(int val)
    {
        codigo = val;
    }

    public int getCodigo()
    {
        return codigo;
    }

    public void setNombre(String val)
    {
        nombre = val;
    }

    public String getNombre()
    {
        return nombre;
    }

    public void setHorasTrabajadas(int val)
    {
        horas_t = val;
    }

    public int getHorasTrabajadas()
    {
        return horas_t;
    }

    public void setValorHora(int val)
    {
        valor_h = val;
    }

    public int getValorHora()
    {
        return valor_h;
    }

    public void setPorcentajeRetencionFuente(double val)
    {
        porcentaje_rt = val;
    }

    public double getPorcentajeRetencionFuente()
    {
        return porcentaje_rt;
    }
}