//Guarda este archivo con el nombre Main.java
//package ....contactos;
import java.io.*;
import java.util.*;
public class Main {
public static Scanner teclado = new Scanner(System.in);
public static PrintStream out = System.out;
public static void pausar(String mensage) {
out.print(mensage + "\nPresione <ENTER> para continuar . . . ");
teclado.nextLine();
out.println();
}
public static String leer_cadena(String mensaje) {
out.print(mensaje + ": ");
return teclado.nextLine();
}
public static int leer_entero(String mensaje) {
try {
return Integer.parseInt(leer_cadena(mensaje));
} catch (NumberFormatException e) {
out.print("N\u00FAmero incorrecto.");
return leer_entero(mensaje);
}
}
public static String ruta = "contactos.tsv";
public static void main(String[] args) {
Funcion<Contacto> imprimir = new Funcion<Contacto>() {
@Override
public void funcion(Contacto contacto, Object parametros) {
out.println(contacto);
int[] contador = (int[]) parametros;
contador[0]++;
}
};
Funcion<Contacto> imprimirEnArchivo = new Funcion<Contacto>() {
@Override
public void funcion(Contacto contacto, Object parametros) {
PrintStream archivo = (PrintStream) parametros;
archivo.print(contacto.getAlias() + "\t");
archivo.print(contacto.getTelefono_fijo() + "\t");
archivo.print(contacto.getTelefono_movil() + "\t");
archivo.print(contacto.getCorreo() + "\n");
}
};
if(!System.getProperties().get("os.name").equals("Linux") && System.console()!=null)
try {
out = new PrintStream(System.out, true, "CP850");
teclado = new Scanner(System.in, "CP850");
} catch (UnsupportedEncodingException e) {}
Vector<Contacto> vector = new Vector<Contacto>();
int i, n;
Contacto dato = null, contacto;
int[] contador = {0};
int opcion, subopcion;
String[] campos;
try {
Scanner entrada = new Scanner(new FileReader(ruta));
while (entrada.hasNextLine()) {
campos = entrada.nextLine().split("\t");
contacto = new Contacto();
contacto.setAlias(campos[0]);
contacto.setTelefono_fijo(campos[1]);
contacto.setTelefono_movil(campos[2]);
contacto.setCorreo(campos[3]);
vector.add(contacto);
}
entrada.close();
} catch (FileNotFoundException e) {}
contacto = new Contacto();
do {
out.println("MEN\u00DA");
out.println("1.- Altas");
out.println("2.- Consultas");
out.println("3.- Actualizaciones");
out.println("4.- Bajas");
out.println("5.- Ordenar registros");
out.println("6.- Listar registros");
out.println("7.- Salir");
do {
opcion = leer_entero ("Seleccione una opci\u00F3n");
if(opcion<1 || opcion>7)
out.println("Opci\u00F3nn no v\u00E1lida.");
} while (opcion<1 || opcion>7);
out.println();
if (vector.isEmpty() && opcion!=1 && opcion!=7) {
pausar("No hay registros.\n");
continue;
}
if (opcion<5) {
contacto.setAlias(leer_cadena ("Ingrese el alias del contacto"));
i = vector.indexOf(contacto);
dato = i<0 ? null : vector.get(i);
if (dato!=null) {
out.println();
imprimir.funcion(dato, contador);
}
}
if (opcion==1 && dato!=null)
out.println("El registro ya existe.");
else if (opcion>=2 && opcion<=4 && dato==null)
out.println("\nRegistro no encontrado.");
else switch (opcion) {
case 1:
contacto.setTelefono_fijo(leer_cadena ("Ingrese el telefono fijo"));
contacto.setTelefono_movil(leer_cadena ("Ingrese el telefono movil"));
contacto.setCorreo(leer_cadena ("Ingrese el correo"));
vector.add(contacto);
contacto = new Contacto();
out.println("\nRegistro agregado correctamente.");
break;
case 3:
out.println("Men\u00FA de modificaci\u00F3n de campos");
out.println("1.- telefono fijo");
out.println("2.- telefono movil");
out.println("3.- correo");
do {
subopcion = leer_entero ("Seleccione un n\u00FAmero de campo a modificar");
if (subopcion<1 || subopcion>3)
out.println("Opci\u00F3n no v\u00E1lida.");
} while (subopcion<1 || subopcion>3);
switch (subopcion) {
case 1:
dato.setTelefono_fijo(leer_cadena ("Ingrese el nuevo telefono fijo"));
break;
case 2:
dato.setTelefono_movil(leer_cadena ("Ingrese el nuevo telefono movil"));
break;
case 3:
dato.setCorreo(leer_cadena ("Ingrese el nuevo correo"));
break;
}
out.println("\nRegistro actualizado correctamente.");
break;
case 4:
vector.remove(dato);
out.println("Registro borrado correctamente.");
break;
case 5:
Collections.sort(vector);
out.println("Registros ordenados correctamente.");
break;
case 6:
n = vector.size();
contador[0] = 0;
for (i=0; i<n; i++)
imprimir.funcion(vector.get(i), contador);
out.println("Total de registros: " + contador[0] + ".");
break;
}
if (opcion<7 && opcion>=1)
pausar("");
} while (opcion!=7);
try {
PrintStream salida = new PrintStream(ruta);
n = vector.size();
for (i=0; i<n; i++)
imprimirEnArchivo.funcion(vector.get(i), salida);
salida.close();
} catch (FileNotFoundException e) {}
}
}
interface Funcion<T extends Comparable<T>> {
void funcion(T dato, Object parametros);
}
class Contacto implements Comparable<Contacto> {
private String alias;
private String telefono_fijo;
private String telefono_movil;
private String correo;
@Override
public boolean equals(Object contacto) {
return this==contacto || (contacto instanceof Contacto && alias.equals(((Contacto)contacto).alias));
}
@Override
public int compareTo(Contacto contacto) {
return alias.compareTo(contacto.alias);
}
@Override
public String toString() {
return
"alias : " + alias + "\n" +
"telefono fijo : " + telefono_fijo + "\n" +
"telefono movil: " + telefono_movil + "\n" +
"correo : " + correo + "\n";
}
public String getAlias() {
return alias;
}
public void setAlias(String alias) {
this.alias = alias;
}
public String getTelefono_fijo() {
return telefono_fijo;
}
public void setTelefono_fijo(String telefono_fijo) {
this.telefono_fijo = telefono_fijo;
}
public String getTelefono_movil() {
return telefono_movil;
}
public void setTelefono_movil(String telefono_movil) {
this.telefono_movil = telefono_movil;
}
public String getCorreo() {
return correo;
}
public void setCorreo(String correo) {
this.correo = correo;
}
}
Comentarios sobre la versión: Versión 1 (3)
gk,vj vv