//Class Cartão
import java.util.ArrayList;
import java.util.List;
public class Cartao {
private double limite;
private double saldo;
private List<Compra> listCompras;
public Cartao(double limite) {
this.limite = limite;
this.saldo = limite;
this.listCompras = new ArrayList<>();
}
public double getLimite() {
return limite;
}
public double getSaldo() {
return saldo;
}
public List<Compra> getListCompras() {
return listCompras;
}
//metodo Fazer Compra
public boolean fazerCompra(Compra compra){
//Verificar Saldo
if( this.saldo>=compra.getValor() ){
this.saldo-= compra.getValor();
listCompras.add(compra);
return true;
}
return false;
}
}
//Class-Compras
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;
}
public String getDescricao() {
return descricao;
}
@Override
public String toString() {
return "Produto: "+ this.descricao + " Valor: " + this.valor;
}
@Override
public int compareTo(Compra outraCompra) {
return Double.valueOf(this.valor).compareTo(Double.valueOf(outraCompra.valor));
}
}
//Main - Principal
import java.util.Collections;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner leitura = new Scanner(System.in);
System.out.println("Informa o Limite do Cartão:");
Cartao cartao = new Cartao(leitura.nextDouble());
int sair = 1;
while(sair!=0){
System.out.println("Informe a descrição do produto: ");
String descricao = leitura.next();
System.out.println("Informe o valor da compra: ");
Compra compra = new Compra(descricao,leitura.nextDouble());
if (cartao.fazerCompra(compra)) {
System.out.println("Compra Efetuada com Sucesso!!!");
System.out.println("Sair (0) ou (1) para Continuar");
sair = leitura.nextInt();
/*
System.out.println("*******************************************");
System.out.println("****************CUPOM FISCAL***************");
System.out.println("*******************************************");*/
}else {
System.out.println("Saldo insuficiente para efetuar a compra.");
System.out.println("******************************************");
System.out.println("Valor Compra: "+compra.getValor());
System.out.println("Saldo: "+cartao.getSaldo());
System.out.println("******************************************");
System.out.println("Sair (0) ou (1) para Continuar");
sair = leitura.nextInt();
}
}
if(!cartao.getListCompras().isEmpty()) {
Collections.sort(cartao.getListCompras());
System.out.println("***********************");
System.out.println("COMPRAS REALIZADAS:\n");
for (Compra c : cartao.getListCompras()) {
System.out.println(c.getDescricao() + " - " + c.getValor());
}
System.out.println("\n***********************");
}
System.out.println("\nSaldo do cartão: " +cartao.getSaldo());
}
}