Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Wilzb56 en 11 Octubre 2020, 08:06 am



Título: Obtener nombre y código - Java/Netbenas
Publicado por: Wilzb56 en 11 Octubre 2020, 08:06 am
Muy buenas, quisiera saber si me podrían ayudar con este código. Lo que busco es obtener el nombre y código del despachador que vendió X cantidades de galones de gasolina.
Lo he intentado hacer pero no encuentro el como, adjunto la codificación por si pueden ayudarme, Muchas gracias.

Pido disculpas si el código es demasiado extenso para ustedes lo hago por si acaso omito algo y lo necesitan para poder ayudarme, es primera vez que recurro a algún foro y no se como van estos.

Código
  1. [  public static void main(String[] args) {
  2.        String tipo;
  3.        double valor;
  4.        Gasolina gasolina = new Gasolina();
  5.        int contador = 0, contador2 = 0, op;
  6.        do {
  7.            tipo = JOptionPane.showInputDialog(null, "Digite el tipo de gasolina");
  8.            valor = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite el valor por galon"));
  9.            gasolina = new Gasolina(tipo, valor);
  10.            gasolina.Guardar(gasolina);
  11.            contador++;
  12.        } while (contador < 2);
  13.        do {
  14.            op = Integer.parseInt(JOptionPane.showInputDialog(null, "1<----- Registrar Despachador"
  15.                    + "\n2<----- Consultar Despachador"
  16.                    + "\n3<----- Consutar Gasolina"
  17.                    + "\n4<----- Vender"
  18.                    + "\n5<---- Salir"));
  19.            switch (op) {
  20.                case 1:
  21.                    GuardarEmpleado();
  22.                    contador2++;
  23.                    break;
  24.                case 2:
  25.                    ConsultarEmpleado();
  26.                    break;
  27.                case 3:
  28.                    ConsultarGasolina();
  29.                    break;
  30.                case 4:
  31.                    if (contador2 == 0) {
  32.                        JOptionPane.showMessageDialog(null, "No hay ningún despachador registrado");
  33.                    } else {
  34.                        Vender();
  35.                    }
  36.                    break;
  37.            }
  38.        } while (op != 5);
  39.        Consulta();
  40.    }
  41.    private static void GuardarEmpleado() {
  42.        Despachador despachador;
  43.        String codigo, nombre;
  44.        int seguir;
  45.        do {
  46.            codigo = JOptionPane.showInputDialog(null, "Digite el codigo del despachador");
  47.            nombre = (JOptionPane.showInputDialog(null, "Digite el nombre del despachador"));
  48.            despachador = new Despachador(codigo, nombre);
  49.            despachador.Guardar(despachador);
  50.            seguir = Integer.parseInt(JOptionPane.showInputDialog(null, "1<---- Registrar otro despachador\n2<----- Dejar de registrar"));
  51.  
  52.        } while (seguir != 2);
  53.    }
  54.    private static void ConsultarEmpleado() {
  55.        Despachador despachador = new Despachador();
  56.        if (despachador.Consultar() != null) {
  57.            for (Despachador item : despachador.Consultar()) {
  58.                JOptionPane.showMessageDialog(null, "Codigo: " + item.getCodigo() + "\nNombre: " + item.getNombre());
  59.            }
  60.        } else {
  61.            JOptionPane.showMessageDialog(null, "No hay ningún despachador registrados");
  62.        }
  63.    }
  64.    private static void ConsultarGasolina() {
  65.        Gasolina gasolina = new Gasolina();
  66.  
  67.        for (Gasolina item : gasolina.Consultar()) {
  68.            if (item != null) {
  69.                JOptionPane.showMessageDialog(null, "" + "Tipo: " + item.getTipo() + "\nValor: " + item.getValor());
  70.            } else {
  71.                JOptionPane.showMessageDialog(null, "No hay gasolina registrada");
  72.            }
  73.        }
  74.    }
  75.    private static void Vender() {
  76.        Despachador despachador = new Despachador();
  77.        String codigo, t = "";
  78.        int tipo, esta = 0;
  79.        double galones, total, precio = 0;
  80.        Gasolina gasolina = new Gasolina();
  81.        do {
  82.            codigo = JOptionPane.showInputDialog(null, "Digite el codigo del despachador");
  83.            for (Despachador item : despachador.Consultar()) {
  84.                if (item.getCodigo().equals(codigo)) {
  85.                    esta = 1;
  86.                }
  87.            }
  88.            if (esta == 0) {
  89.                JOptionPane.showMessageDialog(null, " El deespachador no se encuentra registrado ");
  90.                GuardarEmpleado();
  91.            }
  92.        } while (esta == 0);
  93.        do {
  94.            tipo = Integer.parseInt(JOptionPane.showInputDialog(null, "1<---- Extra\n2<----- Corriente\nseleccione el tipo de gasolina"));
  95.        } while (!(tipo == 1 || tipo == 2));
  96.        if (tipo == 1) {
  97.            t = "Extra";
  98.        } else if (tipo == 2) {
  99.            t = "Corriente";
  100.        }
  101.        for (Gasolina item : gasolina.Consultar()) {
  102.            if (item.getTipo().equals(t)) {
  103.                precio = item.getValor();
  104.            }
  105.        }
  106.        JOptionPane.showMessageDialog(null, "Dato del precio: " + precio, "PRECIOS",JOptionPane.INFORMATION_MESSAGE);
  107.        galones = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite la cantidad de galones"));
  108.        total = galones * precio;
  109.        Venta venta = new Venta(codigo, galones, t, total);
  110.        venta.Guardar(venta);
  111.        JOptionPane.showMessageDialog(null, " El total a pagar es: " + total);
  112.    }
  113.    private static void Consulta() {
  114.        double total = 0, galones = 0;
  115.        Venta venta = new Venta();
  116.        for (Venta item : venta.Consultar()) {
  117.            total += item.getTotal();
  118.            if ("Extra".equals(item.getTipo_gasolina())) {
  119.                galones += item.getGalones();
  120.            }
  121.        }
  122.    JOptionPane.showMessageDialog(null, "Cantidad de galones vendidos de gasolina tipo Extra " + galones + "\nTotal en dinero generado en la jornada " + total, "REGISTRO DE VENTAS", JOptionPane.INFORMATION_MESSAGE);
  123.    }
  124. }


