Java - Implementar una aplicación que permita gestionar la boleta de pago del trabajador

 
Vista:
Imágen de perfil de DaZai
Val: 21
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por DaZai (4 intervenciones) el 07/11/2020 16:37:10
Molinos COMOLSA, desea implementar una aplicación que permita gestionar la boleta de pago del trabajador. La aplicación debe solicitar los siguientes datos:

• Apellidos, Nombres, Estado Civil, Cantidad de Horas trabajadas, valor de hora.
• Calcule y muestre el Sueldo Bruto
• Calcule y muestre los descuentos de ley por aporte al SNP que es el 13% del
sueldo bruto.
• Se debe Calcular y mostrar la bonificación familiar que representa el 7% del
sueldo bruto sólo bajo la única condición del estado civil del trabajador es
“CASADO”.
• Calcule y muestre el Sueldo neto a pagar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Elviz

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por Elviz (1 intervención) el 08/11/2020 18:00:45
Molinos COMOLSA, desea implementar una aplicación que permita gestionar la boleta de pago del trabajador. La aplicación debe solicitar los siguientes datos: Nesecito los códigos de consola.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por Billy Joel (876 intervenciones) el 08/11/2020 18:45:00
Siento que me voy a pasar con esta solución...
jajajajaja

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de j
Val: 21
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por j (4 intervenciones) el 08/11/2020 19:06:26
Oye tu conoces como resolverlo, podrias ayudar porfa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por Billy Joel (876 intervenciones) el 08/11/2020 22:26:17
ok he terminado, aquí va y vienen curvas
A continuación la clase Trabajador
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
public class Trabajador implements Comparable<Trabajador> {
 
    private String nombres;
    private String apellidos;
    private String estadoCivil;
    private int horasTrabajadas;
    private double valorPorHora;
 
    public static String ESTADO_CIVIL_SOLTERO = "SOLTERO";
    public static String ESTADO_CIVIL_CASADO = "CASADO";
 
    public Trabajador(String nombres, String apellidos, String estadoCivil, int horasTrabajadas, double valorPorHora) {
        this.nombres = nombres;
        this.apellidos = apellidos;
        this.estadoCivil = estadoCivil;
        this.horasTrabajadas = horasTrabajadas;
        this.valorPorHora = valorPorHora;
    }
 
    @Override
    public String toString() {
        return "Nombres: " + nombres + "\nApellidos: " + apellidos + "\nEstado Civil: " + estadoCivil + "\nHoras Trabajadas: " + horasTrabajadas + "\nValor por hora: " + valorPorHora;
    }
 
    @Override
    public int compareTo(Trabajador t) {
        return toString().compareTo(t.toString());
    }
 
    public boolean equals(Trabajador t) {
        return compareTo(t) == 0;
    }
 
    /**
     * @return the nombres
     */
    public String getNombres() {
        return nombres;
    }
 
    /**
     * @param nombres the nombres to set
     */
    public void setNombres(String nombres) {
        this.nombres = nombres;
    }
 
    /**
     * @return the apellidos
     */
    public String getApellidos() {
        return apellidos;
    }
 
    /**
     * @param apellidos the apellidos to set
     */
    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }
 
    /**
     * @return the estadoCivil
     */
    public String getEstadoCivil() {
        return estadoCivil;
    }
 
    /**
     * @param estadoCivil the estadoCivil to set
     */
    public void setEstadoCivil(String estadoCivil) {
        this.estadoCivil = estadoCivil;
    }
 
    /**
     * @return the horasTrabajadas
     */
    public int getHorasTrabajadas() {
        return horasTrabajadas;
    }
 
    /**
     * @param horasTrabajadas the horasTrabajadas to set
     */
    public void setHorasTrabajadas(int horasTrabajadas) {
        this.horasTrabajadas = horasTrabajadas;
    }
 
    /**
     * @return the valorPorHora
     */
    public double getValorPorHora() {
        return valorPorHora;
    }
 
    /**
     * @param valorPorHora the valorPorHora to set
     */
    public void setValorPorHora(double valorPorHora) {
        this.valorPorHora = valorPorHora;
    }
}

