lunes, 24 de mayo de 2010

Proyecto 2

Aqui esta una propuesta basica para resolver el Proyecto 2

/**
 * @(#)empleado.java
 *
 * Imprime el recibo de pago de un empleado, de acuerdo a los datos introducidos:
 * auxiliar de Horas Trabajadas en un mes y el Pago por Hora correspondiente.
 * Se toma en cuenta las deducciones correspondientes al Seguro Social, Ley de Politica Habitacional, y
 * Paro Forzoso. De igual manera el pago de horas extras, pago de un bono adicional del 30% al empleado
* que tenga mas de 20 horas extras, y otro bono adicional del 10 % para el empleado que labora sus horas correspondientes,
 * sin ninguna inasistencia, y el pago por hora sea menor a BsF. 20.
 *
 * * @author DOMINGO CLEMENTE
 * @version 1.00 2010/5/20
 */
import java.io.*;
import java.text.NumberFormat;

public class empleado{
       
        String nombre;    // Nombres y Apellidos del Empleado.
        int horastrabajadas; // auxiliar de horas trabajadas en el mes.
        double pagohora; // Pago por hora trabajada.
        double sueldobasico; // Monto del sueldo basico del empleado.
        double horasextras; //Monto a pagar por las horas extras laboradas
        double bono1; // Establece los montos del bono (30 % del salario basico) correspondiente a aquellos empleados que laboren mas de 20 horas extras.
        double bono2; // Establece el monto del bono (10 % del salario basico) correspondiente por asistencia completa y un pago por hora menor a BsF 20.
        double sso; // Deduccion correspondiente al Seguro Social por un monto del 4 % del sueldo basico hasta un maximo de Bs 5.000.
        double lph; // Deduccion correspondiente a la Ley de Politica Habitacional por un monto del 2 % del sueldo basico hasta un maximo de Bs 5.000.
        double paro; // Deduccion correspondiente al Paro Forzoso por un monto del 0.5% del sueldo basico hasta un maximo de Bs 5.000.       
       
        public empleado(){
            nombre=" ";
            horastrabajadas=0;
            pagohora=0;
            sueldobasico=0;
            horasextras=0;
            bono1=0;
            bono2=0;
            sso=0;
            lph=0;
            paro=0;
        }

   //Calcula el sueldo basico que recibira el empleado de acuerdo a las horas trabajadas.
    double sueldo (){
        if (horastrabajadas<160){
            sueldobasico=horastrabajadas*pagohora;
        }
        else{
            sueldobasico=160*pagohora;
        }
        return sueldobasico;
    }
           
    //Calcula el monto del pago de las horas extras.
    double he (){
        if (horastrabajadas>160){
            horasextras=(horastrabajadas-160)*2*pagohora;
        }
        else{
            horasextras=0;
        }
        return horasextras;
    }

    //Calcula el monto de los bonos sean del tipo 1 o del 2.
    double bono (int i){       
        if (i==1){
            if (horastrabajadas>180){
                bono1=160*pagohora*0.3;
            }   
            else{
                bono1=0;
            }               
            return bono1;
        }
        else {
            if ((horastrabajadas>=160) && (pagohora<20)) {
                bono2=160*pagohora*0.1;
            }       
            else{
                bono2=0;
            }       
            return bono2;                   
        }       
    }

    //Calcula las deducciones de acuerdo a cada caso.
    double d(int i) {
       
        if (sueldobasico>5000){
            sso=5000*0.04;           
            lph=5000*0.02;                           
            paro=5000*0.005;                                           
        }
        else{
            sso=sueldobasico*0.04;                                                   
            lph=sueldobasico*0.02;                 
            paro=sueldobasico*0.005;                  
        }
        switch (i){
            case 1:
                return sso;   
            case 2:
                return lph;
            case 3:                   
                return paro;
            default:
                return 0.0;
        }   
    }   


