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..48593a9
--- /dev/null
+++ b/avaliacoes/restaurante/src/main/java/com/restaurante/controllers/funcionario/CreateFuncionarioController.java
@@ -0,0 +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 funcionarioView = new FuncionarioView();
+ private FuncionarioDAO funcionarioDAO = new FuncionarioDAO();
+ private MesaDAO mesaDAO = new MesaDAO();
+
+ public void executar() {
+ 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
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..d673f82
--- /dev/null
+++ b/avaliacoes/restaurante/src/main/java/com/restaurante/view/FuncionarioView.java
@@ -0,0 +1,113 @@
+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 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();
+ 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 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());
+ }
+ }
+ }
+}