Completo ejercicio 21

This commit is contained in:
2023-05-23 00:27:27 +02:00
parent a9ebd023fe
commit 6b15dde8dd
4 changed files with 102 additions and 58 deletions

5
contactos.txt Normal file
View File

@@ -0,0 +1,5 @@
Alba,12412424
Pablo,jeta
Ricardo,616
pablo,234234
pipa,12345

View File

@@ -5,6 +5,9 @@ public class App {
boolean salir = false; boolean salir = false;
Manager manager = new Manager(); Manager manager = new Manager();
do { do {
System.out.println("=======================");
System.out.println("Agenda de contactos TXT");
System.out.println("=======================");
System.out.println("1. Nuevo contacto"); System.out.println("1. Nuevo contacto");
System.out.println("2. Buscar por nombre"); System.out.println("2. Buscar por nombre");
System.out.println("3. Mostrar todos"); System.out.println("3. Mostrar todos");
@@ -13,19 +16,15 @@ public class App {
int opcion = Integer.parseInt(System.console().readLine()); int opcion = Integer.parseInt(System.console().readLine());
switch (opcion) { switch (opcion) {
case 1: case 1:
System.out.println("Nuevo contacto");
manager.nuevoContacto(); manager.nuevoContacto();
break; break;
case 2: case 2:
System.out.println("Buscar por nombre");
manager.buscarPorNombre(); manager.buscarPorNombre();
break; break;
case 3: case 3:
System.out.println("Mostrar todos");
manager.muestraTodos(); manager.muestraTodos();
break; break;
case 4: case 4:
System.out.println("Salir");
manager.guardar(); manager.guardar();
salir = true; salir = true;
break; break;
@@ -37,7 +36,6 @@ public class App {
} }
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
System.out.println("Agenda de contactos TXT");
menu(); menu();
} }
} }

View File

@@ -1,92 +1,127 @@
package agenda; package agenda;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
public class Manager { public class Manager {
String fileName = "data/contactos.txt"; String fileName = "contactos.txt";
ArrayList<Persona> personas; ArrayList<Persona> personas;
int limite; int limite;
public Manager() { public Manager() {
personas = new ArrayList<Persona>(); personas = new ArrayList<Persona>();
limite = 2; limite = 5;
cargar(); 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"); System.out.println("Guarda datos");
BufferedWriter out = null; BufferedWriter out = null;
try { // Guarda siempre ordenado
Collections.sort(personas);
try {
out = new BufferedWriter(new FileWriter(fileName)); out = new BufferedWriter(new FileWriter(fileName));
for (Persona persona : personas) { for (Persona persona : personas) {
out.write(persona.getNombre() + "," + persona.getTelefono()); out.write(persona.getNombre() + "," + persona.getTelefono());
out.newLine(); out.newLine();
} }
} catch(Exception e) { } catch (Exception e) {
System.out.println("Error guardando el archivo" + e.getMessage()); System.out.println("Error guardando el archivo " + e.getMessage());
} finally { } finally {
if (out != null) { if (out != null) {
try { try {
out.close(); out.close();
} catch (Exception e) { } 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() { public void nuevoContacto() {
System.out.println("Carga datos"); if (personas.size() == limite) {
BufferedReader in = null; System.out.println("No se pueden guardar más contactos");
try {
in = new BufferedReader(new FileReader(fileName));
} catch (Exception e) {
// Si el fichero no existe no se carga nada
return; return;
} }
try { System.out.println("Nuevo contacto");
String line = in.readLine(); System.out.println("Nombre: ");
while (line != null) { String nombre = System.console().readLine();
String[] data = line.split(","); if (buscaNombre(nombre) != null) {
personas.add(new Persona(data[0], data[1])); System.out.println("El nombre ya existe");
line = in.readLine(); return;
} }
} catch (Exception e) { System.out.println("Teléfono: ");
System.out.println("Error cargando el archivo" + e.getMessage()); String telefono = System.console().readLine();
} finally { personas.add(new Persona(nombre, telefono));
try { System.out.println("Contacto guardado");
in.close(); }
} catch (Exception e) {
System.out.println("Error al cerrar el archivo" + e.getMessage()); Persona buscaNombre(String nombre) {
for (Persona persona : personas) {
if (persona.getNombre().equals(nombre)) {
return persona;
} }
} }
return null;
}
public void nuevoContacto () { public void buscarPorNombre() {
if (personas.size() == limite) { System.out.println("Buscar por nombre");
System.out.println("No se pueden guardar más contactos"); System.out.println("-----------------");
return; System.out.println("Nombre: ");
} String nombre = System.console().readLine();
System.out.println("Nuevo contacto"); for (Persona persona : personas) {
System.out.println("Nombre: "); if (persona.getNombre().startsWith(nombre)) {
String nombre = System.console().readLine(); System.out.println("Nombre: " + persona.getNombre());
System.out.println("Teléfono: "); System.out.println("Teléfono: " + persona.getTelefono());
String telefono = System.console().readLine(); System.out.println("------------------------------");
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 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("------------------------------");
}
}

View File

@@ -1,6 +1,6 @@
package agenda; package agenda;
public class Persona { public class Persona implements Comparable {
private String nombre; private String nombre;
private String telefono; private String telefono;
@@ -29,4 +29,10 @@ public class Persona {
public void setTelefono(String telefono) { public void setTelefono(String telefono) {
this.telefono = telefono; this.telefono = telefono;
} }
@Override
public int compareTo(Object temp) {
Persona persona = (Persona) temp;
return nombre.compareTo(persona.getNombre());
}
} }