Download Laboratorio 6 - GEOCITIES.ws

Document related concepts
no text concepts found
Transcript
Instituto Superior Tecnológico Privado Cibertec
Agosto-2004
Sección : 1N
Laboratorio # 11
Problema 3.Solución Gráfica en Java:
Solución en Lenguaje Java:
/*
El indice de masa corporal (IMC) permite medir el grado de
sobrepeso u obesidad de una persona. El IMC de una persona
se calcula de la siguiente forma:
IMC = peso / estatura²
estando el peso en kilogramos y la estatura en metros. En
base al valor del IMC se obtiene el grado de obesidad de
la persona de acuerdo a la siguiente tabla:
Hecho por: Carlos J Vega Vicente
[email protected]
http://es.geocities.com/cvega30/feedback.htm
Página 1 de 7
Instituto Superior Tecnológico Privado Cibertec
Agosto-2004
Sección : 1N
------------------------------------------------IMC
Grado
------------------------------------------------menos que 20
Delgado
20 a menos que 25
Normal
25 a menos que 27
Sobrepeso
27 a menos que 30
Obesidad I
30 a menos que 40
Obesidad II
40 a más
Obesidad III
------------------------------------------------Considere que el IMC puede estar en el rango de 0 a 200.
Diseñe un programa que permita ingresar los pesos
y las estaturas de un grupo de personas (cada una mediante la
pulsación de un botón) y muestre luego de cada ingreso la
siguiente información:
En el TextArea txtS1
-------------------Para la persona ingresada
- IMC.
- Grado de obesidad.
En el TextArea txtS2
-------------------Para todas las personas ingresadas
- El número de personas ingresadas.
- El número de personas por cada grado.
- El IMC promedio.
- El IMC máximo.
- El IMC mínimo.
*/
import java.awt.event.*;
import java.awt.*;
import java.applet.*;
import java.text.*;
public class IMC extends Applet implements ActionListener{
// Declaración de variables globales
Button btnIngresar, btnBorrar;
TextArea txtS1, txtS2;
Label lblEstatura, lblPeso,lblAutor1,lblActual, lblHistorico;
TextField txtEstatura, txtPeso;
Hecho por: Carlos J Vega Vicente
[email protected]
http://es.geocities.com/cvega30/feedback.htm
Página 2 de 7
Instituto Superior Tecnológico Privado Cibertec
Agosto-2004
Sección : 1N
Página 3 de 7
DecimalFormat f;
int contD=0, //contador Delgado
contN=0, //contador Normal
contS=0,
contO1=0,
contO2=0,
contO3=0,
contp=0;
double sumaIMC=0.0,promedioIMC=0,mayorIMC=0.0,menorIMC=200.0;
//-------------------------------------------------------------------------// Crea la interfaz gráfica de usuario
public void init() {
setLayout(null);
setBackground(new Color(214,211,206));
// txtEstatura
txtEstatura = new TextField();
txtEstatura.setBounds(105, 15, 120, 23);
add(txtEstatura);
// txtPeso
txtPeso = new TextField();
txtPeso.setBounds(105, 39, 120, 23);
add(txtPeso);
// btnIngresar
btnIngresar = new Button("Ingresar");
btnIngresar.setBounds(321, 15, 100, 23);
btnIngresar.addActionListener(this);
add(btnIngresar);
// btnBorrar
btnBorrar = new Button("Borrar");
btnBorrar.setBounds(321, 39, 100, 23);
btnBorrar.addActionListener(this);
add(btnBorrar);
// lblEstatura
lblEstatura = new Label("Estatura mt");
lblEstatura.setBounds(15, 15, 90, 23);
add(lblEstatura);
// lblPeso
lblPeso = new Label("Peso kg");
lblPeso.setBounds(15, 39, 90, 23);
add(lblPeso);
Hecho por: Carlos J Vega Vicente
[email protected]
http://es.geocities.com/cvega30/feedback.htm
Instituto Superior Tecnológico Privado Cibertec
Agosto-2004
Sección : 1N
Página 4 de 7
// lblActual
lblActual = new Label("Empleado Actual", Label.CENTER);
lblActual.setBounds(15, 78, 406, 23);
lblActual.setFont(new Font("Dialog", Font.BOLD, 12));
lblActual.setBackground(Color.gray);
lblActual.setForeground(Color.white);
add(lblActual);
// lblHistorico
lblHistorico = new Label("Reporte Histórico", Label.CENTER);
lblHistorico.setBounds(15, 193, 406, 23);
lblHistorico.setFont(new Font("Dialog", Font.BOLD, 12));
lblHistorico.setBackground(Color.gray);
lblHistorico.setForeground(Color.white);
add(lblHistorico);
// txtS1
txtS1 = new TextArea();
txtS1.setFont(new Font("monospaced", 0, 12));
txtS1.setText("");
txtS1.setBounds(15, 101, 406, 90);
add(txtS1);
// txtS2
txtS2 = new TextArea();
txtS2.setFont(new Font("monospaced", 0, 12));
txtS2.setText("");
txtS2.setBounds(15, 216, 406, 200);
add(txtS2);
//Control de Decimales
f = new DecimalFormat();
f.setMinimumFractionDigits(2); // 2 decimales minimos
f.setMaximumFractionDigits(2); // 2 decimales maximos
// lblAutor1
lblAutor1=new Label ("Alumno: Carlos Vega ==>
[email protected] ");
lblAutor1.setBounds(15,445,394,23);
lblAutor1.setFont(new Font("Dialog",2,12));
add(lblAutor1);
}
//-------------------------------------------------------------------------// Procesa eventos de tipo ActionEvent
public void actionPerformed( ActionEvent e ){
//---------------------------------------------------------------------Hecho por: Carlos J Vega Vicente
[email protected]
http://es.geocities.com/cvega30/feedback.htm
Instituto Superior Tecnológico Privado Cibertec
Agosto-2004
Sección : 1N
Página 5 de 7
// Si se hizo click en Ingresar
//---------------------------------------------------------------------if( e.getSource() == btnIngresar ){
// Declaración de variables locales
double estatura,peso,IMC;
String clase;
// Entrada de datos
estatura=Double.parseDouble(txtEstatura.getText());
peso=Double.parseDouble(txtPeso.getText());
//validacion de la estatura y peso
if (estatura<=0.0||estatura>3.0||peso<=0.0||peso>300)
txtS1.setText("Error en los datos
ingresados.\nVerificarlos. Por favor!!!");
else {
// Cálculo del IMC
IMC = peso / (estatura*estatura);
// Determinación del grado de obesidad y a la vez
// Incremento de los contadores por cada grado de
obesidad
if(IMC>40){
clase="Obesidad III";
contO3++;
}
else {
if(IMC>30){
clase="Obesidad II" ;
contO2++;
}
else{
if (IMC>27){
clase="Obesidad I";
contO1++;
}
else {
if(IMC>25)
Hecho por: Carlos J Vega Vicente
[email protected]
http://es.geocities.com/cvega30/feedback.htm
Instituto Superior Tecnológico Privado Cibertec
Agosto-2004
Sección : 1N
Página 6 de 7
{
clase="Sobrepeso";
contS++;
}
else{
if(IMC>20)
{
clase="Normal";
contN++;
}
else{
clase="Delgado";
contD++;
}
}
}
}
}
// Incremento del contador de personas ingresadas
contp++;
// Acumulación del IMC para obtener el IMC total
sumaIMC+=IMC;
// Cálculo del IMC promedio
promedioIMC=sumaIMC/contp;
// Determinación del IMC máximo
if(IMC>mayorIMC) mayorIMC=IMC;
// Determinación del IMC mínimo
if(IMC<menorIMC) menorIMC=IMC;
// Salida de resultados
txtS1.setText("IMC......................................: "
+f.format(IMC)+ "\n");
txtS1.append ("Clasificación............................: "+clase);
Hecho por: Carlos J Vega Vicente
[email protected]
http://es.geocities.com/cvega30/feedback.htm
Instituto Superior Tecnológico Privado Cibertec
Agosto-2004
Sección : 1N
Página 7 de 7
txtS2.setText("Nro. de personas ingresadas..............: " +
contp+"\n");
txtS2.append ("Nro. de personas de grado Delgado........: "
+ contD+"\n");
txtS2.append ("Nro. de personas de grado Normal.........: " +
contN+"\n");
txtS2.append ("Nro. de personas de grado Sobrepeso......: "
+ contS+"\n");
txtS2.append ("Nro. de personas de grado Obesidad I.....: "
+ contO1+"\n");
txtS2.append ("Nro. de personas de grado Obesidad II....: "
+ contO2+"\n");
txtS2.append ("Nro. de personas de grado Obesidad III...: "
+ contO3+"\n");
txtS2.append ("IMC máximo...............................: " +
f.format(mayorIMC)+"\n");
txtS2.append ("IMC mínimo...............................: " +
f.format(menorIMC)+"\n");
txtS2.append ("IMC promedio.............................:
"+f.format(promedioIMC));
}
}
//---------------------------------------------------------------------// Si se hizo click en Borrar
//---------------------------------------------------------------------if( e.getSource() == btnBorrar ){
txtS1.setText("");
txtEstatura.setText("");
txtPeso.setText("");
txtEstatura.requestFocus();
}
}
}
Hecho por: Carlos J Vega Vicente
[email protected]
http://es.geocities.com/cvega30/feedback.htm