Continuará...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por JOB (1 intervención) el 25/03/2021 20:02:22
tenga usted un buen día me podría explicar por favor el código por que cuando intento correrlo no me funciona, quisiera aprender mas de java
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por Billy Joel (876 intervenciones) el 08/11/2020 22:37:20
Ahora viene la clase principal COMOLSA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
 
/**
 *
 * @author Billy Joel
 */
public final class COMOLSA {
 
    Map<String, Trabajador> trabajadores;
    public static final String FILE_TRABAJADORES = "C:\\COMOLSA_Trabajadores.txt";
 
    public static final int OPCION_REGISTRAR_TRABAJADOR = 1;
    public static final int OPCION_MOSTRAR_TRABAJADORES = 2;
    public static final int OPCION_ACTUALIZAR_DATOS_TRABAJADOR = 3;
    public static final int OPCION_BORRAR_TRABAJADOR = 4;
    public static final int OPCION_SALIR = 5;
 
    public COMOLSA() {
        trabajadores = new HashMap();
        cargarTrabajadores();
    }
 
    /**
     * Método utilizado para leer cadenas o strings
     *
     * @param mensaje
     * @return
     */
    public static String leerString(String mensaje) {
        String s = null;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            System.out.print(mensaje);
            s = br.readLine();
        } catch (IOException ex) {
            System.out.println("Hubo un error de lectura");
            ex.printStackTrace(System.out);
        }
        if (s == null) {
            s = leerString(mensaje);
        }
        return s;
    }
 
    /**
     * Método utilizado para leer número enteros
     *
     * @param mensaje
     * @return
     */
    public static Integer leerInt(String mensaje) {
        Integer i = null;
        try {
            i = Integer.parseInt(leerString(mensaje));
        } catch (NumberFormatException ex) {
            System.out.println("Hubo un error de formato");
            ex.printStackTrace(System.out);
        }
        if (i == null) {
            i = leerInt(mensaje);
        }
        return i;
    }
 
    /**
     * Método utilizado para leer números doubles
     *
     * @param mensaje
     * @return
     */
    public static Double leerDouble(String mensaje) {
        Double d = null;
        try {
            d = Double.parseDouble(leerString(mensaje));
        } catch (NumberFormatException ex) {
            System.out.println("Hubo un error de formato");
            ex.printStackTrace(System.out);
        }
        if (d == null) {
            d = leerDouble(mensaje);
        }
        return d;
    }
 
    /**
     * Guarda los datos de los trabajadores en un archivo
     */
    public void guardarTrabajadores() {
        FileWriter fichero = null;
        PrintWriter pw;
        try {
            fichero = new FileWriter(FILE_TRABAJADORES);
            pw = new PrintWriter(fichero);
            trabajadores.entrySet().forEach(e -> {
                pw.println(
                        e.getValue().getNombres()
                        + "\t" + e.getValue().getApellidos()
                        + "\t" + e.getValue().getEstadoCivil()
                        + "\t" + e.getValue().getHorasTrabajadas()
                        + "\t" + e.getValue().getValorPorHora()
                );
            });
 
        } catch (IOException ex) {
            ex.printStackTrace(System.out);
        } finally {
            try {
                if (fichero != null) {
                    fichero.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace(System.out);
            }
        }
    }
 
    /**
     * Carga los datos de los trabajadores desde el archivo
     */
    public void cargarTrabajadores() {
        File archivo;
        FileReader fr = null;
        BufferedReader br;
        trabajadores.clear();
        try {
            archivo = new File(FILE_TRABAJADORES);
            if (!archivo.exists()) {
                return;
            }
            fr = new FileReader(archivo);
            br = new BufferedReader(fr);
            String linea;
            while ((linea = br.readLine()) != null) {
                String[] l = linea.split("\t");
                String nombres = l[0];
                String apellidos = l[1];
                String estadoCivil = l[2];
                int horasTrabajadas = Integer.parseInt(l[3]);
                double valorPorHora = Double.parseDouble(l[4]);
                Trabajador t = new Trabajador(nombres, apellidos, estadoCivil, horasTrabajadas, valorPorHora);
                trabajadores.put(t.getNombres() + " " + t.getApellidos(), t);
            }
        } catch (IOException ex) {
            ex.printStackTrace(System.out);
        } finally {
            try {
                if (fr != null) {
                    fr.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace(System.out);
            }
        }
    }
 
    /**
     * Captura los datos del trabajador y los registra en el mapa de
     * trabajadores
     */
    public void registrarTrabajador() {
        System.out.println("Favor a continuación introduzca los datos del trabajador");
        String nombre = leerString("Introduzca el nombre: ");
        String apellidos = leerString("Introduzca los apellidos: ");
        int ec = leerInt("Introduzca 0 si el estado civil es " + Trabajador.ESTADO_CIVIL_SOLTERO + " de otro modo introduzca 1 si el estado civil es " + Trabajador.ESTADO_CIVIL_CASADO);
        while (ec < 0 || ec > 1) {
            System.out.println("Opción incorrecta, vuelva a introducir");
            ec = leerInt("Introduzca 0 si el estado civil es " + Trabajador.ESTADO_CIVIL_SOLTERO + " de otro modo introduzca 1 si el estado civil es " + Trabajador.ESTADO_CIVIL_CASADO);
        }
        String estadoCivil = ec == 0 ? Trabajador.ESTADO_CIVIL_SOLTERO : Trabajador.ESTADO_CIVIL_CASADO;
        int horasTrabajadas = leerInt("Introduzca la cantidad de horas trabajadas: ");
        while (horasTrabajadas < 0) {
            System.out.println("Cantidad incorrecta, vuelva a intentar");
            horasTrabajadas = leerInt("Introduzca la cantidad de horas trabajadas: ");
        }
        double valorPorHora = leerDouble("Introduzca el valor por hora: ");
        while (valorPorHora < 0) {
            System.out.println("Valor incorrecta, vuelva a intentar");
            valorPorHora = leerDouble("Introduzca el valor por hora: ");
        }
        Trabajador t = new Trabajador(nombre, apellidos, estadoCivil, horasTrabajadas, valorPorHora);
        if (trabajadores.containsKey(t.getNombres() + " " + t.getApellidos())) {
            System.out.println("El trabajador ya estaba registrado");
        } else {
            System.out.println("El trabajador ha sido registrado");
        }
    }
 
    /**
     * Hace los cálculos de salario de un trabajador
     *
     * @param t
     */
    public void calcularSalario(Trabajador t) {
        double salarioBruto = t.getHorasTrabajadas() * t.getValorPorHora();
        double impuestos = salarioBruto - (salarioBruto * 0.13);
        double bonificacion = t.getEstadoCivil().equals(Trabajador.ESTADO_CIVIL_CASADO) ? (salarioBruto * 0.07) : 0.00;
        double salarioNeto = salarioBruto - impuestos + bonificacion;
        System.out.println(t.toString()
                + "\nSalario bruto: " + String.format("%.2f", salarioBruto)
                + "\nImpuestos SNP: " + String.format("%.2f", impuestos)
                + "\nBonificación familiar: " + String.format("%.2f", bonificacion)
                + "\nSalario neto: " + String.format("%.2f", salarioNeto)
        );
    }
 
    public void iniciarMenu() {
        int opcion;
        do {
            opcion = leerInt("Menú"
                    + "\nIntroduzca " + OPCION_REGISTRAR_TRABAJADOR + " para registrar un trabajador"
                    + "\nIntroduzca " + OPCION_MOSTRAR_TRABAJADORES + " para mostrar los trabajadores registrados"
                    + "\nIntroduzca " + OPCION_ACTUALIZAR_DATOS_TRABAJADOR + " para actualizar los datos de un trabajador"
                    + "\nIntroduzca " + OPCION_BORRAR_TRABAJADOR + " para borrar un trabajador"
                    + "\nIntroduzca " + OPCION_SALIR + " para salir: ");
            switch (opcion) {
                case OPCION_REGISTRAR_TRABAJADOR:
                    registrarTrabajador();
                    break;
                case OPCION_MOSTRAR_TRABAJADORES:
                    mostrarTrabajadores();
                    break;
                case OPCION_ACTUALIZAR_DATOS_TRABAJADOR:
                    actualizarDatosTrabajador();
                    break;
                case OPCION_BORRAR_TRABAJADOR:
                    borrarTrabajador();
                    break;
                case OPCION_SALIR:
                    salir();
                    break;
                default:
                    System.out.println("Opción incorrecta!");
                    break;
            }
        } while (opcion != OPCION_SALIR);
    }
 
    /**
     * Actualiza los datos de un trabajador
     */
    public void actualizarDatosTrabajador() {
        System.out.println("Actualizar datos de trabajador");
        String nombreCompleto = leerString("Introduzca el nombre completo del trabajador: ");
        if (trabajadores.containsKey(nombreCompleto)) {
            Trabajador t = trabajadores.get(nombreCompleto);
            System.out.println("Estos son los datos del trabajador\n" + t.toString());
            int ec = leerInt("Introduzca 0 si el estado civil es " + Trabajador.ESTADO_CIVIL_SOLTERO + " de otro modo introduzca 1 si el estado civil es " + Trabajador.ESTADO_CIVIL_CASADO);
            while (ec < 0 || ec > 1) {
                System.out.println("Opción incorrecta, vuelva a introducir");
                ec = leerInt("Introduzca 0 si el estado civil es " + Trabajador.ESTADO_CIVIL_SOLTERO + " de otro modo introduzca 1 si el estado civil es " + Trabajador.ESTADO_CIVIL_CASADO);
            }
            String estadoCivil = ec == 0 ? Trabajador.ESTADO_CIVIL_SOLTERO : Trabajador.ESTADO_CIVIL_CASADO;
            int horasTrabajadas = leerInt("Introduzca la cantidad de horas trabajadas: ");
            while (horasTrabajadas < 0) {
                System.out.println("Cantidad incorrecta, vuelva a intentar");
                horasTrabajadas = leerInt("Introduzca la cantidad de horas trabajadas: ");
            }
            double valorPorHora = leerDouble("Introduzca el valor por hora: ");
            while (valorPorHora < 0) {
                System.out.println("Valor incorrecta, vuelva a intentar");
                valorPorHora = leerDouble("Introduzca el valor por hora: ");
            }
            t.setEstadoCivil(estadoCivil);
            t.setHorasTrabajadas(horasTrabajadas);
            t.setValorPorHora(valorPorHora);
        } else {
            System.out.println("El nombre ingresado no se encuentra");
        }
    }
 
    /**
     * Borra los datos de un trabajador
     */
    public void borrarTrabajador() {
        System.out.println("Borrar trabajador");
        String nombreCompleto = leerString("Introduzca el nombre completo del trabajador: ");
        if (trabajadores.containsKey(nombreCompleto)) {
            trabajadores.remove(nombreCompleto);
            System.out.println("El trabajador ha sido borrado");
        } else {
            System.out.println("El nombre ingresado no se encuentra");
        }
    }
 
    /**
     * Muestra los datos de los trabajadores
     */
    public void mostrarTrabajadores() {
        trabajadores.forEach((nombreCompleto, trabajador) -> {
            System.out.println("Datos de " + nombreCompleto
                    + "\n" + trabajador.toString());
            System.out.println("---------------------------------------------");
        });
    }
 
    /**
     * Guarda los datos de los trabajadores en el archivo y muestra un mensaje
     * de salida
     */
    public void salir() {
        guardarTrabajadores();
        System.out.println("Ha escogido la opción salir. Adios!!");
    }
 
    public static void main(String[] args) {
        COMOLSA c = new COMOLSA();
        c.iniciarMenu();
    }
}

Con esto tienes para casi todo el curso

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por el patron del bien (2 intervenciones) el 06/01/2021 21:19:11
este código es una .... no fusiona eres la cagada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-4
Comentar
sin imagen de perfil

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por anonymous (47 intervenciones) el 06/01/2021 22:19:50
El código de Billy Joel está excelentemente bien construido, no sé porqué dicen que no funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por el patron del bien (2 intervenciones) el 07/01/2021 00:02:01
entonces demuéstrame que si funciona en tutorial.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por Juan (1 intervención) el 07/01/2021 00:12:49
Hum pero que ego más estúpido y alto el de quien se hace llamar el patrón del bien

Se cree un Dios
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 194
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por joel (59 intervenciones) el 07/01/2021 12:46:11
porque no demuestras tu que no funciona?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 194
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Implementar una aplicación que permita gestionar la boleta de pago del trabajador

Publicado por joel (59 intervenciones) el 07/01/2021 12:43:52
Yo creo que tu problema es que nos sabes utilizarlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar