Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
4
respuestas

BancoDeSangre

import java.util.ArrayList;
import java.util.Scanner;

public class FiltroDonante {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        ArrayList<String[]> donantesCompatibles = new ArrayList<>();
        ArrayList<String[]> donantesNoCompatibles = new ArrayList<>();

        System.out.println("*************************************************");
        System.out.println("*   BIENVENIDO AL BANCO DE SANGRE              *");
        System.out.println("*   Sistema de evaluación de donantes           *");
        System.out.println("*************************************************");
        System.out.println("\nCriterios para donar sangre:");
        System.out.println("- Tener entre 18 y 65 años");
        System.out.println("- Pesar más de 50 kg");
        System.out.println("-------------------------------------------------");

        int opcion;
        int contadorDonantes = 0;

        do {
            System.out.println("\nMENÚ PRINCIPAL");
            System.out.println("1. Agregar nuevo donante");
            System.out.println("2. Ver lista de donantes compatibles");
            System.out.println("3. Ver lista de donantes no compatibles");
            System.out.println("4. Editar donante");
            System.out.println("5. Eliminar donante");
            System.out.println("6. Salir del sistema");
            System.out.print("Seleccione una opción: ");
            opcion = scanner.nextInt();
            scanner.nextLine(); // Limpiar buffer


   
4 respuestas
  switch(opcion) {
                case 1: // Agregar nuevo donante
                    contadorDonantes++;
                    System.out.println("\nREGISTRO DE DONANTE #" + contadorDonantes);

                    System.out.print("Ingrese nombres completos del donante: ");
                    String nombres = scanner.nextLine();

                    System.out.print("Ingrese apellidos completos del donante: ");
                    String apellidos = scanner.nextLine();

                    System.out.print("Ingrese tipo de documento de identificación: ");
                    String tipoDocumento = scanner.nextLine();

                    System.out.print("Ingrese número de documento de identificación: ");
                    String numeroDocumento = scanner.nextLine();

                    System.out.print("Ingrese peso del donante (kg): ");
                    double peso = scanner.nextDouble();

                    System.out.print("Ingrese edad del donante: ");
                    int edad = scanner.nextInt();
                    scanner.nextLine(); // Limpiar buffer

                    System.out.print("Ingrese tipo de sangre: ");
                    String tipoSangre = scanner.nextLine();

                    // Verificar criterios
                    boolean esCompatible = (edad >= 18 && edad <= 65) && (peso > 50);

                    String[] donante = {
                            String.valueOf(contadorDonantes),
                            nombres,
                            apellidos,
                            tipoDocumento,
                            numeroDocumento,
                            String.valueOf(peso),
                            String.valueOf(edad),
                            tipoSangre
                    };

                    if(esCompatible) {
                        donantesCompatibles.add(donante);
                        System.out.println("\nRESULTADO: Donante COMPATIBLE");
                        System.out.println("Criterios cumplidos:");
                        if(edad >= 18 && edad <= 65) {
                            System.out.println("- Edad entre 18 y 65 años: CUMPLIDO");
                        }
                        if(peso > 50) {
                            System.out.println("- Peso mayor a 50 kg: CUMPLIDO");
                        }
                    } else {
                        donantesNoCompatibles.add(donante);
                        System.out.println("\nRESULTADO: Donante NO COMPATIBLE");
                        System.out.println("Criterios no cumplidos:");
                        if(edad < 18 || edad > 65) {
                            System.out.println("- Edad entre 18 y 65 años: NO CUMPLIDO");
                        }
                        if(peso <= 50) {
                            System.out.println("- Peso mayor a 50 kg: NO CUMPLIDO");
                        }
                    }
                    break;

                case 2: // Mostrar donantes compatibles
                    System.out.println("\nLISTA DE DONANTES COMPATIBLES");
                    System.out.println("-------------------------------------------------------------");
                    System.out.println("No. | Nombres y Apellidos   | Tipo Doc | Núm Doc  | Peso | Edad | Tipo Sangre");
                    System.out.println("-------------------------------------------------------------");

                    for(String[] d : donantesCompatibles) {
                        System.out.printf("%-3s | %-20s | %-8s | %-8s | %-4s | %-4s | %-11s\n",
                                d[0], d[1] + " " + d[2], d[3], d[4], d[5], d[6], d[7]);
                    }
                    break;

                case 3: // Mostrar donantes no compatibles
                    System.out.println("\nLISTA DE DONANTES NO COMPATIBLES");
                    System.out.println("-------------------------------------------------------------");
                    System.out.println("No. | Nombres y Apellidos   | Tipo Doc | Núm Doc  | Peso | Edad | Tipo Sangre");
                    System.out.println("-------------------------------------------------------------");

                    for(String[] d : donantesNoCompatibles) {
                        System.out.printf("%-3s | %-20s | %-8s | %-8s | %-4s | %-4s | %-11s\n",
                                d[0], d[1] + " " + d[2], d[3], d[4], d[5], d[6], d[7]);
                    }
                    break;

                case 4: // Editar donante
                    System.out.println("\nEDITAR DONANTE");
                    System.out.print("Ingrese el número del donante a editar: ");
                    int numEditar = scanner.nextInt();
                    scanner.nextLine(); // Limpiar buffer

                    boolean encontrado = false;

                    
 for(String[] d : donantesCompatibles) {
                        if(Integer.parseInt(d[0]) == numEditar) {
                            encontrado = true;
                            editarDonante(d, scanner);
                            // Re-evaluar criterios después de editar
                            boolean nuevoCompatibilidad = (Integer.parseInt(d[6]) >= 18 && Integer.parseInt(d[6]) <= 65)
                                    && (Double.parseDouble(d[5]) > 50);

                            if(!nuevoCompatibilidad) {
                                donantesCompatibles.remove(d);
                                donantesNoCompatibles.add(d);
                                System.out.println("El donante ya no cumple los criterios y ha sido movido a no compatibles.");
                            }
                            break;
                        }
                    }

                    // Si no se encontró en compatibles, buscar en no compatibles
                    if(!encontrado) {
                        for(String[] d : donantesNoCompatibles) {
                            if(Integer.parseInt(d[0]) == numEditar) {
                                encontrado = true;
                                editarDonante(d, scanner);
                                // Re-evaluar criterios después de editar
                                boolean nuevoCompatibilidad = (Integer.parseInt(d[6]) >= 18 && Integer.parseInt(d[6]) <= 65)
                                        && (Double.parseDouble(d[5]) > 50);

                                if(nuevoCompatibilidad) {
                                    donantesNoCompatibles.remove(d);
                                    donantesCompatibles.add(d);
                                    System.out.println("El donante ahora cumple los criterios y ha sido movido a compatibles.");
                                }
                                break;
                            }
                        }
                    }

                    if(!encontrado) {
                        System.out.println("No se encontró un donante con ese número.");
                    }
                    break;

                case 5: // Eliminar donante
                    System.out.println("\nELIMINAR DONANTE");
                    System.out.print("Ingrese el número del donante a eliminar: ");
                    int numEliminar = scanner.nextInt();
                    scanner.nextLine(); // Limpiar buffer

                    boolean eliminado = false;

                    // Buscar en compatibles
                    for(String[] d : donantesCompatibles) {
                        if(Integer.parseInt(d[0]) == numEliminar) {
                            donantesCompatibles.remove(d);
                            eliminado = true;
                            break;
                        }
                    }

                    // Si no se encontró en compatibles, buscar en no compatibles
                    if(!eliminado) {
                        for(String[] d : donantesNoCompatibles) {
                            if(Integer.parseInt(d[0]) == numEliminar) {
                                donantesNoCompatibles.remove(d);
                                eliminado = true;
                                break;
                            }
                        }
                    }

                    if(eliminado) {
                        System.out.println("Donante eliminado exitosamente.");
                    } else {
                        System.out.println("No se encontró un donante con ese número.");
                    }
                    break;

                case 6: // Salir
                    System.out.println("\nGracias por usar el sistema del Banco de Sangre.");
                    System.out.println("¡Hasta pronto!");
                    break;

                default:
                    System.out.println("Opción no válida. Por favor seleccione una opción del 1 al 6.");
            }

        } while(opcion != 6);

