Nesta atividade você implementará o sistema que gerencia a folha de pagamento de uma universidade.
Nessa universidade, existem tres tipos de funcionarios: "PROF", "STA", "TERC" representando respectivamente professores, servidores tecnico administrativos e terceirizados.
Professores sao classificados em classes(A, B, C, D, E). A classe a qual o professor pertence influencia diretamente no seu salario.
STAs sao classificados em niveis, que vai do 1 ate 30.O nivel influencia no salario do STA.
Terceirizados podem receber por insalubridade ou nao.
-
Inserir funcionário (professor, STA, terceirizados)
- Para inserir um funcionário é necessário informa o seu
cpf
,nome
ecargo
- Não é possível inserir funcionários com
cpfs
repetidos
- Para inserir um funcionário é necessário informa o seu
-
Buscar funcionário
- O sistema deve permitir verificar o registro de um funcionário ao informar um
cpf
- O sistema deve permitir verificar o registro de um funcionário ao informar um
-
Remover funcionário
- Deve ser possível remover um usuário da folha de pagamento dado um
cpf
- Deve ser possível remover um usuário da folha de pagamento dado um
-
Listando os funcionários
- Deve ser possível listar todos os funcionários
- Deve ser possível listar todos os funcionários de um determinado cargo
- A lista deve ser ordenada de acordo como nome dos funcionários
-
Participação nos lucros
- O lucro deve ser dividido igualmente entre os funcionarios
- Ex: Gratificacao de 500 reais. Se existirem 5 funcionarios, cada funcionario deve receber 100 reais.
-
Calcular a folha de pagamento
- Para que o pagamento seja realizado todo funcionario deve ter
seu
cpf
enome
cadastrado na folha de pagamento - Nessa empresa o salario ao fim dos mes e calculado da seguinte forma:
SalarioBase + DivisaoNosLucros + Diarias
- O cálculo do lucro é feito mensalmente
- Diárias
- Professores têm direito até 3 diárias
- STAs têm direito a uma diárias
- Terceirizados não têm direito a diáras
- O limite de diárias é reiniciado cada mês
- Cada diária vale 100 reias
- Além disso exigem regras específicas para cada cargo:
- Professores: Os salários variam de acordo com a classe
- O salario das classes A, B, C, D, E são respectivamente 3000, 5000, 7000, 9000 e 11000 reais.
- STA: o nível de um STA varia de 1 a 30.
- O salario dos STAs é calculado da seguinte forma 1000 + 100 * nivel
- Terceirizado: Podem receber um adicional por insabubridade
- O salário é 1000 sem insalubridade e 1500 com insalubridade
- Professores: Os salários variam de acordo com a classe
- Para que o pagamento seja realizado todo funcionario deve ter
seu
public class Runner {
public static void main(final String[] args) {
RHService rh = new RHService();
rh.cadastrar(new Professor("16", "Jonas", 'C'));
rh.cadastrar(new Professor("15", "Alessio", 'B'));
System.out.println("Total de funcionarios = " + rh.getTotalFuncionarios()); //Total de funcionarios = 2
rh.cadastrar(new STA("43", "Miriam", 10));
rh.cadastrar(new STA("23", "Lacerda", 5));
System.out.println("Total de funcionarios = " + rh.getTotalFuncionarios()); //Total de funcionarios = 4
rh.cadastrar(new Terceirizado("12", "Carla", false));
rh.cadastrar(new Terceirizado("78", "Adriana", true));
System.out.println("Total de funcionarios = " + rh.getTotalFuncionarios()); //Total de funcionarios = 6
rh.remover("12");
System.out.println("Total de funcionarios = " + rh.getTotalFuncionarios()); //Total de funcionarios = 5
System.out.println("Total de funcionarios = " + rh.getFuncionariosPorCategoria(IRHService.Tipo.TERC).size());
rh.solicitarDiaria("16");
rh.solicitarDiaria("16");
rh.solicitarDiaria("16");
rh.solicitarDiaria("23");
rh.solicitarDiaria("23");
System.out.println(rh.calcularSalarioDoFuncionario("16")); //7300.0
System.out.println(rh.calcularSalarioDoFuncionario("23")); //1600.0
System.out.println(rh.calcularSalarioDoFuncionario("12")); //null
System.out.println(rh.calcularSalarioDoFuncionario("78")); //1500.0
rh.iniciarMes();
rh.partilharLucros(20000);
for (Funcionario f: rh.getFuncionarios()) {
System.out.println(f.getNome() + "(cpf=" + f.getCpf() + ") -> salario=" + f.getSalario());
}
//Adriana(cpf=78) -> salario=5500.0
//Alessio(cpf=15) -> salario=9000.0
//Jonas(cpf=16) -> salario=11000.0
//Lacerda(cpf=23) -> salario=5500.0
//Miriam(cpf=43) -> salario=6000.0
System.out.println("Folha do mes = " + rh.calcularFolhaDePagamento()); //Folha do mes = 37000.0
}
}
Não esqueça de preencher o seguinte formulário Link para formulário ao completar a atividade.