Preciso de Ajuda!

Faça um programa em Java para manter um cadastro de produtos e suas
respectivas vendas. O aplicativo deve apresentar também alguns relatórios
de controle para o usuário. Algumas regras sobre o software:

  • Um produto deve ter os seguintes atributos: código, nome, valor e
    quantidade em estoque.
  • Uma venda deve ter os seguintes atributos: data da venda, o produto
    vendido e a quantidade vendida.
  • As vendas são feitas sempre para um único produto.
  • Para realizar a venda, sempre verifique se o produto a ser vendido existe
    em estoque.
    A estrutura mínima de menus/funcionalidades que o aplicativo deve ter é a
    seguinte:
    1 – Incluir produto
    2 – Consultar produto
    3 – Listagem de produtos
    4 – Vendas por período – detalhado
    5 – Realizar venda
    0 – Sair

Não poste só o enunciado, mostre o que tentou e seja específico onde está a sua dificuldade. Lembrando que o pessoal aqui não é muito fã de pegar um enunciado completo e fazer pra você.

Recomendo a leitura: Como fazer uma boa pergunta?

Abraço.

2 curtidas
package Classes;

public class Programa; 

import java.util.*;
import classes.*;

public class Programa {
  
  public static void main(String[] args) {
    Scanner in = new Scanner (System.in);
    int opcao;
    List<Produto> produtos = new ArrayList<>();
    
    public static void main(String[] args) {
      List<Produto> produtos = new ArrayList<>();
      Produtos Prod1 = new Produtos ("Roupa","01");
      Produtos Prod2 = new Produtos ("Cosmeticos","02");
      Produtos Prod3 = new Produtos ("Calçados","03");
      
      Produtos.add(Prod1);
      Produtos.add(Prod2);
      Produtos.add(Prod3);
      
      //continuar aqui(ver os videos)
      
      System.out.println("O Total de Produtos no momento é de" + produtos.size());
      Produto Prodconsulta = new Produto (system.in);
      
      do {
        System.out.println("\n**\nMENU\n**\n");
        System.out.println("1 - Incluir produto");
        System.out.println("2 - Consultar produto");
        System.out.println("3 - Listagem de produtos");
        System.out.println("4 - Vendas pro período - detalhado");
        System.out.println("5 - Realizar venda");
        System.out.println("0 - Sair");
        System.out.print("Opção: ");
        
        opcao = in.nextInt();
        in.nextLine();            
        
        switch (opcao) {
          case 1:  
            Produto produ = new Produto();
            System.out.print("Digite o codigo do produto: ");
            produ.setCodigo(in.nextLine());
            System.out.print("Digite o nome do produto: ");
            produ.setNome(in.nextLine());
            System.out.print("Digite o valor do produto: ");
            produ.setValor(in.nextLine());
            System.out.print("Digite a quantidade: ");
            produ.setQtdEstoque(in.nextLine());
            produtos.add(produ);
            System.out.println("Produto Cadastrado com sucesso.");
            break;
          
          case 2:
            System.out.print("Digite o nome do produto: ");
            String nome =  (in.nextLine());
            Boolean encontrado = false;
            
            for (Produto produto : produtos) {
              if (produto.getNome().equals(nome)) {
                System.out.println();
                System.out.println("Codigo: " + produto.getCodigo());
                System.out.println("Nome : " + produto.getNome());
                System.out.println("Valor: " + produto.getValor());
                System.out.println("Quantidade: " + produto.getQtdsEstoque());
                encontrado = true;
              }
            }
            
            if (!encontrado) {
              System.out.println("Produto Não Encontrado!");
            }
            break;
          
          case 3:
            System.out.println("\n**\nListagem de Produtos\n**\n");
            
            if (produtos.isEmpty()) {
              System.out.println("Nenhum produto a exibir.");
            }   
            
            for (Produto produt : produtos) {
              System.out.println();
              System.out.println("Código: " + produt.getCodigo());
              System.out.println("Nome: " + produt.getNome());
              System.out.println("Valor: " + produt.getValor());
              System.out.println("Quantidade: " + produt.getQtdsEstoque());
            }   
            break; 

          case 4:
            System.out.print("Digite o nome do produto: ");
            String venda =  (in.nextLine());
            Boolean encontra = false;
            
            for (Vendas vendas : Vendas ) {
              if (venda.getProdutoVendido().equals(venda)) {
                System.out.println();
                System.out.println("Produto vendido: " + venda.getProdutoVendido());
                System.out.println("Data da venda : " + venda.getDataVenda());
                System.out.println("Quantidade: " + venda.getQtdsDeVendas());
                System.out.println("Valor da unidade: " + venda.getValor());
                
                if (!encontrado) = true;
              }
            }
            
            if (!encontrado); {
              System.out.println("Produto Não Encontrado!");
            }
            break;
          
          case 5:
            else if ()
            
            Venda vendas = new Venda();
            System.out.print("Produto vendido: ");
            vendas.setProdutoVendido(in.nextLine());
            System.out.print("Data da venda: ");
            vendas.setDataVenda(in.nextLine());
            System.out.print("Quantidade do produto: ");
            vendas.setQtdsVendido(in.nextInt());
            System.out.print("Quantidade do produto: ");
            vendas.setProduto(in.nextInt());
            break;
          
          case 0:
            System.out.println("Fim do programa.");
            break;
          
          default:
            System.out.println("opção inválida!");
            break;    
          }
        }
        
        while (opcao != -1);
        in.close();
      }
    }

Oi, Desculpa é que sou nova ainda… O programa ainda ta sendo construído, eu gostaria de saber em que partes devo focar!!!

Esse é basicamente o esqueleto do meu programa.

Ainda tá meio vaga a sua dificuldade:

