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 Aluno
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();
}
}
// Subclasse Professor
class Professor extends Pessoa {
private String disciplina;
private double salario;
public Professor(String nome, int idade, String disciplina, double salario) {
super(nome, idade);
this.disciplina = disciplina;
this.salario = salario;
}
public String getDisciplina() {
return disciplina;
}
public double getSalario() {
return salario;
}
@Override
public String getDados() {
return getNome() + "," + getIdade() + ",Professor," + disciplina + "," + salario;
}
}
// Subclasse Funcionário
class Funcionario extends Pessoa {
private String setor;
private double salario;
public Funcionario(String nome, int idade, String setor, double salario) {
super(nome, idade);
this.setor = setor;
this.salario = salario;
}
public String getSetor() {
return setor;
}
public double getSalario() {
return salario;
}
@Override
public String getDados() {
return getNome() + "," + getIdade() + ",Funcionario," + setor + "," + salario;
}
}
// Subclasse Visitante
class Visitante extends Pessoa {
private String motivoVisita;
private String departamentoVisitado;
public Visitante(String nome, int idade, String motivoVisita, String departamentoVisitado) {
super(nome, idade);
this.motivoVisita = motivoVisita;
this.departamentoVisitado = departamentoVisitado;
}
public String getMotivoVisita() {
return motivoVisita;
}
public String getDepartamentoVisitado() {
return departamentoVisitado;
}
@Override
public String getDados() {
return getNome() + "," + getIdade() + ",Visitante," + motivoVisita + "," + departamentoVisitado;
}
}
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();
// Escolher tipo de pessoa
System.out.println("Escolha o tipo de pessoa: 1-Aluno, 2-Professor, 3-Funcionário, 4-Visitante");
int tipoPessoa = scanner.nextInt();
scanner.nextLine(); // Consumir a quebra de linha
Pessoa pessoa = null;
if (tipoPessoa == 1) {
System.out.print("Digite o curso: ");
String curso = scanner.nextLine();
System.out.print("Digite o número de disciplinas: ");
int numDisciplinas = scanner.nextInt();
pessoa = new Aluno(nome, idade, curso, numDisciplinas);
for (int i = 0; i < numDisciplinas; i++) {
System.out.print("Digite a nota da disciplina " + (i + 1) + ": ");
((Aluno) pessoa).setNota(i, scanner.nextDouble());
}
} else if (tipoPessoa == 2) {
System.out.print("Digite a disciplina: ");
String disciplina = scanner.nextLine();
System.out.print("Digite o salário: ");
double salario = scanner.nextDouble();
pessoa = new Professor(nome, idade, disciplina, salario);
} else if (tipoPessoa == 3) {
System.out.print("Digite o setor: ");
String setor = scanner.nextLine();
System.out.print("Digite o salário: ");
double salario = scanner.nextDouble();
pessoa = new Funcionario(nome, idade, setor, salario);
} else if (tipoPessoa == 4) {
System.out.print("Digite o motivo da visita: ");
String motivoVisita = scanner.nextLine();
System.out.print("Digite o departamento visitado: ");
String departamentoVisitado = scanner.nextLine();
pessoa = new Visitante(nome, idade, motivoVisita, departamentoVisitado);
}
try (PrintWriter out = new PrintWriter(new FileWriter(ARQUIVO, true))) {
out.println(pessoa.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 da pessoa a ser excluída: ");
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("Pessoa excluída com sucesso!");
} catch (IOException e) {
System.out.println("Erro ao excluir os dados.");
}
} else {
System.out.println("Pessoa não encontrada.");
}
}
private static void pesquisarDados(Scanner scanner) {
System.out.print("Digite o nome da pessoa a ser pesquisada: ");
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("Pessoa não encontrada.");
}
}
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();
}
}
To embed this program on your website, copy the following code and paste it into your website's HTML: