Validação de entradas

This commit is contained in:
caioperschespindola 2026-06-17 18:11:52 -03:00
parent 4fa2f47d03
commit 823413293f
5 changed files with 239 additions and 139 deletions

View file

@ -35,12 +35,15 @@ public class Acompanhamento {
public String getRiscoLabel() {
this.calcularRisco();
if (riscoPedagogico <= 3.3) {
return "BAIXO";
return "O risco pedagógico deste aluno é BAIXO";
}
if (riscoPedagogico > 3.3 && riscoPedagogico < 6.6) {
return "MODERADO";
return "O risco pedagógico deste aluno é MODERADO";
}
return "ALTO";
if (riscoPedagogico >= 6.6) {
return "O risco pedagógico deste aluno é ALTO";
}
return Erro.E7;
}
public Aluno getAluno() {
@ -55,31 +58,35 @@ public class Acompanhamento {
this.atividadesEntregues = atividadesEntregues;
}
public void setAtividadesIA(int atividadesIA) {
public boolean setAtividadesIA(int atividadesIA) {
if (atividadesIA > atividadesEntregues) {
System.out.println("AVISO: Você escolheu um número maior do que o total de atividades entregues.");
return true;
}
this.atividadesIA = atividadesIA;
return false;
}
public void setAtividadesExplicadas(int atividadesExplicadas) {
public boolean setAtividadesExplicadas(int atividadesExplicadas) {
if (atividadesExplicadas > atividadesEntregues) {
System.out.println("AVISO: Você escolheu um número maior do que o total de atividades entregues.");
return true;
}
this.atividadesExplicadas = atividadesExplicadas;
return false;
}
public void setAtividadesSemAjuda(int atividadesSemAjuda) {
public boolean setAtividadesSemAjuda(int atividadesSemAjuda) {
if (atividadesSemAjuda > atividadesEntregues) {
System.out.println("AVISO: Você escolheu um número maior do que o total de atividades entregues.");
return true;
}
this.atividadesSemAjuda = atividadesSemAjuda;
return false;
}
public void setAtividadesNaoEstudadas(int atividadesNaoEstudadas) {
public boolean setAtividadesNaoEstudadas(int atividadesNaoEstudadas) {
if (atividadesNaoEstudadas > atividadesEntregues) {
System.out.println("AVISO: Você escolheu um número maior do que o total de atividades entregues.");
return true;
}
this.atividadesNaoEstudadas = atividadesNaoEstudadas;
return false;
}
}

View file

@ -13,7 +13,11 @@ public class Dados {
bolsistas = new Bolsista[]{};
}
public void appendAluno(Aluno aluno){
public String appendAluno(Aluno aluno){
if (checkDuplicate(aluno.getNome())){
return Erro.E3;
}
int size = this.alunos.length;
Aluno[] novoArray = new Aluno[size + 1];
@ -24,9 +28,15 @@ public class Dados {
novoArray[size] = aluno;
this.alunos = novoArray;
return "Aluno cadastrado com sucesso.";
}
public void appendAcompanhamento(Acompanhamento acomp){
public String appendAcompanhamento(Acompanhamento acomp){
if (checkDuplicate(acomp.getAluno().getNome())){
return Erro.E3;
}
int size = this.acompanhamentos.length;
Acompanhamento[] novoArray = new Acompanhamento[size + 1];
@ -37,9 +47,15 @@ public class Dados {
novoArray[size] = acomp;
this.acompanhamentos = novoArray;
return "Acompanhamento cadastrado com sucesso.";
}
public void appendBolsista(Bolsista bolsista){
public String appendBolsista(Bolsista bolsista){
if (checkDuplicate(bolsista.getNome())){
return Erro.E3;
}
int size = this.bolsistas.length;
Bolsista[] novoArray = new Bolsista[size + 1];
@ -51,7 +67,19 @@ public class Dados {
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){
@ -63,7 +91,13 @@ public class Dados {
}
public Aluno findAluno(String nome){
return alunos[findAlunoIndex(nome)];
int index = findAlunoIndex(nome);
if (index == -1){
return null;
}
return alunos[index];
}
public Acompanhamento findAcompanhamento(String nome){
@ -76,20 +110,33 @@ public class Dados {
return null;
}
public void listAlunos(){
public String listAlunos(){
if (alunos.length == 0)
return Erro.E5;
String lista = "";
for (int i = 0; i < alunos.length; i++){
System.out.println(alunos[i].getNome());
lista = lista.concat(alunos[i].getNome() + "\n");
}
return lista;
}
public void listBolsistas(){
for (int i = 0; i < alunos.length; i++){
if (alunos[i].getBolsista())
System.out.println(alunos[i].getNome());
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 void riskReport(){
public String riskReport(){
if (acompanhamentos.length == 0)
return Erro.E8;
String relatorio = "";
@ -98,11 +145,13 @@ public class Dados {
relatorio = relatorio.concat(acompanhamentos[i].getRiscoLabel() + "\n");
}
System.out.println(relatorio);
return relatorio;
}
public void riskReportHigh(){
public String riskReportHigh(){
if (acompanhamentos.length == 0)
return Erro.E8;
String relatorio = "";
@ -112,19 +161,28 @@ public class Dados {
}
}
System.out.println(relatorio);
if (relatorio.length() == 0)
return Erro.E9;
return relatorio;
}
public void maiorNome(){
public String maiorNome(){
if (alunos.length == 0)
return Erro.E5;
int k = 0;
for (int i = 1; i < alunos.length; i++){
if (alunos[i].getNome().length() > alunos[k].getNome().length())
k = i;
}
System.out.println(alunos[k].getNome());
return alunos[k].getNome();
}
public double averageAge(){
public String averageAge(){
if (alunos.length == 0)
return Erro.E5;
double sum = 0;
for (int i = 0; i < alunos.length; i++){
@ -132,10 +190,12 @@ public class Dados {
}
sum = sum / alunos.length;
return sum;
return "Idade média dos alunos: " + sum;
}
public int totalVowels(){
public String totalVowels(){
if (alunos.length == 0)
return Erro.E5;
int sum = 0;
@ -149,7 +209,7 @@ public class Dados {
}
return sum;
return "Numero total de vogais:" + sum;
}
private boolean isVowel(char a){
@ -160,15 +220,23 @@ public class Dados {
public void makeChamada(){
this.chamada = "";
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){
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");
}
}
}
public void printChamada(){
System.out.println(chamada);
public String printChamada(){
if (chamada.length() == 0)
return Erro.E6;
return chamada;
}
public double coursePercent(String curso){

11
Erro.java Normal file
View file

@ -0,0 +1,11 @@
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ê escolheu um número maior do que o total de atividades entregues.";
public static final String E5 = "Erro: Não 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.";
}

View file

@ -1,4 +1,4 @@
// TODO: validação nos metodos com entrada
// TODO: buffer clears
import java.util.Scanner;
@ -6,38 +6,45 @@ public class Gerenciador {
private Dados dados;
private static Scanner input = new Scanner(System.in);
String nome, local, curso, matricula, projeto, orientador;
int idade, semestre, ano;
boolean bolsista;
String nome, local, curso, matricula, projeto, orientador = "";
int idade, semestre, ano = 0;
boolean bolsista = false;
public Gerenciador(Dados dados) {
this.dados = dados;
}
public void cadastrarAluno() {
System.out.println("Insira o nome do aluno:");
nome = input.nextLine();
public String cadastrarAluno() {
while (nome.length() == 0){
System.out.println("Insira o nome do aluno:");
nome = input.nextLine();}
System.out.println("Insira o local de nascimento do aluno:");
local = input.nextLine();
while (local.length() == 0){
System.out.println("Insira o local de nascimento do aluno:");
local = input.nextLine();}
while (curso.length() == 0){
System.out.println("Insira o curso do aluno:");
curso = input.nextLine();
curso = input.nextLine();}
System.out.println("Insira a matricula do aluno:");
matricula = input.nextLine();
while (matricula.length() == 0){
System.out.println("Insira a matricula do aluno:");
matricula = input.nextLine();}
System.out.println("Insira a idade do aluno:");
idade = input.nextInt();
input.nextLine(); //buffer clear
while (idade == 0 ){
System.out.println("Insira a idade do aluno:");
idade = input.nextInt();
input.nextLine();} //buffer clear
System.out.println("Insira o semestre do aluno:");
semestre = input.nextInt();
input.nextLine(); //buffer clear
while (semestre == 0){
System.out.println("Insira o semestre do aluno:");
semestre = input.nextInt();
input.nextLine();} //buffer clear
System.out.println("Insira o ano do aluno:");
ano = input.nextInt();
input.nextLine(); //buffer clear
while (ano == 0){
System.out.println("Insira o ano do aluno:");
ano = input.nextInt();
input.nextLine();} //buffer clear
Aluno aluno = new Aluno(nome, idade, local, curso, matricula, semestre, ano, false);
this.dados.appendAluno(aluno);
@ -45,12 +52,14 @@ public class Gerenciador {
System.out.println("O aluno é bolsista? (s/n)");
String resposta = input.nextLine().toLowerCase();
if (resposta.equals("s")){
cadastrarBolsista(true, aluno);
return cadastrarBolsista(true, aluno);
}
return "Aluno cadastrado com sucesso.";
}
public void cadastrarBolsista(boolean resposta, Aluno alunoparametro) {
public String cadastrarBolsista(boolean resposta, Aluno alunoparametro) {
Aluno aluno;
@ -59,25 +68,32 @@ public class Gerenciador {
} 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;
}
System.out.println("Insira o nome do projeto:");
String projeto = input.nextLine();
while (projeto.length() == 0){
System.out.println("Insira o nome do projeto:");
String projeto = input.nextLine();}
System.out.println("Insira o nome do orientador:");
String orientador = input.nextLine();
while (orientador.length() == 0){
System.out.println("Insira o nome do orientador:");
String orientador = input.nextLine();}
Bolsista bolsista = new Bolsista(aluno, projeto, orientador);
aluno.setBolsista(true);
this.dados.appendBolsista(bolsista);
return this.dados.appendBolsista(bolsista);
}
public void registrarAcompanhamento() {
public String registrarAcompanhamento() {
System.out.println("Insira o nome do Aluno que você deseja registrar o acompanhamento:");
String nome = input.nextLine();
Aluno aluno = this.dados.findAluno(nome);
if (aluno == null)
return Erro.E2;
Acompanhamento acomp = new Acompanhamento(aluno, 0, 0, 0, 0, 0);
System.out.println("Insira a quantidade de atividades entregues:");
@ -88,84 +104,102 @@ public class Gerenciador {
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
acomp.setAtividadesIA(ia);
if (acomp.setAtividadesIA(ia))
return Erro.E4;
System.out.println("Insira a quantidade de atividades entregues que o aluno soube explicar:");
int explicadas = input.nextInt();
input.nextLine(); //buffer clear
acomp.setAtividadesExplicadas(explicadas);
if (acomp.setAtividadesExplicadas(explicadas))
return Erro.E4;
System.out.println("Insira a quantidade de atividades entregues que foram feitas sem ajuda:");
int semajuda = input.nextInt();
input.nextLine(); //buffer clear
acomp.setAtividadesSemAjuda(semajuda);
if (acomp.setAtividadesSemAjuda(semajuda))
return Erro.E4;
System.out.println("Insira a quanntidade de atividades entregues que utilizarão estruturas não estudadas:");
int naoestudadas = input.nextInt();
input.nextLine(); //buffer clear
acomp.setAtividadesNaoEstudadas(naoestudadas);
if (acomp.setAtividadesNaoEstudadas(naoestudadas))
return Erro.E4;
if (ia + explicadas + semajuda + naoestudadas > entregues)
return Erro.E4;
this.dados.appendAcompanhamento(acomp);
return "Acompanhamento registrado com sucesso.";
}
public void listarAlunos() {
this.dados.listAlunos();
public String listarAlunos() {
return this.dados.listAlunos();
}
public void listarBolsistas() {
this.dados.listBolsistas();
public String listarBolsistas() {
return this.dados.listBolsistas();
}
public void maiorNome(){
this.dados.maiorNome();
public String maiorNome(){
return this.dados.maiorNome();
}
public void vogaisNomes(){
System.out.println("Numero total de vogais: " + this.dados.totalVowels());
public String vogaisNomes(){
return this.dados.totalVowels();
}
public void percentualAlunos() {
public String percentualAlunos() {
String curso = "";
System.out.println("Insira um curso:");
String curso = input.nextLine();
while (curso.length() == 0){
System.out.println("Insira um curso:");
curso = input.nextLine();
}
System.out.print("O percentual de alunos matriculados nesse curso é de: " + this.dados.coursePercent(curso) + "%\n");
return "O percentual de alunos matriculados nesse curso é de: " + this.dados.coursePercent(curso) + "%";
}
public void mediaIdadeAlunos() {
System.out.println("Idade média dos alunos: " + this.dados.averageAge());
public String mediaIdadeAlunos() {
return this.dados.averageAge();
}
public void criarChamada() {
public String criarChamada() {
this.dados.makeChamada();
if (chamada().equals(Erro.E5))
return chamada();
return "Chamada criada com sucesso.";
}
public void chamada() {
this.dados.printChamada();
public String chamada() {
return this.dados.printChamada();
}
public void calcularRisco() {
public String calcularRisco() {
System.out.println("Insira o nome de um aluno:");
Acompanhamento acomp = this.dados.findAcompanhamento(input.nextLine());
if (acomp == null)
return Erro.E2;
System.out.println("O risco pedagógico deste aluno é " + acomp.getRiscoLabel());
return acomp.getRiscoLabel();
}
public void relatorioRisco() {
public String relatorioRisco() {
this.dados.riskReport();
return this.dados.riskReport();
}
public void altoRisco() {
this.dados.riskReportHigh();
public String altoRisco() {
return this.dados.riskReportHigh();
}
public void inovacao() {
public String inovacao() {
return null;
}
}

View file

@ -12,9 +12,10 @@ public class Menu {
gerenciador = new Gerenciador(dados);
Scanner input = new Scanner(System.in);
String result = null;
while (true) {
System.out.println(
"Escolha uma opcao:" + "\n" +
"\fEscolha uma opcao:" + "\n" +
"1 - Cadastro de Aluno" + "\n" +
"2 - Cadastro de Bolsisa " + "\n" +
"3 - Regisrar dados de acompanhamento" + "\n" +
@ -30,70 +31,49 @@ public class Menu {
"13 - Relatorio geral de risco pedagogico" + "\n" +
"14 - Alunos em alto risco" + "\n" +
"15 - (Colocar inovacao aqui)" + "\n" +
"16 - Encerrar o programa");
prompt(input.nextInt());
"16 - Encerrar o programa\n\n" +
result);
result = prompt(input.nextInt());
}
}
public static void prompt(int option) {
public static String prompt(int option) {
switch (option) {
// passar parametros
// String nome,int idade,String local, String curso, String matricula,int
// semestre,int ano ,bool bolsista, String projeto, String orientador
case 1:
gerenciador.cadastrarAluno(); // completar com o nome correto das gerenciadores
break;
return gerenciador.cadastrarAluno();
case 2:
gerenciador.cadastrarBolsista(false, null);
break;
return gerenciador.cadastrarBolsista(false, null);
case 3:
gerenciador.registrarAcompanhamento();
break;
return gerenciador.registrarAcompanhamento();
case 4:
gerenciador.listarAlunos();
break;
return gerenciador.listarAlunos();
case 5:
gerenciador.listarBolsistas();
break;
return gerenciador.listarBolsistas();
case 6:
gerenciador.maiorNome();
break;
return gerenciador.maiorNome();
case 7:
gerenciador.vogaisNomes();
break;
return gerenciador.vogaisNomes();
case 8:
gerenciador.percentualAlunos();
break;
return gerenciador.percentualAlunos();
case 9:
gerenciador.mediaIdadeAlunos();
break;
return gerenciador.mediaIdadeAlunos();
case 10:
gerenciador.criarChamada();
break;
return gerenciador.criarChamada();
case 11:
gerenciador.chamada();
break;
return gerenciador.chamada();
case 12:
gerenciador.calcularRisco();
break;
return gerenciador.calcularRisco();
case 13:
gerenciador.relatorioRisco();
break;
return gerenciador.relatorioRisco();
case 14:
gerenciador.altoRisco();
break;
return gerenciador.altoRisco();
// TODO: IMPLEMENTAR INOVAÇÃO
case 15:
gerenciador.inovacao();
break;
return gerenciador.inovacao();
case 16:
System.exit(0);
default:
System.out.println("Opção inválida");
}
return Erro.E1;
}
}