  • o exercício diz pra criar uma classe Produto, você já criou?
  • se sim, criou todos os atributos solicitados (código, nome, valor e qtde estoque)?
  • criou a classe Venda, conforme solicitado?
  • se sim, criou com os atributos (data, produto, quantidade)?

Se ainda não conclui essas etapas, recomendo que comece por aí. Se tem dificuldade em alguma etapa em específico, diga qual é.

Daí em diante, é criar o menu (você já fez boa parte) e validar as interações (ex: verifica se a quantidade solicitada do produto está disponível).

Uma coisa que visa facilitar a sua vida é separa seu código em partes. Em vez de um monte de código no main(), crie métodos para cada funcionalidade. Isso não apenas é uma boa prática, como deixa seu código mais organizado. Por exemplo, você pode criar um método para exibir o menu, um para cada opção de menu, e outro para ler a entrada do usuário (usando somente nextLine, e convertendo para um tipo numérico somente caso necessário). Sua classe principal ficaria algo como:

public class Loja{
  Scanner in = new Scanner(System.in);
  List<Produto> produtos = new ArrayList<>();

  public void exibirMenu(){
    System.out.println("\n**\nMENU\n**\n");
    System.out.println("1 - Incluir produto");
    System.out.println("2 - Consultar produto");
    System.out.println("3 - Listagem de produtos");
    System.out.println("4 - Vendas pro período - detalhado");
    System.out.println("5 - Realizar venda");
    System.out.println("0 - Sair");
  }

  String lerEntradaDoUsuario(String mensagem){
    System.out.print(mensagem);
    String algoDigitado = in.nextLine();
    return algoDigitado;
  }

  incluirProduto(){
    //codigo aqui
  }

  consultarProduto(){
    //codigo aqui
  }

  listagemProduto(){
    //codigo aqui
  }

  // outros metodos aqui, para venda, relatorio, etc

  void trabalhar(){
   int opcao = -1;
   do{
     exibirMenu();
     opcao = Integer.parseInt(lerEntradaDoUsuario("Opção: "));
     switch (opcao){
      case 1: incluirProduto(); break;
      case 2: consultarProduto(); break;
      case 3: listagemProduto(); break;
     default: System.out.println("Opção invalida"); break;
     }
   }while( opcao != 0);
  }

