From 6b15dde8dd22e4c7d8043173ed381a3521eb869d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana?= Date: Tue, 23 May 2023 00:27:27 +0200 Subject: [PATCH] Completo ejercicio 21 --- contactos.txt | 5 ++ src/App.java | 8 +-- src/agenda/Manager.java | 139 +++++++++++++++++++++++++--------------- src/agenda/Persona.java | 8 ++- 4 files changed, 102 insertions(+), 58 deletions(-) create mode 100644 contactos.txt diff --git a/contactos.txt b/contactos.txt new file mode 100644 index 0000000..435892c --- /dev/null +++ b/contactos.txt @@ -0,0 +1,5 @@ +Alba,12412424 +Pablo,jeta +Ricardo,616 +pablo,234234 +pipa,12345 diff --git a/src/App.java b/src/App.java index a5c7501..105e7a8 100644 --- a/src/App.java +++ b/src/App.java @@ -5,6 +5,9 @@ public class App { boolean salir = false; Manager manager = new Manager(); do { + System.out.println("======================="); + System.out.println("Agenda de contactos TXT"); + System.out.println("======================="); System.out.println("1. Nuevo contacto"); System.out.println("2. Buscar por nombre"); System.out.println("3. Mostrar todos"); @@ -13,19 +16,15 @@ public class App { int opcion = Integer.parseInt(System.console().readLine()); switch (opcion) { case 1: - System.out.println("Nuevo contacto"); manager.nuevoContacto(); break; case 2: - System.out.println("Buscar por nombre"); manager.buscarPorNombre(); break; case 3: - System.out.println("Mostrar todos"); manager.muestraTodos(); break; case 4: - System.out.println("Salir"); manager.guardar(); salir = true; break; @@ -37,7 +36,6 @@ public class App { } public static void main(String[] args) throws Exception { - System.out.println("Agenda de contactos TXT"); menu(); } } diff --git a/src/agenda/Manager.java b/src/agenda/Manager.java index 9086cfd..7ee3a1c 100644 --- a/src/agenda/Manager.java +++ b/src/agenda/Manager.java @@ -1,92 +1,127 @@ package agenda; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; public class Manager { - String fileName = "data/contactos.txt"; + String fileName = "contactos.txt"; ArrayList personas; int limite; public Manager() { personas = new ArrayList(); - limite = 2; + limite = 5; cargar(); } - public void guardar() - { + + public void cargar() { + BufferedReader in = null; + try { + in = new BufferedReader(new FileReader(fileName)); + } catch (Exception e) { + // Si no existe el fichero no carga nada + System.out.println("La agenda está vacía"); + return; + } + try { + int num = 0; + String linea = in.readLine(); + while (linea != null) { + String[] datos = linea.split(","); + personas.add(new Persona(datos[0], datos[1])); + num++; + linea = in.readLine(); + } + System.out.println("Se han cargado " + num + " contactos"); + } catch (Exception e) { + System.out.println("Error cargando el archivo " + e.getMessage()); + } finally { + try { + in.close(); + } catch (Exception e) { + System.out.println("Error al cerrar el archivo " + e.getMessage()); + } + } + } + + public void guardar() { System.out.println("Guarda datos"); BufferedWriter out = null; - try { + // Guarda siempre ordenado + Collections.sort(personas); + try { out = new BufferedWriter(new FileWriter(fileName)); for (Persona persona : personas) { out.write(persona.getNombre() + "," + persona.getTelefono()); out.newLine(); } - } catch(Exception e) { - System.out.println("Error guardando el archivo" + e.getMessage()); - } finally { + } catch (Exception e) { + System.out.println("Error guardando el archivo " + e.getMessage()); + } finally { if (out != null) { try { out.close(); } catch (Exception e) { - System.out.println("Error al cerrar el archivo" + e.getMessage()); + System.out.println("Error al cerrar el archivo " + e.getMessage()); } } } } - public void cargar() { - System.out.println("Carga datos"); - BufferedReader in = null; - try { - in = new BufferedReader(new FileReader(fileName)); - } catch (Exception e) { - // Si el fichero no existe no se carga nada + public void nuevoContacto() { + if (personas.size() == limite) { + System.out.println("No se pueden guardar más contactos"); return; } - try { - String line = in.readLine(); - while (line != null) { - String[] data = line.split(","); - personas.add(new Persona(data[0], data[1])); - line = in.readLine(); - } - } catch (Exception e) { - System.out.println("Error cargando el archivo" + e.getMessage()); - } finally { - try { - in.close(); - } catch (Exception e) { - System.out.println("Error al cerrar el archivo" + e.getMessage()); + System.out.println("Nuevo contacto"); + System.out.println("Nombre: "); + String nombre = System.console().readLine(); + if (buscaNombre(nombre) != null) { + System.out.println("El nombre ya existe"); + return; + } + System.out.println("Teléfono: "); + String telefono = System.console().readLine(); + personas.add(new Persona(nombre, telefono)); + System.out.println("Contacto guardado"); + } + + Persona buscaNombre(String nombre) { + for (Persona persona : personas) { + if (persona.getNombre().equals(nombre)) { + return persona; } } + return null; + } - public void nuevoContacto () { - if (personas.size() == limite) { - System.out.println("No se pueden guardar más contactos"); - return; - } - System.out.println("Nuevo contacto"); - System.out.println("Nombre: "); - String nombre = System.console().readLine(); - System.out.println("Teléfono: "); - String telefono = System.console().readLine(); - personas.add(new Persona(nombre, telefono)); - System.out.println("Contacto guardado"); - } - - public void buscarPorNombre () { - System.out.println("Buscar por nombre"); - } - - public void muestraTodos () { - System.out.println("Mostrar todos"); - for (Persona persona : personas) { - System.out.println(persona.getNombre() + " " + persona.getTelefono()); + public void buscarPorNombre() { + System.out.println("Buscar por nombre"); + System.out.println("-----------------"); + System.out.println("Nombre: "); + String nombre = System.console().readLine(); + for (Persona persona : personas) { + if (persona.getNombre().startsWith(nombre)) { + System.out.println("Nombre: " + persona.getNombre()); + System.out.println("Teléfono: " + persona.getTelefono()); + System.out.println("------------------------------"); } } } + + public void muestraTodos() { + System.out.println("Mostrar todos"); + System.out.println("-------------"); + System.out.println("Nombre - Teléfono"); + Collections.sort(personas); + for (Persona persona : personas) { + System.out.println(persona.getNombre() + " " + persona.getTelefono()); + } + System.out.println("------------------------------"); + } +} diff --git a/src/agenda/Persona.java b/src/agenda/Persona.java index f636d4f..a71a375 100644 --- a/src/agenda/Persona.java +++ b/src/agenda/Persona.java @@ -1,6 +1,6 @@ package agenda; -public class Persona { +public class Persona implements Comparable { private String nombre; private String telefono; @@ -29,4 +29,10 @@ public class Persona { public void setTelefono(String telefono) { this.telefono = telefono; } + + @Override + public int compareTo(Object temp) { + Persona persona = (Persona) temp; + return nombre.compareTo(persona.getNombre()); + } }