JAVA 3
Ejercicio 1: Gestión de Notas de Estudiantes
Enunciado
Vamos a desarrollar un programa que gestione las notas de estudiantes almacenadas en
un fichero [Link].
El sistema permitirá:
Consultar todas las notas guardadas en el archivo.
Insertar nuevas notas de estudiantes.
Modificar la nota de un estudiante existente.
Eliminar la nota de un estudiante.
Cada línea del fichero tendrá el formato: Nombre;Nota
Ejemplo de contenido del fichero:
Ana;9.5
Carlos;8.0
Lucía;7.8
Especificación técnica
Clase GestorNotas
Atributos:
o String nombreArchivo
Métodos:
o void consultarNotas(): Lee y muestra el contenido del archivo.
o void insertarNota(String nombre, double nota): Agrega un
nuevo estudiante al archivo.
o void modificarNota(String nombre, double nuevaNota): Busca
un estudiante y cambia su nota.
o void eliminarNota(String nombre): Elimina una línea específica del
archivo.
Solución:
import [Link].*;
import [Link].*;
public class GestorNotas {
private String nombreArchivo;
// Constructor
public GestorNotas(String nombreArchivo) {
[Link] = nombreArchivo;
}
// Consultar las notas en el archivo
public void consultarNotas() {
try (BufferedReader br = new BufferedReader(new
FileReader(nombreArchivo))) {
String linea;
while ((linea = [Link]()) != null) {
[Link](linea);
}
} catch (IOException e) {
[Link]("Error al leer el archivo.");
}
}
// Insertar una nueva nota en el archivo
public void insertarNota(String nombre, double nota) {
try (FileWriter fw = new FileWriter(nombreArchivo, true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw)) {
[Link](nombre + ";" + nota);
} catch (IOException e) {
[Link]("Error al escribir en el archivo.");
}
}
// Modificar una nota existente
public void modificarNota(String nombre, double nuevaNota) {
List<String> lineas = new ArrayList<>();
boolean encontrado = false;
try (BufferedReader br = new BufferedReader(new
FileReader(nombreArchivo))) {
String linea;
while ((linea = [Link]()) != null) {
if ([Link](nombre + ";")) {
[Link](nombre + ";" + nuevaNota);
encontrado = true;
} else {
[Link](linea);
}
}
} catch (IOException e) {
[Link]("Error al leer el archivo.");
}
if (encontrado) {
escribirArchivo(lineas);
} else {
[Link]("Estudiante no encontrado.");
}
}
// Eliminar una nota
public void eliminarNota(String nombre) {
List<String> lineas = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new
FileReader(nombreArchivo))) {
String linea;
while ((linea = [Link]()) != null) {
if () {
[Link](linea);
}
}
} catch (IOException e) {
[Link]("Error al leer el archivo.");
}
escribirArchivo(lineas);
}
// Método auxiliar para reescribir el archivo con los cambios
private void escribirArchivo(List<String> lineas) {
try (BufferedWriter bw = new BufferedWriter(new
FileWriter(nombreArchivo))) {
for (String linea : lineas) {
[Link](linea);
[Link]();
}
} catch (IOException e) {
[Link]("Error al escribir en el archivo.");
}
}
// Clase principal para probar el sistema
public static void main(String[] args) {
GestorNotas gestor = new GestorNotas("[Link]");
[Link]("Pedro", 7.5);
[Link]();
[Link]("Carlos", 9.2);
[Link]();
[Link]("Lucía");
[Link]();
}
}
Ejercicio 2: Inventario de Productos en un Fichero
Enunciado
Vamos a desarrollar un programa para administrar el inventario de productos de una
tienda.
El sistema permitirá:
Consultar el inventario guardado en [Link].
Insertar nuevos productos.
Modificar el precio de un producto.
Eliminar un producto del inventario.
Cada línea del fichero tendrá el formato: Producto;Precio;Cantidad
Ejemplo de contenido del archivo:
Laptop;1200;5
Smartphone;800;10
Tablet;400;8
Especificación técnica
Clase InventarioProductos
Atributos:
o String nombreArchivo
Métodos:
o void consultarInventario(): Lee y muestra el contenido del archivo.
o void insertarProducto(String nombre, double precio, int
cantidad): Agrega un nuevo producto al archivo.
o void modificarPrecio(String nombre, double nuevoPrecio):
Busca un producto y cambia su precio.
o void eliminarProducto(String nombre): Elimina un producto del
archivo.
Solución en código
import [Link].*;
import [Link].*;
public class InventarioProductos {
private String nombreArchivo;
// Constructor
public InventarioProductos(String nombreArchivo) {
[Link] = nombreArchivo;
}
// Consultar el inventario desde el archivo
public void consultarInventario() {
try (BufferedReader br = new BufferedReader(new
FileReader(nombreArchivo))) {
String linea;
while ((linea = [Link]()) != null) {
[Link](linea);
}
} catch (IOException e) {
[Link]("Error al leer el archivo.");
}
}
// Insertar un nuevo producto en el archivo
public void insertarProducto(String nombre, double precio, int cantidad) {
try (FileWriter fw = new FileWriter(nombreArchivo, true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw)) {
[Link](nombre + ";" + precio + ";" + cantidad);
} catch (IOException e) {
[Link]("Error al escribir en el archivo.");
}
}
// Modificar el precio de un producto existente
public void modificarPrecio(String nombre, double nuevoPrecio) {
List<String> lineas = new ArrayList<>();
boolean encontrado = false;
try (BufferedReader br = new BufferedReader(new
FileReader(nombreArchivo))) {
String linea;
while ((linea = [Link]()) != null) {
String[] datos = [Link](";");
if (datos[0].equalsIgnoreCase(nombre)) {
[Link](nombre + ";" + nuevoPrecio + ";" + datos[2]);
encontrado = true;
} else {
[Link](linea);
}
}
} catch (IOException e) {
[Link]("Error al leer el archivo.");
}
if (encontrado) {
escribirArchivo(lineas);
} else {
[Link]("Producto no encontrado.");
}
}
// Eliminar un producto del archivo
public void eliminarProducto(String nombre) {
List<String> lineas = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new
FileReader(nombreArchivo))) {
String linea;
while ((linea = [Link]()) != null) {
String[] datos = [Link](";");
if (!datos[0].equalsIgnoreCase(nombre)) {
[Link](linea);
}
}
} catch (IOException e) {
[Link]("Error al leer el archivo.");
}
escribirArchivo(lineas);
}
// Método auxiliar para reescribir el archivo con los cambios
private void escribirArchivo(List<String> lineas) {
try (BufferedWriter bw = new BufferedWriter(new
FileWriter(nombreArchivo))) {
for (String linea : lineas) {
[Link](linea);
[Link]();
}
} catch (IOException e) {
[Link]("Error al escribir en el archivo.");
}
}
// Clase principal para probar el sistema
public static void main(String[] args) {
InventarioProductos inventario = new
InventarioProductos("[Link]");
[Link]("Televisor", 600, 7);
[Link]();
[Link]("Laptop", 1100);
[Link]();
[Link]("Tablet");
[Link]();
}
}
Ejercicio 3: Gestión de Usuarios en un Archivo
Enunciado
Vamos a desarrollar un programa que permita gestionar usuarios almacenados en un
fichero [Link].
El sistema permitirá:
1. Consultar todos los usuarios guardados en el archivo.
2. Insertar nuevos usuarios.
3. Modificar la edad de un usuario existente.
4. Eliminar un usuario del archivo.
Cada línea del fichero tendrá el formato: Usuario;Edad;Email
Ejemplo de contenido del fichero:
Juan;25;juan@[Link]
Ana;30;ana@[Link]
Pedro;22;pedro@[Link]
Especificación técnica
Clase GestorUsuarios
Atributos:
o String nombreArchivo
Métodos:
o void consultarUsuarios(): Lee y muestra el contenido del archivo.
o void insertarUsuario(String nombre, int edad, String
email): Agrega un nuevo usuario al archivo.
o void modificarEdadUsuario(String nombre, int nuevaEdad):
Busca un usuario y cambia su edad.
o void eliminarUsuario(String nombre): Elimina una línea específica
del archivo.
Solución en código
import [Link].*;
import [Link].*;
public class GestorUsuarios {
private String nombreArchivo;
// Constructor
public GestorUsuarios(String nombreArchivo) {
[Link] = nombreArchivo;
}
// Consultar los usuarios en el archivo
public void consultarUsuarios() {
try (BufferedReader br = new BufferedReader(new
FileReader(nombreArchivo))) {
String linea;
while ((linea = [Link]()) != null) {
[Link](linea);
}
} catch (IOException e) {
[Link]("Error al leer el archivo.");
}
}
// Insertar un nuevo usuario en el archivo
public void insertarUsuario(String nombre, int edad, String email) {
try (FileWriter fw = new FileWriter(nombreArchivo, true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw)) {
[Link](nombre + ";" + edad + ";" + email);
} catch (IOException e) {
[Link]("Error al escribir en el archivo.");
}
}
// Modificar la edad de un usuario existente
public void modificarEdadUsuario(String nombre, int nuevaEdad) {
List<String> lineas = new ArrayList<>();
boolean encontrado = false;
try (BufferedReader br = new BufferedReader(new
FileReader(nombreArchivo))) {
String linea;
while ((linea = [Link]()) != null) {
String[] datos = [Link](";");
if (datos[0].equalsIgnoreCase(nombre)) {
[Link](nombre + ";" + nuevaEdad + ";" + datos[2]);
encontrado = true;
} else {
[Link](linea);
}
}
} catch (IOException e) {
[Link]("Error al leer el archivo.");
}
if (encontrado) {
escribirArchivo(lineas);
} else {
[Link]("Usuario no encontrado.");
}
}
// Eliminar un usuario del archivo
public void eliminarUsuario(String nombre) {
List<String> lineas = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new
FileReader(nombreArchivo))) {
String linea;
while ((linea = [Link]()) != null) {
String[] datos = [Link](";");
if (!datos[0].equalsIgnoreCase(nombre)) {
[Link](linea);
}
}
} catch (IOException e) {
[Link]("Error al leer el archivo.");
}
escribirArchivo(lineas);
}
// Método auxiliar para reescribir el archivo con los cambios
private void escribirArchivo(List<String> lineas) {
try (BufferedWriter bw = new BufferedWriter(new
FileWriter(nombreArchivo))) {
for (String linea : lineas) {
[Link](linea);
[Link]();
}
} catch (IOException e) {
[Link]("Error al escribir en el archivo.");
}
}
// Clase principal para probar el sistema
public static void main(String[] args) {
GestorUsuarios gestor = new GestorUsuarios("[Link]");
[Link]("Maria", 28, "maria@[Link]");
[Link]();
[Link]("Ana", 35);
[Link]();
[Link]("Pedro");
[Link]();
}
}