import java.io.*;
import java.util.*;

// Classe base
abstract class Pessoa {
    private String nome;
    private int idade;
    
    public Pessoa(String nome, int idade) {
        this.nome = nome;
        this.idade = idade;
    }
    
    public String getNome() {
        return nome;
    }
    
    public int getIdade() {
        return idade;
    }
    
    public abstract String getDados();
}

// Subclasse
class Aluno extends Pessoa {
    private String curso;
    private double[] notas;
    
    public Aluno(String nome, int idade, String curso, int numDisciplinas) {
        super(nome, idade);
        this.curso = curso;
        this.notas = new double[numDisciplinas];
    }
    
    public void setNota(int index, double nota) {
        this.notas[index] = nota;
    }
    
    public double[] getNotas() {
        return notas;
    }
    
    @Override
    public String getDados() {
        StringBuilder dados = new StringBuilder(getNome() + "," + getIdade() + ",Aluno," + curso);
        for (double nota : notas) {
            dados.append(",").append(nota);
        }
        return dados.toString();
    }
}

public class SistemaArquivo {
    private static final String ARQUIVO = "dados.txt";

    public static int menu() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("\n*** Menu ***");
        System.out.println("1. Criar/Abrir arquivo");
        System.out.println("2. Inserir Dados");
        System.out.println("3. Excluir Dados");
        System.out.println("4. Pesquisar");
        System.out.println("5. Exibir Lista");
        System.out.println("6. Sair");
        System.out.print("Escolha uma opção: ");
        return scanner.nextInt();
    }

    private static void criarAbrirArquivo() {
        try {
            File arquivo = new File(ARQUIVO);
            if (arquivo.createNewFile()) {
                System.out.println("Arquivo criado com sucesso!");
            } else {
                System.out.println("Arquivo já existe.");
            }
        } catch (IOException e) {
            System.out.println("Erro ao criar/abrir o arquivo.");
        }
    }

    private static void inserirDados(Scanner scanner) {
        System.out.print("Digite o nome: ");
        scanner.nextLine(); 
        String nome = scanner.nextLine();
        System.out.print("Digite a idade: ");
        int idade = scanner.nextInt();
        System.out.print("Digite o curso: ");
        scanner.nextLine(); 
        String curso = scanner.nextLine();
        
        System.out.print("Digite o número de disciplinas: ");
        int numDisciplinas = scanner.nextInt();
        
        Aluno aluno = new Aluno(nome, idade, curso, numDisciplinas);
        for (int i = 0; i < numDisciplinas; i++) {
            System.out.print("Digite a nota da disciplina " + (i + 1) + ": ");
            aluno.setNota(i, scanner.nextDouble());
        }

        try (PrintWriter out = new PrintWriter(new FileWriter(ARQUIVO, true))) {
            out.println(aluno.getDados());
            System.out.println("Dados inseridos com sucesso!");
        } catch (IOException e) {
            System.out.println("Erro ao inserir dados.");
        }
    }

    private static void excluirDados(Scanner scanner) {
        System.out.print("Digite o nome do aluno a ser excluído: ");
        scanner.nextLine();
        String nome = scanner.nextLine();
        List<String> linhas = new ArrayList<>();
        boolean encontrado = false;

        try (BufferedReader br = new BufferedReader(new FileReader(ARQUIVO))) {
            String linha;
            while ((linha = br.readLine()) != null) {
                if (!linha.startsWith(nome + ",")) {
                    linhas.add(linha);
                } else {
                    encontrado = true;
                }
            }
        } catch (IOException e) {
            System.out.println("Erro ao ler o arquivo.");
            return;
        }

        if (encontrado) {
            try (PrintWriter out = new PrintWriter(new FileWriter(ARQUIVO))) {
                for (String linha : linhas) {
                    out.println(linha);
                }
                System.out.println("Aluno excluído com sucesso!");
            } catch (IOException e) {
                System.out.println("Erro ao excluir os dados.");
            }
        } else {
            System.out.println("Aluno não encontrado.");
        }
    }

    private static void pesquisarDados(Scanner scanner) {
        System.out.print("Digite o nome do aluno a ser pesquisado: ");
        scanner.nextLine();
        String nome = scanner.nextLine();
        boolean encontrado = false;

        try (BufferedReader br = new BufferedReader(new FileReader(ARQUIVO))) {
            String linha;
            while ((linha = br.readLine()) != null) {
                if (linha.startsWith(nome + ",")) {
                    System.out.println("Registro encontrado: " + linha);
                    encontrado = true;
                    break;
                }
            }
        } catch (IOException e) {
            System.out.println("Erro ao ler o arquivo.");
        }

        if (!encontrado) {
            System.out.println("Aluno não encontrado.");
        }
    }

    private static void exibirLista() {
        System.out.println("\nLista de Registros:");
        try (BufferedReader br = new BufferedReader(new FileReader(ARQUIVO))) {
            String linha;
            while ((linha = br.readLine()) != null) {
                System.out.println(linha);
            }
        } catch (IOException e) {
            System.out.println("Erro ao ler o arquivo.");
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int opcao;
        do {
            opcao = menu();
            switch (opcao) {
                case 1 -> criarAbrirArquivo();
                case 2 -> inserirDados(scanner);
                case 3 -> excluirDados(scanner);
                case 4 -> pesquisarDados(scanner);
                case 5 -> exibirLista();
                case 6 -> System.out.println("Saindo...");
                default -> System.out.println("Opção inválida!");
            }
        } while (opcao != 6);
        scanner.close();
    }
}

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: