Ayuda con java

Iniciado por ArhennJosey, 15 Abril 2013, 00:26 AM

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

ArhennJosey

Bunas tardes, necesito hacer un programa en java, con jdeveloper, estas son las especificaciones,
1. El usuario escribe el nombre del proveedor.
2. Selecciona el producto
3. Escribe la cantidad del producto.
4. Escribe el precio unitario.
5. Subtotal = Cantidad * PrecioUnitario
6. Se hace un descuento si el total de productos esta entre 5-10 del 2%, 11-15 del 4,5% y de   16 en adelante del 6%, todo sobre el subtotal.
El IVA equivale al 16% del subtotal - Decuento.
TOTAL = SUBTOTAL - DESCUENTOS + IVA.
Nota: Solo está activo el botón adicionar

he ehcho este código pero no he avanzado mas, hasta ahora llevo 2 meses aprendiendo ava y me esta dando duro:
CODIGO COMPRAS

package supercompras.modelo;

public class Compras {
    /**
     * @attribute
     */
    private int Cantidad;

    /**
     * @attribute
     */
    private double Subtotal;

    /**
     * @attribute
     */
    private double DescuentoPor;

    /**
     * @attribute
     */
    private double DescuentoDin;

    /**
     * @attribute
     */
    final public static double Iva=16/100;

    /**
     * @attribute
     */
    private int Total;
   
   
   

    public Compras() {
        Cantidad = 0;
       
       
       
    }

    public int getCantidad() {
        return Cantidad;
    }

    public double getDescuentoPor() {
        return DescuentoPor;
    }

    public double getDescuentoDin() {
        return DescuentoDin;
    }

    public double getIva() {
        return Iva;
    }

    public double getSubtotal() {
        return Subtotal;
    }

    public int getTotal() {
        return Total;
    }

    public void calcularDescuentoPor() {
       
    }

    public void calcularDescuentoDin(double Iva) {
        DescuentoPor = (double)(Total*Compras.Iva);
    }

    public void calcularIva() {
    }

    public void calcularSubtotal() {
        Subtotal = (int)(Cantidad*Producto.PrecioProd);
    }

    public void calcularTotal() {
        Total = (int)(Subtotal+DescuentoDin+Iva);
    }
   
   
}



CODIGO PRODUCTO
package supercompras.modelo;

public class Producto {
    /**
     * @attribute
     */
    private int CodigoProd;

    /**
     * @attribute
     */
    private String DescripcionProd;

    /**
     * @attribute
     */
    private int PrecioProd;

    /**
     * @attribute
     */
    private int StockProd;

    public Producto() {
        CodigoProd = 0;
        PrecioProd = 0;
        StockProd = 0;
    }

    public int getStockProd() {
        return StockProd;   
    }

    public int getCodigoProd() {
        return CodigoProd;
    }

    public String getDescripcionProd() {
        return DescripcionProd;
    }

    public int getPrecioProd() {
        return PrecioProd;
    }
}


CODIGO PROVEEDOR
package supercompras.modelo;

public class Proveedor {
    /**
     * @attribute
     */
    private int NitProv;

    /**
     * @attribute
     */
    private String DescripcionProv;

    public Proveedor() {
        NitProv= 0;
    }

    public String getDescripcionProv() {
        return DescripcionProv;
    }

    public int getNitProv() {
        return NitProv;
    }
}

quien me puede ayudar.

Mitgus

#1
Hola. No soy bueno explicando, de todos modos he comentado bien el código y creo que es bien comprensible  ;D

Solamente arréglale los cálculos sel subtotal, IVA, etc si están mal, que ahí estoy perdido y siempre me sale negativo  :xD

El procedimiento es muy sencillo:

Primero seleccionamos el producto del menú (no vale de nada ya que no dijiste que pre-establezcamos un precio unitario por cada producto, así sería más sencillo). Luego colocamos la cantidad de productos a comprar y luego el precio por unidad.

Al pulsar sobre "calcular", primero se extrae los Strings de textoCantidadProductos y textoPrecioUnitario, luego se convierten a double.
Luego, el if-else anidado le asigna a la variable "descuento" el descuento respectivo de acuerdo a la cantidad adquirida.

Luego ya simplemente se hacen los cálculos (que creo están mal, revísalos) para calcular el subtotal, el IVA, etc. Y por último se muestra la cantidad a pagar por medio de un cuadro de diálogo.


Una imagen de cómo queda(soy pésimo manejando layouts, estoy en eso perdona  ;D)


Código (=java) [Seleccionar]

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.SwingConstants;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;

import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Productos extends JFrame
{
 private JLabel texto1,texto2,texto3; // textos de las etiquetas
 private JTextField textoCantidadProducto, textoPrecioUnitario;
 private JComboBox menuProductos;
 private JButton calcular;
 private String productos[] = {"Laptops","Mochilas","Apple's","TV's","Equipos"};
 
  private double total=0; // total a pagar
  private double precioUnitario=0; // precio unitario de un producto
  private double cantidad=0; // cantidad de productos
  private double subTotal = 0;
  private double descuento= 0;
  private double totalNeto = 0; // neto a pagar (sin descuentos)
  private double impuesto = 0; // descuento

  private static final double IVA = 0.16; // tasa de impuesto del IVA

 public Productos()
  {
   super("Calculadora de precios");
   setLayout(new FlowLayout() );

   texto1 = new JLabel("Seleccione el producto");
   add(texto1);

   // menu JComboBox para representar la lista de productos
   menuProductos = new JComboBox(productos);
   menuProductos.setMaximumRowCount(3);
   add(new JScrollPane(menuProductos) );

   texto2 = new JLabel("Cantidad");
   add(texto2);

   // JTextfield en donde se ingresa la cantidad de productos
   textoCantidadProducto = new JTextField("",10);
   add(textoCantidadProducto);

   texto3 = new JLabel("Precio por unidad");
   add(texto3);

   // JTextField en donde se ingresa el precio unitario del producto
   textoPrecioUnitario = new JTextField("",10);
   add(textoPrecioUnitario);

   calcular = new JButton("Calcular");
   add(calcular);
   calcular.addActionListener(new ActionListener()
    {
     
     
     
     public void actionPerformed(ActionEvent evento)
      {
       String textoMenu,textoCampoProductos,textoCampoPrecioU; // variables que guardan Strings de los JTextFields
       if(evento.getSource()== calcular)
        {
          textoMenu = (String)menuProductos.getSelectedItem();
          textoCampoProductos = textoCantidadProducto.getText(); // extrae el String del campo textoCantidadProductos
          cantidad = Double.parseDouble(textoCampoProductos); // convierte el String a double
          textoCampoPrecioU = textoPrecioUnitario.getText(); // extrae el String del JTextField textoPrecioUnitario
          precioUnitario = Double.parseDouble(textoCampoPrecioU); // convierte el String a double

          // depende de la cantidad de productos se obtiene un descuento
          if(cantidad>=0 && cantidad<=4){
            descuento = 0; }

          else if(cantidad>=5 && cantidad<=10){
          descuento = 0.2; }

          else if(cantidad>=11 && cantidad<=15){
          descuento = 0.45; }

          else descuento = 0.6;
         
       
       
          // calcula el total a pagar
          totalNeto = precioUnitario * cantidad;
          descuento = totalNeto * descuento;
          subTotal = totalNeto-descuento;
          impuesto = (subTotal - descuento) * IVA;
         
          total = subTotal - descuento + impuesto;
         
         
       }
         
        // muestra el total a pagar
       JOptionPane.showMessageDialog(Productos.this,"El total a pagar es "+total);
       }

         
   }); // fin clase anonima
   
 } // fin constructor
 
 
} // fin






Saludos y bendiciones.
Linux User #560388

ArhennJosey

Gracias Caballero, segui trabajando y hasta el momento tengo esto, quisiera saber que debo arreglarle?

CODIGO COMPRAS

package supercompras.modelo;

public class Compras {
    /**
     * @attribute
     */
    private int Cantidad;

    /**
     * @attribute
     */
    private double Subtotal;

    /**
     * @attribute
     */
    private double DescuentoPor;

    /**
     * @attribute
     */
    private double DescuentoDin;

    /**
     * @attribute
     */
    final public static double Iva=16/100;

    /**
     * @attribute
     */
    private int Total;
   
     

    public Compras() {
        Cantidad = 0;
        DescuentoDin = 0;
        Subtotal = 0;
        Total = 0;       
    }
   
    public void asignarCompras(int Cantidad, int DescuentoDin, int Subtotal, int Total){
        Cantidad = 0;
        DescuentoDin = 0;
        Subtotal = 0;
        Total = 0;
    }

    public int getCantidad() {
        return Cantidad;
    }

    public double getDescuentoPor() {
        return DescuentoPor;
    }

    public double getDescuentoDin() {
        return DescuentoDin;
    }

    public double getIva() {
        return Iva;
    }

    public double getSubtotal() {
        return Subtotal;
    }

    public int getTotal() {
        return Total;
    }

    public void calcularDescuentoPor() {
                   
        if (Cantidad>=6 && Cantidad<=10)
            DescuentoPor= (int)(0.02);
        if (Cantidad>=11 && Cantidad<=15)
            DescuentoPor= (int)(0.045);
        if (Cantidad>=16)
            DescuentoPor= (int)(0.06);
        else
            DescuentoPor= (int)(0.0);
           
   }

    public void calcularDescuentoDin(double Iva) {
        if (Cantidad>=6 && Cantidad<=10)
            DescuentoDin= (int)(Subtotal*0.02);
        if (Cantidad>=11 && Cantidad<=15)
            DescuentoDin= (int)(Subtotal*0.045);
        if (Cantidad>=16)
            DescuentoDin= (int)(Subtotal*0.06);
        else
            DescuentoDin= (int)(0.0);
    }

    public void calcularIva() {
    }

    public void calcularSubtotal() {
       
    }

    public void calcularTotal() {
        Total = (int)(Subtotal+DescuentoDin+Iva);
    }
   
   
}




CODIGO PRODUCTO

package supercompras.modelo;

public class Producto {
    /**
     * @attribute
     */
    private int CodigoProd;

    /**
     * @attribute
     */
    private String DescripcionProd;

    /**
     * @attribute
     */
    private int PrecioProd;

    /**
     * @attribute
     */
    private int StockProd;

    public Producto() {
        CodigoProd = 0;
        PrecioProd = 0;
        StockProd = 0;
    }

    public int getStockProd() {
        return StockProd;   
    }

    public int getCodigoProd() {
        return CodigoProd;
    }

    public String getDescripcionProd() {
        return DescripcionProd;
    }

    public int getPrecioProd() {
        return PrecioProd;
    }
}



CODIGO PROVEEDOR

package supercompras.modelo;

public class Proveedor {
    /**
     * @attribute
     */
    private int NitProv;

    /**
     * @attribute
     */
    private String DescripcionProv;

    public Proveedor() {
        NitProv= 0;
    }

    public String getDescripcionProv() {
        return DescripcionProv;
    }

    public int getNitProv() {
        return NitProv;
    }
}



FRAME1

package supercompras.modelo;

import java.awt.Color;
import java.awt.Dimension;

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Rectangle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.text.DecimalFormat;
import java.text.NumberFormat;

import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
//import javax.swing.Swing.JOptioPane;
//import javax.text.DecimalFormat;
//import javax.text.NubmerFormat;

public class Frame1 extends JFrame {
    private Compras compras[] = new Compras[5];
    private Producto producto = new Producto();
    private Proveedor proveedor = new Proveedor();
    private JLabel jLabel1 = new JLabel();
    private JLabel jLabel2 = new JLabel();
    private JTextField jTextField1 = new JTextField();
    private JLabel jLabel3 = new JLabel();
    private JLabel jLabel4 = new JLabel();
    private JLabel jLabel5 = new JLabel();
    private JLabel jLabel6 = new JLabel();
    private JLabel jLabel7 = new JLabel();
    private JTextField jTextField2 = new JTextField();
    private JTextField jTextField3 = new JTextField();
    private JTextField jTextField4 = new JTextField();
    private JComboBox jComboBox1 = new JComboBox();
    private JLabel jLabel8 = new JLabel();
    private JLabel jLabel9 = new JLabel();
    private JLabel jLabel10 = new JLabel();
    private JLabel jLabel11 = new JLabel();
    private JLabel jLabel12 = new JLabel();
    private JTextField jTextField5 = new JTextField();
    private JTextField jTextField6 = new JTextField();
    private JTextField jTextField7 = new JTextField();
    private JTextField jTextField8 = new JTextField();
    private JTextField jTextField9 = new JTextField();
    private JButton jButton1 = new JButton();
    private JButton jButton2 = new JButton();
    private JButton jButton3 = new JButton();
    private JButton jButton4 = new JButton();
    private JButton jButton5 = new JButton();
    private JButton jButton6 = new JButton();
    private JButton jButton7 = new JButton();
    private JButton jButton8 = new JButton();
    private JButton jButton9 = new JButton();

