Proyecto de mi Primer Cuatrimestre

Hola que tal amigos del foro...

Este es mi primer post en el cual pido de su ayuda, ya que no tengo idea por donde comenzar, el proyecto trata de un minisúper a lo cual tengo que optimizar su funciones ya que lo hacen de forma manual.

Tenemos que usar solo las clases de Scanner y de IOException, dentro de ellas usaremos también solo tres funciones que es el ( for, do while y el switch) que son las únicas que hemos visto hasta ahora y por encima. Este es mi problema cargado en una imagen.jpg

Y esto es lo que llevo del código:

import java.util.*;
/**
 *
 * @author Felipe García
 */

public class FinalProyecto{

    public static void main(String[] args) {
        // TODO code application logic here
        //variables definidas
        Scanner entrada = new Scanner (System.in);
        String [] producto = new String [5];
        String [] descripcion = new String [5];
        int [] stock = new int [5];
        double [] precio = new double [5];
        char opcion=' ';
        double dineroUsuario,precioFinal;
        int contador=-1, cont2=0;
       
        do {  
            System.out.println();
            System.out.println("Selecciona una opcion para realizar");
             System.out.println("Selecciona A. Para Manejar los productos, Stock y modificaciones  ");
              System.out.println("Selecciona B. Para Iniciar una venta ");
                System.out.println("Selecciona S. Para Salir ");
            opcion = entrada.next().toUpperCase().charAt(0);
           
             switch (opcion) {
                case 'A':
                   
                   
       
        //Menu para manejo de productos
        do {    
              System.out.println();
            System.out.println("Selecciona una opcion para realizar");
             System.out.println("Selecciona A. Para agregar un producto  ");
              System.out.println("Selecciona B. Para modificar un producto  ");
               System.out.println("Selecciona C. Para eliminar un producto  ");
                System.out.println("Selecciona D. Para consultar todos los productos ");
                System.out.println("Selecciona R. Para Regresar al menu anterior ");
             opcion = entrada.next().toUpperCase().charAt(0);
               contador++;
               System.out.println();
           
            switch (opcion) {
                case 'A':
                   
                    System.out.println("Ingresa el nombre del producto: ");
                    producto[contador]= entrada.next();
                    System.out.println("Ingresa el stock del producto: ");
                    stock[contador]= entrada.nextInt();
                    System.out.println("Ingresa el precio del producto: ");
                    precio[contador]=entrada.nextDouble();
                    System.out.println();
                           System.out.println("Productos registrados");
                            System.out.print(contador);
                   
                    break; // fin case A
                case 'B':
                    System.out.println("Que producto deseas modificar: ");
                    for (int i = 0; i < producto.length ; i++) {
                      cont2++;
                        if (producto[i] != null) {
                           System.out.println(i+".-"+producto[i]);  
                           
                        }
                         }
                        int opcion2 =entrada.nextInt(); //Guardamos la opcion del producto a modificar
                       
                        System.out.println("Que deseas modificar");
                         System.out.println("A. El nombre del producto: ");
                         System.out.println("B. El stock del producto: ");
                         System.out.println("C. El precio del producto: ");
                        opcion = entrada.next().toUpperCase().charAt(0);
                            switch (opcion) {
                             case 'A':
                                 System.out.println("Modificando Registro: "+opcion2);
                                System.out.println("Ingresa el nombre del producto: ");
                                producto[opcion2]= entrada.next();
                                break;
                             case 'B':
                                 System.out.println("Modificando Registro: "+opcion2);
                                System.out.println("Ingresa el stock del producto: ");
                                stock[opcion2]= entrada.nextInt();
                                break;
                             case 'C':
                                 System.out.println("Modificando Registro: "+opcion2);
                                System.out.println("Ingresa el precio del producto: ");
                                precio[opcion2]=entrada.nextDouble();
                                break;
                            }
                                       System.out.println("Productos registrados");
                                        System.out.print(contador);

                     while (producto[contador] == null) {
                       contador--; // resta el valor aumentado al contador por seleccionra esta opcion    
                    }
                   
                    break; // fin case B
                case 'C':
                    //Elmina una entrada de producto
                    System.out.println("Que producto deseas borrar: ");
                    for (int i = 0; i < producto.length ; i++) {
                      cont2++;
                        if (producto[i] != null) {
                           System.out.println(i+".-"+producto[i]);  
                           
                        }
                         }
                        int opcion4 =entrada.nextInt();
                        System.out.println("Eliminando Registro: "+opcion4+"...");
                         
                   // producto[opcion4]= null; test
                  //  stock[opcion4]=0; test
                  //  precio[opcion4]=0; test
                       
                    //Recorre los valores del arreglo
                    for (int i = opcion4; i < producto.length-1; i++) {
                    producto[i]= producto[i+1];
                    stock[i]=stock[i+1];
                    precio[i]=precio[i+1];
                   
                    }
                    System.out.println();
                   
                   
                   
                      while (producto[contador] == null) {
                       contador--; // resta el valor aumentado al contador por seleccionra esta opcion    
                    }
                    break; // fin case C
                    case 'D':
                    System.out.println("Estos son todos los productos actuales: ");
                    for (int i = 0; i < producto.length ; i++) {
                     
                        if (producto[i] != null) {
                           System.out.println(i+".-"+producto[i]);  
                           
                          }
                        }
                    System.out.println("Que producto quieres consultar: ");
                        int opcion3 =entrada.nextInt();
                           System.out.println("Consultando Registro: .- "+opcion3);
                         System.out.print("El nombre del producto: ");
                   System.out.println( producto[opcion3]);
                    System.out.print("El stock del producto: ");
                   System.out.println( stock[opcion3]);
                    System.out.print("El precio del producto: ");
                   System.out.println( precio[opcion3]);
                    System.out.println();
                           
                           
                       
                         
                   
                      while (producto[contador] == null) {
                       contador--; // resta el valor aumentado al contador por seleccionra esta opcion    
                    }
                    break; // fin case D
                case 'R':
                    System.out.println("Regresando... ");
                    break; // fin case S
                default:
                    System.out.println("Ingresa un valor valido ");
                    break;
     
            } //fin switch manejo de datos  
           
        } while (opcion !='R'); //fin while
       
        //Switch principal
        break;
                case 'B': //Inicia parte de venta
                   
                    contador=0;
        do {    
            System.out.println();
            System.out.println("Iniciar venta");
             System.out.println("Selecciona A. Para iniciar una venta  ");
                System.out.println("Selecciona R. Para Regresar al menu anterior ");
             opcion = entrada.next().toUpperCase().charAt(0);
               contador++;
               System.out.println();
           
            switch (opcion) {
                case 'A':
                                     
                       
                     precioFinal=0;
                     do {
                   System.out.println("Estos son todos los productos actuales: ");
                    for (int i = 0; i < producto.length ; i++) {
                     
                        if (producto[i] != null) {
                           System.out.println(i+".-"+producto[i]+" Precio: "+precio[i]+" Pesos, "+" En Stock hay: "+stock[i]+" Piezas");  
                           
                          }
                        }

                    System.out.println("De cuales productos venderas: ");
                        int cantidad, opcion5 =entrada.nextInt();
                   
                    System.out.println("Elegiste: "+producto[opcion5] );
                    System.out.println("cuantas piezas compraras: ");
                    cantidad=entrada.nextInt();
                    if (cantidad <= stock[opcion5]) {
                      stock[opcion5] = stock[opcion5]-cantidad;  
                      System.out.println("Llevas registrado para venta: producto "+producto[opcion5]+" piezas: "+cantidad+"");
                    } else {
                        System.out.println("No hay Stock");
                    }
                    precioFinal=precioFinal+(precio[opcion5]*cantidad);
                        System.out.println("Quieres seleccionar otro producto: S/N");
                        opcion = entrada.next().toUpperCase().charAt(0);
                       
                    } while (opcion != 'N');
                   
                    System.out.println("El precio de la venta fue: "+precioFinal );
                   
                           System.out.println("Dinero recibido: ");
                           dineroUsuario=entrada.nextDouble();
                           double cambio=dineroUsuario-precioFinal;
                           if (dineroUsuario >= precioFinal) {
                        System.out.print("El cambio es: "+cambio);
                    } else {
                               System.out.println("Falta dinero para completar la venta");
                               System.out.println("Faltan"+(dineroUsuario-precioFinal)+" Pesos. Ingresalos para continuar");
                               dineroUsuario=dineroUsuario+entrada.nextDouble();
                    }
                           
             
                    break; // fin case A
                    default:
                    System.out.println("Ingresa un valor valido ");
                    break;
       
            } //fin switch  venta
        } while (opcion !='R'); //fin while venta
       
                    break;
                    case 'S':
                      System.out.println("Saliendo... ");
                    break;
                    default:
                    System.out.println("Ingresa un valor valido ");
                    break;
       
            } //fin switch  principal
           
        } while (opcion !='S'); //fin while principal
       
    }
   
}

