tf_fundamentos/Dados.java
caioperschespindola 0b5ff1b326 Revisado
2026-07-03 13:40:23 -03:00

299 lines
7.8 KiB
Java

public class Dados {
private Aluno[] alunos;
private String chamada;
private Acompanhamento[] acompanhamentos;
private Bolsista[] bolsistas;
public Dados(){
alunos = new Aluno[]{};
chamada = "";
acompanhamentos = new Acompanhamento[]{};
bolsistas = new Bolsista[]{};
}
public String appendAluno(Aluno aluno){
if (checkDuplicate(aluno.getNome())) {return Erro.E3;}
int size = this.alunos.length;
Aluno[] novoArray = new Aluno[size + 1];
for (int i = 0; i < size; i++){
novoArray[i] = this.alunos[i];
}
novoArray[size] = aluno;
this.alunos = novoArray;
return "Aluno cadastrado com sucesso.";
}
public String appendAcompanhamento(Acompanhamento acomp){
int index = findAcompanhamentoIndex(acomp.getAluno().getNome());
if (index != -1){
acompanhamentos[index] = acomp;
return "Acompanhamento atualizado com sucesso.";
}
int size = this.acompanhamentos.length;
Acompanhamento[] novoArray = new Acompanhamento[size + 1];
for (int i = 0; i < size; i++){
novoArray[i] = this.acompanhamentos[i];
}
novoArray[size] = acomp;
this.acompanhamentos = novoArray;
return "Acompanhamento cadastrado com sucesso.";
}
public int findAcompanhamentoIndex(String nome){
for (int i = 0; i < acompanhamentos.length; i++){
if (nome.equals(acompanhamentos[i].getAluno().getNome()))
return i;
}
return -1;
}
public String appendBolsista(Bolsista bolsista){
int index = findBolsistaIndex(bolsista.getNome());
if (index != -1){
bolsistas[index] = bolsista;
return "Bolsista atualizado com sucesso.";
}
int size = this.bolsistas.length;
Bolsista[] novoArray = new Bolsista[size + 1];
for (int i = 0; i < size; i++){
novoArray[i] = this.bolsistas[i];
}
novoArray[size] = bolsista;
this.bolsistas = novoArray;
return "Bolsista cadastrado com sucesso.";
}
private boolean checkDuplicate(String nome){
for (int i = 0; i < alunos.length; i++){
if (nome.equals(alunos[i].getNome())){
return true;
}
}
return false;
}
private int findAlunoIndex(String nome){
for (int i = 0; i < alunos.length; i++){
if (nome.equals(alunos[i].getNome()))
return i;
}
return -1;
}
private int findBolsistaIndex(String nome){
for (int i = 0; i < bolsistas.length; i++){
if (nome.equals(bolsistas[i].getNome()))
return i;
}
return -1;
}
public Aluno findAluno(String nome){
int index = findAlunoIndex(nome);
if (index == -1) {return null;}
else {return alunos[index];}
}
public Acompanhamento findAcompanhamento(String nome){
int index = findAcompanhamentoIndex(nome);
if (index == -1) {return null;}
else {return acompanhamentos[index];}
}
public String listAlunos(){
if (alunos.length == 0) {return Erro.E5;}
String lista = "";
for (int i = 0; i < alunos.length; i++){
lista = lista.concat(alunos[i].getNome() + "\n");
}
return lista;
}
public String listBolsistas(){
if (bolsistas.length == 0) {return Erro.E5;}
String lista = "";
for (int i = 0; i < bolsistas.length; i++){
lista = lista.concat(bolsistas[i].getNome());
}
return lista;
}
public String riskReport(){
if (acompanhamentos.length == 0) {return Erro.E8;}
String relatorio = "";
for (int i = 0; i < acompanhamentos.length; i++){
relatorio = relatorio.concat(acompanhamentos[i].getAluno().getNome() + ": ");
relatorio = relatorio.concat(acompanhamentos[i].getRiscoLabel() + "\n");
}
return relatorio;
}
public String riskReportHigh(){
if (acompanhamentos.length == 0) {return Erro.E8;}
String relatorio = "";
for (int i = 0; i < acompanhamentos.length; i++){
if (acompanhamentos[i].getRiscoPedagogico() >= 6.6){
relatorio = relatorio.concat(acompanhamentos[i].getAluno().getNome() + ": Risco ALTO\n");
}
}
if (relatorio.length() == 0) {return Erro.E9;}
return relatorio;
}
public String maiorNome(){
if (alunos.length == 0) {return Erro.E5;}
if (alunos.length == 1) {return alunos[0].getNome();}
int k = 0;
for (int i = 1; i < alunos.length; i++){
if (alunos[i].getNome().length() > alunos[k].getNome().length())
k = i;
}
return alunos[k].getNome();
}
public String averageAge(){
if (alunos.length == 0) {return Erro.E5;}
double sum = 0;
for (int i = 0; i < alunos.length; i++){
sum += alunos[i].getIdade();
}
sum = sum / alunos.length;
return "Idade media dos alunos: " + sum;
}
public String totalVowels(){
if (alunos.length == 0) {return Erro.E5;}
int sum = 0;
for (int k = 0; k < alunos.length; k++){
String nome = alunos[k].getNome();
for (int j = 0; j < nome.length(); j++){
if (isVowel(nome.charAt(j))){
sum++;}
}
}
return "Numero total de vogais:" + sum;
}
private boolean isVowel(char a){
return (a == 'a') || (a == 'e') || (a == 'i') || (a == 'o') || (a == 'u')
|| (a == 'A') || (a == 'E') || (a == 'I') || (a == 'O') || (a == 'U');
}
public void makeChamada(){
this.chamada = "";
if (alunos.length == 0) {return;}
for (int i = 0; i < alunos.length; i++){
this.chamada = this.chamada.concat(alunos[i].getMatricula() + " / ");
this.chamada = this.chamada.concat(alunos[i].getNome() + " / ");
this.chamada = this.chamada.concat(alunos[i].getCurso() + "\n");
}
}
public String printChamada(){
if (chamada.length() == 0) {return Erro.E6;}
return chamada;
}
public String getChamada(){
return chamada;
}
public double coursePercent(String curso){
if (alunos.length == 0) {return -1;}
double num = 0;
for (int i = 0; i < alunos.length; i++){
if (alunos[i].getCurso().equals(curso))
num++;
}
return (num / alunos.length) * 100;
}
public String rankingRisco(){
if (acompanhamentos.length == 0) {return Erro.E8;}
int size = acompanhamentos.length;
Acompanhamento[] sorted = new Acompanhamento[size];
double sum = 0;
for (int i = 0; i < size; i++){
sorted[i] = acompanhamentos[i];
sum += sorted[i].getRiscoPedagogico();
}
Acompanhamento aux;
while (true){
boolean c = false;
for (int i = 0; i+1 < size; i++){
if (sorted[i].getRiscoPedagogico() < sorted[i+1].getRiscoPedagogico()){
aux = sorted[i];
sorted[i] = sorted[i+1];
sorted[i+1] = aux;
c = true;
}
}
if (!c){break;}
}
String ranking = "";
for (int i = 0; i < size; i++){
ranking += "Aluno: " + sorted[i].getAluno().getNome() + ". " + sorted[i].getRiscoLabel() + "\n";
}
ranking += "\nA media de risco eh: " + sum/size;
return ranking;
}
}