    public Frame1() {
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void jbInit() throws Exception {
        this.getContentPane().setLayout( null );
        this.setSize(new Dimension(550, 567));
        this.setForeground(new Color(247, 255, 214));
        this.setBackground(new Color(0, 132, 198));
        jLabel1.setBounds(new Rectangle(200, 10, 245, 30));
        jLabel1.setText("PROGRAMA DE COMPRAS");
        jLabel1.setFont(new Font("Tahoma", 1, 17));
        jLabel2.setText("Proveedor");
        jLabel2.setBounds(new Rectangle(45, 60, 75, 20));
        jLabel2.setFont(new Font("Tahoma", 1, 13));
        jTextField1.setBounds(new Rectangle(130, 60, 150, 25));
        jLabel3.setText("Producto");
        jLabel3.setBounds(new Rectangle(10, 100, 80, 30));
        jLabel3.setFont(new Font("Tahoma", 1, 13));
        jLabel3.setBackground(Color.cyan);
        jLabel3.setBorder(BorderFactory.createLineBorder(Color.black, 1));
        jLabel3.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel3.setHorizontalTextPosition(SwingConstants.CENTER);
        jLabel4.setText("Producto");
        jLabel4.setBounds(new Rectangle(65, 145, 70, 15));
        jLabel4.setFont(new Font("Tahoma", 1, 13));
        jLabel5.setText("Cantidad");
        jLabel5.setBounds(new Rectangle(220, 145, 85, 15));
        jLabel5.setFont(new Font("Tahoma", 1, 13));
        jLabel6.setText("Precio U.");
        jLabel6.setBounds(new Rectangle(335, 145, 80, 15));
        jLabel6.setFont(new Font("Tahoma", 1, 13));
        jLabel7.setText("Subtotal");
        jLabel7.setBounds(new Rectangle(440, 145, 70, 15));
        jLabel7.setFont(new Font("Tahoma", 1, 13));
        jTextField2.setBounds(new Rectangle(210, 175, 105, 25));
        jTextField3.setBounds(new Rectangle(325, 175, 90, 25));
        jTextField4.setBounds(new Rectangle(425, 175, 95, 25));
        jComboBox1.setBounds(new Rectangle(55, 175, 135, 25));
        jComboBox1.setLightWeightPopupEnabled(false);
        jLabel8.setText("Subtotal");
        jLabel8.setBounds(new Rectangle(315, 225, 65, 20));
        jLabel8.setFont(new Font("Tahoma", 1, 13));
        jLabel8.setSize(new Dimension(100, 15));
        jLabel9.setText("Descuento %");
        jLabel9.setBounds(new Rectangle(315, 265, 110, 15));
        jLabel9.setFont(new Font("Tahoma", 1, 13));
        jLabel9.setSize(new Dimension(100, 15));
        jLabel10.setText("Descuento $");
        jLabel10.setBounds(new Rectangle(315, 300, 85, 15));
        jLabel10.setFont(new Font("Tahoma", 1, 13));
        jLabel10.setSize(new Dimension(100, 15));
        jLabel11.setText("IVA");
        jLabel11.setBounds(new Rectangle(315, 335, 80, 15));
        jLabel11.setFont(new Font("Tahoma", 1, 13));
        jLabel11.setSize(new Dimension(100, 15));
        jLabel12.setText("TOTAL");
        jLabel12.setBounds(new Rectangle(315, 370, 85, 15));
        jLabel12.setFont(new Font("Tahoma", 1, 13));
        jLabel12.setSize(new Dimension(100, 15));
        jTextField5.setBounds(new Rectangle(430, 220, 90, 20));
        jTextField6.setBounds(new Rectangle(430, 260, 90, 20));
        jTextField7.setBounds(new Rectangle(430, 295, 90, 20));
        jTextField8.setBounds(new Rectangle(430, 330, 90, 20));
        jTextField9.setBounds(new Rectangle(430, 365, 90, 20));
        jButton1.setText("Adicionar");
        jButton1.setBounds(new Rectangle(10, 410, 90, 28));
        jButton1.setSize(new Dimension(90, 28));
        jButton1.setBackground(new Color(0, 132, 198));
        jButton1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    jButton1_actionPerformed(e);
                }
            });
        jButton2.setText("Buscar");
        jButton2.setBounds(new Rectangle(115, 410, 90, 28));
        jButton2.setSize(new Dimension(90, 28));
        jButton2.setBackground(new Color(0, 132, 198));
        jButton3.setText("Borrar");
        jButton3.setBounds(new Rectangle(210, 410, 90, 28));
        jButton3.setSize(new Dimension(90, 28));
        jButton3.setBackground(new Color(0, 132, 198));
        jButton4.setText("Modificar");
        jButton4.setBounds(new Rectangle(305, 410, 90, 28));
        jButton4.setSize(new Dimension(90, 28));
        jButton4.setBackground(new Color(0, 132, 198));
        jButton5.setText("Primero");
        jButton5.setBounds(new Rectangle(10, 455, 90, 28));
        jButton5.setSize(new Dimension(90, 28));
        jButton5.setBackground(new Color(0, 132, 198));
        jButton6.setText("Anterior");
        jButton6.setBounds(new Rectangle(115, 455, 90, 28));
        jButton6.setSize(new Dimension(90, 28));
        jButton6.setBackground(new Color(0, 132, 198));
        jButton7.setText("Siguiente");
        jButton7.setBounds(new Rectangle(210, 455, 90, 28));
        jButton7.setSize(new Dimension(90, 28));
        jButton7.setBackground(new Color(0, 132, 198));
        jButton8.setText("Ultimo");
        jButton8.setBounds(new Rectangle(305, 455, 90, 28));
        jButton8.setSize(new Dimension(90, 28));
        jButton8.setBackground(new Color(0, 132, 198));
        jButton9.setText("Salir");
        jButton9.setBounds(new Rectangle(425, 455, 90, 28));
        jButton9.setSize(new Dimension(90, 28));
        jButton9.setBackground(new Color(0, 132, 198));
        jButton9.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    jButton9_actionPerformed(e);
                }
            });
        this.getContentPane().add(jButton9, null);
        this.getContentPane().add(jButton8, null);
        this.getContentPane().add(jButton7, null);
        this.getContentPane().add(jButton6, null);
        this.getContentPane().add(jButton5, null);
        this.getContentPane().add(jButton4, null);
        this.getContentPane().add(jButton3, null);
        this.getContentPane().add(jButton2, null);
        this.getContentPane().add(jButton1, null);
        this.getContentPane().add(jTextField9, null);
        this.getContentPane().add(jTextField8, null);
        this.getContentPane().add(jTextField7, null);
        this.getContentPane().add(jTextField6, null);
        this.getContentPane().add(jTextField5, null);
        this.getContentPane().add(jLabel12, null);
        this.getContentPane().add(jLabel11, null);
        this.getContentPane().add(jLabel10, null);
        this.getContentPane().add(jLabel9, null);
        this.getContentPane().add(jLabel8, null);
        this.getContentPane().add(jComboBox1, null);
        this.getContentPane().add(jTextField4, null);
        this.getContentPane().add(jTextField3, null);
        this.getContentPane().add(jTextField2, null);
        this.getContentPane().add(jLabel7, null);
        this.getContentPane().add(jLabel6, null);
        this.getContentPane().add(jLabel5, null);
        this.getContentPane().add(jLabel4, null);
        this.getContentPane().add(jLabel3, null);
        this.getContentPane().add(jTextField1, null);
        this.getContentPane().add(jLabel2, null);
        this.getContentPane().add(jLabel1, null);
        jComboBox1.setModel(new DefaultComboBoxModel());

    }
    private void btnSalir_actionPerformed(ActionEvent e) {
        dispose();
    }
    public static void main(String args[]) {
         EventQueue.invokeLater(new Runnable() {
               public void run() {
                   new Frame1().setVisible(true);
               }
           });

}
    private void jComboBox1_actionPerformed(ActionEvent e) {
       
    }

    private void jButton9_actionPerformed(ActionEvent e) {
        dispose();
      }


    private void jButton1_actionPerformed(ActionEvent e) {
            int i = 0, cantidad=0, valor=0;
                 String cadena, proveedor, apellido;
                 proveedor = JOptionPane.showInputDialog("NOMBRE PROVEEDOR");
                 cadena = JOptionPane.showInputDialog("CANTIDAD DE PRODUCTO");
                 cantidad = Integer.parseInt(cadena);
                 cadena = JOptionPane.showInputDialog("INGRESE VALOR UNITARIO");
                 valor = Integer.parseInt(cadena);
                 compras = new Compras();
                 compras.asignarCompras(proveedor, cantidad, valor);
                 compras.calcularDescuentoPor(Integer.parseInt(cadena));
                 compras.calcularDescuentoDin(Integer.parseInt(cadena));
                 compras.calcularSubtotal();
                 compras.calcularTotal(Integer.parseInt(cadena));
                 mostrar(i);
                 i++;
    }
   
    public void mostrar(int i)
        {
          DecimalFormat df = ( DecimalFormat )NumberFormat.getInstance( );
          df.applyPattern( "$###,##0.##" );
          jTextField1.setText(String.valueOf((compras.getDescripcionProv())));
          jTextField2.setText(df.format(compras.getCantidad()));
          jTextField3.setText(df.format(compras.getPrecioProd()));
          jTextField4.setText(df.format(compras.getSubtotal()));
          jTextField5.setText(df.format(compras.getSubtotal()));
          jTextField6.setText(df.format(compras.getDescuentoPor()));
          jTextField7.setText(df.format(compras.getDescuentoDin()));
          jTextField8.setText(df.format(compras.getTotal()));
         
         }
}