Solo que el profesor me pide arregelos algo asi y es donde ya me perdi.

import java.util.*;
import java.io.*;

                public class metodos {
       
                        static  BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

                        int [] IDProducto=new int[20];
                        static String [] NombreProducto=new String [20];
                        static String [] DescripcionProducto=new String [20];
                        static String [] PrecioProducto=new String [20];
                        static String [] Categoria=new String [20];
                        static int contadorProducto=0;
                       
                       
                        public static void main (String[] args) throws IOException{
                       
                       
                                char Opcion=0;
                                char Resp=0;
                               
                                System.out.println("Bienvenidos al Minisuper de Lupita");
                                System.out.println("");
                                do{
                               
                                System.out.println("¿Qué desea hacer?");
                                System.out.println("Altas (A)");
                                System.out.println("Bajas (B)");
                                System.out.println("Consultas (C)");
                                System.out.println("Modificacion (D)");
                                Opcion=buf.readLine().toUpperCase().charAt(0);
                               
                                switch (Opcion){
                                case 'A':
                                        System.out.println("Alta");
                                        break;
                                case 'B':
                                        System.out.println("Bajas");
                                        break;
                                case 'C':
                                        System.out.println("Consultas");
                                        break;
                                case 'D':
                                        System.out.println("Modificaciones");
                                        break;
                                        default:
                                                System.out.println("Asigne una opción válida");
                                }//fin del sitch
                               
                                System.out.println("¿Desea hacer otro movieminto?");
                                Resp=buf.readLine().toUpperCase().charAt(0);
                               
                                }while (Resp !='N');
                               
                                }//fin del main
                               
        public static void altaProducto() throws IOException{
               
                System.out.println("Alta ");
                contadorProducto++;
                System.out.println("El ID del Producto"+contadorProducto);
                System.out.println("Dame el nombre del Producto "+contadorProducto);
                NombreProducto[contadorProducto]=buf.readLine();
                System.out.println("Dame la descripción del producto "+contadorProducto);
                DescripcionProducto[contadorProducto]=buf.readLine();
        }//fin alta producto
       
       
        public static void consultaProducto(){
                System.out.println("Consulta");
                for (int i=0;i<=contadorProducto;i++){
                        System.out.println("El nombre No. "+i+""+NombreProducto[i]);
                }//fin del for
                }//fin de consulta del producto
       
       
                }//fin del programa
               

