From 188083b89af9774d4197f5d51f97a4904941d315 Mon Sep 17 00:00:00 2001 From: Nilo Date: Thu, 5 Jun 2025 10:32:55 -0300 Subject: [PATCH 1/3] Prova Pantoja - Marcella Oliveira, Thiago Mendes, Nilo Gabriel --- avaliacoes/restaurante/pom.xml | 16 +++ .../pantoja/Interfaces/INFCGenerator.java | 13 +++ .../src/main/java/prova/pantoja/Main.java | 71 ++++++++++++ .../java/prova/pantoja/Models/Cartao.java | 9 ++ .../java/prova/pantoja/Models/Cliente.java | 23 ++++ .../java/prova/pantoja/Models/Endereco.java | 42 +++++++ .../java/prova/pantoja/Models/Especie.java | 9 ++ .../prova/pantoja/Models/Funcionario.java | 28 +++++ .../main/java/prova/pantoja/Models/Item.java | 46 ++++++++ .../main/java/prova/pantoja/Models/Menu.java | 37 ++++++ .../main/java/prova/pantoja/Models/Mesa.java | 55 +++++++++ .../java/prova/pantoja/Models/NotaFiscal.java | 106 ++++++++++++++++++ .../java/prova/pantoja/Models/Pagamento.java | 7 ++ .../java/prova/pantoja/Models/Pedido.java | 100 +++++++++++++++++ .../java/prova/pantoja/Models/Pessoa.java | 45 ++++++++ .../main/java/prova/pantoja/Models/Pix.java | 9 ++ .../java/prova/pantoja/Models/Produto.java | 58 ++++++++++ .../prova/pantoja/Models/Restaurante.java | 74 ++++++++++++ 18 files changed, 748 insertions(+) create mode 100644 avaliacoes/restaurante/pom.xml create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Interfaces/INFCGenerator.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Main.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Cartao.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Cliente.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Endereco.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Especie.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Funcionario.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Item.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Menu.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Mesa.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/NotaFiscal.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pagamento.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pedido.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pessoa.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pix.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Produto.java create mode 100644 avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Restaurante.java diff --git a/avaliacoes/restaurante/pom.xml b/avaliacoes/restaurante/pom.xml new file mode 100644 index 0000000..9e36f31 --- /dev/null +++ b/avaliacoes/restaurante/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + prova.pantoja + trabalhopantoja + 1.0-SNAPSHOT + + + 17 + 17 + + + \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Interfaces/INFCGenerator.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Interfaces/INFCGenerator.java new file mode 100644 index 0000000..62b3303 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Interfaces/INFCGenerator.java @@ -0,0 +1,13 @@ +package prova.pantoja.Interfaces; + +import prova.pantoja.Models.Item; + +import java.util.List; +import java.util.UUID; + +public interface INFCGenerator { + public void setId(UUID id); + public void setEmitente(String cnpj); + public void addProdutos(List items); + public void setTotal(float total); +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Main.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Main.java new file mode 100644 index 0000000..7762ec3 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Main.java @@ -0,0 +1,71 @@ +package prova.pantoja; + +import prova.pantoja.Models.*; +import java.util.ArrayList; +import java.util.List; + +public class Main { + public static void main(String[] args) { + Endereco enderecoRest = new Endereco("Praca dos Poveiros", "4000-393", 76); + Restaurante casaGuedes = new Restaurante("Anvileo Rooftop, Lda.", "516255975", "Casa Guedes 2", enderecoRest); + + Produto rissol = new Produto("Rissol Pernil Ce", 2.90f, 1.50f, 23); + Produto somersby = new Produto("Somersby Pressão", 5.90f, 3.00f, 23); + Produto francesinhaTrad = new Produto("Francesinha Trad", 12.90f, 8.00f, 23); + Produto francesinhaGued = new Produto("Francesinha Gued", 12.90f, 8.00f, 23); + Produto batataFrita = new Produto("1/2 Batata Frita", 2.50f, 1.00f, 23); + + casaGuedes.getMenu().addProduto(rissol); + casaGuedes.getMenu().addProduto(somersby); + casaGuedes.getMenu().addProduto(francesinhaTrad); + casaGuedes.getMenu().addProduto(francesinhaGued); + casaGuedes.getMenu().addProduto(batataFrita); + + casaGuedes.exibirMenu(); + Endereco enderecoCliente = new Endereco("Av.", "12345-678", 100); + Cliente clienteTH = new Cliente("TH", "19418877713", enderecoCliente, 1); + + Endereco enderecoFunc = new Endereco("Rua", "98765-432", 50); + Funcionario garcomPantoja = new Funcionario("Kadu Pantoja", "321312", enderecoFunc, "CTP001", "Garçom"); + + Mesa mesaTerrace213 = new Mesa("Terrace 213", "Terraço", garcomPantoja); + casaGuedes.adicionarMesa(mesaTerrace213); + + Item item1 = new Item(rissol, 1, 2.90f); + Item item2 = new Item(somersby, 1, 5.90f); + Item item3 = new Item(francesinhaTrad, 1, 12.90f); + Item item4 = new Item(francesinhaGued, 1, 12.90f); + Item item5 = new Item(batataFrita, 1, 2.50f); + + Pedido pedidoMesa213 = new Pedido(265569, clienteTH); + pedidoMesa213.adicionarItem(item1); + pedidoMesa213.adicionarItem(item2); + pedidoMesa213.adicionarItem(item3); + pedidoMesa213.adicionarItem(item4); + pedidoMesa213.adicionarItem(item5); + + mesaTerrace213.adicionarPedido(pedidoMesa213); + + Pagamento pagamentoPix = new Pix(); + pedidoMesa213.setTipoPagamento(pagamentoPix); + + NotaFiscal notaFiscalPDF = new NotaFiscal(); + notaFiscalPDF.setNomeRestaurante("Casa Guedes 2"); + notaFiscalPDF.setEnderecoRestaurante("Anvileo Rooftop, Lda.\nPraca dos Poveiros, 76\n4000-393 - Porto"); + notaFiscalPDF.setEmitente("516255975"); + notaFiscalPDF.setDataHoraEmissao("2025-02-19 17:49"); + notaFiscalPDF.setNomeMesa("Terrace 213"); + + List itensNotaFiscal = new ArrayList<>(); + itensNotaFiscal.add(new Item(rissol, 1, 2.90f)); + itensNotaFiscal.add(new Item(somersby, 1, 5.90f)); + itensNotaFiscal.add(new Item(francesinhaTrad, 1, 12.90f)); + itensNotaFiscal.add(new Item(francesinhaGued, 1, 12.90f)); + itensNotaFiscal.add(new Item(batataFrita, 1, 2.50f)); + notaFiscalPDF.addProdutos(itensNotaFiscal); + + notaFiscalPDF.setTotal(37.10f); + + notaFiscalPDF.gerarNota(); + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Cartao.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Cartao.java new file mode 100644 index 0000000..627b648 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Cartao.java @@ -0,0 +1,9 @@ +package prova.pantoja.Models; + +public class Cartao extends Pagamento { + + @Override + public void pagar() { + System.out.println("Pagamento realizado com Cartão."); + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Cliente.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Cliente.java new file mode 100644 index 0000000..0372e68 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Cliente.java @@ -0,0 +1,23 @@ +package prova.pantoja.Models; + +public class Cliente extends Pessoa { + private int numeroFid; + + public Cliente(String nome, String numContribuinte, Endereco endereco, int numeroFid) { + super(nome, numContribuinte, endereco); + this.numeroFid = numeroFid; + } + + public int getNumeroFid() { + return numeroFid; + } + + public void setNumeroFid(int numeroFid) { + this.numeroFid = numeroFid; + } + + @Override + public String toString() { + return "Cliente [numeroFid=" + numeroFid + ", " + super.toString() + "]"; + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Endereco.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Endereco.java new file mode 100644 index 0000000..f9b754f --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Endereco.java @@ -0,0 +1,42 @@ +package prova.pantoja.Models; + +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; + } + + @Override + public String toString() { + return "Endereco [tipo=" + tipo + ", cep=" + cep + ", numero=" + numero + "]"; + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Especie.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Especie.java new file mode 100644 index 0000000..c4c9cbc --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Especie.java @@ -0,0 +1,9 @@ +package prova.pantoja.Models; + +public class Especie extends Pagamento { + + @Override + public void pagar() { + System.out.println("Pagamento realizado em Espécie."); + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Funcionario.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Funcionario.java new file mode 100644 index 0000000..cfd8fa3 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Funcionario.java @@ -0,0 +1,28 @@ +package prova.pantoja.Models; + +public class Funcionario extends Pessoa { + private String ctp; + private String cargo; + + public Funcionario(String nome, String numContribuinte, Endereco endereco, String ctp, String cargo) { + super(nome, numContribuinte, endereco); + this.ctp = ctp; + this.cargo = cargo; + } + + 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; + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Item.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Item.java new file mode 100644 index 0000000..326d7f4 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Item.java @@ -0,0 +1,46 @@ +package prova.pantoja.Models; + +public class Item { + private Produto produto; + private int qtd; + private float valVenda; + + public Item(Produto produto, int qtd, float valVenda) { + this.produto = produto; + this.qtd = qtd; + this.valVenda = valVenda; + } + + public Produto getProduto() { + return produto; + } + + public void setProduto(Produto produto) { + this.produto = produto; + } + + public int getQtd() { + return qtd; + } + + public void setQtd(int qtd) { + this.qtd = qtd; + } + + public float getValVenda() { + return valVenda; + } + + public void setValVenda(float valVenda) { + this.valVenda = valVenda; + } + + public float calcularSubtotal() { + return qtd * valVenda; + } + + public float calcularTotal() { + return qtd * valVenda * (1 + (produto.getIVA() / 100)); + } + +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Menu.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Menu.java new file mode 100644 index 0000000..2675953 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Menu.java @@ -0,0 +1,37 @@ +package prova.pantoja.Models; + +import java.util.ArrayList; +import java.util.List; + +public class Menu { + private List produtos; + + public Menu() { + this.produtos = new ArrayList<>(); + } + + public List getProdutos() { + return produtos; + } + + public void setProdutos(List produtos) { + this.produtos = produtos; + } + + public void addProduto(Produto produto) { + this.produtos.add(produto); + } + + public String Show() { + String infoMenu = "--- Menu do Restaurante ---\n"; + if (produtos.isEmpty()) { + infoMenu = infoMenu + "Menu vazio.\n"; + } else{ + for (Produto produto : produtos) { + infoMenu = infoMenu + produto.toString() + "\n"; + } + } + infoMenu = infoMenu + "---------------------------\n"; + return infoMenu; + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Mesa.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Mesa.java new file mode 100644 index 0000000..a391f28 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Mesa.java @@ -0,0 +1,55 @@ +package prova.pantoja.Models; + +import java.util.ArrayList; +import java.util.List; + +public class Mesa { + private String numero; + private String local; + private Funcionario FuncionarioMesa; + private List pedidos; + + public Mesa(String numero, String local, Funcionario FuncionarioMesa) { + this.numero = numero; + this.local = local; + this.FuncionarioMesa = FuncionarioMesa; + this.pedidos = new ArrayList<>(); + } + + 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; + } + + public Funcionario getFuncionarioMesa() { + return FuncionarioMesa; + } + + public void setFuncionarioMesa(Funcionario FuncionarioMesa) { + this.FuncionarioMesa = FuncionarioMesa; + } + + public List getPedidos() { + return pedidos; + } + + public void adicionarPedido(Pedido pedido) { + this.pedidos.add(pedido); + + } + + public boolean removerPedido(Pedido pedido) { + return this.pedidos.remove(pedido); + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/NotaFiscal.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/NotaFiscal.java new file mode 100644 index 0000000..ed6b798 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/NotaFiscal.java @@ -0,0 +1,106 @@ +package prova.pantoja.Models; + +import prova.pantoja.Interfaces.INFCGenerator; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class NotaFiscal implements INFCGenerator { + private UUID id; + private String emitente; + private String nomeRestaurante; + private String enderecoRestaurante; + private String horario; + private String nomeMesa; + private List itens; + private float total; + + public NotaFiscal() { + this.itens = new ArrayList<>(); + } + + @Override + public void setId(UUID id) { + this.id = id; + } + + @Override + public void setEmitente(String cnpj) { + this.emitente = cnpj; + } + + @Override + public void addProdutos(List itens) { + this.itens.addAll(itens); + } + + @Override + public void setTotal(float total) { + this.total = total; + } + + public void setNomeRestaurante(String nomeRestaurante) { + this.nomeRestaurante = nomeRestaurante; + } + + public void setEnderecoRestaurante(String enderecoRestaurante) { + this.enderecoRestaurante = enderecoRestaurante; + } + + public void setDataHoraEmissao(String horario) { + this.horario = horario; + } + + public void setNomeMesa(String nomeMesa) { + this.nomeMesa = nomeMesa; + } + + public UUID getId() { + return id; + } + + public String getEmitenteCnpj() { + return emitente; + } + + public String getNomeRestaurante() { + return nomeRestaurante; + } + + public String getEnderecoRestaurante() { + return enderecoRestaurante; + } + + public String getDataHoraEmissao() { + return horario; + } + + public String getNomeMesa() { + return nomeMesa; + } + + public List getItens() { + return itens; + } + + public float getTotalLiquido() { + return total; + } + + public void gerarNota() { + System.out.println(nomeRestaurante); + System.out.println(enderecoRestaurante); + System.out.println("N. Contrib. " + emitente); + System.out.println("\nConsulta de masa TC ROOFTC/265569"); + System.out.println(horario); + System.out.println("\nMESA: " + nomeMesa); + System.out.println("\nQt Descricao P.Unit. Tx Valor"); + + for (Item item : itens) { + System.out.println("1.00 " + item.getProduto().getNome() + " e " + item.getValVenda() + " " + item.getProduto().getIVA() + " e " + item.calcularSubtotal()); + } + + System.out.println("Total liq. e " + total); + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pagamento.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pagamento.java new file mode 100644 index 0000000..3983ef9 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pagamento.java @@ -0,0 +1,7 @@ +package prova.pantoja.Models; + +public abstract class Pagamento { + + public abstract void pagar(); + +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pedido.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pedido.java new file mode 100644 index 0000000..2884592 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pedido.java @@ -0,0 +1,100 @@ +package prova.pantoja.Models; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class Pedido { + private int numPedido; + private float valorTotal; + private List itens; + private Pagamento tipoPagamento; + private NotaFiscal notaFiscal; + private Cliente cliente; + + public Pedido(int numPedido, Cliente cliente) { + this.numPedido = numPedido; + this.cliente = cliente; + this.itens = new ArrayList<>(); + this.valorTotal = 0.0f; + } + + public int getNumPedido() { + return numPedido; + } + + public void setNumPedido(int numPedido) { + this.numPedido = numPedido; + } + + public float getValorTotal() { + return valorTotal; + } + + public void setValorTotal(float valorTotal) { + this.valorTotal = valorTotal; + } + + public List getItens() { + return itens; + } + + public void adicionarItem(Item item) { + this.itens.add(item); + calcularValorTotal(); + } + + public Pagamento getTipoPagamento() { + return tipoPagamento; + } + + public void setTipoPagamento(Pagamento tipoPagamento) { + this.tipoPagamento = tipoPagamento; + } + + public NotaFiscal getNotaFiscal() { + return notaFiscal; + } + + public void setNotaFiscal(NotaFiscal notaFiscal) { + this.notaFiscal = notaFiscal; + } + + public Cliente getCliente() { + return cliente; + } + + public void setCliente(Cliente cliente) { + this.cliente = cliente; + } + + public float calcularValorTotal() { + float totalCalculado = 0.0f; + for (Item item : itens) { + totalCalculado += item.calcularTotal(); + } + this.valorTotal = totalCalculado; + return this.valorTotal; + } + + public void pagar() { + System.out.println("Processando pagamento para o Pedido #" + numPedido + "..."); + this.tipoPagamento.pagar(); + System.out.println("Total do pedido: " + this.valorTotal); + } + + public void encerrar(String cnpjRestaurante) { + System.out.println("\nEncerrando o Pedido"); + + NotaFiscal novaNotaFiscal = new NotaFiscal(); + novaNotaFiscal.setId(UUID.randomUUID()); + novaNotaFiscal.setEmitente(cnpjRestaurante); + novaNotaFiscal.addProdutos(this.itens); + novaNotaFiscal.setTotal(this.valorTotal); + + this.setNotaFiscal(novaNotaFiscal); + System.out.println("Pedido " + numPedido + " encerrado."); + System.out.println("Nota Fiscal salva."); + novaNotaFiscal.gerarNota(); + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pessoa.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pessoa.java new file mode 100644 index 0000000..af65721 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pessoa.java @@ -0,0 +1,45 @@ +package prova.pantoja.Models; + +public abstract class Pessoa { + private String nome; + private String numContribuinte; + private Endereco endereco; + + public Pessoa() { + } + + public Pessoa(String nome, String numContribuinte, Endereco endereco) { + this.nome = nome; + this.numContribuinte = numContribuinte; + this.endereco = endereco; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + public String getNumContribuinte() { + return numContribuinte; + } + + public void setNumContribuinte(String numContribuinte) { + this.numContribuinte = numContribuinte; + } + + public Endereco getEndereco() { + return endereco; + } + + public void setEndereco(Endereco endereco) { + this.endereco = endereco; + } + + @Override + public String toString() { + return "Pessoa [nome=" + nome + ", numContribuinte=" + numContribuinte + ", endereco=" + endereco + "]"; + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pix.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pix.java new file mode 100644 index 0000000..b5545a6 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pix.java @@ -0,0 +1,9 @@ +package prova.pantoja.Models; + +public class Pix extends Pagamento { + + @Override + public void pagar() { + System.out.println("Pagamento realizado com PIX."); + } +} diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Produto.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Produto.java new file mode 100644 index 0000000..c747aeb --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Produto.java @@ -0,0 +1,58 @@ +package prova.pantoja.Models; + +public class Produto { + private String nome; + private float valVenda; + private float valProduto; + private float IVA; + + public Produto(String nome, float valVenda, float valProduto, float IVA) { + this.nome = nome; + this.valVenda = valVenda; + this.valProduto = valProduto; + this.IVA = IVA; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + public float getValVenda() { + return valVenda; + } + + public void setValVenda(float valVenda) { + this.valVenda = valVenda; + } + + public float getValProduto() { + return valProduto; + } + + public void setValProduto(float valProduto) { + this.valProduto = valProduto; + } + + public float getIVA() { + return IVA; + } + + public void setIVA(float IVA) { + this.IVA = IVA; + } + + public float calcularPrecoComImposto() { + return valVenda * (1 + (IVA / 100)); + } + + @Override + public String toString() { + return "Produto " + nome + ", Preço de venda sem impostos= " + valVenda + + ", Preço de venda com impostos = " + calcularPrecoComImposto() + + ", Impostos= " + IVA + "%"; + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Restaurante.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Restaurante.java new file mode 100644 index 0000000..cb3d8b3 --- /dev/null +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Restaurante.java @@ -0,0 +1,74 @@ +package prova.pantoja.Models; + +import java.util.ArrayList; +import java.util.List; + +public class Restaurante { + private String nome; + private String cnpj; + private String nomeFantasia; + private Endereco endereco; + private List mesas; + private Menu menu; + + public Restaurante(String nome, String cnpj, String nomeFantasia, Endereco endereco) { + this.nome = nome; + this.cnpj = cnpj; + this.nomeFantasia = nomeFantasia; + this.endereco = endereco; + this.mesas = new ArrayList<>(); + this.menu = new Menu(); + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + public String getCnpj() { + return cnpj; + } + + public void setCnpj(String cnpj) { + this.cnpj = cnpj; + } + + public String getNomeFantasia() { + return nomeFantasia; + } + + public void setNomeFantasia(String nomeFantasia) { + this.nomeFantasia = nomeFantasia; + } + + public Endereco getEndereco() { + return endereco; + } + + public void setEndereco(Endereco endereco) { + this.endereco = endereco; + } + + public List getMesas() { + return mesas; + } + + public void adicionarMesa(Mesa mesa) { + this.mesas.add(mesa); + } + + public Menu getMenu() { + return menu; + } + + public void setMenu(Menu menu) { + this.menu = menu; + } + + public void exibirMenu() { + System.out.println(this.menu.Show()); + } +} \ No newline at end of file From 688aa37d6cdea3a7e7ecf5817596d0ca45363d33 Mon Sep 17 00:00:00 2001 From: Thiago Mendes Date: Mon, 14 Jul 2025 11:17:59 -0300 Subject: [PATCH 2/3] MVC-TH --- .../src/main/java/prova/pantoja/Models/Pedido.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pedido.java b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pedido.java index 2884592..9e90cbf 100644 --- a/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pedido.java +++ b/avaliacoes/restaurante/src/main/java/prova/pantoja/Models/Pedido.java @@ -84,7 +84,7 @@ public void pagar() { } public void encerrar(String cnpjRestaurante) { - System.out.println("\nEncerrando o Pedido"); + System.out.println("\nEncerrando o Pedido..."); NotaFiscal novaNotaFiscal = new NotaFiscal(); novaNotaFiscal.setId(UUID.randomUUID()); @@ -97,4 +97,5 @@ public void encerrar(String cnpjRestaurante) { System.out.println("Nota Fiscal salva."); novaNotaFiscal.gerarNota(); } -} \ No newline at end of file +} + From 37928f82531d74f580c110b98c0326c7f7b75305 Mon Sep 17 00:00:00 2001 From: Thiago Mendes Date: Mon, 14 Jul 2025 11:20:16 -0300 Subject: [PATCH 3/3] =?UTF-8?q?Adicionei=20as=20classes=20FUNCION=C3=81RIO?= =?UTF-8?q?=20E=20PRODUTO=20no=20padr=C3=A3o=20MVC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/FuncionarioController.java | 123 ++++++++++++++++++ .../Controller/ProdutoController.java | 106 +++++++++++++++ .../restaurante/DAO/FuncionarioDAO.java | 48 +++++++ avaliacoes/restaurante/DAO/ProdutoDAO.java | 39 ++++++ avaliacoes/restaurante/Main.java | 53 ++++++++ .../restaurante/View/FuncionarioView.java | 71 ++++++++++ avaliacoes/restaurante/View/ProdutoView.java | 78 +++++++++++ 7 files changed, 518 insertions(+) create mode 100644 avaliacoes/restaurante/Controller/FuncionarioController.java create mode 100644 avaliacoes/restaurante/Controller/ProdutoController.java create mode 100644 avaliacoes/restaurante/DAO/FuncionarioDAO.java create mode 100644 avaliacoes/restaurante/DAO/ProdutoDAO.java create mode 100644 avaliacoes/restaurante/Main.java create mode 100644 avaliacoes/restaurante/View/FuncionarioView.java create mode 100644 avaliacoes/restaurante/View/ProdutoView.java diff --git a/avaliacoes/restaurante/Controller/FuncionarioController.java b/avaliacoes/restaurante/Controller/FuncionarioController.java new file mode 100644 index 0000000..eedbb3a --- /dev/null +++ b/avaliacoes/restaurante/Controller/FuncionarioController.java @@ -0,0 +1,123 @@ +package prova.pantoja.Controller; + +import prova.pantoja.DAO.FuncionarioDAO; +import prova.pantoja.Models.Funcionario; +import prova.pantoja.Models.Endereco; +import prova.pantoja.View.FuncionarioView; +import java.util.List; +import java.util.Scanner; + +public class FuncionarioController { + private List funcionarios; + private FuncionarioView view; + private FuncionarioDAO funcionarioDAO; + private Scanner scan = new Scanner(System.in); + + public FuncionarioController(List funcionarios, FuncionarioView view) { + this.funcionarios = funcionarios; + this.view = view; + this.funcionarioDAO = new FuncionarioDAO(); + this.funcionarios = funcionarioDAO.carregarFuncionarios(); + } + + public void adicionarFuncionario() { + System.out.println("\n--- Criar Novo Funcionário ---"); + System.out.print("Nome: "); + String nome = scan.nextLine(); + System.out.print("Número Contribuinte: "); + String numContribuinte = scan.nextLine(); + System.out.print("Tipo Endereço: "); + String tipo = scan.nextLine(); + System.out.print("CEP: "); + String cep = scan.nextLine(); + System.out.print("Número: "); + int numero = scan.nextInt(); + scan.nextLine(); + System.out.print("CTP: "); + String ctp = scan.nextLine(); + System.out.print("Cargo: "); + String cargo = scan.nextLine(); + + Endereco endereco = new Endereco(tipo, cep, numero); + Funcionario novoFuncionario = new Funcionario(nome, numContribuinte, endereco, ctp, cargo); + funcionarios.add(novoFuncionario); + funcionarioDAO.salvarFuncionarios(funcionarios); + System.out.println("Funcionário adicionado e salvo!"); + } + + public void removerFuncionario() { + System.out.print("\nCTP do Funcionário a ser removido: "); + String ctp = scan.nextLine(); + boolean removido = false; + + for (Funcionario funcionario : funcionarios) { + if (funcionario.getCtp().equals(ctp)) { + funcionarios.remove(funcionario); + removido = true; + break; + } + } + + if (removido) { + funcionarioDAO.salvarFuncionarios(funcionarios); + System.out.println("Funcionário removido e salvo!"); + } else { + System.out.println("Funcionário não encontrado."); + } + } + + public void atualizarFuncionario() { + System.out.print("\nCTP do Funcionário a ser atualizado: "); + String ctp = scan.nextLine(); + boolean encontrado = false; + + for (Funcionario funcionario : funcionarios) { + if (funcionario.getCtp().equals(ctp)) { + System.out.println("\n--- Atualizar Funcionário ---"); + System.out.print("Novo Nome: "); + String novoNome = scan.nextLine(); + System.out.print("Novo Número Contribuinte: "); + String novoNumContribuinte = scan.nextLine(); + System.out.print("Novo Tipo Endereço: "); + String novoTipo = scan.nextLine(); + System.out.print("Novo CEP: "); + String novoCep = scan.nextLine(); + System.out.print("Novo Número: "); + int novoNumero = scan.nextInt(); + scan.nextLine(); + System.out.print("Novo CTP: "); + String novoCtp = scan.nextLine(); + System.out.print("Novo Cargo: "); + String novoCargo = scan.nextLine(); + + Endereco novoEndereco = new Endereco(novoTipo, novoCep, novoNumero); + funcionario.setNome(novoNome); + funcionario.setNumContribuinte(novoNumContribuinte); + funcionario.setEndereco(novoEndereco); + funcionario.setCtp(novoCtp); + funcionario.setCargo(novoCargo); + + funcionarioDAO.salvarFuncionarios(funcionarios); + System.out.println("Funcionário atualizado e salvo!"); + encontrado = true; + break; + } + } + + if (!encontrado) { + System.out.println("Funcionário não encontrado."); + } + } + + public void listarFuncionarios() { + System.out.println("\n--- Lista de Funcionários ---"); + for (Funcionario funcionario : funcionarios) { + System.out.println(funcionario.toString()); + } + System.out.println("---------------------------"); + } + + public void salvarFuncionarios() { + funcionarioDAO.salvarFuncionarios(funcionarios); + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/Controller/ProdutoController.java b/avaliacoes/restaurante/Controller/ProdutoController.java new file mode 100644 index 0000000..438df7e --- /dev/null +++ b/avaliacoes/restaurante/Controller/ProdutoController.java @@ -0,0 +1,106 @@ +package prova.pantoja.Controller; + +import prova.pantoja.DAO.ProdutoDAO; +import prova.pantoja.Models.Produto; +import prova.pantoja.View.ProdutoView; +import java.util.List; +import java.util.Scanner; + +public class ProdutoController { + private List produtos; + private ProdutoView view; + private ProdutoDAO produtoDAO; + private Scanner scan = new Scanner(System.in); + + public ProdutoController(List produtos, ProdutoView view) { + this.produtos = produtos; + this.view = view; + this.produtoDAO = new ProdutoDAO(); + this.produtos = produtoDAO.carregarProdutos(); + } + + public void adicionarProduto() { + System.out.println("\n--- Criar Novo Produto ---"); + System.out.print("Nome: "); + String nome = scan.nextLine(); + System.out.print("Preço de Venda: "); + float valVenda = scan.nextFloat(); + System.out.print("Preço de Custo: "); + float valProduto = scan.nextFloat(); + System.out.print("IVA (%): "); + float IVA = scan.nextFloat(); + scan.nextLine(); + + Produto novoProduto = new Produto(nome, valVenda, valProduto, IVA); + produtos.add(novoProduto); + produtoDAO.salvarProdutos(produtos); + System.out.println("Produto adicionado e salvo!"); + } + + public void removerProduto() { + System.out.print("\nNome do Produto a ser removido: "); + String nome = scan.nextLine(); + boolean removido = false; + + for (Produto produto : produtos) { + if (produto.getNome().equals(nome)) { + produtos.remove(produto); + removido = true; + break; + } + } + + if (removido) { + produtoDAO.salvarProdutos(produtos); + System.out.println("Produto removido e salvo!"); + } else { + System.out.println("Produto não encontrado."); + } + } + + public void atualizarProduto() { + System.out.print("\nNome do Produto a ser atualizado: "); + String nome = scan.nextLine(); + boolean encontrado = false; + + for (Produto produto : produtos) { + if (produto.getNome().equals(nome)) { + System.out.println("\n--- Atualizar Produto ---"); + System.out.print("Novo Nome: "); + String novoNome = scan.nextLine(); + System.out.print("Novo Preço de Venda: "); + float novoValVenda = scan.nextFloat(); + System.out.print("Novo Preço de Custo: "); + float novoValProduto = scan.nextFloat(); + System.out.print("Novo IVA (%): "); + float novoIVA = scan.nextFloat(); + scan.nextLine(); + + produto.setNome(novoNome); + produto.setValVenda(novoValVenda); + produto.setValProduto(novoValProduto); + produto.setIVA(novoIVA); + produtoDAO.salvarProdutos(produtos); + System.out.println("Produto atualizado e salvo!"); + encontrado = true; + break; + } + } + + if (!encontrado) { + System.out.println("Produto não encontrado."); + } + } + + public void listarProdutos() { + System.out.println("\n--- Lista de Produtos ---"); + for (Produto produto : produtos) { + System.out.println(produto.toString()); + } + System.out.println("------------------------"); + } + + public void salvarProdutos() { + produtoDAO.salvarProdutos(produtos); + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/DAO/FuncionarioDAO.java b/avaliacoes/restaurante/DAO/FuncionarioDAO.java new file mode 100644 index 0000000..149a37b --- /dev/null +++ b/avaliacoes/restaurante/DAO/FuncionarioDAO.java @@ -0,0 +1,48 @@ +package prova.pantoja.DAO; + +import prova.pantoja.Models.Funcionario; +import prova.pantoja.Models.Endereco; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +public class FuncionarioDAO { + private static final String ARQUIVO = "funcionarios.txt"; + + public void salvarFuncionarios(List funcionarios) { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(ARQUIVO))) { + for (Funcionario f : funcionarios) { + writer.write(f.getNome() + "," + + f.getNumContribuinte() + "," + + f.getEndereco().getTipo() + "," + + f.getEndereco().getCep() + "," + + f.getEndereco().getNumero() + "," + + f.getCtp() + "," + + f.getCargo()); + writer.newLine(); + } + } catch (IOException e) { + System.err.println("Erro ao salvar funcionários: " + e.getMessage()); + } + } + + public List carregarFuncionarios() { + List funcionarios = new ArrayList<>(); + File file = new File(ARQUIVO); + + if (!file.exists()) return funcionarios; + + try (BufferedReader reader = new BufferedReader(new FileReader(file))) { + String linha; + while ((linha = reader.readLine()) != null) { + String[] dados = linha.split(","); + Endereco endereco = new Endereco(dados[2], dados[3], Integer.parseInt(dados[4])); + funcionarios.add(new Funcionario(dados[0], dados[1], endereco, dados[5], dados[6])); + } + } catch (IOException e) { + System.err.println("Erro ao carregar funcionários: " + e.getMessage()); + } + return funcionarios; + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/DAO/ProdutoDAO.java b/avaliacoes/restaurante/DAO/ProdutoDAO.java new file mode 100644 index 0000000..a7a4b7c --- /dev/null +++ b/avaliacoes/restaurante/DAO/ProdutoDAO.java @@ -0,0 +1,39 @@ +package prova.pantoja.DAO; + +import prova.pantoja.Models.Produto; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +public class ProdutoDAO { + private static final String ARQUIVO = "produtos.txt"; + + public void salvarProdutos(List produtos) { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(ARQUIVO))) { + for (Produto produto : produtos) { + writer.write(produto.getNome() + "," + produto.getValVenda() + "," + produto.getValProduto() + "," + produto.getIVA()); + writer.newLine(); + } + } catch (IOException e) { + System.err.println("Erro ao salvar produtos: " + e.getMessage()); + } + } + + public List carregarProdutos() { + List produtos = new ArrayList<>(); + File file = new File(ARQUIVO); + + if (!file.exists()) return produtos; + + try (BufferedReader reader = new BufferedReader(new FileReader(file))) { + String linha; + while ((linha = reader.readLine()) != null) { + String[] dados = linha.split(","); + produtos.add(new Produto(dados[0], Float.parseFloat(dados[1]), Float.parseFloat(dados[2]), Float.parseFloat(dados[3]))); + } + } catch (IOException e) { + System.err.println("Erro ao carregar produtos: " + e.getMessage()); + } + return produtos; + } +} \ No newline at end of file diff --git a/avaliacoes/restaurante/Main.java b/avaliacoes/restaurante/Main.java new file mode 100644 index 0000000..b68f7be --- /dev/null +++ b/avaliacoes/restaurante/Main.java @@ -0,0 +1,53 @@ +package prova.pantoja; + +import prova.pantoja.Controller.FuncionarioController; +import prova.pantoja.Controller.ProdutoController; +import prova.pantoja.Models.Funcionario; +import prova.pantoja.Models.Produto; +import prova.pantoja.View.FuncionarioView; +import prova.pantoja.View.ProdutoView; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + List produtos = new ArrayList<>(); + List funcionarios = new ArrayList<>(); + + ProdutoView produtoView = new ProdutoView(); + FuncionarioView funcionarioView = new FuncionarioView(); + + ProdutoController produtoController = new ProdutoController(produtos, produtoView); + FuncionarioController funcionarioController = new FuncionarioController(funcionarios, funcionarioView); + + Scanner scan = new Scanner(System.in); + int opcao; + + do { + System.out.println("\n--- Menu Principal ---"); + System.out.println("1. Gerenciar Funcionários"); + System.out.println("2. Gerenciar Produtos"); + System.out.println("0. Sair"); + System.out.print("Escolha uma opção: "); + opcao = scan.nextInt(); + scan.nextLine(); + + switch (opcao) { + case 1: + funcionarioView.exibirMenuFuncionarios(funcionarioController); + break; + case 2: + produtoView.exibirMenuProdutos(produtoController); + break; + case 0: + funcionarioController.salvarFuncionarios(); + produtoController.salvarProdutos(); + System.out.println("Dados salvos. Saindo..."); + break; + } + } while (opcao != 0); + } + +} diff --git a/avaliacoes/restaurante/View/FuncionarioView.java b/avaliacoes/restaurante/View/FuncionarioView.java new file mode 100644 index 0000000..f10ca4f --- /dev/null +++ b/avaliacoes/restaurante/View/FuncionarioView.java @@ -0,0 +1,71 @@ +package prova.pantoja.View; + +import prova.pantoja.Controller.FuncionarioController; +import prova.pantoja.Controller.ProdutoController; +import prova.pantoja.Models.Endereco; +import prova.pantoja.Models.Funcionario; + +import java.util.List; +import java.util.Scanner; + +public class FuncionarioView { + private Scanner scan = new Scanner(System.in); + + public void exibirMenuFuncionarios(FuncionarioController controller) { + int opcao; + do { + System.out.println("\n--- Menu Funcionários ---"); + System.out.println("1. Adicionar Funcionário"); + System.out.println("2. Remover Funcionário"); + System.out.println("3. Atualizar Funcionário"); + System.out.println("4. Listar Funcionários"); + System.out.println("0. Voltar"); + System.out.print("Escolha uma opção: "); + opcao = scan.nextInt(); + scan.nextLine(); + + switch (opcao) { + case 1: + controller.adicionarFuncionario(); + break; + + case 2: + controller.removerFuncionario(); + break; + + case 3: + controller.atualizarFuncionario(); + break; + + case 4: + controller.listarFuncionarios(); + break; + + case 0: + break; + } + } while (opcao != 0); + } + + public void exibirFuncionarios(List funcionarios) { + System.out.println("\n--- Lista de Funcionários ---"); + for (Funcionario funcionario : funcionarios) { + System.out.println(funcionario.toString()); + } + System.out.println("---------------------------"); + } + + public String obterCTPParaRemover() { + System.out.print("\nCTP do Funcionário a ser removido: "); + return scan.nextLine(); + } + + public String obterCTPParaAtualizar() { + System.out.print("\nCTP do Funcionário a ser atualizado: "); + return scan.nextLine(); + } + + public void exibirMensagem(String mensagem) { + System.out.println(mensagem); + } +} diff --git a/avaliacoes/restaurante/View/ProdutoView.java b/avaliacoes/restaurante/View/ProdutoView.java new file mode 100644 index 0000000..db1de36 --- /dev/null +++ b/avaliacoes/restaurante/View/ProdutoView.java @@ -0,0 +1,78 @@ +package prova.pantoja.View; + +import prova.pantoja.Controller.ProdutoController; +import prova.pantoja.Models.Produto; +import java.util.List; +import java.util.Scanner; + +public class ProdutoView { + private Scanner scan = new Scanner(System.in); + + public void exibirMenuProdutos(ProdutoController controller) { + int opcao; + do { + System.out.println("\n--- Menu Produtos ---"); + System.out.println("1. Adicionar Produto"); + System.out.println("2. Remover Produto"); + System.out.println("3. Atualizar Produto"); + System.out.println("4. Listar Produtos"); + System.out.println("0. Voltar"); + System.out.print("Escolha uma opção: "); + opcao = scan.nextInt(); + scan.nextLine(); + + switch (opcao) { + case 1: + controller.adicionarProduto(); + break; + case 2: + controller.removerProduto(); + break; + case 3: + controller.atualizarProduto(); + break; + case 4: + controller.listarProdutos(); + break; + case 0: + break; + } + } while (opcao != 0); + } + + public void exibirProdutos(List produtos) { + System.out.println("\n--- Lista de Produtos ---"); + for (Produto produto : produtos) { + System.out.println(produto.toString()); + } + System.out.println("------------------------"); + } + + public Produto criarProduto() { + System.out.println("\n--- Criar Novo Produto ---"); + System.out.print("Nome: "); + String nome = scan.nextLine(); + System.out.print("Preço de Venda: "); + float valVenda = scan.nextFloat(); + System.out.print("Preço de Custo: "); + float valProduto = scan.nextFloat(); + System.out.print("IVA (%): "); + float IVA = scan.nextFloat(); + scan.nextLine(); + return new Produto(nome, valVenda, valProduto, IVA); + } + + public String obterNomeProdutoParaRemover() { + System.out.print("\nNome do Produto a ser removido: "); + return scan.nextLine(); + } + + public String obterNomeProdutoParaAtualizar() { + System.out.print("\nNome do Produto a ser atualizado: "); + return scan.nextLine(); + } + + public void exibirMensagem(String mensagem) { + System.out.println(mensagem); + } +} \ No newline at end of file