Le Agradezco su opinión.

Mitgus

Ahora, de la forma que te indico es más sencillo: Crear un array de doubles para poner los precios unitarios de cada producto(de acuerdo al indice de orden de los productos).




Código (=java) [Seleccionar]

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import java.text.DecimalFormat;

import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Productos2 extends JFrame
{
 private JLabel texto1,texto2,texto3; // textos de las etiquetas
 private JTextField textoCantidadProducto, textoPrecioUnitario;
 private JComboBox menuProductos;
 private JButton calcular;
 private String productos[] = {"Laptops","Mochilas","Apple's","TV's","Equipos"};
 private double precioProductos[] = {1490.9,32.5,3590.9,1540.5,999.9};
 
  private double total=0; // total a pagar
  private double cantidad=0; // cantidad de productos
  private double precioUnitario;
  private double subTotal = 0;
  private double descuento= 0;
  private double totalNeto = 0; // neto a pagar (sin descuentos)
  private double impuesto = 0; // descuento
  private DecimalFormat formato = new DecimalFormat("0.00"); // para 'cortar' los decimales del double
  private String textogetItemMenu;

  private static final double IVA = 0.16; // tasa de impuesto del IVA

 public Productos2()
  {
   super("Calculadora de precios");
   setLayout(new FlowLayout() );

   texto1 = new JLabel("Seleccione el producto");
   add(texto1);

   // menu JComboBox para representar la lista de productos
   menuProductos = new JComboBox(productos);
   menuProductos.setMaximumRowCount(3);
   add(new JScrollPane(menuProductos) );

   texto2 = new JLabel("Cantidad");
   add(texto2);

   // JTextfield en donde se ingresa la cantidad de productos
   textoCantidadProducto = new JTextField("",10);
   add(textoCantidadProducto);

   // creamos el boton y lo agregamos
   calcular = new JButton("Calcular");
   add(calcular);
   // creamos una clase interna anonima para manejar el evento del boton
   calcular.addActionListener(new ActionListener()
    {
       
     public void actionPerformed(ActionEvent evento)
      {
       String textoCampoProductos;// variables que guardan Strings del JTextField
       if(evento.getSource()== calcular)
        {
          textogetItemMenu = (String)menuProductos.getSelectedItem();
          textoCampoProductos = textoCantidadProducto.getText(); // extrae el String del campo textoCantidadProductos
          cantidad = Double.parseDouble(textoCampoProductos); // convierte el String a entero
          precioUnitario = precioProductos[menuProductos.getSelectedIndex()]; // extrae el String del JTextField textoPrecioUnitario
         

          // depende de la cantidad de productos se obtiene un descuento
          if(cantidad>=0 && cantidad<=4){
            descuento = 0; }

          else if(cantidad>=5 && cantidad<=10){
          descuento = 0.2; }

          else if(cantidad>=11 && cantidad<=15){
          descuento = 0.45; }

          else descuento = 0.6;
         
       
       
          // calcula el total a pagar
          totalNeto = precioUnitario * cantidad;
          descuento = totalNeto * descuento;
          subTotal = totalNeto-descuento;
          impuesto = (subTotal - descuento) * IVA;
         
          total = subTotal - descuento + impuesto;
         
         
       }
         
        // muestra el total a pagar
       JOptionPane.showMessageDialog(Productos2.this,"Ha adquirido "+textogetItemMenu+". El total a pagar es "+formato.format(total));
       }

         
   }); // fin clase anonima
   
 } // fin constructor
 
 
} // fin



