Problema:
Calcular el salario diario de un empleado con base a lo siguiente:
- Por cada hora trabajada recibe $17.50 para las primeras 8 hrs.
- Por cada hora extra trabajada recibe 1.5 veces el costo de la hora de trabajo dentro del horario normal.
Nota: Usaremos dos clases, la primera hará el calculo de el salario por medio de la captura de las horas trabajadas; y la segunda hará uso de la primera clase.
1ra. Clase: Calcular_Salario
- Diagrama UML
- Diagrama de Flujo
Recurriremos esta vez a un diagrama de flujo para entender de mejor manera el calculo de el salario diario.
El diagrama nos permite apreciar las condiciones que llevará el programa. Ya que el problema dado dice que una vez pasadas las primeras 8 horas de trabajo, las horas extras se pagarán al 1.5 veces de el pago normal. El diagrama nos indica cierta condición, para realizar los procedimientos correspondientes.
- Programa
package Salario_Diario;
import javax.swing.JOptionPane;
public class Calcular_Salario {
private String nombre; // agregamos el nombre de el empleado por simple estética
private int HorasTrabajadas;
private float SubSalario;
private float SalarioTotal;
private float PagoPorHora=17.50f;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getHorasTrabajadas() {
return HorasTrabajadas;
}
public void setHorasTrabajadas(int HorasTrabajadas) {
this.HorasTrabajadas = HorasTrabajadas;
}
public float getSubSalario() {
return SubSalario;
}
public void setSubSalario(float SubSalario) {
this.SubSalario = SubSalario;
}
public float getSalarioTotal() {
return SalarioTotal;
}
public void setSalarioTotal(float SalarioTotal) {
this.SalarioTotal = SalarioTotal;
}
public float getPagoPorHora() {
return PagoPorHora;
}
public void setPagoPorHora(float PagoPorHora) {
this.PagoPorHora = PagoPorHora;
}
public void Captura(){
nombre=JOptionPane.showInputDialog("NOMBRE:");
HorasTrabajadas=Integer.parseInt(JOptionPane.showInputDialog("¿CUANTAS HORAS TRABAJÓ?"));//pedimos las horas trabajadas
}
public void CalcularSalario(){
if (HorasTrabajadas>8){ //si la el empleado trabajó mas de ocho horas se realaizará el siguiente procedimiento
SubSalario=(HorasTrabajadas-8)*(PagoPorHora*1.5f); //cuando se escribe un número con decimal se le agrega una f
//de lo contrario nos marcará error
SalarioTotal=(8*PagoPorHora)+SubSalario;
}
else{ // si la primera condición no se cumple entonces se realizará el siguiente procedimiento
SalarioTotal=HorasTrabajadas*PagoPorHora;
}
}
public void ImprimirSalario(){
JOptionPane.showMessageDialog(null,"***SALARIO DIARIO***\n\n"
+"NOMBRES: "+nombre+"\n HORAS TRABAJADAS: "+HorasTrabajadas
+"\nSALARIO DIARIO TOTAL: "+SalarioTotal);// imprimimos los resultados con una cadena
}
}
2da. Clase: Usar
- Programa
package Salario_Diario;
import javax.swing.JOptionPane;
public class Usar {
public static void main (String arg[]){
Calcular_Salario d;
d=new Calcular_Salario();
d.Captura(); //mandamos a llamar a los métodos
d.CalcularSalario();
d.ImprimirSalario();
}
}
Ejecutar el Programa
Ejecutamos el programa....
...insertamos el nombre de el empleado....
.... ahora insertamos las horas trabajadas...
... y estos son los resultados.
Conclusión:
En los problemas hay ciertos valores de algunas variables que se necesitan ser insertadas, pero hay otras, en las que su valor está definido, citamos los dos ejemplos en este problema. La mejor manera de organizar esto es estructurando lo datos y separar las clases en métodos.
Necesito hacer este proceso para 20 trabajadores ¿cómo implemento un for en la clase Usar? Gracias
ResponderEliminar