Que en vez de llevar System.out.println(" "); lleve el arreglo de los ID, no se si me explique, gracias por su ayuda que toda ayuda es bien recibida.

AdjuntoTamaño
WhatsApp-Image-20160705.jpeg183.89 KB

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Jose Manuel

Mmm...

Si no entendi mal solo debes hacer un CRUD ( Create, Read, Update, Delete).

Entonces...

/**
 *
 * @author kalt
 */

public class ControlDeMinisuperJavaMexico {

    /**
     * @param args the command line arguments
     */

    private int[] idProducto = new int[20];
    private String[] nombreProducto = new String[20];
    private double[] precioProducto = new double[20];//Recuerda que el 20 es para reservar espacios en los arreglos.
    private String[] descripcionProducto = new String[20];
    private String[] categoriaProducto = new String[20];

    public static void main(String[] args) {
        //Aqui crear el bucle principal de tu aplicacion. y solo mandas llamar
        //los metodos que necesitas...
        String opcion;
        do {
            opcion = menuPrincipal();
            switch (opcion) {
                case "A":
                    altaProducto();
                    break;
                case "B":
                    bajaProducto(0);
                    break;
                //etc...
                default:
                    System.out.println("Opcion incorrecta, intente de nuevo");
            }
        } while (!opcion.equals("S"));
       

    }