Quizás te llame la atención ésta línea:

precioUnitario = precioProductos[menuProductos.getSelectedIndex()];

Bien, te explico. PecioUnitario va a guardar el precio unitario del producto elegido. Ahora, para saber qué producto elige el usario en un JComboBox, se llama al método getSelectedItem(), pero no lo vamos a usar. ¿Por qué?

Sencillo, por que hemos "asociado" el array precioProductos con el array productos. De esta manera podemos obtener el precio unitario del ítem escogido, para esto nos es útil el método getSelectedIndex(), para obtener el subíndice del menú de items. Osea:

precioProductos[menuProductos.getSelectedIndex() -> esto devuelve un entero. Por ejemplo si elegimos TV's, devolverá el subíndice del array, en este caso 3 (recuerda que un array cuenta sus subíndices desde 0).

Por ejemplo, el ejemplo anterior se reduce a:

precioProductos[3] -> Y obtenemos el precio unitario de la casilla 3 del array precioProductos, en este caso TV's.





Saludos y bendiciones  :)
Linux User #560388

Mitgus

Amigo, edita tu post y coloca tu código entre las etiquetas {code==java} {/code}  Cambiar { por [ y } por ]

Es difiícil comprender el código así. También borra los comentarios entre declaraciones de variables, dificultan la lectura del código.

