import [Link].
*;
import [Link].*;
public class Main {
static class Aluno {
String nome;
String matricula;
String professor;
double n1;
double n2Prova;
double n2Trabalho;
double n3;
double media;
String status;
public Aluno(String nome, String matricula, String professor) {
[Link] = nome;
[Link] = matricula;
[Link] = professor;
this.n1 = 0;
this.n2Prova = 0;
this.n2Trabalho = 0;
this.n3 = -1;
[Link] = 0;
[Link] = "Notas não lançadas";
}
public void calcularMedia() {
double n2 = (n2Prova + n2Trabalho) / 2;
[Link] = (n1 + n2) / 2;
if (media >= 6) {
status = "Aprovado";
} else if (media >= 4) {
status = "Prova Final";
} else {
status = "Reprovado";
}
}
public void calcularNotaFinalComN3() {
if (n3 >= 0) {
double finalMedia = (media + n3) / 2;
if (finalMedia >= 5) {
status = "Aprovado na N3";
} else {
status = "Reprovado na N3";
}
}
}
@Override
public String toString() {
return "Nome: " + nome +
"\nMatrícula: " + matricula +
"\nProfessor: " + professor +
"\nN1: " + n1 +
"\nN2 Prova: " + n2Prova +
"\nN2 Trabalho: " + n2Trabalho +
"\nN3: " + (n3 >= 0 ? n3 : "Não lançada") +
"\nMédia: " + [Link]("%.2f", media) +
"\nStatus: " + status + "\n";
}
}
static ArrayList<Aluno> alunos = new ArrayList<>();
static Scanner scanner = new Scanner([Link]);
public static void main(String[] args) {
int opcao;
do {
[Link]("\n===== MENU =====");
[Link]("1. Cadastrar aluno");
[Link]("2. Lançar notas");
[Link]("3. Lançar N3");
[Link]("4. Mostrar todos os alunos");
[Link]("5. Sair");
[Link]("6. Mostrar alunos reprovados");
[Link]("7. Salvar em arquivo");
[Link]("8. Carregar de arquivo");
[Link]("Escolha uma opção: ");
opcao = [Link]();
[Link]();
switch (opcao) {
case 1 -> cadastrarAluno();
case 2 -> lancarNotas();
case 3 -> lancarN3();
case 4 -> mostrarAlunos();
case 5 -> [Link]("Saindo do programa...");
case 6 -> mostrarReprovados();
case 7 -> salvarEmArquivo();
case 8 -> carregarDeArquivo();
default -> [Link]("Opção inválida!");
}
} while (opcao != 5);
}
static void cadastrarAluno() {
[Link]("Nome do aluno: ");
String nome = [Link]();
[Link]("Matrícula: ");
String matricula = [Link]();
[Link]("Nome do professor: ");
String professor = [Link]();
[Link](new Aluno(nome, matricula, professor));
[Link]("Aluno cadastrado com sucesso!");
}
static void lancarNotas() {
[Link]("Informe a matrícula do aluno: ");
String matricula = [Link]();
Aluno aluno = buscarAluno(matricula);
if (aluno != null) {
aluno.n1 = lerNotaValida("Nota N1: ");
aluno.n2Prova = lerNotaValida("Nota da prova N2: ");
aluno.n2Trabalho = lerNotaValida("Nota do trabalho N2: ");
[Link]();
[Link]("Notas lançadas e média calculada!");
} else {
[Link]("Aluno não encontrado.");
}
}
static void lancarN3() {
[Link]("Informe a matrícula do aluno para N3: ");
String matricula = [Link]();
Aluno aluno = buscarAluno(matricula);
if (aluno != null && [Link]("Prova Final")) {
aluno.n3 = lerNotaValida("Nota da N3: ");
aluno.calcularNotaFinalComN3();
[Link]("Nota N3 lançada e status atualizado!");
} else {
[Link]("Aluno não encontrado ou não precisa de N3.");
}
}
static void mostrarAlunos() {
if ([Link]()) {
[Link]("Nenhum aluno cadastrado.");
return;
}
for (Aluno aluno : alunos) {
[Link]("-------------------------");
[Link](aluno);
}
}
static void mostrarReprovados() {
boolean encontrou = false;
for (Aluno aluno : alunos) {
if ([Link]().contains("reprovado")) {
[Link]("-------------------------");
[Link](aluno);
encontrou = true;
}
}
if (!encontrou) {
[Link]("Nenhum aluno reprovado.");
}
}
static double lerNotaValida(String mensagem) {
double nota;
do {
[Link](mensagem);
nota = [Link]();
if (nota < 0 || nota > 10) {
[Link]("Nota inválida! Digite um valor entre 0 e 10.");
}
} while (nota < 0 || nota > 10);
return nota;
}
static Aluno buscarAluno(String matricula) {
for (Aluno aluno : alunos) {
if ([Link](matricula)) {
return aluno;
}
}
return null;
}
static void salvarEmArquivo() {
try (PrintWriter writer = new PrintWriter(new FileWriter("[Link]"))) {
for (Aluno aluno : alunos) {
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
[Link](aluno.n1);
[Link](aluno.n2Prova);
[Link](aluno.n2Trabalho);
[Link](aluno.n3);
[Link]([Link]);
[Link]([Link]);
}
[Link]("Dados salvos com sucesso!");
} catch (IOException e) {
[Link]("Erro ao salvar: " + [Link]());
}
}
static void carregarDeArquivo() {
try (BufferedReader reader = new BufferedReader(new
FileReader("[Link]"))) {
[Link]();
String linha;
while ((linha = [Link]()) != null) {
String nome = linha;
String matricula = [Link]();
String professor = [Link]();
double n1 = [Link]([Link]());
double n2Prova = [Link]([Link]());
double n2Trabalho = [Link]([Link]());
double n3 = [Link]([Link]());
double media = [Link]([Link]());
String status = [Link]();
Aluno aluno = new Aluno(nome, matricula, professor);
aluno.n1 = n1;
aluno.n2Prova = n2Prova;
aluno.n2Trabalho = n2Trabalho;
aluno.n3 = n3;
[Link] = media;
[Link] = status;
[Link](aluno);
}
[Link]("Dados carregados com sucesso!");
} catch (IOException e) {
[Link]("Erro ao carregar: " + [Link]());
}
}
}