    private static String menuPrincipal() {
        //Aqui todas las opciones del menu principal y dejar
        //que el usuario escoja, retorna un string para switch.
        return "S";
       
        //Puedes hacer metodos de menus secundarios o terciarios =)
    }

    private static void altaProducto() {

        //Aqui la logica para ir agregando datos a los arreglos, en todos los arreglos.
    }

    private static void bajaProducto(int idProducto) {
        //logica, a travez del identificador eliminas el producto, recuerda hacerlo en
        //los demas arreglos.
    }

    private static void modificaProducto(int idProducto) {
        //De nuevo, mediente logica buscas el producto por su id, y
        //luego actualizar la informacion necesaria.
    }

    private static void consultarProductos() {
        //Aqui muestras por pantalla todos los arreglos bien acomodados y bonitos :)
        //segun como te lo pidan, por categoria, por precio, etc...
    }
}

Recuerda que en la imagen se menciona que provedores y clientes no tienen un control adecuado y alguno que otro detalle por ahi.
Suerte, saludos.

Imagen de Felipe Garcia

Muchas gracias

Jose Manuel ya quedo claro el arreglo ahora solo lo incorporo y modifco el codigo, nuevamente gracias.

Tengo otra duda en la parte de la factura estoy haciendo este codigo, pero ya no me sale en la parte del while y switch, se los quito y me corre sin problema, no se usar muy bien estas dos funciones,aqui lo pongo y guien me gracias nuevamente.

También como puedo agregar un contador al producuto y como puedo agergar decimales al precio con su signo de pesos al manejar el DecimalFormat

import java.util.*;
import java.io.*;
import java.text.*;
public class Facturas {

        public static void main(String[] args) throws IOException
        {
                Scanner entrada = new Scanner (System.in);
                        InputStreamReader isr=new InputStreamReader(System.in);
                                BufferedReader br=new BufferedReader(isr);
                                int opcion;
                                int opc = 0;
                                int totalcompra=0;
                                int x=0;
                                int cont=0;
                                String aux;
                                String[] pro= new String[10];
                                int[] can= new int[10];
                                int[] valor=new int[10];
                                int[] ventatotal= new int[10];
       
       
                            System.out.println("Iniciar Factura");
                                System.out.println();
                             System.out.println("Selecciona A. Para iniciar la factura.  ");
                                System.out.println("Selecciona C. Para cancelar la factura. ");
                                        System.out.println("Selecciona R. Para regresar al menu anterior. ");
                             opcion = entrada.next().toUpperCase().charAt(0);
                             do{
                                switch (opc){
                                case 'A':
                                System.out.println("Fecha: ");
                                        String fe=br.readLine();
                                                System.out.println("Nombre: ");
                                                String nom=br.readLine();
                                        System.out.println("Dirección: ");
                                String dir=br.readLine();
                                 System.out.println("Teléfono: ");
                                String tel=br.readLine();

                               
                               
                                        for( x=0; x<pro.length; x++)
                                        {

                                                System.out.println("Producto: ");
                                                        pro[x]=br.readLine();
                                                                switch(pro[x]) { // Eleige la opcion acorde al numero de mes
                                                        case "fin":
                                                                System.out.println("A decidido salir");
                                                                x=10;
                                                                break;

                                                        default:
                                                                cont++;
                                                                System.out.println("Cantidad: ");
                                                                aux=br.readLine();
                                                                can[x] = Integer.parseInt(aux);
                                                                System.out.println("Valor: ");
                                                                aux=br.readLine();
                                                                valor[x] = Integer.parseInt(aux);
                                                                ventatotal[x]=can[x]*valor[x];
                                                                totalcompra=totalcompra+ventatotal[x];
                                                                }//fin del switch
                                                               
                                        }//fin del for
                                                System.out.println("valor total: "+totalcompra);
                break;
               
                                 default:
                                                 System.out.println("Ingresa un valor valido ");
                            break;
                                case 'c':
                     System.out.println("Factura cancelada... ");
                   break;
                                case 'R':
                  System.out.println("Regresando... ");
                                 } while (opc !='C'); //fin while
                                System.out.println("Ingrese un valor valido ");
                             } while (opcion !='R'); //fin while principal
        }
}
       

