2
respostas

Projeto final do curso - aplicação de compras

package modelos;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Cartao {
    private double limite;
    private List<Compra> listaCompras;

    public Cartao(double limite) {
        this.limite = limite;
        this.listaCompras = new ArrayList<>();
    }

    public void fatura(Compra compra) {
        this.limite -= compra.getValor();
        this.listaCompras.add(compra);
        Collections.sort(listaCompras);
    }

    public void imprimiFatura(){
        System.out.println("********************************************");
        System.out.println("COMPRAS REALIZADAS:");
        System.out.println("\n");
        for (Compra compra: listaCompras){
            System.out.println(compra);
        }
        System.out.println("\n");
        System.out.println("Saldo do cartão: " + this.limite);
        System.out.println("\n");
        System.out.println("********************************************");
    }

    public double getLimite() {
        return limite;
    }

}


package modelos;

public class Compra implements Comparable<Compra>{

    private String descricao;
    private double valor;

    public Compra(String descricao, double valor) {
        this.descricao = descricao;
        this.valor = valor;
    }

    public double getValor() {
        return valor;
    }

    @Override
    public String toString() {
        return this.descricao + " - " + this.valor;
    }

    @Override
    public int compareTo(Compra compra) {
        return Double.valueOf(this.getValor()).compareTo(compra.getValor());
    }
}


package principal;

import modelos.Cartao;
import modelos.Compra;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int opcao = 1;
        boolean saldoInsuficiente = false;
        Scanner leitura = new Scanner(System.in);
        System.out.println("Informe o limite do seu cartão:");
        Cartao cartao = new Cartao(leitura.nextInt());

        while(opcao != 0){
            System.out.println("Digite a descrição da compra:");
            String descricaoCompra = leitura.next();
            System.out.println("Digite o valor da compra:");
            double valorCompra = leitura.nextDouble();

            Compra compras = new Compra(descricaoCompra, valorCompra);

            if(compras.getValor() < cartao.getLimite()){
                cartao.fatura(compras);
                System.out.println("Compra realizada com sucesso!");
                System.out.println("Digite 0 para sair ou 1 para continuar:");
                opcao = leitura.nextInt();
            }else{
                saldoInsuficiente = true;
                System.out.println("Saldo insufucuente");
            }

            if(opcao == 0 || saldoInsuficiente) {
                cartao.imprimiFatura();
                opcao = 0;
            }
        }

    }
}
2 respostas

Oii, Alessandro!

Muito obrigada por compartilhar seu código com a gente. É interessante ver como você estruturou a lógica para gerenciar um cartão de compras e faturas. O uso de listas para armazenar as compras e o método compareTo na classe Compra mostram que você tá aplicando conceitos de coleções de dados de um modo bem legal.

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

Obrigado Lorena.