Título: Re: Obtener nombre y código - Java/Netbenas
Publicado por: K-YreX en 14 Octubre 2020, 01:35 am
Este código está bastante revuelto. Algunas de las cosas que veo a primera vista son:
  • Instancias de objetos que no se utilizan nunca. Creas objetos usando el constructor sin parámetros para luego llamar a otro constructor con parámetros.
  • Cada vez que llamas a ciertos métodos creas nuevas instancias de algunas clases cuando parece que esas instancias ya tendrían que existir.
  • Llamas a métodos de una clase pasando como parámetro el mismo objeto que llama al método. Esto es innecesario.

Deberías reorganizar tu código antes de seguir pues cada vez será más complicado corregirlo.

Pero yendo al grano, tienes que tener un sitio donde guardes todas las ventas. Pues lo que tienes que hacer es:
Código:
PARA CADA empleado DE empleadosTotales HACER
  cantidadVendida := 0
  PARA CADA venta DE ventasTotales HACER
    SI venta.codigoEmpleado == empleado.codigo ENTONCES
      cantidadVendida += venta.cantidad
    FIN SI
  FIN PARA
  SI cantidadVendida == cantidadBuscada ENTONCES
    // Aqui haces lo que quieras con ese empleado
  FIN SI
FIN PARA

El código se puede optimizar haciendo que deje de acumular si ya nos hemos pasado de la cantidad a buscar y cosas similares pero esta es la versión más simple y más fácil de entender.
Lo anterior es pseudocódigo, es decir, los pasos que tienes que seguir para lo que quieres hacer. Ahora tienes que implementar esa idea en lenguaje Java.