Dime, por qué haces esto?

Citarpublic void calcularDescuentoPor() {
                   
        if (Cantidad>=6 && Cantidad<=10)
            DescuentoPor= (int)(0.02);
        if (Cantidad>=11 && Cantidad<=15)
            DescuentoPor= (int)(0.045);
        if (Cantidad>=16)
            DescuentoPor= (int)(0.06);
        else
            DescuentoPor= (int)(0.0);
           
   }

Por qué realizas el cast a int. En todos los casos te dará 0, por que int NO redondea automáticamente, necesitas de la clase Math para eso.
Linux User #560388

ArhennJosey

gracias caballero, creo que ahí seria un doublé, otra cosa, el proyecto lo hago asi, porque es un parcial y debo presentarlo como indica el docente, quería subir una imagen de como debe ir el formulario para que lo mires, pero no se como. Me ayudas.
Gracias.

Mitgus

Hola,

Para subir la imagen basta con subir la imagen a www.imgur.com Dale clic en Browse, ve al directorio de tu imagen y la eliges. Luego le das a Start Upload, cuando termine a la derecha le darán muchos links, escoja el segundo, y por último simplemente pega el link entre el código [img}tuimagen[/img]. } = ] { = [

PD: Lo de poner el código entre {code==java} {/code} lo decía para poder ver mejor el código. y el /*atribute*/ cambialo por // atribute es mucho mejor.



Saludos y bendiciones  :)
Linux User #560388

ArhennJosey

HOLA,
ESTA ES LA IMAGEN DE COMO DEBE QUEDAR EL FORMULARIO.
Gracias


ArhennJosey

Esa es la imagen, como te das cuenta, debo Escribir el Poveedro, luego escoger el articulo, luego ingresar cantidad,  y luego precio unitario, me debe dar un subtotal, también cual es el porcentaje de descuento, cuanto es en dinero y el total.
Todo debe estar bajo los siguientes parámetros:

1. El usuario escribe el nombre del proveedor.
2. Selecciona el producto
3. Escribe la cantidad del producto.
4. Escribe el precio unitario.
5. Subtotal = Cantidad * PrecioUnitario
6. Se hace un descuento si el total de productos esta entre 5-10 del 2%, 11-15 del 4,5% y de   16 en adelante del 6%, todo sobre el subtotal.
El IVA equivale al 16% del subtotal - Decuento.
TOTAL = SUBTOTAL - DESCUENTOS + IVA.
Nota: Solo está activo el botón adicionar

deben ser tres clases.

Gracias, tu ayuda es invaluable.

Mitgus

Puff, se ve "algo complicado". Creo que podría ayudarte en lo que a implementación respecta, pero la interfaz gráfica no podré ayudarte, soy malísimo manejando Layouts.

Te recomiendo que realices primero el frame con los JTextFields, los JButtons y el menú JComboBox y luego pasamos a programar los eventos, te parece?


Saludos y bendiciones  :)
Linux User #560388