Obtener nombre y código - Java/Netbenas

Iniciado por Wilzb56, 11 Octubre 2020, 08:06 AM

0 Miembros y 1 Visitante están viendo este tema.

Wilzb56

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 (java) [Seleccionar]
[  public static void main(String[] args) {
       String tipo;
       double valor;
       Gasolina gasolina = new Gasolina();
       int contador = 0, contador2 = 0, op;
       do {
           tipo = JOptionPane.showInputDialog(null, "Digite el tipo de gasolina");
           valor = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite el valor por galon"));
           gasolina = new Gasolina(tipo, valor);
           gasolina.Guardar(gasolina);
           contador++;
       } while (contador < 2);
       do {
           op = Integer.parseInt(JOptionPane.showInputDialog(null, "1<----- Registrar Despachador"
                   + "\n2<----- Consultar Despachador"
                   + "\n3<----- Consutar Gasolina"
                   + "\n4<----- Vender"
                   + "\n5<---- Salir"));
           switch (op) {
               case 1:
                   GuardarEmpleado();
                   contador2++;
                   break;
               case 2:
                   ConsultarEmpleado();
                   break;
               case 3:
                   ConsultarGasolina();
                   break;
               case 4:
                   if (contador2 == 0) {
                       JOptionPane.showMessageDialog(null, "No hay ningún despachador registrado");
                   } else {
                       Vender();
                   }
                   break;
           }
       } while (op != 5);
       Consulta();
   }
   private static void GuardarEmpleado() {
       Despachador despachador;
       String codigo, nombre;
       int seguir;
       do {
           codigo = JOptionPane.showInputDialog(null, "Digite el codigo del despachador");
           nombre = (JOptionPane.showInputDialog(null, "Digite el nombre del despachador"));
           despachador = new Despachador(codigo, nombre);
           despachador.Guardar(despachador);
           seguir = Integer.parseInt(JOptionPane.showInputDialog(null, "1<---- Registrar otro despachador\n2<----- Dejar de registrar"));

       } while (seguir != 2);
   }
   private static void ConsultarEmpleado() {
       Despachador despachador = new Despachador();
       if (despachador.Consultar() != null) {
           for (Despachador item : despachador.Consultar()) {
               JOptionPane.showMessageDialog(null, "Codigo: " + item.getCodigo() + "\nNombre: " + item.getNombre());
           }
       } else {
           JOptionPane.showMessageDialog(null, "No hay ningún despachador registrados");
       }
   }
   private static void ConsultarGasolina() {
       Gasolina gasolina = new Gasolina();

       for (Gasolina item : gasolina.Consultar()) {
           if (item != null) {
               JOptionPane.showMessageDialog(null, "" + "Tipo: " + item.getTipo() + "\nValor: " + item.getValor());
           } else {
               JOptionPane.showMessageDialog(null, "No hay gasolina registrada");
           }
       }
   }
   private static void Vender() {
       Despachador despachador = new Despachador();
       String codigo, t = "";
       int tipo, esta = 0;
       double galones, total, precio = 0;
       Gasolina gasolina = new Gasolina();
       do {
           codigo = JOptionPane.showInputDialog(null, "Digite el codigo del despachador");
           for (Despachador item : despachador.Consultar()) {
               if (item.getCodigo().equals(codigo)) {
                   esta = 1;
               }
           }
           if (esta == 0) {
               JOptionPane.showMessageDialog(null, " El deespachador no se encuentra registrado ");
               GuardarEmpleado();
           }
       } while (esta == 0);
       do {
           tipo = Integer.parseInt(JOptionPane.showInputDialog(null, "1<---- Extra\n2<----- Corriente\nseleccione el tipo de gasolina"));
       } while (!(tipo == 1 || tipo == 2));
       if (tipo == 1) {
           t = "Extra";
       } else if (tipo == 2) {
           t = "Corriente";
       }
       for (Gasolina item : gasolina.Consultar()) {
           if (item.getTipo().equals(t)) {
               precio = item.getValor();
           }
       }
       JOptionPane.showMessageDialog(null, "Dato del precio: " + precio, "PRECIOS",JOptionPane.INFORMATION_MESSAGE);
       galones = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite la cantidad de galones"));
       total = galones * precio;
       Venta venta = new Venta(codigo, galones, t, total);
       venta.Guardar(venta);
       JOptionPane.showMessageDialog(null, " El total a pagar es: " + total);
   }
   private static void Consulta() {
       double total = 0, galones = 0;
       Venta venta = new Venta();
       for (Venta item : venta.Consultar()) {
           total += item.getTotal();
           if ("Extra".equals(item.getTipo_gasolina())) {
               galones += item.getGalones();
           }
       }
   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);
   }
}

K-YreX

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:

    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.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;