        scanner.close();
    }

    private static void editarDonante(String[] donante, Scanner scanner) {
        System.out.println("\nEditando donante #" + donante[0]);
        System.out.println("Deje en blanco cualquier campo que no desee modificar.");

        System.out.print("Nombres actual: " + donante[1] + ". Nuevo valor: ");
        String nuevoNombres = scanner.nextLine();
        if(!nuevoNombres.isEmpty()) donante[1] = nuevoNombres;

        System.out.print("Apellidos actual: " + donante[2] + ". Nuevo valor: ");
        String nuevoApellidos = scanner.nextLine();
        if(!nuevoApellidos.isEmpty()) donante[2] = nuevoApellidos;

        System.out.print("Tipo documento actual: " + donante[3] + ". Nuevo valor: ");
        String nuevoTipoDoc = scanner.nextLine();
        if(!nuevoTipoDoc.isEmpty()) donante[3] = nuevoTipoDoc;

        System.out.print("Número documento actual: " + donante[4] + ". Nuevo valor: ");
        String nuevoNumDoc = scanner.nextLine();
        if(!nuevoNumDoc.isEmpty()) donante[4] = nuevoNumDoc;

        System.out.print("Peso actual: " + donante[5] + ". Nuevo valor: ");
        String nuevoPeso = scanner.nextLine();
        if(!nuevoPeso.isEmpty()) donante[5] = nuevoPeso;

        System.out.print("Edad actual: " + donante[6] + ". Nuevo valor: ");
        String nuevaEdad = scanner.nextLine();
        if(!nuevaEdad.isEmpty()) donante[6] = nuevaEdad;

        System.out.print("Tipo sangre actual: " + donante[7] + ". Nuevo valor: ");
        String nuevoTipoSangre = scanner.nextLine();
        if(!nuevoTipoSangre.isEmpty()) donante[7] = nuevoTipoSangre;

        System.out.println("Donante actualizado exitosamente.");
    }
}

¡Hola! ¿Cómo estás?

Gracias por tu aporte en el foro. Su contribución es esencial para el crecimiento de nuestra comunidad en Alura.

Sigue así y no dudes en volver al foro si tienes alguna pregunta o dificultad.

Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!