From e2ca24a21d26217c34f12f9dbc573a82873f67b9 Mon Sep 17 00:00:00 2001 From: caioperschespindola Date: Wed, 1 Jul 2026 13:35:52 -0300 Subject: [PATCH] Versao Final --- Acompanhamento.java | 7 +-- Dados.java | 147 +++++++++++++++++++++++++++----------------- Erro.java | 22 ++++--- Gerenciador.java | 72 +++++++++++----------- Menu.java | 24 +++++--- 5 files changed, 158 insertions(+), 114 deletions(-) diff --git a/Acompanhamento.java b/Acompanhamento.java index a2912c8..ab5ba3d 100644 --- a/Acompanhamento.java +++ b/Acompanhamento.java @@ -8,7 +8,6 @@ public class Acompanhamento { private double riscoPedagogico; public Acompanhamento(Aluno aluno, int atividadesEntregues, int atividadesIA, int atividadesExplicadas, int atividadesSemAjuda, int atividadesNaoEstudadas){ - this.aluno = aluno; this.atividadesEntregues = atividadesEntregues; this.atividadesIA = atividadesIA; @@ -37,13 +36,13 @@ public class Acompanhamento { this.riscoPedagogico = this.calcularRisco(); if (this.riscoPedagogico <= 3.3){ - return "O risco pedagógico deste aluno é BAIXO"; + return "O risco pedagogico deste aluno eh BAIXO"; } if (this.riscoPedagogico > 3.3 && this.riscoPedagogico < 6.6){ - return "O risco pedagógico deste aluno é MODERADO"; + return "O risco pedagogico deste aluno eh MODERADO"; } if (this.riscoPedagogico >= 6.6){ - return "O risco pedagógico deste aluno é ALTO"; + return "O risco pedagogico deste aluno eh ALTO"; } return Erro.E7; diff --git a/Dados.java b/Dados.java index be4aee6..f15ff5a 100644 --- a/Dados.java +++ b/Dados.java @@ -1,5 +1,3 @@ -// TODO: acentos no isVowel() - public class Dados { private Aluno[] alunos; private String chamada; @@ -14,9 +12,7 @@ public class Dados { } public String appendAluno(Aluno aluno){ - if (checkDuplicate(aluno.getNome())){ - return Erro.E3; - } + if (checkDuplicate(aluno.getNome())) {return Erro.E3;} int size = this.alunos.length; @@ -33,7 +29,6 @@ public class Dados { } public String appendAcompanhamento(Acompanhamento acomp){ - int index = findAcompanhamentoIndex(acomp.getAluno().getNome()); if (index != -1){ @@ -60,10 +55,17 @@ public class Dados { 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; @@ -94,32 +96,36 @@ public class Dados { 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; - } - - return alunos[index]; + if (index == -1) {return null;} + else {return alunos[index];} } public Acompanhamento findAcompanhamento(String nome){ int index = findAcompanhamentoIndex(nome); - if (index == -1) - return null; - - return acompanhamentos[index]; + if (index == -1) {return null;} + else {return acompanhamentos[index];} } public String listAlunos(){ - if (alunos.length == 0) - return Erro.E5; - + if (alunos.length == 0) {return Erro.E5;} + String lista = ""; for (int i = 0; i < alunos.length; i++){ lista = lista.concat(alunos[i].getNome() + "\n"); @@ -129,8 +135,7 @@ public class Dados { } public String listBolsistas(){ - if (bolsistas.length == 0) - return Erro.E5; + if (bolsistas.length == 0) {return Erro.E5;} String lista = ""; for (int i = 0; i < bolsistas.length; i++){ @@ -141,9 +146,8 @@ public class Dados { } public String riskReport(){ - if (acompanhamentos.length == 0) - return Erro.E8; - + if (acompanhamentos.length == 0) {return Erro.E8;} + String relatorio = ""; for (int i = 0; i < acompanhamentos.length; i++){ @@ -152,12 +156,10 @@ public class Dados { } return relatorio; - } public String riskReportHigh(){ - if (acompanhamentos.length == 0) - return Erro.E8; + if (acompanhamentos.length == 0) {return Erro.E8;} String relatorio = ""; @@ -167,30 +169,28 @@ public class Dados { } } - if (relatorio.length() == 0) - return Erro.E9; + 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(); - + 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; - + if (alunos.length == 0) {return Erro.E5;} + double sum = 0; for (int i = 0; i < alunos.length; i++){ @@ -198,13 +198,12 @@ public class Dados { } sum = sum / alunos.length; - return "Idade média dos alunos: " + sum; + return "Idade media dos alunos: " + sum; } public String totalVowels(){ - if (alunos.length == 0) - return Erro.E5; - + if (alunos.length == 0) {return Erro.E5;} + int sum = 0; for (int k = 0; k < alunos.length; k++){ @@ -216,38 +215,35 @@ public class Dados { } } - 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'); - + 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){ - this.chamada = Erro.E5; - } else { - 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"); - } - } + 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; - + if (chamada.length() == 0) {return Erro.E6;} + return chamada; } public double coursePercent(String curso){ + if (alunos.length == 0) {return -1;} + double num = 0; for (int i = 0; i < alunos.length; i++){ @@ -257,4 +253,43 @@ public class Dados { 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; + } } diff --git a/Erro.java b/Erro.java index 517ff02..1ad82ac 100644 --- a/Erro.java +++ b/Erro.java @@ -1,12 +1,14 @@ public class Erro { - public static final String E1 = "Erro: Opção do menu inválida."; - public static final String E2 = "Erro: Aluno não encontrado."; - public static final String E3 = "Erro: Já existe um aluno com esse nome."; - public static final String E4 = "Erro: Você inseriu numeros inválidos de atividades."; - public static final String E5 = "Erro: Não existem alunos cadastrados."; + public static final String E0 = "Erro: Um erro inesperado ocorreu."; + public static final String E1 = "Erro: Opcao do menu invalida."; + public static final String E2 = "Erro: Aluno nao encontrado."; + public static final String E3 = "Erro: Ja existe um aluno com esse nome."; + public static final String E4 = "Erro: Voce inseriu numeros invalidos de atividades."; + public static final String E5 = "Erro: Nao existem alunos cadastrados."; public static final String E6 = "Erro: Nenhuma chamada foi criada."; - public static final String E7 = "Erro: Não foi possível calcular o risco pedagógico."; - public static final String E8 = "Erro: Não existem acompanhamentos cadastrados."; - public static final String E9 = "Erro: Não existe nenhum aluno com risco alto."; - public static final String E10 = "Erro: Acompanhamento não encontrado."; -} + public static final String E7 = "Erro: Nao foi possivel calcular o risco pedagogico."; + public static final String E8 = "Erro: Nao existem acompanhamentos cadastrados."; + public static final String E9 = "Erro: Nao existe nenhum aluno com risco alto."; + public static final String E10 = "Erro: Acompanhamento nao encontrado."; + public static final String E11 = "Errro: Voce inseriu um dado invalido."; +} \ No newline at end of file diff --git a/Gerenciador.java b/Gerenciador.java index b37ca20..51e9f59 100644 --- a/Gerenciador.java +++ b/Gerenciador.java @@ -4,8 +4,6 @@ public class Gerenciador { private Dados dados; private static Scanner input = new Scanner(System.in); - - public Gerenciador(Dados dados) { this.dados = dados; } @@ -23,8 +21,8 @@ public class Gerenciador { local = input.nextLine();} while (curso.length() == 0){ - System.out.println("Insira o curso do aluno:"); - curso = input.nextLine();} + System.out.println("Insira o curso do aluno:"); + curso = input.nextLine();} while (matricula.length() == 0){ System.out.println("Insira a matricula do aluno:"); @@ -33,44 +31,46 @@ public class Gerenciador { while (idade == 0 ){ System.out.println("Insira a idade do aluno:"); idade = input.nextInt(); - input.nextLine();} //buffer clear - + input.nextLine(); //buffer clear + if (idade < 0) {return Erro.E11;}} + while (semestre == 0){ System.out.println("Insira o semestre do aluno:"); semestre = input.nextInt(); - input.nextLine();} //buffer clear - + input.nextLine(); //buffer clear + if (semestre < 0) {return Erro.E11;}} + while (ano == 0){ System.out.println("Insira o ano do aluno:"); ano = input.nextInt(); - input.nextLine();} //buffer clear + input.nextLine(); //buffer clear + if (ano < 0) {return Erro.E11;}} Aluno aluno = new Aluno(nome, idade, local, curso, matricula, semestre, ano, false); - this.dados.appendAluno(aluno); + String msg = this.dados.appendAluno(aluno); - System.out.println("O aluno é bolsista? (s/n)"); + System.out.println("O aluno eh bolsista? (s/n)"); String resposta = input.nextLine().toLowerCase(); + if (resposta.equals("s")){ return cadastrarBolsista(true, aluno); } - return "Aluno cadastrado com sucesso."; - + return msg; } public String cadastrarBolsista(boolean resposta, Aluno alunoparametro) { String projeto = "", orientador = ""; - Aluno aluno; if (resposta){ aluno = alunoparametro; - } else { - System.out.println("Insira o nome do aluno a quem você deseja cadastrar uma bolsa:"); - aluno = this.dados.findAluno(input.nextLine()); - if (aluno == null) - return Erro.E2; - } + } else { + System.out.println("Insira o nome do aluno a quem voce deseja cadastrar uma bolsa:"); + aluno = this.dados.findAluno(input.nextLine()); + + if (aluno == null) {return Erro.E2;} + } while (projeto.length() == 0){ System.out.println("Insira o nome do projeto:"); @@ -82,37 +82,41 @@ public class Gerenciador { Bolsista bolsista = new Bolsista(aluno, projeto, orientador); aluno.setBolsista(true); - return this.dados.appendBolsista(bolsista); + return this.dados.appendBolsista(bolsista); } public String registrarAcompanhamento() { - System.out.println("Insira o nome do Aluno que você deseja registrar o acompanhamento:"); + System.out.println("Insira o nome do Aluno que voce deseja registrar o acompanhamento:"); String nome = input.nextLine(); Aluno aluno = this.dados.findAluno(nome); - if (aluno == null) - return Erro.E2; - + if (aluno == null) {return Erro.E2;} + System.out.println("Insira a quantidade de atividades entregues:"); int entregues = input.nextInt(); input.nextLine(); //buffer clear + if (entregues < 0) {return Erro.E11;} System.out.println("Insira a quantidade de atividades entregues nas quais foi declarado o uso de IA:"); int ia = input.nextInt(); input.nextLine(); //buffer clear + if (ia < 0) {return Erro.E11;} System.out.println("Insira a quantidade de atividades entregues que o aluno soube explicar:"); int explicadas = input.nextInt(); input.nextLine(); //buffer clear + if (explicadas < 0) {return Erro.E11;} System.out.println("Insira a quantidade de atividades entregues que foram feitas sem ajuda:"); int semajuda = input.nextInt(); input.nextLine(); //buffer clear + if (semajuda < 0) {return Erro.E11;} System.out.println("Insira a quanntidade de atividades entregues que utilizaram estruturas não estudadas:"); int naoestudadas = input.nextInt(); input.nextLine(); //buffer clear + if (naoestudadas < 0) {return Erro.E11;} if (ia > entregues || explicadas > entregues || semajuda > entregues || naoestudadas > entregues){ return Erro.E4; @@ -147,7 +151,10 @@ public class Gerenciador { curso = input.nextLine(); } - return "O percentual de alunos matriculados nesse curso é de: " + this.dados.coursePercent(curso) + "%"; + double porcentagem = this.dados.coursePercent(curso); + if (porcentagem == -1) {return Erro.E5;} + + return "O percentual de alunos matriculados nesse curso eh de: " + porcentagem + "%"; } @@ -158,8 +165,7 @@ public class Gerenciador { public String criarChamada() { this.dados.makeChamada(); - if (chamada().equals(Erro.E5)) - return chamada(); + if (chamada().length() == 0) {return Erro.E5;} return "Chamada criada com sucesso."; } @@ -169,20 +175,16 @@ public class Gerenciador { } public String calcularRisco() { - System.out.println("Insira o nome de um aluno:"); Acompanhamento acomp = this.dados.findAcompanhamento(input.nextLine()); - if (acomp == null) - return Erro.E10; + + if (acomp == null) {return Erro.E10;} return acomp.getRiscoLabel(); - } public String relatorioRisco() { - return this.dados.riskReport(); - } public String altoRisco() { @@ -190,6 +192,6 @@ public class Gerenciador { } public String inovacao() { - return null; + return dados.rankingRisco(); } } \ No newline at end of file diff --git a/Menu.java b/Menu.java index 0b50625..2aa8e57 100644 --- a/Menu.java +++ b/Menu.java @@ -1,18 +1,18 @@ -// TODO: atualizar README.md - import java.util.Scanner; public class Menu { private static Dados dados; private static Gerenciador gerenciador; + private static Scanner input; + private static String result; public static void main(String[] args) { dados = new Dados(); gerenciador = new Gerenciador(dados); + input = new Scanner(System.in); + result = ""; - Scanner input = new Scanner(System.in); - String result = ""; while (true) { System.out.println( "\fEscolha uma opcao:" + "\n" + @@ -30,11 +30,17 @@ public class Menu { "12 - Calcular nivel de risco pedagogico" + "\n" + "13 - Relatorio geral de risco pedagogico" + "\n" + "14 - Alunos em alto risco" + "\n" + - "15 - (Colocar inovacao aqui)" + "\n" + + "15 - Ranking e media de risco" + "\n" + "16 - Encerrar o programa\n\n" + + result); - result = prompt(input.nextInt()); + try { + result = prompt(input.nextInt()); + } catch(Exception e) { + System.out.println("\f"+ Erro.E0); + System.exit(-1); + } } } @@ -68,12 +74,12 @@ public class Menu { return gerenciador.relatorioRisco(); case 14: return gerenciador.altoRisco(); - // TODO: IMPLEMENTAR INOVAÇÃO case 15: return gerenciador.inovacao(); case 16: System.exit(0); + default: + return Erro.E1; } - return Erro.E1; } -} +} \ No newline at end of file