jueves, 28 de marzo de 2013

Determinar el biotipo de una persona en Java


¿Qué es el biotipo?
Es la forma característica de un animal o planta. Es el aspecto general de un sujeto de acuerdo a sus características somáticas o morfológicas y se basa en los datos que refleja su estructura corporal, en todo lo que se ve y se puede medir de su cuerpo.

Establece que hay una relación entre las características físicas y la personalidad.

Braquitipo. 

  • Sobrepeso
  • Acumula grasas
  • Puede ganar musculatura si realiza ejercicio

Longitipo.

  • Largo
  • Delgado
  • De apariencia frágil

Normotipo.

  • Fuerte
  • Atlético
  • Musculoso


Biotipo.java

import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import java.awt.event.*;
import javax.swing.JPanel;
import javax.swing.JOptionPane;
import javax.swing.ImageIcon;
import java.awt.*;
import javax.swing.JLabel;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;



public class Biotipo{
   
     public static void main(String[] args)throws Exception {
        
        SwingUtilities.invokeLater(new Runnable(){public void run(){new Ventana().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);;}});
    }   
    
}


class Ventana extends JFrame{
    public final static int ANCHO=350;
    public final static int ALTO=90;

    private JPanel panel;
    private JButton btnActiva;
    private JButton btnSalir;
    private JLabel lblResultado;
    
    Ventana(){
        setTitle(getFecha());
        setSize(ANCHO,ALTO);
        setVisible(true);
        add(getGUI());

    }

    static String getFecha(){
        String strFecha=null;
        try{
            java.util.Date fecha=new java.util.Date();
            java.text.SimpleDateFormat formato = new java.text.SimpleDateFormat("'Hoy es' EEEEEEEEE dd 'de' MMMMM 'de' yyyy");
            strFecha=formato.format(fecha);
        }catch(Exception ex){
            System.err.println("error: "+ex.getCause());
        }
        return strFecha;
    }


    public JPanel getGUI(){
        if(panel==null){
            panel=new JPanel();
            panel.setVisible(true);

            panel.add(getActiva());
            panel.add(getSalir());

            lblResultado=new JLabel("<html><font color='blue'>--</font></html>");
            lblResultado.setVisible(false);

            panel.add(lblResultado);


        }
        return panel;
    }


