[RESOLVIDO] Vending machine - help

Olá pessoal,

Tenho que fazer uma vending machine, mas estou com algumas dúvidas.

Bom, as regras são:

  • Crie uma interface de usuário simples para execução da máquina.
  • A máquina deverá possuir um estoque de produtos com valor e quantidade de cada produto. A quantidade de produto no estoque da máquina deve ser alterado conforme realização de vendas dos produtos.
  • A máquina deverá ter opção para visualizar estoque e quantidade disponível.
  • A máquina só pode vender produtos com quantidade em estoque disponível.
  • A máquina deverá contabilizar as vendas e mostrar o valor total das vendas realizadas.
  • Uma venda só poderá ser concluída ao inserir o valor total do produto.
  • A máquina deverá contabilizar e solicitar o valor faltante para finalizar a venda, caso haja valor de troco para deverá informar o valor.
  • A máquina não necessita de lógica de contagem de notas, será apenas necessário informar os valores.

Criei o Enum Produto (c/ posição e preço), a classe estoque e a classe Pagamento, mas não sei como vou relacionar o preço dos produtos no estoque e no pagamento (no pagamento teria que calcular o troco, por isso precisaria do preço)

Alguém poderia me dar um help ?

Segue código do Enum Produto

public enum Produtos {

REFRIGERANTE (1, 4),
ÁGUA (2, 2),
SUCO (3, 3),
CHÁ(4, 3),
NENHUM(0,0);

private int posicao;
private int preco;

private Produtos(int posicao, int preco) {
	this.posicao = posicao;
	this.preco = preco;
}

public int getPosicao() {
	return posicao;
}

public int getPreco() {
	return preco;
}

public static Produtos valueOf(int posicao){
    for(Produtos prod: Produtos.values()){
        if(posicao == prod.getPosicao()){
            return prod;
        }
    }
    
    return NENHUM;
}

}

O que eu faria…

  1. Criar uma classe normal para os produtos, nesta classe teria os campos do tipo do produto, nome, preço, quantidade em estoque, valor de compra, valor de venda (o adicional de lucro que a empresa precisa) etc.
  2. Criar uma função de inclusão de produtos e seus valores (para substituir a ação manual de cadastrar os produtos)
  3. Uma interação simples, perguntando ao usuário o que ele quer fazer:

a) Comprar um item
b) Olhar a lista de itens

Se ele escolhe comprar, a máquina pede o número do item; o usuário então pode inserir o número do item ou apertar * (ou #) para ver a lista. Depois que ele digitar o item, pelo número, ele deve agora digitar a quantidade desejada. A seguir o código perguntaria o que ele quer fazer agora:

a) Continuar comprando
b) Encerrar e pagar

Se ele continuar comprando, voltaria ao primeiro passo de inserir qual produto e qual quantidade ele quer. Se for pra encerrar, o código pegaria a tabela (você pode montar por matriz ou por Map) e mostraria quais itens foram escolhidos, o valor unitário e depois a quantidade (é só multiplicar a quantidade pelo valor unitário). E, ao somar tudo, apresentaria o valor final.

Se quiser deixar mais complexa, você pode perguntar ao usuário se ele quer remover algum item. Se preferir o caminho mais simples, pergunte ao usuário que nota ele vai colocar no equipamento. (Isso porque você não está escrevendo um código para ler e identificar a nota)

Depois disso é só subtrair o valor pago do valor total da compra. Se o resultado for positivo, há troco. Se não, a venda está encerrada.

Muito obrigada

1 curtida