Calculadora de IMC en Java: Gestión de Datos de Pacientes

Clasificado en Informática

Escrito el en español con un tamaño de 7,04 KB

Introducción

En este documento, se presenta un programa en Java que permite gestionar los datos de pacientes en un hospital, incluyendo el cálculo del Índice de Masa Corporal (IMC). El programa permite registrar pacientes, calcular su IMC, identificar al paciente con mayor IMC, verificar qué pacientes superan una altura determinada y comprobar si el paciente con menor IMC es también el más pequeño en estatura.

Funcionalidades del Programa

  • Registrar múltiples pacientes con su nombre, peso (en kilos) y altura (en centímetros).
  • Calcular el IMC de cada paciente.
  • Mostrar un listado completo de los pacientes con sus respectivos datos e IMC.
  • Identificar y mostrar el nombre del paciente con el mayor IMC.
  • Permitir al usuario ingresar una altura y mostrar los nombres de los pacientes que superan esa altura.
  • Verificar si el paciente con el menor IMC es también el de menor estatura.

Código Fuente en Java

Clase Principal: HospitalIMC

import java.util.Scanner;

public class HospitalIMC {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // Paso 1: Preguntar cuántas personas se registrarán
        System.out.print("¿Cuántas personas desea registrar? ");
        int cantidadPacientes = scanner.nextInt();
        scanner.nextLine(); // Limpiar el buffer

        // Crear los arrays
        String[] nombres = new String[cantidadPacientes];
        double[] pesos = new double[cantidadPacientes];
        double[] alturas = new double[cantidadPacientes];

        // Rellenar los datos de los pacientes
        for (int i = 0; i < cantidadPacientes; i++) {
            System.out.println("Paciente " + (i + 1) + ":");

            System.out.print("Nombre: ");
            nombres[i] = scanner.nextLine();

            System.out.print("Peso en kilos: ");
            pesos[i] = scanner.nextDouble();

            System.out.print("Altura en centímetros: ");
            alturas[i] = scanner.nextDouble();
            scanner.nextLine(); // Limpiar el buffer
        }

        // Ir al menú de opciones
        menuPacientes(nombres, pesos, alturas);
    }

    // Método para mostrar el menú
    public static void menuPacientes(String[] nombres, double[] pesos, double[] alturas) {
        Scanner scanner = new Scanner(System.in);
        int opcion;

        do {
            System.out.println("\n--- Menú Gestión de Pacientes ---");
            System.out.println("1. Mostrar listado de datos con IMC");
            System.out.println("2. Mostrar el nombre de la persona con mayor IMC");
            System.out.println("3. Comprobar qué personas superan cierta altura");
            System.out.println("4. Verificar si la persona con menor IMC es la más pequeña");
            System.out.println("5. Salir del programa");
            System.out.print("Seleccione una opción: ");
            opcion = scanner.nextInt();

            switch (opcion) {
                case 1:
                    mostrarListado(nombres, pesos, alturas);
                    break;
                case 2:
                    mostrarMayorIMC(nombres, pesos, alturas);
                    break;
                case 3:
                    comprobarAltura(nombres, alturas);
                    break;
                case 4:
                    verificarMenorIMC(nombres, pesos, alturas);
                    break;
                case 5:
                    System.out.println("Saliendo del programa...");
                    break;
                default:
                    System.out.println("Opción no válida. Intente de nuevo.");
            }
        } while (opcion != 5);
    }

Métodos Auxiliares

Método 1: Mostrar listado con IMC
    public static void mostrarListado(String[] nombres, double[] pesos, double[] alturas) {
        System.out.println("\n--- Listado de Pacientes con IMC ---");
        for (int i = 0; i < nombres.length; i++) {
            double alturaEnMetros = alturas[i] / 100;
            double imc = pesos[i] / (alturaEnMetros * alturaEnMetros);
            System.out.printf("Nombre: %s, Peso: %.2f kg, Altura: %.2f m, IMC: %.2f\n",
                    nombres[i], pesos[i], alturaEnMetros, imc);
        }
    }

Método 2: Mostrar el nombre de la persona con mayor IMC
    public static void mostrarMayorIMC(String[] nombres, double[] pesos, double[] alturas) {
        int indiceMayorIMC = 0;
        double mayorIMC = 0;

        for (int i = 0; i < nombres.length; i++) {
            double alturaEnMetros = alturas[i] / 100;
            double imc = pesos[i] / (alturaEnMetros * alturaEnMetros);
            if (imc > mayorIMC) {
                mayorIMC = imc;
                indiceMayorIMC = i;
            }
        }
        System.out.println("La persona con mayor IMC es: " + nombres[indiceMayorIMC]);
    }

Método 3: Comprobar qué personas superan cierta altura
    public static void comprobarAltura(String[] nombres, double[] alturas) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Ingrese una altura en centímetros: ");
        double alturaIngresada = scanner.nextDouble();

        System.out.println("Personas que superan " + alturaIngresada + " cm:");
        for (int i = 0; i < nombres.length; i++) {
            if (alturas[i] > alturaIngresada) {
                System.out.println("- " + nombres[i]);
            }
        }
    }

Método 4: Verificar si la persona con menor IMC es la más pequeña
    public static void verificarMenorIMC(String[] nombres, double[] pesos, double[] alturas) {
        int indiceMenorIMC = 0;
        double menorIMC = Double.MAX_VALUE;

        // Encontrar persona con menor IMC
        for (int i = 0; i < nombres.length; i++) {
            double alturaEnMetros = alturas[i] / 100;
            double imc = pesos[i] / (alturaEnMetros * alturaEnMetros);
            if (imc < menorIMC) {
                menorIMC = imc;
                indiceMenorIMC = i;
            }
        }

        // Verificar si también es la más pequeña
        boolean esMasPequena = true;
        for (int i = 0; i < nombres.length; i++) {
            if (alturas[i] < alturas[indiceMenorIMC] && i != indiceMenorIMC) {
                esMasPequena = false;
                break;
            }
        }

        System.out.println("La persona con menor IMC es: " + nombres[indiceMenorIMC]);
        if (esMasPequena) {
            System.out.println("Y también es la más pequeña.");
        } else {
            System.out.println("Pero no es la más pequeña.");
        }
    }
}

Conclusión

Este programa en Java proporciona una solución completa para la gestión de datos de pacientes en un hospital, permitiendo realizar cálculos de IMC y diversas consultas relacionadas. Su diseño modular facilita la extensión y adaptación a futuras necesidades.

Entradas relacionadas: