From 86936ed2acde09e4196c65546c6368448bd4ff95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20V=2E=20Pansiere?= Date: Thu, 1 Aug 2024 20:58:47 -0300 Subject: [PATCH 1/4] =?UTF-8?q?Come=C3=A7o=20do=20exerc=C3=ADcio=20Gerenci?= =?UTF-8?q?aEstoque=2001-08-24?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- POO/GerenciaEstoque/Estoque.php | 0 POO/GerenciaEstoque/Produto.php | 33 ++++++ POO/GerenciaEstoque/ProdutoBicicleta.php | 9 ++ POO/GerenciaEstoque/ProdutoInterface.php | 10 ++ POO/GerenciaEstoque/ProdutoPerecivel.php | 15 +++ POO/GerenciaEstoque/autoload.php | 8 ++ POO/GerenciaEstoque/menu.php | 142 +++++++++++++++++++++++ 7 files changed, 217 insertions(+) create mode 100644 POO/GerenciaEstoque/Estoque.php create mode 100644 POO/GerenciaEstoque/Produto.php create mode 100644 POO/GerenciaEstoque/ProdutoBicicleta.php create mode 100644 POO/GerenciaEstoque/ProdutoInterface.php create mode 100644 POO/GerenciaEstoque/ProdutoPerecivel.php create mode 100644 POO/GerenciaEstoque/autoload.php create mode 100644 POO/GerenciaEstoque/menu.php diff --git a/POO/GerenciaEstoque/Estoque.php b/POO/GerenciaEstoque/Estoque.php new file mode 100644 index 0000000..e69de29 diff --git a/POO/GerenciaEstoque/Produto.php b/POO/GerenciaEstoque/Produto.php new file mode 100644 index 0000000..09170ea --- /dev/null +++ b/POO/GerenciaEstoque/Produto.php @@ -0,0 +1,33 @@ +sku; + } + public function getNome(): string + { + return $this->nome; + } + public function getQuantidade(): int + { + return $this->quantidade; + } + public function getUnidadeDeMedida(): string + { + return $this->unidadeDeMedida; + } + public function getPreco(): float + { + return $this->preco; + } +} diff --git a/POO/GerenciaEstoque/ProdutoBicicleta.php b/POO/GerenciaEstoque/ProdutoBicicleta.php new file mode 100644 index 0000000..8c58b9c --- /dev/null +++ b/POO/GerenciaEstoque/ProdutoBicicleta.php @@ -0,0 +1,9 @@ + $codigo, + 'nome' => $nome, + 'tamanho' => $tamanho, + 'cor' => $cor, + 'quantidade' => $quantidade + ]; +} + +function venderProduto(&$estoque, $codigo, $quantidade) +{ + + foreach ($estoque as $key => &$produto) { + + if ($produto['codigo'] == $codigo) { + + if ($quantidade > $produto['quantidade']) { + + echo "\nVenda de " . $produto['nome'] . " não realizada.\nExiste apenas " . $produto['quantidade'] . " unidades disponiveis.\n"; + + return; + } + + $produto['quantidade'] -= $quantidade; + + if ($produto['quantidade'] == 0) { + + echo "\nVenda de " . $quantidade . " " . $produto['nome'] . " realizada com sucesso."; + echo "\nProduto: " . $produto['nome'] . " esgotado.\n"; + unset($estoque[$key]); + } else { + + echo "\nVenda de " . $quantidade . " " . $produto['nome'] . " realizada com sucesso.\n"; + echo "Quantidade restante: " . $produto['quantidade'] . "\n"; + } + return; + } + } + + echo "\nCódigo do produto inválido, por favor tente novamente.\n"; + + return; +} + +function verificarEstoque(&$estoque, $codigo) +{ + + foreach ($estoque as $produto) { + + if ($produto['codigo'] == $codigo) { + + echo "\nO produto: " . $produto['nome'] . " está disponível." . "\nQuantidade: " . $produto['quantidade'] . ".\n"; + $produtoEncontrado = true; + return; + } + } + + echo "\nProduto não está disponível.\n"; +} + +function listarEstoque(&$estoque) +{ + + if (empty($estoque)) { + echo "Estoque vazio!\n"; + return; + } + + foreach ($estoque as $produto) { + + echo "\nCódigo: " . $produto['codigo'] . "\nNome: " . $produto['nome'] . "\nTamanho: " . $produto['tamanho'] . "\nCor: " . $produto['cor'] . "\nQuantidade: " . $produto['quantidade'] . "\n\n"; + } +} + +$estoque[] = [ + 'codigo' => 1, + 'nome' => 'Camisa Polo', + 'tamanho' => 'P', + 'cor' => 'Branca', + 'quantidade' => 5 +]; +*/ \ No newline at end of file From bbae041cdfb73c01be11b1e5fe03a74848344374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Vicente=20Pansiere?= Date: Sat, 3 Aug 2024 13:51:45 -0300 Subject: [PATCH 2/4] loading... --- POO/GerenciaEstoque/Estoque.php | 20 ++++++++++++++++++++ POO/GerenciaEstoque/Produto.php | 2 +- POO/GerenciaEstoque/ProdutoPerecivel.php | 17 +++++++++++------ POO/GerenciaEstoque/autoload.php | 2 +- POO/GerenciaEstoque/menu.php | 15 +++------------ POO/GerenciaEstoque/menu_teste.php | 14 ++++++++++++++ 6 files changed, 50 insertions(+), 20 deletions(-) create mode 100644 POO/GerenciaEstoque/menu_teste.php diff --git a/POO/GerenciaEstoque/Estoque.php b/POO/GerenciaEstoque/Estoque.php index e69de29..f720195 100644 --- a/POO/GerenciaEstoque/Estoque.php +++ b/POO/GerenciaEstoque/Estoque.php @@ -0,0 +1,20 @@ +validade; } } diff --git a/POO/GerenciaEstoque/autoload.php b/POO/GerenciaEstoque/autoload.php index 12bb973..626aa1a 100644 --- a/POO/GerenciaEstoque/autoload.php +++ b/POO/GerenciaEstoque/autoload.php @@ -1,4 +1,4 @@ -getValidade(); From 86e07880f4eab66af9a8426d73610453e3fd94a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Vicente=20Pansiere?= Date: Sun, 4 Aug 2024 01:33:52 -0300 Subject: [PATCH 3/4] loading#2... --- POO/GerenciaEstoque/Estoque.php | 65 +++++++++++++++++++++++- POO/GerenciaEstoque/ProdutoPerecivel.php | 2 + POO/GerenciaEstoque/menu.php | 5 +- POO/GerenciaEstoque/menu_teste.php | 14 ----- 4 files changed, 67 insertions(+), 19 deletions(-) delete mode 100644 POO/GerenciaEstoque/menu_teste.php diff --git a/POO/GerenciaEstoque/Estoque.php b/POO/GerenciaEstoque/Estoque.php index f720195..3c2793e 100644 --- a/POO/GerenciaEstoque/Estoque.php +++ b/POO/GerenciaEstoque/Estoque.php @@ -2,18 +2,79 @@ class Estoque { - public function adicionar() + public function __construct( + public array $estoque = [] + ) { + } + + protected function exibeOpcoes(): string { + echo "Adicionando um produto, para o tipo:\n"; + echo "1. 'Perecivel' digite 1\n"; + echo "2. 'Bicicleta' digite 2\n"; + echo "3. Para cancelar digite 3\n"; + $opcao = readline("Digite a sua escolha: "); + return $opcao; } - public function listar() + + public function adicionar(): void { + while (true) { + $opcao = $this->exibeOpcoes(); + + switch ($opcao) { + case '1': + $this->adicionarPerecivel(); + break; + case '2': + $this->adicionarBicicleta(); + break; + case '3': + echo "Cancelando...\n"; + return; + default: + echo "\nOpção inválida, por favor tente novamente.\n"; + break; + } + } } + + private function adicionarPerecivel(): void + { + echo "Adicionando um produto do tipo 'Perecivel':\n"; + $sku = (string)readline("Digite o código SKU do produto: \n"); + $nome = (string)readline("Digite o nome do produto: \n"); + $unidadeDeMedida = (string)readline("Digite a unidade de medida do produto: \n"); + $quantidade = (int)readline("Digite a quantidade do produto: \n"); + $preco = (float)readline("Digite o preço do produto: \n"); + $validade = (string)readline("Digite a validade do produto: \n"); + + $produto = new ProdutoPerecivel($sku, $nome, $unidadeDeMedida, $quantidade, $preco, $validade); + $this->estoque[] = $produto; + echo "Produto perecível adicionado com sucesso.\n"; + } + + private function adicionarBicicleta(): void + { + echo "Adicionando um produto do tipo 'Perecivel':\n"; + #echo "Produto perecivel adicionado com sucesso.\n"; + } + + public function listar(): void + { + # foreach ($this->estoque as $produto) { + # echo $produto . "\n"; + # } + } + public function vendar() { } + public function atualizar() { } + public function deletar() { } diff --git a/POO/GerenciaEstoque/ProdutoPerecivel.php b/POO/GerenciaEstoque/ProdutoPerecivel.php index 05ebea3..687095d 100644 --- a/POO/GerenciaEstoque/ProdutoPerecivel.php +++ b/POO/GerenciaEstoque/ProdutoPerecivel.php @@ -18,3 +18,5 @@ public function getValidade(): string //propriedade específica return $this->validade; } } + +// sobreescrito = poliformismo? gogo \ No newline at end of file diff --git a/POO/GerenciaEstoque/menu.php b/POO/GerenciaEstoque/menu.php index d082676..7f0a934 100644 --- a/POO/GerenciaEstoque/menu.php +++ b/POO/GerenciaEstoque/menu.php @@ -24,14 +24,13 @@ function exibirMenu() switch ($opcao) { case 1: - echo "Adicionar um produto\n"; - + $estoque->adicionar(); break; case 2: echo "Vender um produto\n"; break; case 3: - echo "Verificar Estoque\n"; + echo "Atualizar Estoque\n"; break; case 4: echo "Listar o Estoque\n"; diff --git a/POO/GerenciaEstoque/menu_teste.php b/POO/GerenciaEstoque/menu_teste.php deleted file mode 100644 index 58f74cf..0000000 --- a/POO/GerenciaEstoque/menu_teste.php +++ /dev/null @@ -1,14 +0,0 @@ -getValidade(); From 67097c00406e27de4de5ce922371e772f96b0191 Mon Sep 17 00:00:00 2001 From: "Joao Pedro V. Pansiere" Date: Sun, 4 Aug 2024 19:39:40 -0300 Subject: [PATCH 4/4] Feito exercicio GerenciEstoque --- POO/GerenciaEstoque/Estoque.php | 121 +++++++++++++++++++---- POO/GerenciaEstoque/Produto.php | 4 + POO/GerenciaEstoque/ProdutoBicicleta.php | 17 +++- POO/GerenciaEstoque/ProdutoInterface.php | 1 + POO/GerenciaEstoque/ProdutoPerecivel.php | 6 +- POO/GerenciaEstoque/menu.php | 107 +++----------------- 6 files changed, 140 insertions(+), 116 deletions(-) diff --git a/POO/GerenciaEstoque/Estoque.php b/POO/GerenciaEstoque/Estoque.php index 3c2793e..59fe0d4 100644 --- a/POO/GerenciaEstoque/Estoque.php +++ b/POO/GerenciaEstoque/Estoque.php @@ -9,7 +9,6 @@ public function __construct( protected function exibeOpcoes(): string { - echo "Adicionando um produto, para o tipo:\n"; echo "1. 'Perecivel' digite 1\n"; echo "2. 'Bicicleta' digite 2\n"; echo "3. Para cancelar digite 3\n"; @@ -20,16 +19,17 @@ protected function exibeOpcoes(): string public function adicionar(): void { while (true) { + $opcao = $this->exibeOpcoes(); switch ($opcao) { - case '1': + case 1: $this->adicionarPerecivel(); break; - case '2': + case 2: $this->adicionarBicicleta(); break; - case '3': + case 3: echo "Cancelando...\n"; return; default: @@ -42,40 +42,123 @@ public function adicionar(): void private function adicionarPerecivel(): void { echo "Adicionando um produto do tipo 'Perecivel':\n"; - $sku = (string)readline("Digite o código SKU do produto: \n"); - $nome = (string)readline("Digite o nome do produto: \n"); - $unidadeDeMedida = (string)readline("Digite a unidade de medida do produto: \n"); - $quantidade = (int)readline("Digite a quantidade do produto: \n"); - $preco = (float)readline("Digite o preço do produto: \n"); - $validade = (string)readline("Digite a validade do produto: \n"); - - $produto = new ProdutoPerecivel($sku, $nome, $unidadeDeMedida, $quantidade, $preco, $validade); + + $produto = new ProdutoPerecivel( + (string)readline("Digite o código SKU do produto: \n"), + (string)readline("Digite o nome do produto: \n"), + (string)readline("Digite a unidade de medida do produto: \n"), + (int)readline("Digite a quantidade do produto: \n"), + (float)readline("Digite o preço do produto: \n"), + (string)readline("Digite a validade do produto: \n") + ); + $this->estoque[] = $produto; - echo "Produto perecível adicionado com sucesso.\n"; + + echo "Produto 'perecível' adicionado com sucesso.\n\n"; } private function adicionarBicicleta(): void { - echo "Adicionando um produto do tipo 'Perecivel':\n"; - #echo "Produto perecivel adicionado com sucesso.\n"; + echo "Adicionando um produto do tipo 'Bicicleta':\n"; + + $produto = new ProdutoBicicleta( + (string)readline("Digite o código SKU do produto: \n"), + (string)readline("Digite o nome do produto: \n"), + (string)readline("Digite a unidade de medida do produto: \n"), + (int)readline("Digite a quantidade do produto: \n"), + (float)readline("Digite o preço do produto: \n"), + (int)readline("Digite o número de velocidades: \n") + ); + + $this->estoque[] = $produto; + + echo "Produto 'bicicleta' adicionado com sucesso.\n\n"; } public function listar(): void { - # foreach ($this->estoque as $produto) { - # echo $produto . "\n"; - # } + $i = 1; + + foreach ($this->estoque as $produto) { + echo "Produto " . $i++ . ":\n"; + echo "Código SKU: " . $produto->getSku() . PHP_EOL; + echo "Nome: " . $produto->getNome() . PHP_EOL; + echo "Unidade de medida: " . $produto->getUnidadeDeMedida() . PHP_EOL; + echo "Quantidade: " . $produto->getQuantidade() . PHP_EOL; + + if (method_exists($produto, 'getVelocidades')) { + echo "Velocidades: " . $produto->getVelocidades() . "\n\n"; + } + if (method_exists($produto, 'getValidade')) { + echo "Validade: " . $produto->getValidade() . "\n\n"; + } + } } - public function vendar() + public function vender() { + $sku = (string)readline("Digite o código SKU do produto para venda: "); + $quantidade = (float)readline("Digite a quantidade a vender: "); + + foreach ($this->estoque as $key => $produto) { + $produtoSku = $produto->getSku(); + $produtoQuantidade = $produto->getQuantidade(); + + echo "SKU do Produto: " . $produtoSku . PHP_EOL; + + if (trim($produtoSku) == trim($sku)) { + echo "SKU correspondente encontrado." . PHP_EOL; + + if ($quantidade > $produtoQuantidade) { + echo "\nVenda de " . $produto->getNome() . " não realizada.\n"; + echo "Existe apenas " . $produtoQuantidade . " unidades disponíveis.\n"; + return; + } + + $produto->setQuantidade($produtoQuantidade - $quantidade); + + if ($produto->getQuantidade() == 0) { + echo "\nVenda de " . $quantidade . " " . $produto->getNome() . " realizada com sucesso.\n"; + echo "Produto: " . $produto->getNome() . " esgotado.\n"; + unset($this->estoque[$key]); + } else { + echo "\nVenda de " . $quantidade . " " . $produto->getNome() . " realizada com sucesso.\n"; + echo "Quantidade restante: " . $produto->getQuantidade() . "\n"; + } + return; + } + } + + echo "\nCódigo do produto inválido, por favor tente novamente.\n"; + + return; } public function atualizar() { + $sku = (string)readline("Digite o código SKU do produto para atualizar: "); + + foreach ($this->estoque as $key => $produto) { + if ($produto->getSku() == $sku) { + $quantidade = readline("Digite a quantidade que deseja adicionar: "); + $produto->setQuantidade($produto->getQuantidade() + $quantidade); + echo "Quantidade do produto atualizado com sucesso.\n"; + } + } } public function deletar() { + $sku = (string)readline("Digite o código SKU do produto a deletar: "); + + foreach ($this->estoque as $key => $produto) { + if ($produto->getSku() == $sku) { + unset($this->estoque[$key]); + + echo "Produto excluido com sucesso\n"; + } else { + echo "\nCódigo do produto inválido, por favor tente novamente.\n"; + } + } } } diff --git a/POO/GerenciaEstoque/Produto.php b/POO/GerenciaEstoque/Produto.php index 5eaa354..171c9ae 100644 --- a/POO/GerenciaEstoque/Produto.php +++ b/POO/GerenciaEstoque/Produto.php @@ -30,4 +30,8 @@ public function getPreco(): float { return $this->preco; } + public function setQuantidade($quantidade): void + { + $this->quantidade = $quantidade; + } } diff --git a/POO/GerenciaEstoque/ProdutoBicicleta.php b/POO/GerenciaEstoque/ProdutoBicicleta.php index 8c58b9c..4747016 100644 --- a/POO/GerenciaEstoque/ProdutoBicicleta.php +++ b/POO/GerenciaEstoque/ProdutoBicicleta.php @@ -2,8 +2,23 @@ class ProdutoBicicleta extends Produto { - public function lubrificarCorrente(): void //comportamentos específicos + public function __construct( + public string $sku, + public string $nome, + public string $unidadeDeMedida, + public int $quantidade, + public float $preco, + public int $velocidades + ) { + parent::__construct($sku, $nome, $unidadeDeMedida, $quantidade, $preco); + } + + public function lubrificarCorrente(): void { echo 'Corrente lubrificada, a bike está pronta para pedalada!'; } + public function getVelocidades(): string + { + return $this->velocidades; + } } diff --git a/POO/GerenciaEstoque/ProdutoInterface.php b/POO/GerenciaEstoque/ProdutoInterface.php index 218fdbf..cd210fb 100644 --- a/POO/GerenciaEstoque/ProdutoInterface.php +++ b/POO/GerenciaEstoque/ProdutoInterface.php @@ -7,4 +7,5 @@ public function getNome(): string; public function getQuantidade(): int; public function getUnidadeDeMedida(): string; public function getPreco(): float; + public function setQuantidade($quantidade): void; } diff --git a/POO/GerenciaEstoque/ProdutoPerecivel.php b/POO/GerenciaEstoque/ProdutoPerecivel.php index 687095d..8058c78 100644 --- a/POO/GerenciaEstoque/ProdutoPerecivel.php +++ b/POO/GerenciaEstoque/ProdutoPerecivel.php @@ -8,15 +8,13 @@ public function __construct( public string $unidadeDeMedida, public int $quantidade, public float $preco, - public string $validade //propriedade específica + public string $validade ) { parent::__construct($sku, $nome, $unidadeDeMedida, $quantidade, $preco); } - public function getValidade(): string //propriedade específica + public function getValidade(): string { return $this->validade; } } - -// sobreescrito = poliformismo? gogo \ No newline at end of file diff --git a/POO/GerenciaEstoque/menu.php b/POO/GerenciaEstoque/menu.php index 7f0a934..65f8cce 100644 --- a/POO/GerenciaEstoque/menu.php +++ b/POO/GerenciaEstoque/menu.php @@ -9,10 +9,12 @@ function exibirMenu() echo "Escolha uma das opções abaixo:\n"; echo "1. Adicionar um produto 1\n"; echo "2. Vender um produto 2\n"; - echo "3. Verificar Estoque 3\n"; + echo "3. Atualizar produto 3\n"; echo "4. Listar o Estoque 4\n"; - echo "5. Sair\n"; + echo "5. Deletar um produto 5\n"; + echo "6. Sair\n"; $opcao = readline("Digite a sua escolha: "); + echo PHP_EOL; return $opcao; } @@ -24,18 +26,26 @@ function exibirMenu() switch ($opcao) { case 1: + echo "Adicionando um produto... para o tipo:\n"; $estoque->adicionar(); break; case 2: - echo "Vender um produto\n"; + echo "Vendendo um produto...\n"; + $estoque->vender(); break; case 3: - echo "Atualizar Estoque\n"; + echo "Atualizando um produto...\n"; + $estoque->atualizar(); break; case 4: - echo "Listar o Estoque\n"; + echo "Listando o estoque...\n"; + $estoque->listar(); break; case 5: + echo "Deletando um produto...\n"; + $estoque->deletar(); + break; + case 6: echo "Saindo...\n"; exit; default: @@ -43,90 +53,3 @@ function exibirMenu() break; } }; - -/* -function adicionarProduto(&$estoque, $codigo, $nome, $tamanho, $cor, $quantidade) -{ - - $estoque[] = [ - 'codigo' => $codigo, - 'nome' => $nome, - 'tamanho' => $tamanho, - 'cor' => $cor, - 'quantidade' => $quantidade - ]; -} - -function venderProduto(&$estoque, $codigo, $quantidade) -{ - - foreach ($estoque as $key => &$produto) { - - if ($produto['codigo'] == $codigo) { - - if ($quantidade > $produto['quantidade']) { - - echo "\nVenda de " . $produto['nome'] . " não realizada.\nExiste apenas " . $produto['quantidade'] . " unidades disponiveis.\n"; - - return; - } - - $produto['quantidade'] -= $quantidade; - - if ($produto['quantidade'] == 0) { - - echo "\nVenda de " . $quantidade . " " . $produto['nome'] . " realizada com sucesso."; - echo "\nProduto: " . $produto['nome'] . " esgotado.\n"; - unset($estoque[$key]); - } else { - - echo "\nVenda de " . $quantidade . " " . $produto['nome'] . " realizada com sucesso.\n"; - echo "Quantidade restante: " . $produto['quantidade'] . "\n"; - } - return; - } - } - - echo "\nCódigo do produto inválido, por favor tente novamente.\n"; - - return; -} - -function verificarEstoque(&$estoque, $codigo) -{ - - foreach ($estoque as $produto) { - - if ($produto['codigo'] == $codigo) { - - echo "\nO produto: " . $produto['nome'] . " está disponível." . "\nQuantidade: " . $produto['quantidade'] . ".\n"; - $produtoEncontrado = true; - return; - } - } - - echo "\nProduto não está disponível.\n"; -} - -function listarEstoque(&$estoque) -{ - - if (empty($estoque)) { - echo "Estoque vazio!\n"; - return; - } - - foreach ($estoque as $produto) { - - echo "\nCódigo: " . $produto['codigo'] . "\nNome: " . $produto['nome'] . "\nTamanho: " . $produto['tamanho'] . "\nCor: " . $produto['cor'] . "\nQuantidade: " . $produto['quantidade'] . "\n\n"; - } -} - -$estoque[] = [ - 'codigo' => 1, - 'nome' => 'Camisa Polo', - 'tamanho' => 'P', - 'cor' => 'Branca', - 'quantidade' => 5 -]; -*/ \ No newline at end of file