public static void actualizar(string fActual) { // Crear un fichero temporal string ficheroTemp = "listatfnos.tmp"; CListaTfnos ftemp = new CListaTfnos(ficheroTemp); int nregs = listatfnos.númeroDeRegs(); // Copiar en el fichero temporal todos los registros del // fichero actual que en su campo teléfono no tengan un 0 CPersona obj; for (int reg_i = 0; reg_i < nregs; reg_i++) { obj = listatfnos.leerReg(reg_i); if (obj.obtenerTeléfono() != 0) { ftemp.añadirReg(obj); } } listatfnos.cerrarFichero(); ftemp.cerrarFichero(); File.Copy(ficheroTemp, fActual, true); File.Delete(ficheroTemp); }
public static void Main(string[] args) { int opción = 0, pos = -1; string cadenabuscar = null; string nombre, dirección; long teléfono; bool eliminado = false; bool modificado = false; CPersona obj; try { // Crear un objeto lista de teléfonos vacío (con 0 elementos) // o con el contenido del fichero listatfnos.dat si existe. string fichero = "listatfnos.dat"; listatfnos = new CListaTfnos(fichero); do { opción = menú(); switch (opción) { case 1: // buscar Console.Write("conjunto de caracteres a buscar "); cadenabuscar = Console.ReadLine(); pos = listatfnos.buscarReg(cadenabuscar, 0); if (pos == -1) { if (listatfnos.númeroDeRegs() != 0) { Console.WriteLine("búsqueda fallida"); } else { Console.WriteLine("lista vacía"); } } else { obj = listatfnos.leerReg(pos); Console.WriteLine("Número de registro: " + pos); Console.WriteLine(obj.obtenerNombre()); Console.WriteLine(obj.obtenerDirección()); Console.WriteLine(obj.obtenerTeléfono()); } break; case 2: // buscar siguiente pos = listatfnos.buscarReg(cadenabuscar, pos + 1); if (pos == -1) { if (listatfnos.númeroDeRegs() != 0) { Console.WriteLine("búsqueda fallida"); } else { Console.WriteLine("lista vacía"); } } else { obj = listatfnos.leerReg(pos); Console.WriteLine("Número de registro: " + pos); Console.WriteLine(obj.obtenerNombre()); Console.WriteLine(obj.obtenerDirección()); Console.WriteLine(obj.obtenerTeléfono()); } break; case 3: // modificar // Solicitar el número de registro a modificar Console.Write("número de registro entre 0 y " + (listatfnos.númeroDeRegs() - 1) + ": "); pos = Leer.datoInt(); modificado = modificar(pos); if (modificado) { Console.WriteLine("modificación realizada con éxito"); } else { Console.WriteLine("error: no se modificó el registro"); } break; case 4: // añadir Console.Write("nombre: "); nombre = Console.ReadLine(); Console.Write("dirección: "); dirección = Console.ReadLine(); Console.Write("teléfono: "); teléfono = Leer.datoLong(); listatfnos.añadirReg(new CPersona(nombre, dirección, teléfono)); break; case 5: // eliminar Console.Write("teléfono: "); teléfono = Leer.datoLong(); eliminado = listatfnos.eliminarReg(teléfono); if (eliminado) { Console.WriteLine("registro eliminado"); } else if (listatfnos.númeroDeRegs() != 0) { Console.WriteLine("teléfono no encontrado"); } else { Console.WriteLine("lista vacía"); } break; case 6: // imprimir imprimirListaTfnos(); break; case 7: // salir // guardar lista if (listatfnos.tieneRegsEliminados()) { actualizar(fichero); } listatfnos = null; break; } }while(opción != 7); } catch (IOException e) { Console.WriteLine("Error: " + e.Message); } }