Imagen de Jose Manuel

@Felipe Garcia Tal vez esto

@Felipe Garcia

Tal vez esto te sirva de guia:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package core;

import java.util.*;
import java.io.*;

public class Factura {

    private static final Scanner entrada = new Scanner(System.in);

    private static final String[] nombreProducto = new String[3];
    private static final int[] cantidadProducto = new int[3];
    private static final int[] valorProducto = new int[3];
    private static final double[] ventaTotal = new double[3];
    private static int indice = -1;
    private static int opcion;
    private static String personaFactura;

    public static void main(String[] args) throws IOException {

        do {
            switch (opcion = mostrarMenuPrincipal(entrada)) {
                case 'A':
                    personaFactura = menuNombreFactura(entrada);
                    for (int i = 0; i < nombreProducto.length; i++) {
                        menuAgregarProductos(entrada, i);
                    }
                    imprimirFactura();
                    break;
                case 'C':
                    System.out.println("Factura cancelada... ");
                    break;
                case 'R':
                    System.out.println("Regresando... ");
                    break;
                default:
                    System.out.println("Ingresa un valor valido ");
            }

        } while (opcion != 'R'); //fin while principal
    }

    private static char mostrarMenuPrincipal(Scanner entrada) {
        System.out.println("Iniciar Factura");
        System.out.println();
        System.out.println("Selecciona A. Para iniciar la factura.  ");
        System.out.println("Selecciona C. Para cancelar la factura. ");
        System.out.println("Selecciona R. Para regresar al menu anterior. \n:");

        return entrada.next().toUpperCase().charAt(0);
    }

    private static String menuNombreFactura(Scanner entrada) {
        System.out.println("DATOS DE FACTURACION.");
        entrada.nextLine();
        System.out.print("Fecha:");
        String fe = entrada.nextLine();
        System.out.print("Nombre: ");
        String nom = entrada.nextLine();
        System.out.print("Dirección: ");
        String dir = entrada.nextLine();
        System.out.print("Teléfono: ");
        String tel = entrada.nextLine();
        System.out.println("");
        return "Fecha:" + fe + " Nombre:" + nom + " Direccion:" + dir + " Telefono:" + tel;
    }

    private static void menuAgregarProductos(Scanner entrada, int i) {
        System.out.println("\nREGISTRO DE PRODUCTOS");

        System.out.print("Nombre del producto:");
        nombreProducto[i] = entrada.nextLine();
        System.out.print("Cantidad:");
        cantidadProducto[i] = entrada.nextInt();
        System.out.print("Valor del producto:");
        valorProducto[i] = entrada.nextInt();
        entrada.nextLine();
    }

    private static void generarFactura() {
        double value = 0;
        for (int i = 0; i < cantidadProducto.length; i++) {
            value += cantidadProducto[i] * valorProducto[i];
        }
        System.out.println("\nVALOR TOTAL DE LA FACTURA:" + value + "\n");
    }

    private static void imprimirFactura() {
        System.out.println("\nDATOS DE LA PERSONA:");
        System.out.println(personaFactura);
        System.out.println("\nIMPRIMIENDO FACTURA DE PRODUCTOS");
        for (int i = 0; i < nombreProducto.length; i++) {
            System.out.println("Indice:" + i + " Producto:" + nombreProducto[i]
                    + " Cantidad:" + cantidadProducto[i] + " Precio:" + valorProducto[i]);
        }
        generarFactura();
    }
}

