Java, con su paradigma de programación orientada a objetos y su promesa de «escribir una vez, ejecutar en cualquier lugar», ha sido un pilar en el mundo del desarrollo de software durante décadas. Ideal para construir aplicaciones robustas y escalables, desde aplicaciones móviles hasta sistemas empresariales, Java ofrece un ecosistema rico y una comunidad vibrante. Para aquellos interesados en sumergirse en este lenguaje, proponemos un ejercicio práctico que combina varios conceptos fundamentales de Java: la creación de un sistema de registro de estudiantes.
Este proyecto tiene como objetivo desarrollar una aplicación de consola en Java que permita a los usuarios gestionar una lista de estudiantes, incluyendo operaciones como agregar, listar, buscar y eliminar estudiantes. A través de este ejercicio, se explorarán conceptos tales como clases, objetos, colecciones y manejo de excepciones, proporcionando una base sólida en la programación orientada a objetos.
Objetivos del Ejercicio
El sistema de registro de estudiantes deberá ser capaz de realizar las siguientes operaciones:
- Agregar estudiantes: Permitir a los usuarios introducir datos del estudiante, como ID, nombre, y curso.
- Listar todos los estudiantes: Mostrar un listado de todos los estudiantes registrados.
- Buscar estudiantes por ID: Permitir a los usuarios buscar un estudiante específico por su ID.
- Eliminar estudiantes: Ofrecer la opción de eliminar un estudiante del registro basándose en su ID.
Implementación Propuesta
Antes de adentrarnos en el código, es importante diseñar las clases que representarán la lógica de nuestro sistema. Podemos empezar con una clase Estudiante
para almacenar la información de cada estudiante, y una clase RegistroEstudiantes
que maneje la lógica de agregar, buscar, listar y eliminar estudiantes.
Clase Estudiante
public class Estudiante {
private String id;
private String nombre;
private String curso;
public Estudiante(String id, String nombre, String curso) {
this.id = id;
this.nombre = nombre;
this.curso = curso;
}
// Getters y Setters
public String getId() {
return id;
}
public String getNombre() {
return nombre;
}
public String getCurso() {
return curso;
}
@Override
public String toString() {
return "Estudiante{" +
"ID='" + id + '\'' +
", Nombre='" + nombre + '\'' +
", Curso='" + curso + '\'' +
'}';
}
}
Clase RegistroEstudiantes
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class RegistroEstudiantes {
private List<Estudiante> estudiantes = new ArrayList<>();
public void agregarEstudiante(Estudiante estudiante) {
estudiantes.add(estudiante);
System.out.println("Estudiante agregado exitosamente.");
}
public void listarEstudiantes() {
System.out.println("Listado de Estudiantes:");
for (Estudiante estudiante : estudiantes) {
System.out.println(estudiante);
}
}
public void buscarEstudiante(String id) {
for (Estudiante estudiante : estudiantes) {
if (estudiante.getId().equals(id)) {
System.out.println("Estudiante encontrado: " + estudiante);
return;
}
}
System.out.println("Estudiante no encontrado.");
}
public void eliminarEstudiante(String id) {
if (estudiantes.removeIf(estudiante -> estudiante.getId().equals(id))) {
System.out.println("Estudiante eliminado correctamente.");
} else {
System.out.println("Estudiante no encontrado.");
}
}
public static void main(String[] args) {
RegistroEstudiantes registro = new RegistroEstudiantes();
Scanner scanner = new Scanner(System.in);
int opcion;
do {
System.out.println("\nSistema de Registro de Estudiantes");
System.out.println("1. Agregar estudiante");
System.out.println("2. Listar estudiantes");
System.out.println("3. Buscar estudiante");
System.out.println("4. Eliminar estudiante");
System.out.println("0. Salir");
System.out.print("Seleccione una opción: ");
opcion = scanner.nextInt();
scanner.nextLine(); // Consume newline left-over
switch (opcion) {
case 1:
System.out.print("Ingrese ID del estudiante: ");
String id = scanner.nextLine();
System.out.print("Ingrese nombre del estudiante: ");
String nombre = scanner.nextLine();
System.out.print("Ingrese curso del estudiante: ");
String curso = scanner.nextLine();
Estudiante estudiante = new Estudiante(id, nombre, curso);
registro.agregarEstudiante(estudiante);
break;
case 2:
registro.listarEstudiantes();
break;
case 3:
System.out.print("Ingrese ID del estudiante a buscar: ");
String buscarId = scanner.nextLine();
registro.buscarEstudiante(buscarId);
break;
case 4:
System.out.print("Ingrese ID del estudiante a eliminar: ");
String eliminarId = scanner.nextLine();
registro.eliminarEstudiante(eliminarId);
break;
case 0:
System.out.println("Saliendo...");
break;
default:
System.out.println("Opción no válida. Por favor, intente de nuevo.");
}
} while (opcion != 0);
scanner.close();
}
}
Desafíos y Aprendizajes
Este ejercicio ofrece una excelente oportunidad para familiarizarse con los fundamentos de Java y la programación orientada a objetos. Los participantes aprenderán a manejar colecciones, como ArrayList
, para almacenar objetos y realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) sobre ellos. Además, el manejo de la entrada/salida a través de la clase Scanner
permitirá una interacción básica con el usuario a través de la consola.
Para expandir este proyecto, podrías considerar agregar funcionalidades como modificar los datos de un estudiante, guardar y cargar la lista de estudiantes desde un archivo, o incluso desarrollar una interfaz gráfica de usuario (GUI) utilizando Swing o bases de datos para no perder los datos cada vez que el programa se reinicia.
![black background with text overlay screengrab](https://infogonzalez.com/wp-content/uploads/2024/02/pexels-photo-270404.jpeg)
Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.