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