Esta es la salida:
postimage

Imagen de Felipe Garcia

Gracias nuevamente Jose Manuel

Por la ayuda brindada Jose Manuel muchas gracias, me a servido demasiado tu ayuda mi programa final ya casi lo termie, de echo podría decir que ya lo termine. se ejecutara en un archivo .bat

Ahora tengo otra pregunta ya que solo esta comunidad esta dedicada a Java, pero me pueden resolver unas dudas en html?

Pues bueno mi programa lo quiero incluir a mi pagina web misma del proyecto, en uno de sus apartados ya creé su espacio para ello, pero lo que no eh podido conseguir es que el archivo se ejecute sin permisos desde el bóton abrir, se que por cuestiones de seguirdad todos los navegadores te pediran si los quieres guardar o ejecutar como administrador, pero como es una ejecución local, no se si se podria hacer . Espero me ayuden ya que es referente a html un poco. gracias y buen dia, no me habia podido conectar por lo mismo del proyecto.}

Hasta pronto.

Imagen de Jose Manuel

¿En que estas construyendo tu

¿En que estas construyendo tu sitio web?
Realmente no entiendo tu pregunta, puedes ser mas especifico por favor. Ya que me perdi cuando dices:

Pues bueno mi programa lo quiero incluir a mi pagina web misma del proyecto, en uno de sus apartados ya creé su espacio para ello, pero lo que no eh podido conseguir es que el archivo se ejecute sin permisos desde el bóton abrir, se que por cuestiones de seguirdad todos los navegadores te pediran si los quieres guardar o ejecutar como administrador, pero como es una ejecución local, no se si se podria hacer...

Saludos.

Imagen de Felipe Garcia

Te explico

Mi programa ya quedo finalizado, hice dos archivos .bat para mandarlo llamar desde el boton Abrir en html, pero cuando le doy clic en el boton de la página web lo abre como editor, y no lo ejecuta, a eso me refería. En Edge si lo hace con facilidad por el ActiveX, pero en Chrome y Mozilla no lo ejecuta, solo lo abre como editor.

Y quiero que abra en cualquiera de esos dos navegadores.

Espero ahora si me haya explicado.

Gracias nuevamente.

Imagen de javatlacati

protocolos personalizados

Desafortunadamente, los navegadores se protegen incluso de ataques locales cada vez más eliminando cada vez más la diferencia entre un ambiente para el desarrollador y un ambiente para el usuario.

Lo que yo opino es que podrías registrar un manejador de protocolo personalizado, se pueden a nivel navegador o a nivel ordenador. Yo te sugiero a nivel ordenador.

Adicionalmente para que tu aplicación Java pueda correr desde línea de comandos te recomiendo ponerla en tu variable PATH, (porque eso es lo que realmente hacen los manejadores de protocolo, te ejecutan un comando).

por ejemplo suponiendo que tu protocolo sea factura://datosParaLaAPP y que lo pongas como url de un link y desees que tu programa se ejecute, deberías de hacer lo siguiente:

Windows

[HKEY_CLASSES_ROOT\factura]
@="URL:factura Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\factura\shell]
[HKEY_CLASSES_ROOT\factura\shell\open]
[HKEY_CLASSES_ROOT\factura\shell\open\command]
@="\"java - jar\" \"tuAplicacion.jar\" \"%1\""

Linux

gconftool-2 -t string -s /desktop/gnome/url-handlers/factura/command 'java -jar tuAplicacion.jar "%s"'
gconftool-2 -s /desktop/gnome/url-handlers/factura/needs_terminal false -t bool
gconftool-2 -s /desktop/gnome/url-handlers/factura/enabled true -t bool

Esta es la forma en que trabajan algunas aplicaciones como itunes, utorrent y spotify.

Imagen de Felipe Garcia

No lo intente

Gracias javatlalcati pero decidi mejor usar Microsoft Edge para la ejecución, no quería meterme en royos con el registro de Windows