import java.util.Scanner; /** * Esta es una pequeña aplicación para realizar ventas de productos de una tiendita de computadoras * * @author Humberto * @version 25 / 11 / 11 */ public class ArregloBidimensional { /* El lector de caracteres */ static Scanner sc = new Scanner(System.in); public static void main(String args[]) { /* Arreglo de cadenas que contiene nombres de los productos */ String nombres [] = {"Laptop ", "Mouse ", "Teclado ", "Pantalla"}; /* Arreglo bidimensional con los precios y las existencias de los productos, en el mismo orden que los nombres */ int productos [][] = {{15000,5}, {500,5}, {300,5}, {3000,5}}; /* Opcion elegida del menu */ int opcion; /* Total de ventas */ int ventas = 0; do { opcion = lee_opcion_menu(); switch (opcion) { case 1: listar_productos(nombres, productos); break; case 2: ventas = vender_productos(nombres, productos) + ventas; break; case 3: mostrar_total_de_ventas(ventas); break; } } while (opcion != 0); System.out.println("Gracias por sus compras!"); } /** * Este subprograma se encarga de leer una opcion del menu presentado en pantalla * * Parametros: ninguno * Retorno: opcion elegida */ static int lee_opcion_menu() { int opcion; do { System.out.println("Elige una opción"); System.out.println("1.- Listar productos"); System.out.println("2.- Realizar venta"); System.out.println("3.- Mostrar total de ventas"); System.out.println("0.- Salir"); opcion = sc.nextInt(); } while (opcion < 0 || opcion >3); return opcion; } /** * Este programa lista los productos que recibe como parametros * * Parametros: * nombres - arreglo de cadenas con los nombres de los productos * productos - arreglo bidimensional de enteros, en la primer columna vienen los precios y en la segunda las existencias de cada producto * Retorno: * */ static void listar_productos(String nombres[], int productos[][]) { int i = 0; /* Nota: el \t es un "tabulador", es decir que inserta espacios hasta la siguiente columna de tabulación */ System.out.println("\tProducto\tPrecio\tCantidad"); for (i = 0;i productos.length); /* Esta variable esta simplemente para facilitar la lectura del codigo y no tener que estar poniendo productos[opcion-1][1] a cada vez Nota: tiene que ser opcion-1 pues en la lista de opciones de productos el conteo empieza por 1 mientras que en el arreglo el indice empieza en cero */ existencias = productos[opcion-1][1]; /* El if siguiente es para checar que haya existencias del producto */ if(existencias > 0) { do { System.out.println("Cuantos productos desea comprar (1-"+existencias+")?"); comprados = sc.nextInt(); } while (comprados < 1 || comprados > existencias); System.out.println("Venta: "+nombres[opcion-1]); /* Calculo del total de esta venta */ total = productos[opcion-1][0] * comprados; System.out.println("Por favor pague la cantidad de: "+total); productos[opcion-1][1] = existencias - comprados; } else { System.out.println("Lo siento, no tenemos ese producto en existencia"); } espera_tecla(); return total; } /** * Este subprograma muestra en pantalla el total de ventas */ static void mostrar_total_de_ventas(int total) { System.out.println("El total de ventas ha sido de: "+total); espera_tecla(); } /** * Espera una tecla; */ static void espera_tecla() { System.out.println("Presione una tecla para continuar"); /* nextLine espera una cadena, pero para simplemente esperar una tecla hay que hacerlo con dos nextLines */ sc.nextLine(); sc.nextLine(); } }