Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Sugerencia] Compras tarjeta de credito

buen dia, asi quedo mi codigo, Main.java

package one.aluracursos.proyectofinal.main;

import one.aluracursos.proyectofinal.model.Compra;
import one.aluracursos.proyectofinal.model.TarjetaCredito;

import java.util.Collections;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        double limite = 0.0;
        try {
            System.out.println("Limite de la tarjeta ");
            limite = leer.nextDouble();
        } catch (Exception e) {
            System.out.println("Digite solo numeros , en limite tarjeta credito" + e.toString());
            return;
        }
        TarjetaCredito tc = new TarjetaCredito(limite);
        int salir = 1;
        while (salir != 0) {
            System.out.print("Descripion producto comprar : ");
            String describe = leer.next();
            double valor = 0;
            try {
                System.out.print("Valor producto : ");
                valor = Double.valueOf(leer.next());
            } catch (Exception e) {
                System.out.println("Digite solo numeros en valor compra " + e.toString());
                return;
            }
            Compra compra = new Compra(describe, valor);
            boolean compraRealizada = tc.lanzarCompra(compra);
            if (compraRealizada) {
                System.out.println("item de compras valido");
                System.out.println("Escriba [0]Salir [1]Continuar");
                try {
                    salir = leer.nextInt();
                } catch (Exception e) {
                    System.out.println("Digite un numero entero, 0=Salir, cualquier otro numero=Continuar ");
                    return;
                }
            } else {
                System.out.println("Saldo Insificiente, revisar su cupo de TC");
                salir = 0;
            }
        } //wend
        System.out.println("Compras realizadas");
        Collections.sort(tc.getListaCompras());
        double totalCompras = 0;
        for (Compra compra : tc.getListaCompras()) {
            System.out.println(compra.toString());
            totalCompras += compra.getValor();
        }
        System.out.println("Valor total compra " + totalCompras);
        System.out.println("Saldo tarjeta " + tc.getSaldo());
    }
}

Compra.java

package one.aluracursos.proyectofinal.model;

public class Compra implements Comparable<Compra> {
    private String descripcion;
    private double valor;

// constructor
    public Compra(String descripcion, double valor) {
        this.descripcion = descripcion;
        this.valor = valor;
    }

    // getters
    public String getDescripcion() {
        return descripcion;
    }

    public double getValor() {
        return valor;
    }

    @Override
    public String toString() {
        return "Item {" +
                "descripcion='" + descripcion + '\'' +
                ", valor=" + valor +
                '}';
    }

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

TarjetaCredito.java

package one.aluracursos.proyectofinal.model;

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

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

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

    //getters
    public double getLimite() {
        return limite;
    }

    public List<Compra> getListaCompras() {
        return listaCompras;
    }

    public double getSaldo() {
        return saldo;
    }
    // metodos
    public boolean lanzarCompra(Compra compra){
        if(this.saldo >= compra.getValor()){
            this.saldo -= compra.getValor();
            this.listaCompras.add(compra);
            return true;
        }
        return false;
    }
}
  1. Tener en cuenta que están dentro de packages (revisar su packages e imports)
  2. Nuevo que tiene sumar el total de la factura, para mostrar al cliente
  3. Validación de datos numericos
pueden descargarlo de : https://github.com/ravila64/16-compras-tarjeta-credito
Saludos, Rene Ávila A., Bog, Col.
1 respuesta

¡Hola, Rene, espero que estés bien!

Gracias por compartir tu código. Parece que estás trabajando en un proyecto que simula compras con tarjeta de crédito. Vamos a revisar algunos puntos importantes de tu implementación:

  1. Validación de Datos Numéricos: Ya estás manejando excepciones para asegurarte de que los usuarios ingresen solo números para el límite de la tarjeta y el valor del producto. Esto es una buena práctica para evitar errores en tiempo de ejecución.

  2. Suma del Total de la Factura: Ya estás calculando y mostrando el total de las compras realizadas al final del programa con el siguiente fragmento de código:

    double totalCompras = 0;
    for (Compra compra : tc.getListaCompras()) {
        System.out.println(compra.toString());
        totalCompras += compra.getValor();
    }
    System.out.println("Valor total compra " + totalCompras);
    

    Esto asegura que el cliente pueda ver el total de sus compras.

  3. Ordenamiento de Compras: Estás utilizando Collections.sort(tc.getListaCompras()); para ordenar las compras antes de mostrarlas. Esto es útil si quieres que las compras se muestren en orden ascendente de valor.

  4. Uso de Scanner: Una pequeña sugerencia es cerrar el Scanner al final del uso para liberar recursos. Puedes hacerlo añadiendo leer.close(); después de terminar de usarlo.

  5. Manejo de Excepciones: Estás utilizando try-catch para manejar entradas erróneas, lo cual es excelente. Sin embargo, en lugar de usar return dentro del catch, podrías considerar un bucle para permitir al usuario intentar ingresar el valor nuevamente, mejorando así la experiencia del usuario.

Tu código está bien estructurado y parece cumplir con los requisitos del proyecto. Si tienes más preguntas o necesitas más aclaraciones, no dudes en comentar.

¡Espero haber ayudado y buenos estudios!