  main(){
    Loja loja = new Loja();
    loja.trabalhar();
  }

}

Por fim, quando for postar código, use a formatação, pois facilita a visualização:

Abraço.

1 curtida

Muito Obrigada pela ajuda, eu tenho mais uma duvida, desculpe rsrs, é que quando o usuário comprar um produto eu vou ter que remove-lo, eu gostaria de saber se devo usar o métodos Remove da Collection? se sim, em como devo implementa-lo! Obrigada XD

O enunciado não fala nada sobre remoção, então não vejo necessidade de usar o remove do list/arraylist.

Se o que você diz é reduzir o estoque, creio que a ideia seja subtrair o que for comprado (a quantidade na venda) do estoque (a quantidade em estoque no produto). Crie no Produto um método que recebe a quantidade da venda e subtrai do saldo atual do produto. Não há necessidade de remover o produto nesse caso.

De qualquer forma, para remover um produto da lista, o método remove() do arraylist precisa do índice a ser removido ou do objeto a ser removido, então você pode criar um método de busca (com for) para achar o elemento e retorná-lo (ou retornar seu índice) , e usar essa informação pra exclui-lo com remove().

Abraço.

Muito Obrigada :slight_smile:

Desculpa por isso, é que sou muito leiga para a programação ainda… eu gostaria de saber de como fazer essa sua sugestão, quais comandos devo invocar? “Crie no Produto um método que recebe a quantidade da venda e subtrai do saldo atual do produto”

Uma dica boa é fazer as coisas por partes. Se o exervicio pede 10 coisas, faça a primeira e veja se funciona. Pode até postar aqui pra galera dá uma olhada. Depois vai para o próximo item.

O importante é entender o pq das coisas funcionarem.

1 curtida

Como foi seu estudo de lógica de programação? Talvez seja o caso de voltar umas aulas e rever essa parte.

Mesmo esse tópico sendo antigo, quando se tem resposta ajuda outras pessoas. (#ficaadica)

Um exemplo simples de como seria a resposta para este tópico:

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class CadastroProdutosVendas {
    
    private static Scanner scanner = new Scanner(System.in);
    private static List<Produto> produtos = new ArrayList<>();
    private static List<Venda> vendas = new ArrayList<>();

    public static void main(String[] args) {
        int opcao;
        do {
            System.out.println("\n--- MENU ---");
            System.out.println("1 - Incluir produto");
            System.out.println("2 - Consultar produto");
            System.out.println("3 - Listagem de produtos");
            System.out.println("4 - Vendas por período - detalhado");
            System.out.println("5 - Realizar venda");
            System.out.println("0 - Sair");
            System.out.print("Escolha uma opção: ");
            opcao = scanner.nextInt();
            scanner.nextLine(); // consumir a quebra de linha deixada pelo nextInt()
            switch (opcao) {
                case 1:
                    incluirProduto();
                    break;
                case 2:
                    consultarProduto();
                    break;
                case 3:
                    listarProdutos();
                    break;
                case 4:
                    listarVendasPorPeriodoDetalhado();
                    break;
                case 5:
                    realizarVenda();
                    break;
                case 0:
                    System.out.println("Saindo...");
                    break;
                default:
                    System.out.println("Opção inválida.");
            }
        } while (opcao != 0);
    }

    private static void incluirProduto() {
        System.out.print("\nCódigo do produto: ");
        int codigo = scanner.nextInt();
        scanner.nextLine(); // consumir a quebra de linha deixada pelo nextInt()
        if (buscarProdutoPorCodigo(codigo) == null) {
            System.out.print("Nome do produto: ");
            String nome = scanner.nextLine();
            System.out.print("Valor do produto: ");
            double valor = scanner.nextDouble();
            scanner.nextLine(); // consumir a quebra de linha deixada pelo nextDouble()
            System.out.print("Quantidade em estoque: ");
            int quantidade = scanner.nextInt();
            scanner.nextLine(); // consumir a quebra de linha deixada pelo nextInt()
            Produto produto = new Produto(codigo, nome, valor, quantidade);
            produtos.add(produto);
            System.out.println("Produto incluído com sucesso.");
        } else {
            System.out.println("Já existe um produto com o código informado.");
        }
    }

    private static void consultarProduto() {
        System.out.print("\nCódigo do produto: ");
        int codigo = scanner.nextInt();
        scanner.nextLine(); // consumir a quebra de linha deixada pelo nextInt()
        Produto produto = buscarProdutoPorCodigo(codigo);
        if (produto != null) {
            System.out.println(produto);
        } else {
            System.out.println("Produto não encontrado.");
        }
    }

    private static void listarProdutos() {
        System.out.println("\n--- LISTAGEM DE PRODUTOS ---");
        if (produtos.isEmpty()) {
            System.out.println("Não há produtos cadastrados.");
        } else {
            for (Produto produto : produtos) {
                System.out.println(produto);
            }
        }
    }

    private static void listarVendasPorPeriodoDetalhado(Date dataInicial, Date dataFinal) {
    System.out.println("==== Vendas por período (detalhado) ====");
    for (Venda venda : vendas) {
        if (venda.getDataVenda().after(dataInicial) && venda.getDataVenda().before(dataFinal)) {
            Produto produto = venda.getProdutoVendido();
            System.out.printf("Data da venda: %s\n", venda.getDataVenda());
            System.out.printf("Código do produto: %d\n", produto.getCodigo());
            System.out.printf("Nome do produto: %s\n", produto.getNome());
            System.out.printf("Valor unitário: %.2f\n", produto.getValor());
            System.out.printf("Quantidade vendida: %d\n", venda.getQuantidadeVendida());
            System.out.printf("Valor total da venda: %.2f\n", venda.getValorTotal());
            System.out.println("--------------------------------------");
        }
    }
}

private static void realizarVenda() {
    System.out.println("==== Realizar venda ====");
    System.out.print("Digite o código do produto: ");
    int codigo = scanner.nextInt();
    scanner.nextLine();
    Produto produto = buscarProdutoPorCodigo(codigo);
    if (produto == null) {
        System.out.println("Produto não encontrado!");
        return;
    }
    System.out.print("Digite a quantidade desejada: ");
    int quantidade = scanner.nextInt();
    scanner.nextLine();
    if (quantidade > produto.getQuantidadeEmEstoque()) {
        System.out.println("Quantidade insuficiente em estoque!");
        return;
    }
    double valorTotal = produto.getValor() * quantidade;
    produto.setQuantidadeEmEstoque(produto.getQuantidadeEmEstoque() - quantidade);
    Venda venda = new Venda(new Date(), produto, quantidade, valorTotal);
    vendas.add(venda);
    System.out.println("Venda realizada com sucesso!");
}