Por el momento cuento con un menú con 3 opciones Agregar Productos, Mostrar Listado, Salir.
La Clase Principal es Grocery, aquí aparece el menú principal de acceso a las opciones del Sistema.
package avance;
import java.util.Scanner;
public class Grocery{
public static void main(String[]args) //funcion main
{
Scanner lectura = new Scanner(System.in); //declaracion del scanner para poder leer los datos ingresados por el teclado
Product Nombre = new Product(); //creamos un objeto para enlazar la clase Grocery con Product
Inventory imprimir = new Inventory(); //creamos un objeto para enlazar la clase Grocery con Inventory
int op=0; //esta variable controla la opcion del programa a la que queremos acceder
System.out.println ("Almacen Cuellar");
System.out.println ("=================================");
do
{
System.out.println ("Elije una Opcion:...");
System.out.println ("[1]Para Ingresar Productos-> "); //menu de opciones
System.out.println ("[2]Para Mostrar Inventario -> ");
System.out.println ("[3]Para Finalizar");
do
{
op = lectura.nextInt();
}
while(op!=1&&op!=2&&op!=3);
switch(op)
{
case 1: Nombre.ingproducto();
break;
case 2: imprimir.printlist(Nombre);
break;
case 3: System.out.println ("Fin Del Programa");
break;
}
}
while(op!=3);
}
}
Después está la Clase Product que es la encargada de recibir los datos para la generación del inventario de productos que se venden en el negocio.
package avance;
import java.util.Scanner;
import java.util.*;
import java.lang.*;
public class Product{
public String Nombre;
private int ID,Cantidad; //nombramos los atributos para agregar los productos
private float Precio;
List list = new ArrayList(); //generamos listas de los datos que queremos almacenar
List listid = new ArrayList(); //en el inventario
List listcant = new ArrayList();
List listprice = new ArrayList();
protected void ingproducto() //metodo donde accedemos para ingresar productos
{
Integer ID = new Integer(0); //creamos un objeto para guardar los datos de tipo entero
Float Precio = new Float(0); //creamos un objeto para guardar los datos de tipo flotante
Scanner lectura = new Scanner(System.in);
System.out.println ("Ingreso De Datos Del Producto");
System.out.println ("============================="); //menu de opciones para dar de alta un producto
System.out.println ("Ingrese el Nombre del Producto-> ");
Nombre = lectura.nextLine(); //guardar el nombre
list.add(Nombre); //agregarlo a la lista
System.out.println ("Ingrese el ID del Producto-> ");
ID = lectura.nextInt(); //guardar el ID
listid.add(ID); //agregarlo a la lista
System.out.println ("Ingrese la Cantidad de Productos Disponibles-> ");
Cantidad = lectura.nextInt(); //guardar la cantidad
listcant.add(Cantidad); //agregarlo a la lista
System.out.println ("Ingrese el Precio Producto-> ");
Precio = lectura.nextFloat(); //guardar el precio
listprice.add(Precio); //agregarlo a la lista
}
}
Y por último está la clase Inventory, encargada de generar y guardar las listas de productos agregados desde la opción agregar y tiene un acceso desde el menú principal para acceder al inventario que se ha generado hasta el momento.
package avance;
import java.util.*;
public class Inventory{
static void printlist(Product imprimir){ //metodo estatico para obtener los valores ingresados en producto
//e imprimirlos, tambien es el metodo para acceder al listado del inventario generado
System.out.println("Lista de Inventario\n");
Iterator iter = imprimir.list.iterator(); //recorrer la lista de nombres de productos guardados e imprimirlos
while (iter.hasNext())
System.out.println("Nombre: "+iter.next());
Iterator itera = imprimir.listid.iterator();
while (itera.hasNext()) //recorrer la lista de ID's guardados e imprimirlos
System.out.println("ID: "+itera.next());
Iterator iterac = imprimir.listcant.iterator();
while (iterac.hasNext()) //recorrer la lista de cantidades de productos guardados e imprimirlos
System.out.println("Cantidad Disponible: "+iterac.next());
Iterator iteraci = imprimir.listprice.iterator(); //recorrer la lista de precios de productos guardados e imprimirlos
while (iteraci.hasNext())
System.out.println("Precio Unitario: "+iteraci.next());
}
} Finalmente aquí adjunto unas capturas de pantalla con la compilación y ejecución del programa.



Hola, ya vi tu código creo que cantidad podría ser float, por que por ejemplo si vendes líquidos de limpieza estarán en litros y no se vende 1 lto, 2, etc si no 1/2 litro, entonces ese lo podrías poner float y además veo que menú(en tu diagrama) lo pusiste como una función que como ves no tiene un bueno nombre de función más bien suena a que debe ser clase, entonces yo te recomendaría que lo cambies,saludos
ResponderEliminarMira, por ejemplo yo veo que pudieras hacer dos clases, una que sea como dice Cecy, para productos que utilicen litros, y para otros en kilos, de manera similar a lo que yo divido en comidas y bebidas de mi proyecto, claro que no se de que se trata tus productos, pero estaria bien para complementarlo.
ResponderEliminarHola Cecy, muy buena tu observación creo si seria conveniente poner cantidad como un flotante de presentarse un caso de productos líquidos; y sip, ahora que va agarrando forma el programa, el método "menu" está de más ya que no es un método en si; lo único relevante de la clase Grocery es la función main; modificaré eso para la siguiente entrada de patrones de diseño ;) Gracias por comentar.
ResponderEliminarSaludos
Que tal Roberto, pues la idea de esto es algo como generalizar los productos, ya que el sistema no está orientado a un tipo de negocio en particular, mi tía tiene una tienda y maneja un buen surtido de productos, y es en lo que me estoy basando, en lo personal preferiría mantenerlo así general y ya después si se diera el caso de algo concreto orientarlo a algún tipo de negocio en particular. Gracias por comentar n_n
ResponderEliminarSaludos
8 por la entrada, 2 extra al autor, extras a Roberto y Cecy.
ResponderEliminar