    public JButton getActiva(){
        if(btnActiva==null){
            btnActiva=new JButton("<html><font color='white'>Calcular</font></html>");
            btnActiva.setBackground(Color.black);
            btnActiva.setToolTipText("calcular ahora...");


            btnActiva.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    String peso="";
                    String talla="";
                    double desviacion=0.0;
                    String miPeso="";
                    String miTalla="";
                    
                    HashMap<String,Double> mapaPeso=new HashMap<String,Double>();
                    HashMap<String,Double> mapaEstatura=new HashMap<String,Double>();
            try{
            //llenar mapaPeso
            mapaPeso.put("85.54",3.0);
            mapaPeso.put("83.79",2.75);
            mapaPeso.put("82.04",2.5);
            mapaPeso.put("80.29",2.25);
            mapaPeso.put("78.54",2.0);
            mapaPeso.put("76.79",1.75);
            mapaPeso.put("75.04",1.5);
            mapaPeso.put("73.29",1.25);
            mapaPeso.put("71.54",1.0);
            mapaPeso.put("69.79",0.75);
            mapaPeso.put("68.04",0.50);
            mapaPeso.put("66.29",0.25);
            mapaPeso.put("64.54",0.0);
            mapaPeso.put("62.79",-0.25);
            mapaPeso.put("61.04",-0.50);
            mapaPeso.put("59.29",-0.75);
            mapaPeso.put("57.54",-1.0);
            mapaPeso.put("55.79",-1.25);
            mapaPeso.put("54.04",-1.50);
            mapaPeso.put("52.29",-1.75);
            mapaPeso.put("50.54",-2.0);
            mapaPeso.put("45.79",-2.25);
            mapaPeso.put("47.04",-2.5);
            mapaPeso.put("45.29",-2.75);
            mapaPeso.put("43.54",-3.0);

            //llenar mapaEstatura
            mapaEstatura.put("1.87",3.0);
            mapaEstatura.put("1.86",2.75);
            mapaEstatura.put("1.85",2.50);
            mapaEstatura.put("1.83",2.23);
            mapaEstatura.put("1.82",2.0);
            mapaEstatura.put("1.81",1.75);
            mapaEstatura.put("1.79",1.50);
            mapaEstatura.put("1.78",2.25);
            mapaEstatura.put("1.77",1.0);
            mapaEstatura.put("1.75",0.75);
            mapaEstatura.put("1.74",0.50);
            mapaEstatura.put("1.73",0.25);
            mapaEstatura.put("1.71",0.0);
            mapaEstatura.put("1.7",-0.25);
            mapaEstatura.put("1.69",-0.50);
            mapaEstatura.put("1.67",-0.75);
            mapaEstatura.put("1.66",-1.0);
            mapaEstatura.put("1.65",-1.25);
            mapaEstatura.put("1.63",-1.50);
            mapaEstatura.put("1.62",-1.75);
            mapaEstatura.put("1.61",-2.0);
            mapaEstatura.put("1.59",-2.25);
            mapaEstatura.put("1.58",-2.50);
            mapaEstatura.put("1.57",-2.75);
            mapaEstatura.put("1.55",-3.0);
        }

        catch(Exception ex){
            System.out.println("1. Ha ocurrido un error: "+ex.getCause());
        }
            try{
            miPeso=JOptionPane.showInputDialog("Tu peso es de: ");
            miTalla=JOptionPane.showInputDialog("Tu estatura es de: ");
            }catch(Exception ex){
            System.out.println("2. Ha ocurrido un error: "+ex.getCause());
            }
            
             try{
            peso=getPeso(mapaPeso,String.valueOf(miPeso));
            talla=getTalla(mapaEstatura,String.valueOf(miTalla));

            desviacion=Double.parseDouble(peso)-Double.parseDouble(talla);

            if(desviacion<0){
                lblResultado.setVisible(true);
                lblResultado.setText("tu biotipo es: longitipo");
                JOptionPane.showMessageDialog(null, "tu biotipo es: longitipo", "Aviso del sistema", JOptionPane.WARNING_MESSAGE, new ImageIcon("longitipo.jpg"));
            }else if(desviacion>0){
                lblResultado.setVisible(true);
                lblResultado.setText("tu biotipo es: braquitipo");
                JOptionPane.showMessageDialog(null, "tu biotipo es: braquitipo", "Aviso del sistema", JOptionPane.WARNING_MESSAGE, new ImageIcon("longitipo.jpg"));
            }else{
                lblResultado.setVisible(true);
                lblResultado.setText("tu biotipo es: normotipo");
                JOptionPane.showMessageDialog(null, "tu biotipo es: normotipo", "Aviso del sistema", JOptionPane.WARNING_MESSAGE, new ImageIcon("longitipo.jpg"));
            }
            }
            catch(Exception ex){
                System.out.println("3. Ha ocurrido un error: "+ex.getCause());
            }



                }
            });

        }
        return btnActiva;
    }

    public JButton getSalir(){
        if(btnSalir==null){
            btnSalir=new JButton("<html><font color='red'>Salir</font></html>");
            btnSalir.setBackground(Color.black);
            btnSalir.setToolTipText("salir...");
            btnSalir.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    System.exit(0);
                }
            });
        }
        return btnSalir;
    }



    static String getPeso(HashMap<String,Double> m,String peso){
        String cadPeso=null;
        try{
            Iterator it=m.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry e = (Map.Entry)it.next();
                if(e.getKey().equals(peso)){ 
                    System.out.println("peso: "+e.getValue());
                    cadPeso=String.valueOf(e.getValue());
                }
            }

        }catch(Exception ex){
            System.err.println("error: "+ex.getCause());
        }
        return cadPeso;
    }


    static String getTalla(HashMap<String,Double> m,String talla){
        String cadTalla=null;
        try{
            Iterator it=m.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry e = (Map.Entry)it.next();
                if(e.getKey().equals(talla)){ 
                    System.out.println("talla: "+e.getValue());
                    cadTalla=String.valueOf(e.getValue());
                }
            }

        }catch(Exception ex){
            System.err.println("error: "+ex.getCause());
        }
        return cadTalla;
    }

}
Programa en ejecución


Entradas
peso: 85.54
estatura: 1.79


Se muestra el resultado


El programa tiene algunos errores, solo admite valores (peso y estatura) colocados en los mapas (HashMap). 
Enlaces:

No hay comentarios:

Publicar un comentario