From 20b3e054418dadb09ff28993cff38ca4d01f99c5 Mon Sep 17 00:00:00 2001 From: Layza Emmanuelle Date: Mon, 14 Jul 2025 12:46:29 -0300 Subject: [PATCH 1/2] projeto restaurante --- avaliacoes/restaurante/pom.xml | 16 ++ .../src/main/java/com/restaurante/Main.java | 196 ++++++++++++++++++ .../cliente/CreateClienteController.java | 58 ++++++ .../cliente/DeleteClienteController.java | 20 ++ .../cliente/SearchClienteController.java | 15 ++ .../endereco/CreateEnderecoController.java | 24 +++ .../endereco/DeleteEnderecoController.java | 23 ++ .../endereco/SearchEnderecoController.java | 27 +++ .../CreateFuncionarioController.java | 16 ++ .../DeleteFuncionarioController.java | 19 ++ .../SearchFuncionarioController.java | 19 ++ .../mesa/CreateMesaController.java | 27 +++ .../mesa/DeleteMesaController.java | 24 +++ .../mesa/SearchMesaController.java | 23 ++ .../produto/CreateProdutoController.java | 26 +++ .../produto/DeleteProdutoController.java | 23 ++ .../produto/SearchProdutoController.java | 24 +++ .../java/com/restaurante/dao/ClienteDAO.java | 96 +++++++++ .../java/com/restaurante/dao/EnderecoDAO.java | 65 ++++++ .../com/restaurante/dao/FuncionarioDAO.java | 107 ++++++++++ .../java/com/restaurante/dao/MesaDAO.java | 48 +++++ .../java/com/restaurante/dao/ProdutoDAO.java | 50 +++++ .../java/com/restaurante/model/Cliente.java | 18 ++ .../java/com/restaurante/model/Endereco.java | 42 ++++ .../com/restaurante/model/Funcionario.java | 40 ++++ .../main/java/com/restaurante/model/Mesa.java | 27 +++ .../java/com/restaurante/model/Pessoa.java | 32 +++ .../java/com/restaurante/model/Produto.java | 55 +++++ .../com/restaurante/view/ClienteView.java | 41 ++++ .../com/restaurante/view/EnderecoView.java | 50 +++++ .../com/restaurante/view/FuncionarioView.java | 68 ++++++ .../java/com/restaurante/view/MesaView.java | 33 +++ .../com/restaurante/view/ProdutoView.java | 45 ++++ 33 files changed, 1397 insertions(+) create mode 100644 avaliacoes/restaurante/pom.xml create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/Main.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/CreateClienteController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/DeleteClienteController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/SearchClienteController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/CreateEnderecoController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/DeleteEnderecoController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/SearchEnderecoController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/CreateFuncionarioController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/DeleteFuncionarioController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/SearchFuncionarioController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/CreateMesaController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/DeleteMesaController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/SearchMesaController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/CreateProdutoController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/DeleteProdutoController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/SearchProdutoController.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/dao/ClienteDAO.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/dao/EnderecoDAO.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/dao/FuncionarioDAO.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/dao/MesaDAO.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/dao/ProdutoDAO.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/model/Cliente.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/model/Endereco.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/model/Funcionario.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/model/Mesa.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/model/Pessoa.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/model/Produto.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/view/ClienteView.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/view/EnderecoView.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/view/FuncionarioView.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/view/MesaView.java create mode 100644 avaliacoes/restaurante/src/main/java/com/restaurante/view/ProdutoView.java diff --git a/avaliacoes/restaurante/pom.xml b/avaliacoes/restaurante/pom.xml new file mode 100644 index 0000000..357b724 --- /dev/null +++ b/avaliacoes/restaurante/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + com.restaurante + restaurante + 1.0-SNAPSHOT + + + 17 + 17 + + + \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/Main.java b/avaliacoes/restaurante/src/main/java/com/restaurante/Main.java new file mode 100644 index 0000000..325b201 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/Main.java @@ -0,0 +1,196 @@ +package com.restaurante; + +import com.restaurante.controllers.cliente.*; +import com.restaurante.controllers.funcionario.*; +import com.restaurante.controllers.mesa.*; +import com.restaurante.controllers.produto.*; +import com.restaurante.controllers.endereco.*; +import com.restaurante.model.Endereco; + +import java.util.List; +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + // Instancia controllers + CreateClienteController createCliente = new CreateClienteController(); + DeleteClienteController deleteCliente = new DeleteClienteController(); + SearchClienteController searchCliente = new SearchClienteController(); + + CreateFuncionarioController createFuncionario = new CreateFuncionarioController(); + DeleteFuncionarioController deleteFuncionario = new DeleteFuncionarioController(); + SearchFuncionarioController searchFuncionario = new SearchFuncionarioController(); + + CreateMesaController createMesa = new CreateMesaController(); + DeleteMesaController deleteMesa = new DeleteMesaController(); + SearchMesaController searchMesa = new SearchMesaController(); + + CreateProdutoController createProduto = new CreateProdutoController(); + DeleteProdutoController deleteProduto = new DeleteProdutoController(); + SearchProdutoController searchProduto = new SearchProdutoController(); + + // Controllers endereço + CreateEnderecoController createEndereco = new CreateEnderecoController(); + DeleteEnderecoController deleteEndereco = new DeleteEnderecoController(); + SearchEnderecoController searchEndereco = new SearchEnderecoController(); + + // Carrega lista de endereços do arquivo para usar em memória (lista compartilhada) + List listaEnderecos = createEndereco.listarEnderecos(); + + int opcao = -1; + while (opcao != 0) { + System.out.println("\n--- MENU PRINCIPAL ---"); + System.out.println("1. Cliente"); + System.out.println("2. Funcionário"); + System.out.println("3. Mesa"); + System.out.println("4. Produto"); + System.out.println("5. Endereço"); + System.out.println("0. Sair"); + System.out.print("Escolha uma opção: "); + opcao = Integer.parseInt(scanner.nextLine()); + + switch (opcao) { + case 1 -> menuCliente(scanner, createCliente, deleteCliente, searchCliente, listaEnderecos); + case 2 -> menuFuncionario(scanner, createFuncionario, deleteFuncionario, searchFuncionario, listaEnderecos); + case 3 -> menuMesa(scanner, createMesa, deleteMesa, searchMesa); + case 4 -> menuProduto(scanner, createProduto, deleteProduto, searchProduto); + case 5 -> menuEndereco(scanner, createEndereco, deleteEndereco, searchEndereco, listaEnderecos); + case 0 -> System.out.println("Saindo..."); + default -> System.out.println("Opção inválida."); + } + } + + scanner.close(); + } + + private static void menuCliente(Scanner scanner, + CreateClienteController c, + DeleteClienteController d, + SearchClienteController s, + List listaEnderecos) { + System.out.println("\n--- CLIENTE ---"); + System.out.println("1. Cadastrar"); + System.out.println("2. Listar"); + System.out.println("3. Remover"); + System.out.print("Escolha: "); + int opcao = Integer.parseInt(scanner.nextLine()); + + switch (opcao) { + case 1 -> c.executar(listaEnderecos); + case 2 -> s.executar(); + case 3 -> d.executar(); + default -> System.out.println("Opção inválida."); + } + } + + private static void menuFuncionario(Scanner scanner, + CreateFuncionarioController c, + DeleteFuncionarioController d, + SearchFuncionarioController s, + List listaEnderecos) { + System.out.println("\n--- FUNCIONÁRIO ---"); + System.out.println("1. Cadastrar"); + System.out.println("2. Listar"); + System.out.println("3. Remover"); + System.out.print("Escolha: "); + int opcao = Integer.parseInt(scanner.nextLine()); + + switch (opcao) { + case 1 -> c.executar(); + case 2 -> s.executar(); + case 3 -> d.executar(); + default -> System.out.println("Opção inválida."); + } + } + + private static void menuMesa(Scanner scanner, + CreateMesaController c, + DeleteMesaController d, + SearchMesaController s) { + System.out.println("\n--- MESA ---"); + System.out.println("1. Adicionar"); + System.out.println("2. Listar"); + System.out.println("3. Remover"); + System.out.print("Escolha: "); + int opcao = Integer.parseInt(scanner.nextLine()); + + try { + switch (opcao) { + case 1 -> c.adicionarMesa(); + case 2 -> s.listarMesas(); + case 3 -> d.removerMesa(); + default -> System.out.println("Opção inválida."); + } + } catch (Exception e) { + System.out.println("Erro: " + e.getMessage()); + } + } + + private static void menuProduto(Scanner scanner, + CreateProdutoController c, + DeleteProdutoController d, + SearchProdutoController s) { + System.out.println("\n--- PRODUTO ---"); + System.out.println("1. Adicionar"); + System.out.println("2. Listar"); + System.out.println("3. Remover"); + System.out.print("Escolha: "); + int opcao = Integer.parseInt(scanner.nextLine()); + + try { + switch (opcao) { + case 1 -> c.adicionarProduto(); + case 2 -> s.listarProdutos(); + case 3 -> d.removerProduto(); + default -> System.out.println("Opção inválida."); + } + } catch (Exception e) { + System.out.println("Erro: " + e.getMessage()); + } + } + + private static void menuEndereco(Scanner scanner, + CreateEnderecoController c, + DeleteEnderecoController d, + SearchEnderecoController s, + List listaEnderecos) { + System.out.println("\n--- ENDEREÇO ---"); + System.out.println("1. Cadastrar"); + System.out.println("2. Listar"); + System.out.println("3. Buscar por CEP"); + System.out.println("4. Remover"); + System.out.print("Escolha: "); + int opcao = Integer.parseInt(scanner.nextLine()); + + switch (opcao) { + case 1 -> c.criarEndereco(listaEnderecos); + case 2 -> { + if (listaEnderecos.isEmpty()) { + System.out.println("Nenhum endereço cadastrado."); + } else { + System.out.println("Lista de Endereços:"); + for (Endereco e : listaEnderecos) { + System.out.printf("%s, %d, CEP: %s%n", e.getTipo(), e.getNumero(), e.getCep()); + } + } + } + case 3 -> { + System.out.print("Digite o CEP para busca: "); + String cep = scanner.nextLine(); + Endereco endereco = s.buscarPorCep(listaEnderecos, cep); + if (endereco != null) { + System.out.printf("Endereço encontrado: %s, %d, CEP: %s%n", + endereco.getTipo(), endereco.getNumero(), endereco.getCep()); + } else { + System.out.println("Endereço não encontrado."); + } + } + case 4 -> { + d.deletarEndereco(listaEnderecos); + } + default -> System.out.println("Opção inválida."); + } + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/CreateClienteController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/CreateClienteController.java new file mode 100644 index 0000000..72682cb --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/CreateClienteController.java @@ -0,0 +1,58 @@ +package com.restaurante.controllers.cliente; + +import com.restaurante.dao.ClienteDAO; +import com.restaurante.dao.EnderecoDAO; +import com.restaurante.model.Cliente; +import com.restaurante.model.Endereco; +import com.restaurante.view.ClienteView; +import com.restaurante.controllers.endereco.SearchEnderecoController; + +import java.util.List; +import java.util.Scanner; + +public class CreateClienteController { + private ClienteView view = new ClienteView(); + private ClienteDAO dao = new ClienteDAO(); + private EnderecoDAO enderecoDAO = new EnderecoDAO(); + private SearchEnderecoController searchEndereco = new SearchEnderecoController(); + private List enderecos; + + public void executar(List enderecos) { + this.enderecos = enderecos; + + Cliente cliente = view.capturarCliente(); + Endereco endereco = buscarOuCriarEndereco(); + cliente.setEndereco(endereco); + + dao.salvar(cliente); + view.mostrarMensagem("Cliente cadastrado com sucesso!"); + } + + private Endereco buscarOuCriarEndereco() { + Scanner scanner = view.getScanner(); + System.out.println("Deseja:"); + System.out.println("1. Escolher um endereço existente"); + System.out.println("2. Cadastrar novo endereço"); + System.out.print("Opção: "); + int opcao = Integer.parseInt(scanner.nextLine()); + + if (opcao == 1) { + System.out.print("Digite o CEP do endereço: "); + String cep = scanner.nextLine(); + return searchEndereco.buscarPorCep(enderecos, cep); + } + + // Criar novo + System.out.print("Tipo (Rua, Av...): "); + String tipo = scanner.nextLine(); + System.out.print("Número: "); + int numero = Integer.parseInt(scanner.nextLine()); + System.out.print("CEP: "); + String cep = scanner.nextLine(); + + Endereco novo = new Endereco(tipo, cep, numero); + enderecoDAO.salvarEndereco(novo); + enderecos.add(novo); + return novo; + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/DeleteClienteController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/DeleteClienteController.java new file mode 100644 index 0000000..498b949 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/DeleteClienteController.java @@ -0,0 +1,20 @@ +package com.restaurante.controllers.cliente; +import com.restaurante.dao.ClienteDAO; + +import com.restaurante.view.ClienteView; + +public class DeleteClienteController { + private ClienteView view = new ClienteView(); + private ClienteDAO dao = new ClienteDAO(); + + public void executar() { + String cpf = view.capturarCpf(); + boolean removido = dao.remover(cpf); + + if (removido) { + view.mostrarMensagem("Cliente removido com sucesso!"); + } else { + view.mostrarMensagem("Cliente não encontrado."); + } + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/SearchClienteController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/SearchClienteController.java new file mode 100644 index 0000000..528fdf4 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/SearchClienteController.java @@ -0,0 +1,15 @@ +package com.restaurante.controllers.cliente; +import com.restaurante.dao.ClienteDAO; +import com.restaurante.model.Cliente; +import com.restaurante.view.ClienteView; + +public class SearchClienteController { + private ClienteView view = new ClienteView(); + private ClienteDAO dao = new ClienteDAO(); + + public void executar() { + for (Cliente c : dao.listar()) { + view.mostrar(c); + } + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/CreateEnderecoController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/CreateEnderecoController.java new file mode 100644 index 0000000..3874b80 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/CreateEnderecoController.java @@ -0,0 +1,24 @@ +package com.restaurante.controllers.endereco; + +import com.restaurante.dao.EnderecoDAO; +import com.restaurante.model.Endereco; +import com.restaurante.view.EnderecoView; + +import java.util.List; + +public class CreateEnderecoController { + private EnderecoDAO dao = new EnderecoDAO(); + private EnderecoView view = new EnderecoView(); + + public void criarEndereco(List listaEnderecos) { + Endereco novo = view.capturarEndereco(); + listaEnderecos.add(novo); + dao.salvarEndereco(novo); + view.mostrarMensagem("Endereço criado com sucesso!"); + } + + // 🔧 MÉTODO PÚBLICO NOVO + public List listarEnderecos() { + return dao.listarEnderecos(); + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/DeleteEnderecoController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/DeleteEnderecoController.java new file mode 100644 index 0000000..ff9d73f --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/DeleteEnderecoController.java @@ -0,0 +1,23 @@ +package com.restaurante.controllers.endereco; + +import com.restaurante.dao.EnderecoDAO; +import com.restaurante.model.Endereco; +import com.restaurante.view.EnderecoView; + +import java.util.List; + +public class DeleteEnderecoController { + private EnderecoDAO dao = new EnderecoDAO(); + private EnderecoView view = new EnderecoView(); + + public void deletarEndereco(List listaEnderecos) { + String cep = view.capturarCep(); + boolean removido = dao.deletarEnderecoPorCep(listaEnderecos, cep); + if (removido) { + view.mostrarMensagem("Endereço removido com sucesso."); + } else { + view.mostrarMensagem("Endereço não encontrado."); + } +} + +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/SearchEnderecoController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/SearchEnderecoController.java new file mode 100644 index 0000000..74bd47a --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/SearchEnderecoController.java @@ -0,0 +1,27 @@ +package com.restaurante.controllers.endereco; + +import com.restaurante.model.Endereco; +import com.restaurante.view.EnderecoView; + +import java.util.List; + +public class SearchEnderecoController { + private EnderecoView view = new EnderecoView(); + + public void listarEnderecos(List listaEnderecos) { + view.mostrarListaEnderecos(listaEnderecos); + } + + public void buscarPorCep(List listaEnderecos) { + String cep = view.capturarCep(); + Endereco e = buscarPorCep(listaEnderecos, cep); + view.mostrarEndereco(e); + } + + public Endereco buscarPorCep(List listaEnderecos, String cep) { + return listaEnderecos.stream() + .filter(end -> end.getCep().equals(cep)) + .findFirst() + .orElse(null); + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/CreateFuncionarioController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/CreateFuncionarioController.java new file mode 100644 index 0000000..b26a16b --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/CreateFuncionarioController.java @@ -0,0 +1,16 @@ +package com.restaurante.controllers.funcionario; + +import com.restaurante.dao.FuncionarioDAO; +import com.restaurante.model.Funcionario; +import com.restaurante.view.FuncionarioView; + +public class CreateFuncionarioController { + private FuncionarioView view = new FuncionarioView(); + private FuncionarioDAO dao = new FuncionarioDAO(); + + public void executar() { + Funcionario f = view.capturarFuncionario(); + dao.salvar(f); + view.mostrarMensagem("Funcionário cadastrado com sucesso!"); + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/DeleteFuncionarioController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/DeleteFuncionarioController.java new file mode 100644 index 0000000..5022716 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/DeleteFuncionarioController.java @@ -0,0 +1,19 @@ +package com.restaurante.controllers.funcionario; +import com.restaurante.dao.FuncionarioDAO; +import com.restaurante.view.FuncionarioView; + +public class DeleteFuncionarioController { + private FuncionarioView view = new FuncionarioView(); + private FuncionarioDAO dao = new FuncionarioDAO(); + + public void executar() { + String cpf = view.capturarCpf(); + boolean removido = dao.remover(cpf); + + if (removido) { + view.mostrarMensagem("Funcionário removido com sucesso!"); + } else { + view.mostrarMensagem("Funcionário não encontrado."); + } + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/SearchFuncionarioController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/SearchFuncionarioController.java new file mode 100644 index 0000000..a772928 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/SearchFuncionarioController.java @@ -0,0 +1,19 @@ +package com.restaurante.controllers.funcionario; + + + +import com.restaurante.dao.FuncionarioDAO; +import com.restaurante.model.Funcionario; +import com.restaurante.view.FuncionarioView; + + +public class SearchFuncionarioController { + private FuncionarioView view = new FuncionarioView(); + private FuncionarioDAO dao = new FuncionarioDAO(); + + public void executar() { + for (Funcionario f : dao.listar()) { + view.mostrar(f); + } + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/CreateMesaController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/CreateMesaController.java new file mode 100644 index 0000000..d378e42 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/CreateMesaController.java @@ -0,0 +1,27 @@ +package com.restaurante.controllers.mesa; + +import java.io.IOException; + +import com.restaurante.dao.MesaDAO; +import com.restaurante.model.Mesa; +import com.restaurante.view.MesaView; + +public class CreateMesaController { + private MesaDAO dao; + private MesaView view; + + public CreateMesaController(){ + this.dao = new MesaDAO(); + this.view = new MesaView(); + } + + public void adicionarMesa() throws IOException { + String numero = view.pedirNumeroMesa(); + String local = view.pedirLocalMesa(); + Mesa mesa = new Mesa(numero, local); + dao.salvar(mesa); + System.out.println("Mesa adicionada com sucesso!"); + } + + +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/DeleteMesaController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/DeleteMesaController.java new file mode 100644 index 0000000..2ebe2bd --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/DeleteMesaController.java @@ -0,0 +1,24 @@ +package com.restaurante.controllers.mesa; + +import java.io.IOException; + +import com.restaurante.dao.MesaDAO; +import com.restaurante.view.MesaView; + +public class DeleteMesaController { + private MesaDAO dao; + private MesaView view; + + public DeleteMesaController(){ + this.dao = new MesaDAO(); + this.view = new MesaView(); + } + + public void removerMesa() throws IOException { + String numero = view.pedirNumeroMesa(); + dao.deletar(numero); + System.out.println("Mesa removida (se existia)!"); + } + + +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/SearchMesaController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/SearchMesaController.java new file mode 100644 index 0000000..ced9275 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/SearchMesaController.java @@ -0,0 +1,23 @@ +package com.restaurante.controllers.mesa; + +import java.io.IOException; +import java.util.List; + +import com.restaurante.dao.MesaDAO; +import com.restaurante.model.Mesa; +import com.restaurante.view.MesaView; + +public class SearchMesaController { + private MesaDAO dao; + private MesaView view; + + public SearchMesaController(){ + this.dao = new MesaDAO(); + this.view = new MesaView(); + } + + public void listarMesas() throws IOException { + List mesas = dao.listar(); + view.exibirMesas(mesas); + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/CreateProdutoController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/CreateProdutoController.java new file mode 100644 index 0000000..089e356 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/CreateProdutoController.java @@ -0,0 +1,26 @@ +package com.restaurante.controllers.produto; + +import java.io.IOException; + +import com.restaurante.dao.ProdutoDAO; +import com.restaurante.model.Produto; +import com.restaurante.view.ProdutoView; + +public class CreateProdutoController { + private ProdutoDAO dao; + private ProdutoView view; + + public CreateProdutoController() { + dao = new ProdutoDAO(); + view = new ProdutoView(); + } + + public void adicionarProduto() throws IOException { + String nome = view.pedirNomeProduto(); + float valor = view.pedirValorProduto(); + + dao.salvar(new Produto(nome, valor)); + System.out.println("Produto adicionado com sucesso!"); + } + +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/DeleteProdutoController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/DeleteProdutoController.java new file mode 100644 index 0000000..c185e49 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/DeleteProdutoController.java @@ -0,0 +1,23 @@ +package com.restaurante.controllers.produto; + +import java.io.IOException; + +import com.restaurante.dao.ProdutoDAO; +import com.restaurante.view.ProdutoView; + +public class DeleteProdutoController { + private ProdutoDAO dao; + private ProdutoView view; + + public DeleteProdutoController() { + dao = new ProdutoDAO(); + view = new ProdutoView(); + } + + public void removerProduto() throws IOException { + String nome = view.pedirNomeProduto(); + dao.removerPorNome(nome); + System.out.println("Produto removido!"); + } + +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/SearchProdutoController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/SearchProdutoController.java new file mode 100644 index 0000000..12f6227 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/SearchProdutoController.java @@ -0,0 +1,24 @@ +package com.restaurante.controllers.produto; + +import java.io.IOException; +import java.util.List; + +import com.restaurante.dao.ProdutoDAO; +import com.restaurante.model.Produto; +import com.restaurante.view.ProdutoView; + +public class SearchProdutoController { + private ProdutoDAO dao; + private ProdutoView view; + + public SearchProdutoController() { + dao = new ProdutoDAO(); + view = new ProdutoView(); + } + + public void listarProdutos() throws IOException { + List produtos = dao.listarTodos(); + view.exibirProdutos(produtos); + } + +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ClienteDAO.java b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ClienteDAO.java new file mode 100644 index 0000000..541e602 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ClienteDAO.java @@ -0,0 +1,96 @@ +package com.restaurante.dao; + +import com.restaurante.model.Cliente; +import com.restaurante.model.Endereco; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class ClienteDAO { + private static final String ARQUIVO = "clientes.txt"; + + // Salva cliente com endereço serializado + public void salvar(Cliente cliente) { + try (PrintWriter writer = new PrintWriter(new FileWriter(ARQUIVO, true))) { + String enderecoStr = ""; + Endereco e = cliente.getEndereco(); + if (e != null) { + // formato: tipo,numero,cep + enderecoStr = e.getTipo() + "," + e.getNumero() + "," + e.getCep(); + } + writer.println(cliente.getNome() + ";" + + cliente.getCpf() + ";" + + cliente.getNumFid() + ";" + + enderecoStr); + } catch (IOException ex) { + System.out.println("Erro ao salvar cliente: " + ex.getMessage()); + } + } + + // Lista clientes desserializando endereço + public List listar() { + List clientes = new ArrayList<>(); + File file = new File(ARQUIVO); + + if (!file.exists()) { + return clientes; + } + + try (Scanner scanner = new Scanner(file)) { + while (scanner.hasNextLine()) { + String linha = scanner.nextLine(); + String[] partes = linha.split(";", 4); + if (partes.length >= 3) { + String nome = partes[0]; + String cpf = partes[1]; + int numFid = Integer.parseInt(partes[2]); + + Endereco endereco = null; + if (partes.length == 4 && !partes[3].isEmpty()) { + String[] dadosEndereco = partes[3].split(","); + if (dadosEndereco.length == 3) { + String tipo = dadosEndereco[0]; + int numero = Integer.parseInt(dadosEndereco[1]); + String cep = dadosEndereco[2]; + endereco = new Endereco(tipo, cep, numero); + } + } + + clientes.add(new Cliente(nome, cpf, endereco, numFid)); + } + } + } catch (IOException ex) { + System.out.println("Erro ao ler clientes: " + ex.getMessage()); + } + + return clientes; + } + + // Remove cliente pelo CPF + public boolean remover(String cpf) { + List clientes = listar(); + boolean removido = clientes.removeIf(c -> c.getCpf().equals(cpf)); + + if (removido) { + try (PrintWriter writer = new PrintWriter(new FileWriter(ARQUIVO))) { + for (Cliente c : clientes) { + String enderecoStr = ""; + Endereco e = c.getEndereco(); + if (e != null) { + enderecoStr = e.getTipo() + "," + e.getNumero() + "," + e.getCep(); + } + writer.println(c.getNome() + ";" + + c.getCpf() + ";" + + c.getNumFid() + ";" + + enderecoStr); + } + } catch (IOException ex) { + System.out.println("Erro ao reescrever arquivo: " + ex.getMessage()); + } + } + + return removido; + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/EnderecoDAO.java b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/EnderecoDAO.java new file mode 100644 index 0000000..92646b6 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/EnderecoDAO.java @@ -0,0 +1,65 @@ +package com.restaurante.dao; + +import com.restaurante.model.Endereco; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +public class EnderecoDAO { + private static final String ARQUIVO = "enderecos.txt"; + + public void salvarEndereco(Endereco endereco) { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(ARQUIVO, true))) { + writer.write(formatarEndereco(endereco)); + writer.newLine(); + System.out.println("Endereço salvo no arquivo com sucesso."); + } catch (IOException e) { + System.out.println("Erro ao salvar endereço no arquivo: " + e.getMessage()); + } + } + + private String formatarEndereco(Endereco e) { + return e.getTipo() + ";" + e.getNumero() + ";" + e.getCep(); + } + + public List listarEnderecos() { + List lista = new ArrayList<>(); + try (BufferedReader reader = new BufferedReader(new FileReader(ARQUIVO))) { + String linha; + while ((linha = reader.readLine()) != null) { + String[] partes = linha.split(";"); + if (partes.length == 3) { + String tipo = partes[0]; + int numero = Integer.parseInt(partes[1]); + String cep = partes[2]; + lista.add(new Endereco(tipo, cep, numero)); + } + } + } catch (FileNotFoundException e) { + // Arquivo não existe ainda, tudo bem + } catch (IOException e) { + System.out.println("Erro ao ler arquivo de endereços: " + e.getMessage()); + } + return lista; + } + + public boolean deletarEnderecoPorCep(List lista, String cep) { + boolean removido = lista.removeIf(e -> e.getCep().equals(cep)); + if (removido) { + salvarListaAtualizada(lista); + } + return removido; + } + + private void salvarListaAtualizada(List lista) { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(ARQUIVO, false))) { + for (Endereco e : lista) { + writer.write(formatarEndereco(e)); + writer.newLine(); + } + } catch (IOException e) { + System.out.println("Erro ao salvar arquivo atualizado: " + e.getMessage()); + } + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/FuncionarioDAO.java b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/FuncionarioDAO.java new file mode 100644 index 0000000..d4aaf59 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/FuncionarioDAO.java @@ -0,0 +1,107 @@ +package com.restaurante.dao; + +import com.restaurante.model.Funcionario; +import com.restaurante.model.Mesa; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +public class FuncionarioDAO { + private static final String ARQUIVO = "funcionarios.txt"; + + // Salvar funcionário no arquivo com mesas serializadas + public void salvar(Funcionario funcionario) { + try (PrintWriter writer = new PrintWriter(new FileWriter(ARQUIVO, true))) { + StringBuilder sbMesas = new StringBuilder(); + if (funcionario.getMesas() != null) { + for (int i = 0; i < funcionario.getMesas().size(); i++) { + Mesa m = funcionario.getMesas().get(i); + sbMesas.append(m.getNumero()).append(",").append(m.getLocal()); + if (i < funcionario.getMesas().size() - 1) { + sbMesas.append("|"); + } + } + } + writer.println(funcionario.getNome() + ";" + + funcionario.getCpf() + ";" + + funcionario.getCtp() + ";" + + funcionario.getCargo() + ";" + + sbMesas.toString()); + } catch (IOException e) { + System.out.println("Erro ao salvar funcionário: " + e.getMessage()); + } + } + + // Listar todos os funcionários do arquivo, desserializando as mesas + public List listar() { + List funcionarios = new ArrayList<>(); + File file = new File(ARQUIVO); + + if (!file.exists()) { + return funcionarios; + } + + try (BufferedReader reader = new BufferedReader(new FileReader(ARQUIVO))) { + String linha; + while ((linha = reader.readLine()) != null) { + String[] partes = linha.split(";", 5); + if (partes.length >= 5) { + String nome = partes[0]; + String cpf = partes[1]; + String ctp = partes[2]; + String cargo = partes[3]; + String mesasStr = partes[4]; + + List mesas = new ArrayList<>(); + if (!mesasStr.isEmpty()) { + String[] mesasArray = mesasStr.split("\\|"); + for (String mesaDados : mesasArray) { + String[] dados = mesaDados.split(","); + if (dados.length == 2) { + mesas.add(new Mesa(dados[0], dados[1])); + } + } + } + funcionarios.add(new Funcionario(nome, cpf, null, ctp, cargo, mesas)); + } + } + } catch (IOException e) { + System.out.println("Erro ao ler funcionários: " + e.getMessage()); + } + + return funcionarios; + } + + // Remover funcionário pelo CPF + public boolean remover(String cpf) { + List funcionarios = listar(); + boolean removido = funcionarios.removeIf(f -> f.getCpf().equals(cpf)); + + if (removido) { + try (PrintWriter writer = new PrintWriter(new FileWriter(ARQUIVO))) { + for (Funcionario f : funcionarios) { + StringBuilder sbMesas = new StringBuilder(); + if (f.getMesas() != null) { + for (int i = 0; i < f.getMesas().size(); i++) { + Mesa m = f.getMesas().get(i); + sbMesas.append(m.getNumero()).append(",").append(m.getLocal()); + if (i < f.getMesas().size() - 1) { + sbMesas.append("|"); + } + } + } + writer.println(f.getNome() + ";" + + f.getCpf() + ";" + + f.getCtp() + ";" + + f.getCargo() + ";" + + sbMesas.toString()); + } + } catch (IOException e) { + System.out.println("Erro ao reescrever arquivo: " + e.getMessage()); + } + } + + return removido; + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/MesaDAO.java b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/MesaDAO.java new file mode 100644 index 0000000..7c0a4ad --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/MesaDAO.java @@ -0,0 +1,48 @@ +package com.restaurante.dao; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +import com.restaurante.model.Mesa; + +public class MesaDAO { + private static final String FILE_NAME = "mesas.txt"; + + public void salvar(Mesa mesa) throws IOException { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_NAME, true))) { + writer.write(mesa.getNumero() + ";" + mesa.getLocal()); + writer.newLine(); + } + } + + public List listar() throws IOException { + List mesas = new ArrayList<>(); + File arquivo = new File(FILE_NAME); + + if (!arquivo.exists()) { + return mesas; + } + + try (BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME))) { + String linha; + while ((linha = reader.readLine()) != null) { + String[] dados = linha.split(";"); + mesas.add(new Mesa(dados[0], dados[1])); + } + } + return mesas; + } + + public void deletar(String numero) throws IOException { + List mesas = listar(); + try (BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_NAME))) { + for (Mesa m : mesas) { + if (!m.getNumero().equals(numero)) { + writer.write(m.getNumero() + ";" + m.getLocal()); + writer.newLine(); + } + } + } + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ProdutoDAO.java b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ProdutoDAO.java new file mode 100644 index 0000000..b54181e --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ProdutoDAO.java @@ -0,0 +1,50 @@ +package com.restaurante.dao; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +import com.restaurante.model.Produto; + +public class ProdutoDAO { + private static final String FILE_NAME = "produtos.txt"; + + public void salvar(Produto produto) throws IOException { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_NAME, true))) { + writer.write(produto.getNome() + ";" + produto.getValorProd()); + writer.newLine(); + } + } + + public List listarTodos() throws IOException { + List produtos = new ArrayList<>(); + File arquivo = new File(FILE_NAME); + + if (!arquivo.exists()) { + return produtos; + } + + try (BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME))) { + String linha; + while ((linha = reader.readLine()) != null) { + String[] dados = linha.split(";"); + produtos.add(new Produto(dados[0], Float.parseFloat(dados[1]))); + } + } + return produtos; + } + + public void removerPorNome(String nome) throws IOException { + List produtos = listarTodos(); + + try (BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_NAME))) { + + for (Produto p : produtos) { + if (!p.getNome().equals(nome)) { + writer.write(p.getNome() + ";" + p.getValorProd()); + writer.newLine(); + } + } + } + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Cliente.java b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Cliente.java new file mode 100644 index 0000000..be2d735 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Cliente.java @@ -0,0 +1,18 @@ +package com.restaurante.model; + +public class Cliente extends Pessoa{ + private int numFid; + + public Cliente(String nome, String cpf,Endereco endereco,int numFid) { + super(nome, cpf, endereco ); + this.numFid = numFid; + } + + public int getNumFid() { + return numFid; + } + + public void setNumFid(int numFid) { + this.numFid = numFid; + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Endereco.java b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Endereco.java new file mode 100644 index 0000000..72520a5 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Endereco.java @@ -0,0 +1,42 @@ +package com.restaurante.model; + +public class Endereco { + private String tipo; + private String cep; + private int numero; + + public Endereco(String tipo, String cep, int numero) { + this.tipo = tipo; + this.cep = cep; + this.numero = numero; + } + + public String getTipo() { + return tipo; + } + + public void setTipo(String tipo) { + this.tipo = tipo; + } + + public String getCep() { + return cep; + } + + public void setCep(String cep) { + this.cep = cep; + } + + public int getNumero() { + return numero; + } + + public void setNumero(int numero) { + this.numero = numero; + } + + public String getEndereco() + { + return this.tipo + ", " + this.numero; + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Funcionario.java b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Funcionario.java new file mode 100644 index 0000000..707076e --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Funcionario.java @@ -0,0 +1,40 @@ +package com.restaurante.model; + +import java.util.List; + +public class Funcionario extends Pessoa{ + private String ctp; + private String cargo; + private List mesas; + + public Funcionario(String nome, String cpf,Endereco endereco, String ctp, String cargo, List mesas) { + super(nome, cpf, endereco); + this.ctp = ctp; + this.cargo = cargo; + this.mesas = mesas; + } + + public String getCtp() { + return ctp; + } + + public void setCtp(String ctp) { + this.ctp = ctp; + } + + public String getCargo() { + return cargo; + } + + public void setCargo(String cargo) { + this.cargo = cargo; + } + + public List getMesas() { + return mesas; + } + + public void setMesas(List mesas) { + this.mesas = mesas; + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Mesa.java b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Mesa.java new file mode 100644 index 0000000..15bd081 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Mesa.java @@ -0,0 +1,27 @@ +package com.restaurante.model; + +public class Mesa { + private String numero; + private String local; + + public Mesa(String numero, String local) { + this.numero = numero; + this.local = local; + } + + public String getNumero() { + return numero; + } + + public void setNumero(String numero) { + this.numero = numero; + } + + public String getLocal() { + return local; + } + + public void setLocal(String local) { + this.local = local; + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Pessoa.java b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Pessoa.java new file mode 100644 index 0000000..41b2330 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Pessoa.java @@ -0,0 +1,32 @@ +package com.restaurante.model; + +public class Pessoa { + private String nome; + private String cpf; + private Endereco endereco; + + public Pessoa(String nome, String cpf,Endereco endereco) { + this.nome = nome; + this.cpf = cpf; + this.endereco = endereco; + } + + public String getNome() { + return nome; + } + public void setNome(String nome) { + this.nome = nome; + } + public String getCpf() { + return cpf; + } + public void setCpf(String cpf) { + this.cpf = cpf; + } + public Endereco getEndereco() { + return endereco; + } + public void setEndereco(Endereco endereco) { + this.endereco = endereco; + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Produto.java b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Produto.java new file mode 100644 index 0000000..bc9d4ae --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Produto.java @@ -0,0 +1,55 @@ +package com.restaurante.model; + +public class Produto { + private String nome; + private float valorProd; + + + private int lucro = 5; + private float iva = (float) 1.23; + + + public Produto(String nome, float valorProd) { + this.nome = nome; + this.valorProd = valorProd; + } + + public Produto(String nome, float valorProd, int lucro, float iva) { + this.nome = nome; + this.valorProd = valorProd; + this.lucro = lucro; + this.iva = iva; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + public float getValorProd() { + return valorProd; + } + + public void setValorProd(float valorProd) { + this.valorProd = valorProd; + } + + public float getIva() { + return iva; + } + + public void setIva(float iva) { + this.iva = iva; + } + + public int getLucro() { + return lucro; + } + + public void setLucro(int lucro) { + this.lucro = lucro; + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/view/ClienteView.java b/avaliacoes/restaurante/src/main/java/com/restaurante/view/ClienteView.java new file mode 100644 index 0000000..2418b1e --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/view/ClienteView.java @@ -0,0 +1,41 @@ +package com.restaurante.view; + +import java.util.Scanner; +import com.restaurante.model.Cliente; + +public class ClienteView { + private Scanner scanner = new Scanner(System.in); + + public Cliente capturarCliente() { + System.out.print("Nome: "); + String nome = scanner.nextLine(); + System.out.print("CPF: "); + String cpf = scanner.nextLine(); + System.out.print("Número de Fidelidade: "); + int numFid = Integer.parseInt(scanner.nextLine()); + + return new Cliente(nome, cpf, null, numFid); // Endereço será setado depois + } + + public String capturarCpf() { + System.out.print("Digite o CPF do cliente: "); + return scanner.nextLine(); + } + + public void mostrar(Cliente c) { + System.out.println("Nome: " + c.getNome()); + System.out.println("CPF: " + c.getCpf()); + System.out.println("Número de Fidelidade: " + c.getNumFid()); + if (c.getEndereco() != null) + System.out.println("Endereço: " + c.getEndereco().getEndereco() + " - " + c.getEndereco().getCep()); + System.out.println("--------------------------"); + } + + public void mostrarMensagem(String msg) { + System.out.println(msg); + } + + public Scanner getScanner() { + return scanner; + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/view/EnderecoView.java b/avaliacoes/restaurante/src/main/java/com/restaurante/view/EnderecoView.java new file mode 100644 index 0000000..5047153 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/view/EnderecoView.java @@ -0,0 +1,50 @@ +package com.restaurante.view; + +import java.util.List; +import java.util.Scanner; +import com.restaurante.model.Endereco; + +public class EnderecoView { + private Scanner scanner = new Scanner(System.in); + + public Endereco capturarEndereco() { + System.out.print("Tipo (Rua, Av...): "); + String tipo = scanner.nextLine(); + + System.out.print("Número: "); + int numero = Integer.parseInt(scanner.nextLine()); + + System.out.print("CEP: "); + String cep = scanner.nextLine(); + + return new Endereco(tipo, cep, numero); + } + + public String capturarCep() { + System.out.print("Digite o CEP: "); + return scanner.nextLine(); + } + + public void mostrarEndereco(Endereco e) { + if (e != null) { + System.out.printf("Endereço: %s, %d, CEP: %s%n", e.getTipo(), e.getNumero(), e.getCep()); + } else { + System.out.println("Endereço não encontrado."); + } + } + + public void mostrarListaEnderecos(List enderecos) { + if (enderecos.isEmpty()) { + System.out.println("Nenhum endereço cadastrado."); + } else { + System.out.println("Lista de endereços:"); + for (Endereco e : enderecos) { + System.out.printf("- %s, %d, CEP: %s%n", e.getTipo(), e.getNumero(), e.getCep()); + } + } + } + + public void mostrarMensagem(String msg) { + System.out.println(msg); + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/view/FuncionarioView.java b/avaliacoes/restaurante/src/main/java/com/restaurante/view/FuncionarioView.java new file mode 100644 index 0000000..c1eac9e --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/view/FuncionarioView.java @@ -0,0 +1,68 @@ +package com.restaurante.view; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +import com.restaurante.model.Funcionario; +import com.restaurante.model.Mesa; + +public class FuncionarioView { + private Scanner scanner = new Scanner(System.in); + + public Funcionario capturarFuncionario() { + System.out.print("Nome: "); + String nome = scanner.nextLine(); + System.out.print("CPF: "); + String cpf = scanner.nextLine(); + System.out.print("CTP: "); + String ctp = scanner.nextLine(); + System.out.print("Cargo: "); + String cargo = scanner.nextLine(); + + // Captura múltiplas mesas + List mesas = new ArrayList<>(); + String opcao = "s"; + + while (opcao.equalsIgnoreCase("s")) { + System.out.print("Número da mesa: "); + String numero = scanner.nextLine(); + System.out.print("Local da mesa: "); + String local = scanner.nextLine(); + + mesas.add(new Mesa(numero, local)); + + System.out.print("Deseja adicionar outra mesa? (s/n): "); + opcao = scanner.nextLine(); + } + + return new Funcionario(nome, cpf, null, ctp, cargo, mesas); + } + + public String capturarCpf() { + System.out.print("Digite o CPF do funcionário: "); + return scanner.nextLine(); + } + + public void mostrar(Funcionario f) { + System.out.println("Nome: " + f.getNome()); + System.out.println("CPF: " + f.getCpf()); + System.out.println("CTP: " + f.getCtp()); + System.out.println("Cargo: " + f.getCargo()); + if (f.getMesas() != null && !f.getMesas().isEmpty()) { + System.out.println("Mesas:"); + for (Mesa m : f.getMesas()) { + System.out.println(" - Mesa " + m.getNumero() + " - Local: " + m.getLocal()); + } + } + System.out.println("--------------------------"); + } + + public void mostrarMensagem(String msg) { + System.out.println(msg); + } + + public Scanner getScanner() { + return scanner; + } +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/view/MesaView.java b/avaliacoes/restaurante/src/main/java/com/restaurante/view/MesaView.java new file mode 100644 index 0000000..cf2044a --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/view/MesaView.java @@ -0,0 +1,33 @@ +package com.restaurante.view; + +import java.util.Scanner; + +import com.restaurante.model.Mesa; + +import java.util.List; + +public class MesaView { + private Scanner scanner = new Scanner(System.in); + + public String pedirNumeroMesa() { + System.out.print("Número da mesa: "); + return scanner.nextLine(); + } + + public String pedirLocalMesa() { + System.out.print("Local da mesa: "); + return scanner.nextLine(); + } + + public void exibirMesas(List mesas) { + if (mesas.isEmpty()) { + System.out.println("Nenhuma mesa cadastrada."); + } else { + for (Mesa m : mesas) { + System.out.println("Mesa " + m.getNumero() + " - Local: " + m.getLocal()); + } + } +} + +} + diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/view/ProdutoView.java b/avaliacoes/restaurante/src/main/java/com/restaurante/view/ProdutoView.java new file mode 100644 index 0000000..b8e08ab --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/view/ProdutoView.java @@ -0,0 +1,45 @@ +package com.restaurante.view; + +import java.util.Scanner; +import java.util.List; +import com.restaurante.model.Produto; + +public class ProdutoView { + private Scanner scanner; + + public ProdutoView() { + scanner = new Scanner(System.in);//Cria um objeto "scanner" que vai ler o que é digitado no terminal (System.in) + } + + public String pedirNomeProduto() { + System.out.print("Nome do produto: "); + return scanner.nextLine(); //Aguarda o usuário a digitar uma linha de texto e retorna esse valor para o controller. Util para textos com espaços. + } + + public float pedirValorProduto() { + float valor = 0; + boolean valido = false;//variavel para ver se a entrada q o usuário digitou é válida + + while (!valido) {//continua pedindo o preço do produto até que o usuário dê uma entrada válida + try { + System.out.print("Valor do produto: "); + valor = Float.parseFloat(scanner.nextLine()); //converte a entrada o usuario String para float + valido = true; + } catch (NumberFormatException e) {//se der errado, aciona a exceção e exibe uma mensagem de erro + System.out.println("Valor inválido. Tente novamente."); + } + } + + return valor; // retorna para o controller + } + + public void exibirProdutos(List produtos) { + if (produtos.isEmpty()) { + System.out.println("Nenhum produto encontrado."); + } else { + for (Produto p : produtos) {//loop for each que percorre a todos os produtos da lista, para cada produto, ele retorna o nome e o preço + System.out.printf("Produto: %-20s | Valor: R$ %.2f%n | \n ", p.getNome(), p.getValorProd()); + } + } + } +} From 9a43a53ea59e14f61c167b8a048728014ba1cf84 Mon Sep 17 00:00:00 2001 From: Layza Emmanuelle Date: Tue, 15 Jul 2025 10:31:35 -0300 Subject: [PATCH 2/2] =?UTF-8?q?Adiciona=20Javadoc=20=C3=A0s=20classes=20de?= =?UTF-8?q?=20cliente,=20funcion=C3=A1rio,=20produto=20endere=C3=A7o=20e?= =?UTF-8?q?=20=20mesa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/restaurante/Main.java | 71 +++++++++++++-- .../cliente/CreateClienteController.java | 36 ++++++++ .../cliente/DeleteClienteController.java | 22 ++++- .../cliente/SearchClienteController.java | 17 ++++ .../endereco/CreateEnderecoController.java | 28 +++++- .../endereco/DeleteEnderecoController.java | 41 +++++++-- .../endereco/SearchEnderecoController.java | 37 +++++++- .../CreateFuncionarioController.java | 52 +++++++++-- .../DeleteFuncionarioController.java | 20 +++++ .../SearchFuncionarioController.java | 21 ++++- .../mesa/CreateMesaController.java | 25 +++++- .../mesa/DeleteMesaController.java | 26 +++++- .../mesa/SearchMesaController.java | 20 +++++ .../produto/CreateProdutoController.java | 27 +++++- .../produto/DeleteProdutoController.java | 23 ++++- .../produto/SearchProdutoController.java | 23 ++++- .../java/com/restaurante/dao/ClienteDAO.java | 42 ++++++++- .../java/com/restaurante/dao/EnderecoDAO.java | 46 +++++++++- .../com/restaurante/dao/FuncionarioDAO.java | 43 ++++++++- .../java/com/restaurante/dao/MesaDAO.java | 43 +++++++++ .../java/com/restaurante/dao/ProdutoDAO.java | 39 +++++++- .../java/com/restaurante/model/Cliente.java | 36 +++++++- .../java/com/restaurante/model/Endereco.java | 54 ++++++++++- .../com/restaurante/model/Funcionario.java | 59 +++++++++++- .../main/java/com/restaurante/model/Mesa.java | 38 +++++++- .../java/com/restaurante/model/Pessoa.java | 57 +++++++++++- .../java/com/restaurante/model/Produto.java | 74 ++++++++++++++- .../com/restaurante/view/ClienteView.java | 37 ++++++++ .../com/restaurante/view/EnderecoView.java | 41 +++++++++ .../com/restaurante/view/FuncionarioView.java | 89 ++++++++++++++++++- .../java/com/restaurante/view/MesaView.java | 43 ++++++--- .../com/restaurante/view/ProdutoView.java | 45 ++++++++-- 32 files changed, 1200 insertions(+), 75 deletions(-) diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/Main.java b/avaliacoes/restaurante/src/main/java/com/restaurante/Main.java index 325b201..c6fed11 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/Main.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/Main.java @@ -10,7 +10,24 @@ import java.util.List; import java.util.Scanner; +/** + * Classe principal da aplicação Restaurante. + * + * Exibe um menu interativo no console para o usuário gerenciar Clientes, Funcionários, Mesas, Produtos e Endereços. + * Utiliza controllers específicos para realizar operações de criação, listagem, busca e remoção. + * Mantém uma lista compartilhada de endereços em memória para facilitar operações relacionadas a Endereço. + * + * A aplicação encerra quando o usuário escolhe a opção 0. + * + */ public class Main { + + /** + * Ponto de entrada da aplicação. + * Inicializa controllers, lista de endereços e controla o menu principal de opções. + * + * @param args argumentos de linha de comando (não utilizados) + */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); @@ -31,13 +48,12 @@ public static void main(String[] args) { DeleteProdutoController deleteProduto = new DeleteProdutoController(); SearchProdutoController searchProduto = new SearchProdutoController(); - // Controllers endereço CreateEnderecoController createEndereco = new CreateEnderecoController(); DeleteEnderecoController deleteEndereco = new DeleteEnderecoController(); SearchEnderecoController searchEndereco = new SearchEnderecoController(); - // Carrega lista de endereços do arquivo para usar em memória (lista compartilhada) - List listaEnderecos = createEndereco.listarEnderecos(); + // Carrega lista compartilhada de endereços + List listaEnderecos = createEndereco.listarEnderecos(); int opcao = -1; while (opcao != 0) { @@ -65,6 +81,15 @@ public static void main(String[] args) { scanner.close(); } + /** + * Menu de operações para a entidade Cliente. + * + * @param scanner Scanner para entrada do usuário + * @param c Controller de criação de cliente + * @param d Controller de remoção de cliente + * @param s Controller de busca/listagem de cliente + * @param listaEnderecos Lista compartilhada de endereços para associar clientes + */ private static void menuCliente(Scanner scanner, CreateClienteController c, DeleteClienteController d, @@ -85,6 +110,15 @@ private static void menuCliente(Scanner scanner, } } + /** + * Menu de operações para a entidade Funcionário. + * + * @param scanner Scanner para entrada do usuário + * @param c Controller de criação de funcionário + * @param d Controller de remoção de funcionário + * @param s Controller de busca/listagem de funcionário + * @param listaEnderecos Lista compartilhada de endereços (não utilizada no menu atual, pode ser removida) + */ private static void menuFuncionario(Scanner scanner, CreateFuncionarioController c, DeleteFuncionarioController d, @@ -99,12 +133,20 @@ private static void menuFuncionario(Scanner scanner, switch (opcao) { case 1 -> c.executar(); - case 2 -> s.executar(); + case 2 -> s.executar(); case 3 -> d.executar(); default -> System.out.println("Opção inválida."); } } + /** + * Menu de operações para a entidade Mesa. + * + * @param scanner Scanner para entrada do usuário + * @param c Controller de criação de mesa + * @param d Controller de remoção de mesa + * @param s Controller de busca/listagem de mesa + */ private static void menuMesa(Scanner scanner, CreateMesaController c, DeleteMesaController d, @@ -128,6 +170,14 @@ private static void menuMesa(Scanner scanner, } } + /** + * Menu de operações para a entidade Produto. + * + * @param scanner Scanner para entrada do usuário + * @param c Controller de criação de produto + * @param d Controller de remoção de produto + * @param s Controller de busca/listagem de produto + */ private static void menuProduto(Scanner scanner, CreateProdutoController c, DeleteProdutoController d, @@ -151,6 +201,15 @@ private static void menuProduto(Scanner scanner, } } + /** + * Menu de operações para a entidade Endereço. + * + * @param scanner Scanner para entrada do usuário + * @param c Controller de criação de endereço + * @param d Controller de remoção de endereço + * @param s Controller de busca/listagem de endereço + * @param listaEnderecos Lista compartilhada de endereços em memória + */ private static void menuEndereco(Scanner scanner, CreateEnderecoController c, DeleteEnderecoController d, @@ -187,9 +246,7 @@ private static void menuEndereco(Scanner scanner, System.out.println("Endereço não encontrado."); } } - case 4 -> { - d.deletarEndereco(listaEnderecos); - } + case 4 -> d.deletarEndereco(listaEnderecos); default -> System.out.println("Opção inválida."); } } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/CreateClienteController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/CreateClienteController.java index 72682cb..40158e6 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/CreateClienteController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/CreateClienteController.java @@ -10,13 +10,41 @@ import java.util.List; import java.util.Scanner; +/** + * Controller responsável por lidar com a criação de clientes no sistema. + * + * Esta classe realiza a captura de dados do cliente através da view, + * permite a seleção ou criação de um endereço, associa o endereço ao cliente + * e persiste os dados utilizando os DAOs. + * + * Funciona em conjunto com a camada de visualização ({@link ClienteView}), + * os modelos {@link Cliente} e {@link Endereco}, e os DAOs correspondentes. + */ public class CreateClienteController { + + /** Interface de entrada e saída para o usuário. */ private ClienteView view = new ClienteView(); + + /** Objeto de acesso a dados para clientes. */ private ClienteDAO dao = new ClienteDAO(); + + /** Objeto de acesso a dados para endereços. */ private EnderecoDAO enderecoDAO = new EnderecoDAO(); + + /** Controlador de busca de endereços por CEP. */ private SearchEnderecoController searchEndereco = new SearchEnderecoController(); + + /** Lista de endereços disponíveis no sistema. */ private List enderecos; + /** + * Executa o fluxo completo de cadastro de um novo cliente. + * + * O método captura os dados do cliente, solicita ao usuário que selecione ou + * cadastre um endereço, associa o endereço ao cliente e salva o cliente no sistema. + * + * @param enderecos lista de endereços existentes no sistema + */ public void executar(List enderecos) { this.enderecos = enderecos; @@ -28,6 +56,14 @@ public void executar(List enderecos) { view.mostrarMensagem("Cliente cadastrado com sucesso!"); } + /** + * Permite ao usuário buscar um endereço existente ou cadastrar um novo. + * + * O método pergunta ao usuário se ele deseja usar um endereço já existente + * (com base no CEP) ou cadastrar um novo endereço preenchendo os dados manualmente. + * + * @return o endereço selecionado ou recém-cadastrado + */ private Endereco buscarOuCriarEndereco() { Scanner scanner = view.getScanner(); System.out.println("Deseja:"); diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/DeleteClienteController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/DeleteClienteController.java index 498b949..367f795 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/DeleteClienteController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/DeleteClienteController.java @@ -1,12 +1,32 @@ package com.restaurante.controllers.cliente; -import com.restaurante.dao.ClienteDAO; +import com.restaurante.dao.ClienteDAO; import com.restaurante.view.ClienteView; +/** + * Controller responsável por excluir um cliente do sistema. + * + * Esta classe interage com a camada de visualização ({@link ClienteView}) + * para capturar o CPF do cliente a ser removido e utiliza a {@link ClienteDAO} + * para realizar a exclusão no banco de dados. + * + * Exibe mensagens ao usuário informando se a remoção foi bem-sucedida ou não. + * + */ public class DeleteClienteController { + + /** Interface de entrada e saída para o usuário. */ private ClienteView view = new ClienteView(); + + /** Objeto de acesso a dados para clientes. */ private ClienteDAO dao = new ClienteDAO(); + /** + * Executa o processo de remoção de um cliente com base no CPF fornecido pelo usuário. + * + * Caso o cliente seja encontrado e removido com sucesso, uma mensagem de confirmação + * é exibida. Caso contrário, informa que o cliente não foi encontrado. + */ public void executar() { String cpf = view.capturarCpf(); boolean removido = dao.remover(cpf); diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/SearchClienteController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/SearchClienteController.java index 528fdf4..9d5b2ef 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/SearchClienteController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/cliente/SearchClienteController.java @@ -1,12 +1,29 @@ package com.restaurante.controllers.cliente; + import com.restaurante.dao.ClienteDAO; import com.restaurante.model.Cliente; import com.restaurante.view.ClienteView; +/** + * Controller responsável por listar todos os clientes cadastrados no sistema. + * + * Esta classe utiliza a {@link ClienteDAO} para recuperar os clientes do banco de dados + * e a {@link ClienteView} para exibi-los ao usuário. + * + */ public class SearchClienteController { + + /** Interface de entrada e saída para o usuário. */ private ClienteView view = new ClienteView(); + + /** Objeto de acesso a dados para clientes. */ private ClienteDAO dao = new ClienteDAO(); + /** + * Executa a listagem de todos os clientes cadastrados. + * + * Recupera a lista de clientes por meio do DAO e exibe cada cliente na tela. + */ public void executar() { for (Cliente c : dao.listar()) { view.mostrar(c); diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/CreateEnderecoController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/CreateEnderecoController.java index 3874b80..b71928c 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/CreateEnderecoController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/CreateEnderecoController.java @@ -6,10 +6,30 @@ import java.util.List; +/** + * Controller responsável pela criação e listagem de endereços no sistema. + * + * Esta classe permite que o usuário cadastre um novo endereço e o adicione à lista atual, + * além de fornecer acesso à listagem completa dos endereços armazenados. + * + * Utiliza {@link EnderecoView} para interagir com o usuário e {@link EnderecoDAO} + * para persistência dos dados. + */ public class CreateEnderecoController { + + /** Objeto de acesso a dados para endereços. */ private EnderecoDAO dao = new EnderecoDAO(); + + /** Interface de entrada e saída para o usuário. */ private EnderecoView view = new EnderecoView(); + /** + * Cria um novo endereço com base nas informações fornecidas pelo usuário. + * + * O endereço é adicionado à lista local e também salvo no banco de dados. + * + * @param listaEnderecos lista local de endereços onde o novo endereço será adicionado + */ public void criarEndereco(List listaEnderecos) { Endereco novo = view.capturarEndereco(); listaEnderecos.add(novo); @@ -17,7 +37,13 @@ public void criarEndereco(List listaEnderecos) { view.mostrarMensagem("Endereço criado com sucesso!"); } - // 🔧 MÉTODO PÚBLICO NOVO + /** + * Retorna a lista de endereços cadastrados no sistema. + * + * Este método permite acessar os endereços diretamente da base de dados. + * + * @return uma lista de endereços cadastrados + */ public List listarEnderecos() { return dao.listarEnderecos(); } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/DeleteEnderecoController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/DeleteEnderecoController.java index ff9d73f..b219a34 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/DeleteEnderecoController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/DeleteEnderecoController.java @@ -6,18 +6,41 @@ import java.util.List; +/** + * Controller responsável por excluir endereços do sistema com base no CEP. + * + * Interage com o usuário por meio da {@link EnderecoView} para capturar o CEP + * do endereço a ser removido e utiliza a {@link EnderecoDAO} para realizar a exclusão + * tanto na lista local quanto na persistência (se aplicável). + * + * Exibe mensagens informando se a exclusão foi realizada com sucesso ou se o endereço + * não foi encontrado. + * + */ public class DeleteEnderecoController { + + /** Objeto de acesso a dados para endereços. */ private EnderecoDAO dao = new EnderecoDAO(); + + /** Interface de entrada e saída para o usuário. */ private EnderecoView view = new EnderecoView(); - public void deletarEndereco(List listaEnderecos) { - String cep = view.capturarCep(); - boolean removido = dao.deletarEnderecoPorCep(listaEnderecos, cep); - if (removido) { - view.mostrarMensagem("Endereço removido com sucesso."); - } else { - view.mostrarMensagem("Endereço não encontrado."); + /** + * Exclui um endereço da lista com base no CEP informado pelo usuário. + * + * O método busca o endereço na lista fornecida e, se encontrado, + * o remove e informa o sucesso da operação. Caso contrário, + * informa que o endereço não foi encontrado. + * + * @param listaEnderecos lista de endereços disponíveis no sistema + */ + public void deletarEndereco(List listaEnderecos) { + String cep = view.capturarCep(); + boolean removido = dao.deletarEnderecoPorCep(listaEnderecos, cep); + if (removido) { + view.mostrarMensagem("Endereço removido com sucesso."); + } else { + view.mostrarMensagem("Endereço não encontrado."); + } } } - -} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/SearchEnderecoController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/SearchEnderecoController.java index 74bd47a..53b7730 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/SearchEnderecoController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/endereco/SearchEnderecoController.java @@ -5,23 +5,58 @@ import java.util.List; +/** + * Controller responsável por listar e buscar endereços cadastrados no sistema. + * + * Esta classe permite ao usuário visualizar todos os endereços disponíveis ou + * realizar buscas específicas por CEP. A exibição dos dados é feita por meio + * da {@link EnderecoView}. + * + * Também disponibiliza um método público para busca direta por CEP, útil para + */ public class SearchEnderecoController { + + /** Interface de entrada e saída para o usuário. */ private EnderecoView view = new EnderecoView(); + /** + * Lista todos os endereços fornecidos na lista. + * + * Utiliza a view para exibir a lista completa. + * + * @param listaEnderecos lista de endereços a serem exibidos + */ public void listarEnderecos(List listaEnderecos) { view.mostrarListaEnderecos(listaEnderecos); } + /** + * Solicita ao usuário um CEP, busca o endereço correspondente + * na lista fornecida e exibe o resultado. + * + * Caso o CEP não seja encontrado, exibe uma mensagem com valor nulo. + * + * @param listaEnderecos lista de endereços onde será feita a busca + */ public void buscarPorCep(List listaEnderecos) { String cep = view.capturarCep(); Endereco e = buscarPorCep(listaEnderecos, cep); view.mostrarEndereco(e); } + /** + * Busca diretamente por um endereço com o CEP especificado. + * + * Este método pode ser utilizado por outros controllers para reutilização da lógica. + * + * @param listaEnderecos lista de endereços onde será realizada a busca + * @param cep o CEP a ser pesquisado + * @return o endereço correspondente ao CEP ou {@code null} se não for encontrado + */ public Endereco buscarPorCep(List listaEnderecos, String cep) { return listaEnderecos.stream() .filter(end -> end.getCep().equals(cep)) .findFirst() .orElse(null); } -} \ No newline at end of file +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/CreateFuncionarioController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/CreateFuncionarioController.java index b26a16b..43dd589 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/CreateFuncionarioController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/CreateFuncionarioController.java @@ -1,16 +1,58 @@ package com.restaurante.controllers.funcionario; +import java.util.List; + import com.restaurante.dao.FuncionarioDAO; +import com.restaurante.dao.MesaDAO; import com.restaurante.model.Funcionario; +import com.restaurante.model.Mesa; import com.restaurante.view.FuncionarioView; +/** + * Controller responsável por cadastrar um novo funcionário no sistema. + * + * Esta classe interage com a {@link FuncionarioView} para capturar os dados do funcionário, + * incluindo a seleção das mesas existentes para associar, + * e utiliza a {@link FuncionarioDAO} para persistir os dados no armazenamento. + * + * Caso não existam mesas cadastradas, informa o usuário para cadastrá-las antes. + * Exibe mensagens de sucesso ou erro durante o processo. + */ public class CreateFuncionarioController { - private FuncionarioView view = new FuncionarioView(); - private FuncionarioDAO dao = new FuncionarioDAO(); + + /** Interface para interação com o usuário. */ + private FuncionarioView funcionarioView = new FuncionarioView(); + + /** Objeto de acesso a dados para funcionários. */ + private FuncionarioDAO funcionarioDAO = new FuncionarioDAO(); + + /** Objeto de acesso a dados para mesas. */ + private MesaDAO mesaDAO = new MesaDAO(); + /** + * Executa o fluxo de cadastro do funcionário. + * + * Passos: + * - Lista as mesas já cadastradas no sistema. + * - Caso não existam mesas, informa para cadastrar mesas antes. + * - Solicita os dados do funcionário, permitindo associação com mesas existentes. + * - Salva o funcionário no armazenamento. + * - Exibe mensagens de sucesso ou falha na operação. + */ public void executar() { - Funcionario f = view.capturarFuncionario(); - dao.salvar(f); - view.mostrarMensagem("Funcionário cadastrado com sucesso!"); + try { + List mesasExistentes = mesaDAO.listar(); + + if (mesasExistentes.isEmpty()) { + funcionarioView.mostrarMensagem("Não há mesas cadastradas. Cadastre mesas antes de criar um funcionário."); + return; + } + + Funcionario funcionario = funcionarioView.capturarFuncionarioComMesasExistentes(mesasExistentes); + funcionarioDAO.salvar(funcionario); + funcionarioView.mostrarMensagem("Funcionário cadastrado com sucesso!"); + } catch (Exception e) { + funcionarioView.mostrarMensagem("Erro ao cadastrar funcionário: " + e.getMessage()); + } } } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/DeleteFuncionarioController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/DeleteFuncionarioController.java index 5022716..75cb29e 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/DeleteFuncionarioController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/DeleteFuncionarioController.java @@ -1,11 +1,31 @@ package com.restaurante.controllers.funcionario; + import com.restaurante.dao.FuncionarioDAO; import com.restaurante.view.FuncionarioView; +/** + * Controller responsável por excluir um funcionário do sistema com base no CPF. + * + * Esta classe interage com a {@link FuncionarioView} para capturar o CPF do funcionário + * e utiliza a {@link FuncionarioDAO} para realizar a remoção no banco de dados. + * + * Informa ao usuário se a remoção foi bem-sucedida ou se o CPF não foi encontrado. + */ public class DeleteFuncionarioController { + + /** Interface de entrada e saída com o usuário. */ private FuncionarioView view = new FuncionarioView(); + + /** Objeto de acesso a dados para funcionários. */ private FuncionarioDAO dao = new FuncionarioDAO(); + /** + * Executa o processo de remoção de um funcionário com base no CPF. + * + * Caso o funcionário seja encontrado e removido com sucesso, + * exibe uma mensagem de confirmação. Caso contrário, + * informa que o funcionário não foi encontrado. + */ public void executar() { String cpf = view.capturarCpf(); boolean removido = dao.remover(cpf); diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/SearchFuncionarioController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/SearchFuncionarioController.java index a772928..5809d35 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/SearchFuncionarioController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/SearchFuncionarioController.java @@ -1,16 +1,31 @@ package com.restaurante.controllers.funcionario; - - import com.restaurante.dao.FuncionarioDAO; import com.restaurante.model.Funcionario; import com.restaurante.view.FuncionarioView; - +/** + * Controller responsável por listar todos os funcionários cadastrados no sistema. + * + * Esta classe recupera os dados de todos os funcionários utilizando a {@link FuncionarioDAO} + * e exibe essas informações ao usuário por meio da {@link FuncionarioView}. + * + * Útil para visualização geral e conferência dos registros de funcionários. + */ public class SearchFuncionarioController { + + /** Interface de entrada e saída com o usuário. */ private FuncionarioView view = new FuncionarioView(); + + /** Objeto de acesso a dados para funcionários. */ private FuncionarioDAO dao = new FuncionarioDAO(); + /** + * Executa a listagem de todos os funcionários cadastrados no sistema. + * + * Recupera a lista de funcionários do DAO e utiliza a view para exibir + * cada registro ao usuário. + */ public void executar() { for (Funcionario f : dao.listar()) { view.mostrar(f); diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/CreateMesaController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/CreateMesaController.java index d378e42..efcdc85 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/CreateMesaController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/CreateMesaController.java @@ -6,15 +6,38 @@ import com.restaurante.model.Mesa; import com.restaurante.view.MesaView; +/** + * Controller responsável pela criação de mesas no sistema. + * + * Esta classe interage com o usuário através da {@link MesaView} para capturar + * as informações necessárias sobre a mesa (número e local), cria o objeto {@link Mesa} + * e persiste seus dados usando a {@link MesaDAO}. + * + * Pode lançar exceções de entrada/saída durante o processo de captura dos dados. + */ public class CreateMesaController { + + /** Objeto de acesso a dados para mesas. */ private MesaDAO dao; + + /** Interface de entrada e saída para o usuário. */ private MesaView view; + /** + * Construtor que inicializa os DAOs e Views necessários. + */ public CreateMesaController(){ this.dao = new MesaDAO(); this.view = new MesaView(); } + /** + * Captura os dados da mesa, cria o objeto Mesa e salva no banco de dados. + * + * Informa no console se a mesa foi adicionada com sucesso. + * + * @throws IOException caso ocorra erro na entrada de dados pelo usuário + */ public void adicionarMesa() throws IOException { String numero = view.pedirNumeroMesa(); String local = view.pedirLocalMesa(); @@ -22,6 +45,4 @@ public void adicionarMesa() throws IOException { dao.salvar(mesa); System.out.println("Mesa adicionada com sucesso!"); } - - } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/DeleteMesaController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/DeleteMesaController.java index 2ebe2bd..1ac9e4b 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/DeleteMesaController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/DeleteMesaController.java @@ -5,20 +5,42 @@ import com.restaurante.dao.MesaDAO; import com.restaurante.view.MesaView; +/** + * Controller responsável pela remoção de mesas do sistema. + * + * Esta classe utiliza a {@link MesaView} para capturar o número da mesa que deve ser removida + * e a {@link MesaDAO} para deletar a mesa da base de dados. + * + * Exibe uma mensagem no console informando que a mesa foi removida, caso existisse. + * + * Pode lançar exceções de entrada/saída durante a captura dos dados. + */ public class DeleteMesaController { + + /** Objeto de acesso a dados para mesas. */ private MesaDAO dao; + + /** Interface de entrada e saída para o usuário. */ private MesaView view; + /** + * Construtor que inicializa os DAOs e Views necessários. + */ public DeleteMesaController(){ this.dao = new MesaDAO(); this.view = new MesaView(); } + /** + * Captura o número da mesa e remove a mesa correspondente do banco de dados. + * + * Exibe mensagem informativa no console, independentemente de a mesa existir ou não. + * + * @throws IOException caso ocorra erro na entrada de dados pelo usuário + */ public void removerMesa() throws IOException { String numero = view.pedirNumeroMesa(); dao.deletar(numero); System.out.println("Mesa removida (se existia)!"); } - - } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/SearchMesaController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/SearchMesaController.java index ced9275..352f8ab 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/SearchMesaController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/mesa/SearchMesaController.java @@ -7,15 +7,35 @@ import com.restaurante.model.Mesa; import com.restaurante.view.MesaView; +/** + * Controller responsável por listar as mesas cadastradas no sistema. + * + * Esta classe utiliza a {@link MesaDAO} para recuperar a lista de mesas + * e a {@link MesaView} para exibir as mesas ao usuário. + * + * Pode lançar exceções de entrada/saída durante a operação de exibição. + */ public class SearchMesaController { + + /** Objeto de acesso a dados para mesas. */ private MesaDAO dao; + + /** Interface de entrada e saída para o usuário. */ private MesaView view; + /** + * Construtor que inicializa os DAOs e Views necessários. + */ public SearchMesaController(){ this.dao = new MesaDAO(); this.view = new MesaView(); } + /** + * Recupera a lista de mesas do banco de dados e as exibe ao usuário. + * + * @throws IOException caso ocorra erro na operação de exibição + */ public void listarMesas() throws IOException { List mesas = dao.listar(); view.exibirMesas(mesas); diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/CreateProdutoController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/CreateProdutoController.java index 089e356..80b6b70 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/CreateProdutoController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/CreateProdutoController.java @@ -6,15 +6,40 @@ import com.restaurante.model.Produto; import com.restaurante.view.ProdutoView; +/** + * Controller responsável pela criação de produtos no sistema. + * + * Esta classe captura os dados do produto através da {@link ProdutoView}, + * cria um novo objeto {@link Produto} e persiste no banco de dados + * utilizando a {@link ProdutoDAO}. + * + * Pode lançar exceções relacionadas à entrada de dados durante a captura. + * + * Informa ao usuário sobre o sucesso da operação via console. + */ public class CreateProdutoController { + + /** Objeto de acesso a dados para produtos. */ private ProdutoDAO dao; + + /** Interface de entrada e saída para o usuário. */ private ProdutoView view; + /** + * Construtor que inicializa os objetos DAO e View. + */ public CreateProdutoController() { dao = new ProdutoDAO(); view = new ProdutoView(); } + /** + * Captura os dados do produto, cria o objeto Produto e salva no banco de dados. + * + * Exibe uma mensagem de sucesso no console após a operação. + * + * @throws IOException caso ocorra erro durante a entrada de dados + */ public void adicionarProduto() throws IOException { String nome = view.pedirNomeProduto(); float valor = view.pedirValorProduto(); @@ -22,5 +47,5 @@ public void adicionarProduto() throws IOException { dao.salvar(new Produto(nome, valor)); System.out.println("Produto adicionado com sucesso!"); } - } + diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/DeleteProdutoController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/DeleteProdutoController.java index c185e49..10144e7 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/DeleteProdutoController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/DeleteProdutoController.java @@ -5,19 +5,40 @@ import com.restaurante.dao.ProdutoDAO; import com.restaurante.view.ProdutoView; +/** + * Controller responsável pela remoção de produtos do sistema com base no nome. + * + * Esta classe interage com a {@link ProdutoView} para capturar o nome do produto + * a ser removido e utiliza a {@link ProdutoDAO} para realizar a exclusão no banco de dados. + * + * Exibe mensagem informativa no console após a remoção. + */ public class DeleteProdutoController { + + /** Objeto de acesso a dados para produtos. */ private ProdutoDAO dao; + + /** Interface de entrada e saída para o usuário. */ private ProdutoView view; + /** + * Construtor que inicializa os objetos DAO e View. + */ public DeleteProdutoController() { dao = new ProdutoDAO(); view = new ProdutoView(); } + /** + * Captura o nome do produto e remove o produto correspondente do banco de dados. + * + * Exibe mensagem no console informando que o produto foi removido. + * + * @throws IOException caso ocorra erro na entrada de dados pelo usuário + */ public void removerProduto() throws IOException { String nome = view.pedirNomeProduto(); dao.removerPorNome(nome); System.out.println("Produto removido!"); } - } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/SearchProdutoController.java b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/SearchProdutoController.java index 12f6227..72b4c0f 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/SearchProdutoController.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/produto/SearchProdutoController.java @@ -7,18 +7,39 @@ import com.restaurante.model.Produto; import com.restaurante.view.ProdutoView; +/** + * Controller responsável por listar todos os produtos cadastrados no sistema. + * + * Esta classe utiliza a {@link ProdutoDAO} para recuperar a lista de produtos + * e a {@link ProdutoView} para exibir essas informações ao usuário. + * + * Pode lançar exceções relacionadas à entrada/saída durante a exibição. + * + * Útil para visualização geral dos produtos disponíveis. + */ public class SearchProdutoController { + + /** Objeto de acesso a dados para produtos. */ private ProdutoDAO dao; + + /** Interface de entrada e saída para o usuário. */ private ProdutoView view; + /** + * Construtor que inicializa os objetos DAO e View. + */ public SearchProdutoController() { dao = new ProdutoDAO(); view = new ProdutoView(); } + /** + * Recupera a lista de todos os produtos cadastrados e os exibe ao usuário. + * + * @throws IOException caso ocorra erro na operação de exibição + */ public void listarProdutos() throws IOException { List produtos = dao.listarTodos(); view.exibirProdutos(produtos); } - } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ClienteDAO.java b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ClienteDAO.java index 541e602..0899d61 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ClienteDAO.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ClienteDAO.java @@ -8,10 +8,30 @@ import java.util.List; import java.util.Scanner; +/** + * Data Access Object (DAO) para manipulação persistente de dados de clientes. + * + * Esta classe realiza operações de leitura, escrita e remoção de clientes + * em um arquivo de texto denominado {@code clientes.txt}. + * + * O cliente é salvo com seu endereço serializado em formato simples (CSV), + * e na leitura o endereço é desserializado para o objeto {@link Endereco}. + * + * O arquivo é manipulado diretamente, e erros de E/S são tratados com mensagens no console. + * + */ public class ClienteDAO { + + /** Nome do arquivo usado para armazenar os dados dos clientes. */ private static final String ARQUIVO = "clientes.txt"; - // Salva cliente com endereço serializado + /** + * Salva um cliente no arquivo, adicionando ao final do arquivo existente. + * + * O endereço do cliente, se existir, é serializado no formato "tipo,numero,cep". + * + * @param cliente o cliente a ser salvo + */ public void salvar(Cliente cliente) { try (PrintWriter writer = new PrintWriter(new FileWriter(ARQUIVO, true))) { String enderecoStr = ""; @@ -29,7 +49,15 @@ public void salvar(Cliente cliente) { } } - // Lista clientes desserializando endereço + /** + * Lista todos os clientes armazenados no arquivo. + * + * Realiza a leitura do arquivo, desserializando as informações do cliente + * e seu endereço (quando presente) para objetos correspondentes. + * + * @return uma lista contendo todos os clientes encontrados no arquivo; + * lista vazia se o arquivo não existir ou estiver vazio + */ public List listar() { List clientes = new ArrayList<>(); File file = new File(ARQUIVO); @@ -68,7 +96,15 @@ public List listar() { return clientes; } - // Remove cliente pelo CPF + /** + * Remove um cliente do arquivo com base no CPF informado. + * + * A operação recarrega todos os clientes, remove o cliente com o CPF especificado + * e reescreve o arquivo com os dados atualizados. + * + * @param cpf o CPF do cliente que deve ser removido + * @return {@code true} se um cliente foi removido; {@code false} caso contrário + */ public boolean remover(String cpf) { List clientes = listar(); boolean removido = clientes.removeIf(c -> c.getCpf().equals(cpf)); diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/EnderecoDAO.java b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/EnderecoDAO.java index 92646b6..4aca861 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/EnderecoDAO.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/EnderecoDAO.java @@ -6,9 +6,27 @@ import java.util.ArrayList; import java.util.List; +/** + * Data Access Object (DAO) responsável pela persistência e manipulação de dados de endereços. + * + * Esta classe realiza operações de salvar, listar e deletar endereços em um arquivo de texto + * denominado {@code enderecos.txt}, armazenando as informações no formato delimitado por ponto e vírgula. + * + * Trata exceções de E/S exibindo mensagens no console. + * + */ public class EnderecoDAO { + + /** Nome do arquivo usado para armazenar os endereços. */ private static final String ARQUIVO = "enderecos.txt"; + /** + * Salva um endereço no arquivo, adicionando ao final do arquivo existente. + * + * O endereço é formatado como "tipo;numero;cep" para armazenamento. + * + * @param endereco o endereço a ser salvo + */ public void salvarEndereco(Endereco endereco) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(ARQUIVO, true))) { writer.write(formatarEndereco(endereco)); @@ -19,10 +37,24 @@ public void salvarEndereco(Endereco endereco) { } } + /** + * Formata os dados do endereço para o formato de texto que será salvo no arquivo. + * + * @param e o endereço a ser formatado + * @return string formatada contendo tipo, número e CEP separados por ponto e vírgula + */ private String formatarEndereco(Endereco e) { return e.getTipo() + ";" + e.getNumero() + ";" + e.getCep(); } + /** + * Lista todos os endereços armazenados no arquivo. + * + * Realiza a leitura do arquivo, cria objetos {@link Endereco} e os adiciona a uma lista. + * + * @return lista contendo todos os endereços encontrados no arquivo; + * lista vazia caso o arquivo não exista ou esteja vazio + */ public List listarEnderecos() { List lista = new ArrayList<>(); try (BufferedReader reader = new BufferedReader(new FileReader(ARQUIVO))) { @@ -37,13 +69,20 @@ public List listarEnderecos() { } } } catch (FileNotFoundException e) { - // Arquivo não existe ainda, tudo bem + // Arquivo não existe ainda, não é considerado erro } catch (IOException e) { System.out.println("Erro ao ler arquivo de endereços: " + e.getMessage()); } return lista; } + /** + * Remove um endereço da lista com base no CEP e atualiza o arquivo com a lista atualizada. + * + * @param lista lista de endereços em memória + * @param cep o CEP do endereço que deve ser removido + * @return {@code true} se algum endereço foi removido; {@code false} caso contrário + */ public boolean deletarEnderecoPorCep(List lista, String cep) { boolean removido = lista.removeIf(e -> e.getCep().equals(cep)); if (removido) { @@ -52,6 +91,11 @@ public boolean deletarEnderecoPorCep(List lista, String cep) { return removido; } + /** + * Salva a lista atualizada de endereços no arquivo, sobrescrevendo o conteúdo existente. + * + * @param lista a lista atualizada de endereços + */ private void salvarListaAtualizada(List lista) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(ARQUIVO, false))) { for (Endereco e : lista) { diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/FuncionarioDAO.java b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/FuncionarioDAO.java index d4aaf59..2b1f52c 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/FuncionarioDAO.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/FuncionarioDAO.java @@ -7,10 +7,32 @@ import java.util.ArrayList; import java.util.List; +/** + * Data Access Object (DAO) responsável pela persistência e manipulação de dados dos funcionários. + * + * Esta classe realiza operações de salvar, listar e remover funcionários + * em um arquivo de texto denominado {@code funcionarios.txt}. + * + * Os funcionários são armazenados com suas mesas associadas serializadas em formato texto. + * + * Os dados das mesas são serializados como "numero,local" separados por pipe "|". + * + * Exibe mensagens no console em caso de erros de I/O. + * + */ public class FuncionarioDAO { + + /** Nome do arquivo usado para armazenar os dados dos funcionários. */ private static final String ARQUIVO = "funcionarios.txt"; - // Salvar funcionário no arquivo com mesas serializadas + /** + * Salva um funcionário no arquivo, adicionando ao final. + * + * Serializa a lista de mesas associadas ao funcionário no formato + * "numero,local|numero,local|...". + * + * @param funcionario o funcionário a ser salvo + */ public void salvar(Funcionario funcionario) { try (PrintWriter writer = new PrintWriter(new FileWriter(ARQUIVO, true))) { StringBuilder sbMesas = new StringBuilder(); @@ -33,7 +55,14 @@ public void salvar(Funcionario funcionario) { } } - // Listar todos os funcionários do arquivo, desserializando as mesas + /** + * Lista todos os funcionários armazenados no arquivo. + * + * Desserializa as informações dos funcionários e suas mesas para objetos correspondentes. + * + * @return lista com todos os funcionários encontrados no arquivo; + * lista vazia se o arquivo não existir ou estiver vazio + */ public List listar() { List funcionarios = new ArrayList<>(); File file = new File(ARQUIVO); @@ -73,7 +102,15 @@ public List listar() { return funcionarios; } - // Remover funcionário pelo CPF + /** + * Remove um funcionário do arquivo com base no CPF informado. + * + * Recarrega todos os funcionários, remove o funcionário com o CPF especificado + * e reescreve o arquivo com os dados atualizados. + * + * @param cpf o CPF do funcionário a ser removido + * @return {@code true} se um funcionário foi removido; {@code false} caso contrário + */ public boolean remover(String cpf) { List funcionarios = listar(); boolean removido = funcionarios.removeIf(f -> f.getCpf().equals(cpf)); diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/MesaDAO.java b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/MesaDAO.java index 7c0a4ad..80ec4b8 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/MesaDAO.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/MesaDAO.java @@ -6,9 +6,34 @@ import com.restaurante.model.Mesa; +/** + * Data Access Object (DAO) responsável pela persistência e manipulação dos dados das mesas. + * + * Esta classe realiza operações de salvar, listar e deletar mesas em um arquivo de texto + * denominado {@code mesas.txt}, armazenando as informações no formato delimitado por ponto e vírgula. + * + * Operações suportadas: + *
    + *
  • Salvar uma mesa (append no arquivo)
  • + *
  • Listar todas as mesas
  • + *
  • Deletar uma mesa pelo número e atualizar o arquivo
  • + *