  //Llamada al metodo main.      
    public static void main (String[] args) throws IOException {
        String opcion;
        BufferedReader in;
        in=new BufferedReader(new InputStreamReader(System.in));
        empleado e= new empleado();
        NumberFormat nf = NumberFormat.getCurrencyInstance();
               
        do {                               
            System.out.println("\n\n\n");
            System.out.println("   *****  Menu de Nomina  *****\n");
            System.out.println("            1: Calcular Pago.");
            System.out.println("            2: Condiciones.");
            System.out.println("            3: Salir.\n");
            System.out.print("   Seleccione una Opcion: ");
            opcion=in.readLine();
           
            if (opcion.equals("1"))    {
   
                System.out.print("\n\n   Indique el nombre del empleado: ");
                e.nombre=in.readLine();
                System.out.print("   Indique las horas trabajadas:   ");
                e.horastrabajadas=Integer.parseInt(in.readLine());           
                System.out.print("   Indique el pago por hora:       ");
                e.pagohora=Double.parseDouble(in.readLine());               
               
                System.out.println("\n\n\n");
                System.out.println("   ************   RECIBO DE PAGO  ************\n\n");
                System.out.println("   NOMBRE:           " + e.nombre);
                System.out.println("   HORAS TRABAJADAS: " + e.horastrabajadas);
                System.out.println("   PAGO POR HORA:    " + nf.format(e.pagohora));
                System.out.println("\n\n   ************    ASIGNACIONES   *************\n");
                System.out.println("   SUELDO BASICO:                 " + nf.format(e.sueldo()));   
                if (e.horastrabajadas>160) {
                    System.out.println("   HORAS EXTRAS (" + (e.horastrabajadas-160) + "):             " + nf.format(e.he()));
                }
                if (e.horastrabajadas>180) {               
                    System.out.println("   BONO CANTIDAD HORAS EXTRAS:    " + nf.format(e.bono(1)));
                }
                if ((e.horastrabajadas>=160) && (e.pagohora<20)){
                    System.out.println("   BONO ASISTENCIA:               " + nf.format(e.bono(2)));
                }
                System.out.println("\n                                     =============\n");
                System.out.println("   TOTAL ASIGNACIONES:            " + nf.format(e.sueldobasico+e.horasextras+e.bono1+e.bono2));
               
                   
                System.out.println("\n\n   ************    DEDUCCIONES    *************\n");
               
                System.out.println("   SSO:                              " + nf.format(e.d(1)));                                   
                System.out.println("   LPH:                              " + nf.format(e.d(2)));
                System.out.println("   PARO FORZOSO:                     " + nf.format(e.d(3)));       

                System.out.println("\n                                    =============\n");
                System.out.println("   TOTAL DEDUCCIONES:                " + nf.format(e.sso+e.lph+e.paro));
                System.out.println("\n                                  =============\n");
                System.out.println("   SUELDO NETO:                   " + nf.format((e.sueldobasico+e.horasextras+e.bono1+e.bono2)-(e.sso+e.lph+e.paro)));

            }

            if (opcion.equals("2"))    {
                System.out.println("\n\n   **********    CONDICIONES PARA EL CALCULO DEL PAGO DEL SALARIO    **********");
                System.out.println("\n\n   1. El salario es cancelado mensualmente.");
                System.out.println("   2. Las horas de trabajo minimas son 160 por mes, y el pago se calcula por hora laborada.");
                System.out.println("   3. Las horas extras son canceladas a partir de la hora 161, siempre y cuando el empleado no tuvo inasistencias en el mes.");
                System.out.println("   4. Si posee inasistencias, las horas extras no se contabilizan sino como horas sencillas hasta completar las 160 horas minimas.");
                System.out.println("   5. El empleado que labor mas de 20 horas extras al mes, recibira un bono equivalente al 30% del salario basico.");
                System.out.println("   6. Aquellos empleados que laboren sus 160 horas como minimo al mes, y el pago por hora sea menor a Bs. 20,");
                System.out.println("   recibira un bono equivalente al 10% del salario basico como incentivo.");
            }   
        } while (!opcion.equals("3"));

    }   
}
   

No hay comentarios:

Publicar un comentario