Ejercicio de programación - ArrayList, do while, switch

Desarrollar un programa que permita gestionar los productos que se almacenan en un local. El programa debe registrar el código del producto, nombre de los productos, el stock actual y el monto de compra del mismo. Se debe reportar lo siguiente:
  • Mostrar todos los productos con respectivos datos (nombre, stock y precio de compra).
  • Ordenar los productos por nombres.
  • Buscar un producto dado su código.
  • El monto total de inversión de todos los productos.
  • Listado de productos con un stock menor a una cantidad ingresada por el usuario.
  • Productos cuyo precio de compra es mayor a 1500.

Código del Programa

package gestionproductos;

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

public class GestionProductos {

    public static void main(String[] args) {
        List<String> codigoProd = new ArrayList<>();
        List<String> nombreProd = new ArrayList<>();
        List<Integer> stockActual = new ArrayList<>();
        List<Double> montoCompra = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);
        char resp;
        int cantProd = 0, opt;

        do {
            cantProd++;
            System.out.println("Datos del Producto N° " + cantProd);
            System.out.print("Código del Producto N° " + cantProd + ": ");
            codigoProd.add(scanner.next());
            System.out.print("Nombre del Producto N° " + cantProd + ": ");
            nombreProd.add(scanner.next());
            System.out.print("Stock del Producto N° " + cantProd + ": ");
            stockActual.add(scanner.nextInt());
            System.out.print("Monto de Compra del Producto N° "
                    + cantProd + ": ");
            montoCompra.add(Double.parseDouble(scanner.next()));
            do {
                System.out.print("Desea registrar más productos?[S-N]: ");
                resp = scanner.next().toUpperCase().charAt(0);
            } while (resp != 'N' && resp != 'S');
        } while (resp != 'N');
        do {
            System.out.println("Reportes");
            System.out.println("--------");
            System.out.println("1. Mostrar todos los productos");
            System.out.println("2. Ordenar los productos por nombre");
            System.out.println("3. Buscar un producto dado su código");
            System.out.println("4. Monto total de inversión de todos los "
                    + "productos");
            System.out.println("5. Listado de productos con un stock menor a "
                    + "una cantidad ingresada por el usuario");
            System.out.println("6. Productos cuyo precio de compra es mayor a"
                    + " 1500");
            do {
                System.out.print("Elija una opcion [1-6]: ");
                opt = scanner.nextInt();
            } while (opt < 1 && opt > 6);
            switch (opt) {
                case 1:
                    System.out.println("Listado de productos");
                    for (int i = 0; i < cantProd; i++) {
                        System.out.println("Codigo " + (i + 1) + ": "
                                + codigoProd.get(i).toString());
                        System.out.println("Nombre " + (i + 1) + ": "
                                + nombreProd.get(i).toString());
                        System.out.println("Stock " + (i + 1) + ": "
                                + stockActual.get(i).toString());
                        System.out.println("Monto de compra " + (i + 1)
                                + ": " + montoCompra.get(i).toString());
                    }
                    break;
                case 2:
                    System.out.println("Listado de productos ordenados por"
                            + " nombre");
                    String bufferCodigo;
                    String bufferNombre;
                    int bufferStock;
                    double bufferMonto;
                    //ordenamos usando el método de la burbuja
                    for (int i = 0; i < nombreProd.size(); i++) {
                        for (int j = 0; j < i; j++) {
                            if (nombreProd.get(i).compareTo(nombreProd.get(j)) < 0) {
                               //---moviendo códigos
                                bufferCodigo = codigoProd.get(j);
                                codigoProd.set(j, codigoProd.get(i));
                                codigoProd.set(i, bufferCodigo);
                                //---moviendo nombres
                                bufferNombre = nombreProd.get(j);
                                nombreProd.set(j, nombreProd.get(i));
                                nombreProd.set(i, bufferNombre);
                                //---moviendo stocks
                                bufferStock = stockActual.get(j);
                                stockActual.set(j, stockActual.get(i));
                                stockActual.set(i, bufferStock);
                                //---moviendo montos
                                bufferMonto = montoCompra.get(j);
                                montoCompra.set(j, montoCompra.get(i));
                                montoCompra.set(i, bufferMonto);
                            }
                        }
                    }
                    //lista de productos
                    for (int i = 0; i < cantProd; i++) {
                        System.out.println("Codigo " + (i + 1) + ": "
                                + codigoProd.get(i).toString());
                        System.out.println("Nombre " + (i + 1) + ": "
                                + nombreProd.get(i).toString());
                        System.out.println("Stock " + (i + 1) + ": "
                                + stockActual.get(i).toString());
                        System.out.println("Monto de compra " + (i + 1)
                                + ": " + montoCompra.get(i).toString());
                    }
                    break;
                case 3:
                    System.out.println("Buscar un producto dado su código");
                    System.out.print("Ingrese código: ");
                    String cod = scanner.next();
                    int indice = codigoProd.indexOf(cod);
                    if (indice != -1) {
                        System.out.println("Datos del Producto");
                        System.out.println("Codigo: "
                                + codigoProd.get(indice).toString());
                        System.out.println("Nombre: "
                                + nombreProd.get(indice).toString());
                        System.out.println("Stock: "
                                + stockActual.get(indice).toString());
                        System.out.println("Monto de compra: "
                                + montoCompra.get(indice).toString());
                    } else {
                        System.out.println("Código no encontrado");
                    }
                    break;
                case 4:
                    double montoTotal = 0;
                    for (int i = 0; i < montoCompra.size(); i++) {
                        montoTotal += montoCompra.get(i).doubleValue();
                    }
                    System.out.println("Monto Total de Inversión: " + montoTotal);
                    break;
                case 5:
                    System.out.println("Listado de productos con un stock menor "
                            + "a una cantidad ingresada por el usuario");
                    int cant;
                    System.out.print("Ingrese cantidad: ");
                    cant = scanner.nextInt();
                    for (int i = 0; i < stockActual.size(); i++) {
                        if (stockActual.get(i).intValue() < cant) {
                            System.out.println("Codigo " + (i + 1) + ": "
                                    + codigoProd.get(i).toString());
                            System.out.println("Nombre " + (i + 1) + ": "
                                    + nombreProd.get(i).toString());
                            System.out.println("Stock " + (i + 1) + ": "
                                    + stockActual.get(i).toString());
                            System.out.println("Monto de compra " + (i + 1)
                                    + ": " + montoCompra.get(i).toString());
                        }
                    }
                    break;
                case 6:
                    System.out.print("Listado de productos cuyo precio "
                            + "es mayor a 1500");
                    for (int i = 0; i < montoCompra.size(); i++) {
                        if (montoCompra.get(i).intValue() > 1500) {
                            System.out.println("Codigo " + (i + 1) + ": "
                                    + codigoProd.get(i).toString());
                            System.out.println("Nombre " + (i + 1) + ": "
                                    + nombreProd.get(i).toString());
                            System.out.println("Stock " + (i + 1) + ": "
                                    + stockActual.get(i).toString());
                            System.out.println("Monto de compra " + (i + 1)
                                    + ": " + montoCompra.get(i).toString());
                        }
                    }
            }

            do {
                System.out.print("Desea mostrar otro reporte?[S-N]: ");
                resp = scanner.next().toUpperCase().charAt(0);
            } while (resp != 'N' && resp != 'S');
        } while (resp != 'N');
    }
}

Comentarios

Entradas populares de este blog

Ejercicio de Programación - switch, if

Ejercicio de Programación - do while