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 cf8fd2ca40fe4557e109350df6068f5598a05ce3 Mon Sep 17 00:00:00 2001 From: Layza Emmanuelle Date: Tue, 15 Jul 2025 10:48:10 -0300 Subject: [PATCH 2/2] =?UTF-8?q?Corre=C3=A7=C3=A3o=20classe=20FuncionarioVi?= =?UTF-8?q?ew?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CreateFuncionarioController.java | 27 +++++++++-- .../com/restaurante/view/FuncionarioView.java | 47 ++++++++++++++++++- 2 files changed, 68 insertions(+), 6 deletions(-) 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..48593a9 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,33 @@ 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; public class CreateFuncionarioController { - private FuncionarioView view = new FuncionarioView(); - private FuncionarioDAO dao = new FuncionarioDAO(); + + private FuncionarioView funcionarioView = new FuncionarioView(); + private FuncionarioDAO funcionarioDAO = new FuncionarioDAO(); + private MesaDAO mesaDAO = new MesaDAO(); 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/view/FuncionarioView.java b/avaliacoes/restaurante/src/main/java/com/restaurante/view/FuncionarioView.java index c1eac9e..d673f82 100644 --- a/avaliacoes/restaurante/src/main/java/com/restaurante/view/FuncionarioView.java +++ b/avaliacoes/restaurante/src/main/java/com/restaurante/view/FuncionarioView.java @@ -10,6 +10,52 @@ public class FuncionarioView { private Scanner scanner = new Scanner(System.in); + 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); + } + public Funcionario capturarFuncionario() { System.out.print("Nome: "); String nome = scanner.nextLine(); @@ -20,7 +66,6 @@ public Funcionario capturarFuncionario() { System.out.print("Cargo: "); String cargo = scanner.nextLine(); - // Captura múltiplas mesas List mesas = new ArrayList<>(); String opcao = "s";