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

Vibe Coding (la programación vía IA): ¿el futuro de la programación?

Vibe Coding es un nuevo paradigma de programación, una nueva forma de crear código. Es un enfoque emergente en el desarrollo de sof...

Etiquetas

Archivo del blog