+ * + * Exceções de I/O são propagadas para o chamador tratar. + */ public class MesaDAO { + + /** Nome do arquivo usado para armazenar as mesas. */ private static final String FILE_NAME = "mesas.txt"; + /** + * Salva uma mesa no arquivo, adicionando ao final do arquivo existente. + * + * O formato utilizado para armazenamento é "numero;local". + * + * @param mesa a mesa a ser salva + * @throws IOException caso ocorra erro na operação de escrita no arquivo + */ public void salvar(Mesa mesa) throws IOException { try (BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_NAME, true))) { writer.write(mesa.getNumero() + ";" + mesa.getLocal()); @@ -16,6 +41,15 @@ public void salvar(Mesa mesa) throws IOException { } } + /** + * Lista todas as mesas armazenadas no arquivo. + * + * Realiza a leitura do arquivo, criando objetos {@link Mesa} para cada linha. + * + * @return lista contendo todas as mesas encontradas no arquivo; + * lista vazia caso o arquivo não exista ou esteja vazio + * @throws IOException caso ocorra erro na operação de leitura do arquivo + */ public List listar() throws IOException { List mesas = new ArrayList<>(); File arquivo = new File(FILE_NAME); @@ -34,6 +68,15 @@ public List listar() throws IOException { return mesas; } + /** + * Remove uma mesa do arquivo com base no número informado. + * + * A operação recarrega todas as mesas, remove a mesa com o número especificado, + * e reescreve o arquivo com as mesas restantes. + * + * @param numero o número da mesa que deve ser removida + * @throws IOException caso ocorra erro na operação de leitura ou escrita no arquivo + */ public void deletar(String numero) throws IOException { List mesas = listar(); try (BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_NAME))) { diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ProdutoDAO.java b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ProdutoDAO.java index b54181e..eb99711 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ProdutoDAO.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/dao/ProdutoDAO.java @@ -6,9 +6,29 @@ import com.restaurante.model.Produto; +/** + * Data Access Object (DAO) responsável pela persistência e manipulação dos dados dos produtos. + * + * Esta classe realiza operações de salvar, listar e remover produtos + * em um arquivo de texto denominado {@code produtos.txt}, + * armazenando as informações no formato delimitado por ponto e vírgula. + * + * Exceções de I/O são propagadas para o chamador tratar. + * + */ public class ProdutoDAO { + + /** Nome do arquivo usado para armazenar os produtos. */ private static final String FILE_NAME = "produtos.txt"; + /** + * Salva um produto no arquivo, adicionando ao final do arquivo existente. + * + * O formato utilizado para armazenamento é "nome;valor". + * + * @param produto o produto a ser salvo + * @throws IOException caso ocorra erro na operação de escrita no arquivo + */ public void salvar(Produto produto) throws IOException { try (BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_NAME, true))) { writer.write(produto.getNome() + ";" + produto.getValorProd()); @@ -16,6 +36,15 @@ public void salvar(Produto produto) throws IOException { } } + /** + * Lista todos os produtos armazenados no arquivo. + * + * Realiza a leitura do arquivo, criando objetos {@link Produto} para cada linha. + * + * @return lista contendo todos os produtos encontrados no arquivo; + * lista vazia caso o arquivo não exista ou esteja vazio + * @throws IOException caso ocorra erro na operação de leitura do arquivo + */ public List listarTodos() throws IOException { List produtos = new ArrayList<>(); File arquivo = new File(FILE_NAME); @@ -34,11 +63,19 @@ public List listarTodos() throws IOException { return produtos; } + /** + * Remove um produto do arquivo com base no nome informado. + * + * A operação recarrega todos os produtos, remove o produto com o nome especificado, + * e reescreve o arquivo com os produtos restantes. + * + * @param nome o nome do produto que deve ser removido + * @throws IOException caso ocorra erro na operação de leitura ou escrita no arquivo + */ public void removerPorNome(String nome) throws IOException { List produtos = listarTodos(); try (BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_NAME))) { - for (Produto p : produtos) { if (!p.getNome().equals(nome)) { writer.write(p.getNome() + ";" + p.getValorProd()); diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Cliente.java b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Cliente.java index be2d735..621758b 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Cliente.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Cliente.java @@ -1,18 +1,46 @@ package com.restaurante.model; -public class Cliente extends Pessoa{ +/** + * Representa um cliente do restaurante, que é uma especialização de {@link Pessoa}. + * + * Além dos atributos herdados de Pessoa (nome, cpf, endereço), + * o cliente possui um número de fidelidade. + * + * @see Pessoa + */ +public class Cliente extends Pessoa { + + /** Número de fidelidade do cliente. */ private int numFid; - public Cliente(String nome, String cpf,Endereco endereco,int numFid) { - super(nome, cpf, endereco ); + /** + * Construtor para criar um cliente com nome, CPF, endereço e número de fidelidade. + * + * @param nome nome do cliente + * @param cpf CPF do cliente + * @param endereco endereço do cliente + * @param numFid número de fidelidade do cliente + */ + public Cliente(String nome, String cpf, Endereco endereco, int numFid) { + super(nome, cpf, endereco); this.numFid = numFid; } + /** + * Obtém o número de fidelidade do cliente. + * + * @return número de fidelidade + */ public int getNumFid() { return numFid; } + /** + * Define o número de fidelidade do cliente. + * + * @param numFid novo número de fidelidade + */ public void setNumFid(int numFid) { this.numFid = numFid; } -} \ No newline at end of file +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Endereco.java b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Endereco.java index 72520a5..5ca3c7f 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Endereco.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Endereco.java @@ -1,42 +1,92 @@ package com.restaurante.model; +/** + * Representa um endereço com tipo, CEP e número. + * + * Exemplo de tipo: "Rua", "Avenida", etc. + * + * Contém métodos para obter e modificar seus atributos, + * além de um método para retornar uma descrição simples do endereço. + * + */ public class Endereco { + + /** Tipo do endereço (ex: Rua, Avenida). */ private String tipo; + + /** Código de Endereçamento Postal (CEP). */ private String cep; + + /** Número do endereço. */ private int numero; + /** + * Construtor para criar um endereço. + * + * @param tipo tipo do endereço (ex: Rua, Avenida) + * @param cep CEP do endereço + * @param numero número do endereço + */ public Endereco(String tipo, String cep, int numero) { this.tipo = tipo; this.cep = cep; this.numero = numero; } + /** + * Obtém o tipo do endereço. + * @return tipo do endereço + */ public String getTipo() { return tipo; } + /** + * Define o tipo do endereço. + * @param tipo novo tipo do endereço + */ public void setTipo(String tipo) { this.tipo = tipo; } + /** + * Obtém o CEP do endereço. + * @return CEP do endereço + */ public String getCep() { return cep; } + /** + * Define o CEP do endereço. + * @param cep novo CEP do endereço + */ public void setCep(String cep) { this.cep = cep; } + /** + * Obtém o número do endereço. + * @return número do endereço + */ public int getNumero() { return numero; } + /** + * Define o número do endereço. + * @param numero novo número do endereço + */ public void setNumero(int numero) { this.numero = numero; } - public String getEndereco() - { + /** + * Retorna uma descrição simples do endereço no formato "tipo, número". + * + * @return descrição do endereço + */ + public String getEndereco() { return this.tipo + ", " + this.numero; } } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Funcionario.java b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Funcionario.java index 707076e..345aade 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Funcionario.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Funcionario.java @@ -2,38 +2,93 @@ import java.util.List; -public class Funcionario extends Pessoa{ +/** + * Representa um funcionário do restaurante, que é uma especialização de {@link Pessoa}. + * + * Além dos atributos herdados de Pessoa (nome, cpf, endereço), + * o funcionário possui carteira de trabalho (CTP), cargo e uma lista de mesas que ele atende. + * + * @see Pessoa + * + */ +public class Funcionario extends Pessoa { + + /** Número da Carteira de Trabalho e Previdência Social do funcionário. */ private String ctp; + + /** Cargo ocupado pelo funcionário. */ private String cargo; + + /** Lista de mesas atribuídas ao funcionário. */ private List mesas; - public Funcionario(String nome, String cpf,Endereco endereco, String ctp, String cargo, List mesas) { + /** + * Construtor para criar um funcionário com nome, CPF, endereço, CTP, cargo e lista de mesas. + * + * @param nome nome do funcionário + * @param cpf CPF do funcionário + * @param endereco endereço do funcionário + * @param ctp número da carteira de trabalho + * @param cargo cargo do funcionário + * @param mesas lista de mesas que o funcionário atende + */ + public Funcionario(String nome, String cpf, Endereco endereco, String ctp, String cargo, List mesas) { super(nome, cpf, endereco); this.ctp = ctp; this.cargo = cargo; this.mesas = mesas; } + /** + * Obtém o número da carteira de trabalho do funcionário. + * + * @return número da CTP + */ public String getCtp() { return ctp; } + /** + * Define o número da carteira de trabalho do funcionário. + * + * @param ctp novo número da CTP + */ public void setCtp(String ctp) { this.ctp = ctp; } + /** + * Obtém o cargo do funcionário. + * + * @return cargo do funcionário + */ public String getCargo() { return cargo; } + /** + * Define o cargo do funcionário. + * + * @param cargo novo cargo do funcionário + */ public void setCargo(String cargo) { this.cargo = cargo; } + /** + * Obtém a lista de mesas que o funcionário atende. + * + * @return lista de mesas + */ public List getMesas() { return mesas; } + /** + * Define a lista de mesas que o funcionário atende. + * + * @param mesas nova lista de mesas + */ public void setMesas(List mesas) { this.mesas = mesas; } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Mesa.java b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Mesa.java index 15bd081..353e5a3 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Mesa.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Mesa.java @@ -1,27 +1,63 @@ package com.restaurante.model; +/** + * Representa uma mesa do restaurante, identificada por número e localização. + * + * Esta classe encapsula os atributos básicos de uma mesa, + * incluindo seu número identificador e o local onde está posicionada. + */ public class Mesa { + + /** Número identificador da mesa. */ private String numero; + + /** Localização da mesa no restaurante. */ private String local; + /** + * Construtor para criar uma mesa com número e local definidos. + * + * @param numero número identificador da mesa + * @param local localização da mesa + */ public Mesa(String numero, String local) { this.numero = numero; this.local = local; } + /** + * Obtém o número da mesa. + * + * @return número da mesa + */ public String getNumero() { return numero; } + /** + * Define o número da mesa. + * + * @param numero novo número da mesa + */ public void setNumero(String numero) { this.numero = numero; } + /** + * Obtém a localização da mesa. + * + * @return local da mesa + */ public String getLocal() { return local; } + /** + * Define a localização da mesa. + * + * @param local nova localização da mesa + */ public void setLocal(String local) { this.local = local; } -} \ No newline at end of file +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Pessoa.java b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Pessoa.java index 41b2330..59f83ae 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Pessoa.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Pessoa.java @@ -1,31 +1,86 @@ package com.restaurante.model; +/** + * Representa uma pessoa genérica com nome, CPF e endereço. + * + * Esta classe serve como base para outras classes que representam + * tipos específicos de pessoas, como Cliente e Funcionario. + * + */ public class Pessoa { + + /** Nome da pessoa. */ private String nome; + + /** CPF da pessoa. */ private String cpf; + + /** Endereço da pessoa. */ private Endereco endereco; - public Pessoa(String nome, String cpf,Endereco endereco) { + /** + * Construtor para criar uma pessoa com nome, CPF e endereço. + * + * @param nome nome da pessoa + * @param cpf CPF da pessoa + * @param endereco endereço da pessoa + */ + public Pessoa(String nome, String cpf, Endereco endereco) { this.nome = nome; this.cpf = cpf; this.endereco = endereco; } + /** + * Obtém o nome da pessoa. + * + * @return nome da pessoa + */ public String getNome() { return nome; } + + /** + * Define o nome da pessoa. + * + * @param nome novo nome da pessoa + */ public void setNome(String nome) { this.nome = nome; } + + /** + * Obtém o CPF da pessoa. + * + * @return CPF da pessoa + */ public String getCpf() { return cpf; } + + /** + * Define o CPF da pessoa. + * + * @param cpf novo CPF da pessoa + */ public void setCpf(String cpf) { this.cpf = cpf; } + + /** + * Obtém o endereço da pessoa. + * + * @return endereço da pessoa + */ public Endereco getEndereco() { return endereco; } + + /** + * Define o endereço da pessoa. + * + * @param endereco novo endereço da pessoa + */ public void setEndereco(Endereco endereco) { this.endereco = endereco; } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Produto.java b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Produto.java index bc9d4ae..631bccd 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/model/Produto.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/model/Produto.java @@ -1,19 +1,45 @@ package com.restaurante.model; +/** + * Representa um produto do restaurante, com nome, valor base, + * percentual de lucro e valor do IVA (Imposto sobre Valor Agregado). + * + * O valor do produto pode ser ajustado com base no lucro e no IVA. + */ public class Produto { + + /** Nome do produto. */ private String nome; + + /** Valor base do produto (antes de impostos e lucro). */ private float valorProd; - + /** Percentual de lucro aplicado sobre o valor base (ex: 5%). */ private int lucro = 5; - private float iva = (float) 1.23; - + + /** Valor do IVA aplicado sobre o valor base (ex: 1.23 corresponde a 23%). */ + private float iva = 1.23f; + /** + * Construtor para criar produto com nome e valor base. + * Usa valores padrão para lucro (5%) e IVA (1.23). + * + * @param nome nome do produto + * @param valorProd valor base do produto + */ public Produto(String nome, float valorProd) { this.nome = nome; this.valorProd = valorProd; } + /** + * Construtor completo para criar produto com todos os parâmetros. + * + * @param nome nome do produto + * @param valorProd valor base do produto + * @param lucro percentual de lucro aplicado + * @param iva valor do IVA aplicado + */ public Produto(String nome, float valorProd, int lucro, float iva) { this.nome = nome; this.valorProd = valorProd; @@ -21,35 +47,75 @@ public Produto(String nome, float valorProd, int lucro, float iva) { this.iva = iva; } + /** + * Obtém o nome do produto. + * + * @return nome do produto + */ public String getNome() { return nome; } + /** + * Define o nome do produto. + * + * @param nome novo nome do produto + */ public void setNome(String nome) { this.nome = nome; } + /** + * Obtém o valor base do produto. + * + * @return valor base do produto + */ public float getValorProd() { return valorProd; } + /** + * Define o valor base do produto. + * + * @param valorProd novo valor base do produto + */ public void setValorProd(float valorProd) { this.valorProd = valorProd; } + /** + * Obtém o valor do IVA aplicado ao produto. + * + * @return valor do IVA + */ public float getIva() { return iva; } + /** + * Define o valor do IVA aplicado ao produto. + * + * @param iva novo valor do IVA + */ public void setIva(float iva) { this.iva = iva; } + /** + * Obtém o percentual de lucro aplicado ao produto. + * + * @return percentual de lucro + */ public int getLucro() { return lucro; } + /** + * Define o percentual de lucro aplicado ao produto. + * + * @param lucro novo percentual de lucro + */ public void setLucro(int lucro) { this.lucro = lucro; } -} \ No newline at end of file +} diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/view/ClienteView.java b/avaliacoes/restaurante/src/main/java/com/restaurante/view/ClienteView.java index 2418b1e..7f5f473 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/view/ClienteView.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/view/ClienteView.java @@ -3,9 +3,25 @@ import java.util.Scanner; import com.restaurante.model.Cliente; +/** + * Classe responsável pela interação com o usuário para operações + * relacionadas a clientes, incluindo captura de dados e exibição de informações. + * + * Utiliza a entrada padrão (Scanner) para capturar dados do usuário. + * + */ public class ClienteView { + + /** Scanner para entrada de dados via teclado. */ private Scanner scanner = new Scanner(System.in); + /** + * Captura os dados básicos de um cliente pelo teclado: + * nome, CPF e número de fidelidade. + * O endereço não é capturado aqui e deve ser setado posteriormente. + * + * @return objeto Cliente criado com os dados capturados + */ public Cliente capturarCliente() { System.out.print("Nome: "); String nome = scanner.nextLine(); @@ -17,11 +33,22 @@ public Cliente capturarCliente() { return new Cliente(nome, cpf, null, numFid); // Endereço será setado depois } + /** + * Captura o CPF do cliente via entrada padrão. + * + * @return CPF capturado como String + */ public String capturarCpf() { System.out.print("Digite o CPF do cliente: "); return scanner.nextLine(); } + /** + * Exibe os dados de um cliente formatados no console, + * incluindo nome, CPF, número de fidelidade e, se existir, o endereço. + * + * @param c cliente cujos dados serão exibidos + */ public void mostrar(Cliente c) { System.out.println("Nome: " + c.getNome()); System.out.println("CPF: " + c.getCpf()); @@ -31,10 +58,20 @@ public void mostrar(Cliente c) { System.out.println("--------------------------"); } + /** + * Exibe uma mensagem genérica no console. + * + * @param msg mensagem a ser exibida + */ public void mostrarMensagem(String msg) { System.out.println(msg); } + /** + * Retorna o objeto Scanner usado para captura de entrada. + * + * @return Scanner associado à entrada padrão + */ public Scanner getScanner() { return scanner; } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/view/EnderecoView.java b/avaliacoes/restaurante/src/main/java/com/restaurante/view/EnderecoView.java index 5047153..ecb1586 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/view/EnderecoView.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/view/EnderecoView.java @@ -4,9 +4,26 @@ import java.util.Scanner; import com.restaurante.model.Endereco; +/** + * Classe responsável pela interação com o usuário para operações + * relacionadas a endereços, incluindo captura e exibição de dados. + * Utiliza a entrada padrão (Scanner) para capturar dados do usuário. + * + * Fornece métodos para capturar um endereço completo, capturar um CEP, + * mostrar um endereço individual, mostrar uma lista de endereços e + * exibir mensagens gerais. + */ public class EnderecoView { + + /** Scanner para entrada de dados via teclado. */ private Scanner scanner = new Scanner(System.in); + /** + * Captura os dados necessários para criar um objeto Endereco, + * solicitando tipo, número e CEP ao usuário. + * + * @return objeto Endereco criado com os dados capturados + */ public Endereco capturarEndereco() { System.out.print("Tipo (Rua, Av...): "); String tipo = scanner.nextLine(); @@ -20,11 +37,23 @@ public Endereco capturarEndereco() { return new Endereco(tipo, cep, numero); } + /** + * Captura o CEP do usuário via entrada padrão. + * + * @return CEP capturado como String + */ public String capturarCep() { System.out.print("Digite o CEP: "); return scanner.nextLine(); } + /** + * Exibe as informações de um endereço formatadas no console. + * Caso o endereço seja nulo, exibe uma mensagem informando que + * o endereço não foi encontrado. + * + * @param e endereço a ser exibido + */ public void mostrarEndereco(Endereco e) { if (e != null) { System.out.printf("Endereço: %s, %d, CEP: %s%n", e.getTipo(), e.getNumero(), e.getCep()); @@ -33,6 +62,13 @@ public void mostrarEndereco(Endereco e) { } } + /** + * Exibe uma lista de endereços no console, formatando cada um. + * Caso a lista esteja vazia, exibe uma mensagem informando que + * não há endereços cadastrados. + * + * @param enderecos lista de endereços a ser exibida + */ public void mostrarListaEnderecos(List enderecos) { if (enderecos.isEmpty()) { System.out.println("Nenhum endereço cadastrado."); @@ -44,6 +80,11 @@ public void mostrarListaEnderecos(List enderecos) { } } + /** + * Exibe uma mensagem genérica no console. + * + * @param msg mensagem a ser exibida + */ public void mostrarMensagem(String msg) { System.out.println(msg); } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/view/FuncionarioView.java b/avaliacoes/restaurante/src/main/java/com/restaurante/view/FuncionarioView.java index c1eac9e..41c1098 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/view/FuncionarioView.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/view/FuncionarioView.java @@ -7,9 +7,76 @@ import com.restaurante.model.Funcionario; import com.restaurante.model.Mesa; +/** + * Classe responsável pela interação com o usuário para operações relacionadas a funcionários, + * incluindo captura de dados e exibição de informações. + * + * Permite capturar informações de um funcionário, associando mesas já existentes ou criando novas mesas, + * capturar CPF para buscas ou remoções, mostrar detalhes do funcionário e exibir mensagens genéricas. + * + */ public class FuncionarioView { private Scanner scanner = new Scanner(System.in); + /** + * Captura os dados para criar um funcionário associando mesas já existentes. + * Exibe a lista de mesas disponíveis para seleção e permite que o usuário selecione múltiplas mesas. + * + * @param mesasExistentes lista de mesas já cadastradas e disponíveis para associação + * @return um objeto Funcionario criado com os dados fornecidos e as mesas selecionadas + */ + public Funcionario capturarFuncionarioComMesasExistentes(List mesasExistentes) { + System.out.print("Nome: "); + String nome = scanner.nextLine(); + System.out.print("CPF: "); + String cpf = scanner.nextLine(); + System.out.print("CTP: "); + String ctp = scanner.nextLine(); + System.out.print("Cargo: "); + String cargo = scanner.nextLine(); + + List mesasSelecionadas = new ArrayList<>(); + String opcao = "s"; + + while (opcao.equalsIgnoreCase("s")) { + System.out.println("Mesas disponíveis:"); + for (int i = 0; i < mesasExistentes.size(); i++) { + Mesa m = mesasExistentes.get(i); + System.out.printf("%d - Mesa %s - Local: %s%n", i + 1, m.getNumero(), m.getLocal()); + } + System.out.print("Escolha o número da mesa para associar: "); + int escolha; + try { + escolha = Integer.parseInt(scanner.nextLine()); + } catch (NumberFormatException e) { + System.out.println("Entrada inválida, tente novamente."); + continue; + } + + if (escolha >= 1 && escolha <= mesasExistentes.size()) { + Mesa mesaEscolhida = mesasExistentes.get(escolha - 1); + if (!mesasSelecionadas.contains(mesaEscolhida)) { + mesasSelecionadas.add(mesaEscolhida); + } else { + System.out.println("Mesa já selecionada."); + } + } else { + System.out.println("Opção inválida."); + } + + System.out.print("Deseja adicionar outra mesa? (s/n): "); + opcao = scanner.nextLine(); + } + + return new Funcionario(nome, cpf, null, ctp, cargo, mesasSelecionadas); + } + + /** + * Captura os dados para criar um funcionário incluindo mesas criadas manualmente. + * Permite adicionar múltiplas mesas informando número e local. + * + * @return um objeto Funcionario criado com os dados fornecidos e mesas informadas manualmente + */ public Funcionario capturarFuncionario() { System.out.print("Nome: "); String nome = scanner.nextLine(); @@ -20,7 +87,6 @@ public Funcionario capturarFuncionario() { System.out.print("Cargo: "); String cargo = scanner.nextLine(); - // Captura múltiplas mesas List mesas = new ArrayList<>(); String opcao = "s"; @@ -39,11 +105,22 @@ public Funcionario capturarFuncionario() { return new Funcionario(nome, cpf, null, ctp, cargo, mesas); } + /** + * Captura o CPF do funcionário via entrada padrão. + * + * @return CPF capturado como String + */ public String capturarCpf() { System.out.print("Digite o CPF do funcionário: "); return scanner.nextLine(); } + /** + * Exibe as informações de um funcionário formatadas no console, + * incluindo nome, CPF, CTP, cargo e mesas associadas. + * + * @param f funcionário cujos dados serão exibidos + */ public void mostrar(Funcionario f) { System.out.println("Nome: " + f.getNome()); System.out.println("CPF: " + f.getCpf()); @@ -58,10 +135,20 @@ public void mostrar(Funcionario f) { System.out.println("--------------------------"); } + /** + * Exibe uma mensagem genérica no console. + * + * @param msg mensagem a ser exibida + */ public void mostrarMensagem(String msg) { System.out.println(msg); } + /** + * Retorna o objeto Scanner usado para captura de entrada. + * + * @return Scanner associado à entrada padrão + */ public Scanner getScanner() { return scanner; } diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/view/MesaView.java b/avaliacoes/restaurante/src/main/java/com/restaurante/view/MesaView.java index cf2044a..7808df1 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/view/MesaView.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/view/MesaView.java @@ -1,33 +1,56 @@ package com.restaurante.view; import java.util.Scanner; - import com.restaurante.model.Mesa; - import java.util.List; +/** + * Classe responsável pela interação com o usuário para operações + * relacionadas a mesas, incluindo captura e exibição de dados. + * Utiliza a entrada padrão (Scanner) para capturar dados do usuário. + * + * Fornece métodos para pedir o número e o local da mesa, + * além de exibir uma lista de mesas cadastradas. + * + */ public class MesaView { + + /** Scanner para entrada de dados via teclado. */ private Scanner scanner = new Scanner(System.in); + /** + * Solicita ao usuário o número da mesa. + * + * @return número da mesa informado pelo usuário + */ public String pedirNumeroMesa() { System.out.print("Número da mesa: "); return scanner.nextLine(); } + /** + * Solicita ao usuário o local da mesa. + * + * @return local da mesa informado pelo usuário + */ public String pedirLocalMesa() { System.out.print("Local da mesa: "); return scanner.nextLine(); } + /** + * Exibe a lista de mesas no console. + * Caso a lista esteja vazia, exibe uma mensagem informando que não há mesas cadastradas. + * + * @param mesas lista de mesas a ser exibida + */ public void exibirMesas(List mesas) { - if (mesas.isEmpty()) { - System.out.println("Nenhuma mesa cadastrada."); - } else { - for (Mesa m : mesas) { - System.out.println("Mesa " + m.getNumero() + " - Local: " + m.getLocal()); + if (mesas.isEmpty()) { + System.out.println("Nenhuma mesa cadastrada."); + } else { + for (Mesa m : mesas) { + System.out.println("Mesa " + m.getNumero() + " - Local: " + m.getLocal()); + } } } } - -} - diff --git a/avaliacoes/restaurante/src/main/java/com/restaurante/view/ProdutoView.java b/avaliacoes/restaurante/src/main/java/com/restaurante/view/ProdutoView.java index b8e08ab..aebe24a 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/view/ProdutoView.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/view/ProdutoView.java @@ -4,40 +4,69 @@ import java.util.List; import com.restaurante.model.Produto; +/** + * Classe responsável pela interface de entrada e saída de dados relacionada aos produtos. + * Utiliza Scanner para capturar dados do usuário e exibe informações dos produtos no console. + * + * Permite capturar o nome e o valor do produto com validação para entrada numérica, + * além de exibir uma lista de produtos formatada. + * + */ public class ProdutoView { + /** Scanner para entrada de dados do usuário */ private Scanner scanner; + /** + * Construtor que inicializa o Scanner para leitura da entrada padrão. + */ public ProdutoView() { - scanner = new Scanner(System.in);//Cria um objeto "scanner" que vai ler o que é digitado no terminal (System.in) + scanner = new Scanner(System.in); } + /** + * Solicita ao usuário o nome do produto. + * + * @return nome do produto informado pelo usuário + */ public String pedirNomeProduto() { System.out.print("Nome do produto: "); - return scanner.nextLine(); //Aguarda o usuário a digitar uma linha de texto e retorna esse valor para o controller. Util para textos com espaços. + return scanner.nextLine(); } + /** + * Solicita ao usuário o valor do produto e valida a entrada. + * Repete a solicitação enquanto o valor informado não for válido (float). + * + * @return valor do produto informado pelo usuário + */ public float pedirValorProduto() { float valor = 0; - boolean valido = false;//variavel para ver se a entrada q o usuário digitou é válida + boolean valido = false; - while (!valido) {//continua pedindo o preço do produto até que o usuário dê uma entrada válida + while (!valido) { try { System.out.print("Valor do produto: "); - valor = Float.parseFloat(scanner.nextLine()); //converte a entrada o usuario String para float + valor = Float.parseFloat(scanner.nextLine()); valido = true; - } catch (NumberFormatException e) {//se der errado, aciona a exceção e exibe uma mensagem de erro + } catch (NumberFormatException e) { System.out.println("Valor inválido. Tente novamente."); } } - return valor; // retorna para o controller + return valor; } + /** + * Exibe a lista de produtos no console. + * Caso a lista esteja vazia, exibe uma mensagem informando que nenhum produto foi encontrado. + * + * @param produtos lista de produtos a ser exibida + */ public void exibirProdutos(List produtos) { if (produtos.isEmpty()) { System.out.println("Nenhum produto encontrado."); } else { - for (Produto p : produtos) {//loop for each que percorre a todos os produtos da lista, para cada produto, ele retorna o nome e o preço + for (Produto p : produtos) { System.out.printf("Produto: %-20s | Valor: R$ %.2f%n | \n ", p.getNome(), p.getValorProd()); } }