Boa noite. Preciso resolver uma série de exercícios de java na faculdade de ADS, resolvi quase todos e esse está praticamente feito, somente a parte da demissão não consigo fazer de jeito nenhum.
Segue o exercício.
meu código está assim
Classe:
public class Funcionario {
private String nome;
private String matricula;
private String departamento;
private int horasTrabMes;
private float salarioPorHora;
private boolean situacao;
public Funcionario(String nome, String matricula, String departamento, int horasTrabMes, float salarioPorHora, boolean situacao) {
this.nome = nome;
this.matricula = matricula;
this.departamento = departamento;
this.horasTrabMes = horasTrabMes;
this.salarioPorHora = salarioPorHora;
this.situacao = situacao;
}
public Funcionario() {
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getMatricula() {
return matricula;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public String getDepartamento() {
return departamento;
}
public void setDepartamento(String departamento) {
this.departamento = departamento;
}
public int getHorasTrabMes() {
return horasTrabMes;
}
public void setHorasTrabMes(int horasTrabMes) {
this.horasTrabMes = horasTrabMes;
}
public float getSalarioPorHora() {
return salarioPorHora;
}
public void setSalarioPorHora(float salarioPorHora) {
this.salarioPorHora = salarioPorHora;
}
public boolean getSituacao() {
return situacao;
}
public double calSalarioMensal() {
return horasTrabMes * salarioPorHora;
}
public double calculaInss() {
double salarioLiquido = calSalarioMensal();
if (salarioLiquido <= 1174.86) {
return salarioLiquido * 0.08;
} else if (salarioLiquido >= 1174.87 || salarioLiquido <= 1958.10) {
return salarioLiquido -(salarioLiquido * 0.09);
} else if (salarioLiquido >= 1958.11 || salarioLiquido <= 3916.20) {
return salarioLiquido * -(salarioLiquido * 0.11);
}
return 0;
}
public double calculaIr() {
double salarioLiquido = calSalarioMensal();
/* if (salarioLiquido <= 1566.61) {
return salarioLiquido;
} else */ if (salarioLiquido >= 1566.62 || salarioLiquido <= 2347.85) {
return salarioLiquido * 0.075; //tava descontando 75%=0.75
} else if (salarioLiquido >= 2347.86 || salarioLiquido <= 3130.51) {
return salarioLiquido * 0.15;
} else if (salarioLiquido >= 3130.52 || salarioLiquido <= 3911.63) {
return salarioLiquido * 0.225;
}
return salarioLiquido * 0.275;
}
public double calculaSalarioLiquido() {
return calSalarioMensal() - (calculaInss() + calculaIr());
}
public void bonificaFuncionario(float percentualBonificacao) {
salarioPorHora+=percentualBonificacao;
}
public void encerraContrato() {
if(situacao){
situacao=false;
}
}
public String dados() {
return "Nome: " + nome + "\nMatrícula na empresa: " + matricula + "\nDepartamento em que Trabalha: "
+ departamento + "\nQuantidade de Horas trabalhadas no mês: " + horasTrabMes + "\nSalário por Hora: "
+ salarioPorHora + "\nSalário Liquido: " + calculaSalarioLiquido()+"\nSituação: " + situacao;
}
}
e Main pensei fazer uma combo box para verificar se o funcionário está ativo ou não, se ele não está ativo pelo que entendi do exercício ele não pode receber dados(se é demitido como recebe salário?) e se eu demitir ele aparecesse demitido.
public static void main(String[] args) {
Funcionario colaborador;
String nome = JOptionPane.showInputDialog(null, "Digite o nome do funcionário: ", "Recursos Humanos APP", 3);
String matricula = JOptionPane.showInputDialog(null, "Digite a matrícula do funcionário: ", "Recursos Humanos APP", 3);
String departamento = JOptionPane.showInputDialog(null, "Digite o departamento do funcionário: ", "Recursos Humanos APP", 3);
int horasTrabMes = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite as horas trabalhadas no mês pelo funcionário:", "Recursos Humanos APP", 3));
float salarioPorHora = Float.parseFloat(JOptionPane.showInputDialog(null, "Digite o salário por hora do funcionário:", "Recursos Humanos APP", 3));
boolean situacao = true;
// String situacao="Ativo";
colaborador = new Funcionario(nome, matricula, departamento, horasTrabMes, salarioPorHora, situacao);
int operacoes = 0;
do {
operacoes = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a opereração desejada" + "\n1 - Listar informações do Funcionário"
+ "\n2 - Reajustar salário do Funcionário" + "\n3 - Demitir Funcionário"
+ "\n4 - Encerrar", "FUNCIONÁRIO " + nome, 3));
switch (operacoes) {
case 1:
JOptionPane.showMessageDialog(null, colaborador.dados());
break;
case 2:
colaborador.bonificaFuncionario(salarioPorHora);
JOptionPane.showInputDialog(null, "Digite o valor da hora para ser acrescentado ao valor da hora original");
case 3:
colaborador.encerraContrato();
JOptionPane.showConfirmDialog(null, "Você tem certeza que deseja demitir o funcionário?");
JOptionPane.showMessageDialog(null, "O funcionário " + colaborador.getNome() + " foi demitido");
break;
}
} while (operacoes != 4);
}
}
consegui pra retornar “true” por padrão e quando demito vai “false”, mas era para aparecer ativo ou inativo por exemplo.