C#: Agenda básica en C# (3)
Agenda básica, para guardar datos de hasta 1000 personas. Permite añadir y buscar. Versión con funciones y ficheros.
Lenguaje: C# (compilador: Mono 2.10.6)
Categoría: Básico
// Fuente procedente de ErrorDeSintaxis.es
// Agenda básica, para guardar datos de hasta
// 1000 personas. Permite añadir y buscar.
// Versión con funciones y ficheros.
// Compilador: Mono 2.10.6
// Nivel: Intermedio
// Disponible desde 23/12/2011
// Aportado por Nacho
// Autor original: Nacho Cabanes
// Web original: http://www.nachocabanes.com/csharp/curso/
/* Agenda básica, para guardar datos de hasta 1000 personas. De cada persona, se almacena el nombre, correo electrónico y año de nacimiento. Permite: añadir un dato, mostrar todos, buscar Versión 3, usando funciones y ficheros */ using System; using System.IO; public class Agenda3 { struct tipoPersona { public string nombre; public string email; public ushort anyoNacimiento; } static int capacidad = 100; static tipoPersona[] gente = new tipoPersona[capacidad]; static int cantidad = 0; static bool terminado = false; static string nombreFichero = "agenda.dat"; public static void MostrarMenu() { Console.WriteLine("Agenda básica"); Console.WriteLine(); Console.WriteLine("1- Añadir una nueva persona"); Console.WriteLine("2- Ver nombres de todos"); Console.WriteLine("3- Buscar una persona"); Console.WriteLine("0- Salir"); } public static string LeerOpcion() { Console.Write("Escoja una opción: "); string opcion = Console.ReadLine(); Console.WriteLine(); return opcion; } public static void NuevoDato() { if (cantidad < capacidad - 1) { Console.WriteLine("Introduciendo la persona {0}", cantidad + 1); Console.Write("Introduzca el nombre: "); gente[cantidad].nombre = Console.ReadLine(); Console.Write("Introduzca el correo electrónico: "); gente[cantidad].email = Console.ReadLine(); Console.Write("Introduzca el año de nacimiento: "); gente[cantidad].anyoNacimiento = Convert.ToUInt16(Console.ReadLine()); cantidad++; Console.WriteLine(); GuardarEnFichero(); } else Console.WriteLine("Base de datos llena"); } public static void MostrarDatos() { if (cantidad == 0) Console.WriteLine("No hay datos"); else for (int i = 0; i < cantidad; i++) Console.WriteLine("{0}: {1}", i + 1, gente[i].nombre); Console.WriteLine(); } public static void BuscarDatos() { Console.Write("¿Qué texto busca? "); string buscar = Console.ReadLine(); bool encontrado = false; for (int i = 0; i < cantidad; i++) if (buscar.ToUpper() == gente[i].nombre.ToUpper()) { encontrado = true; Console.WriteLine( "{0}: Nombre: {1}, Email: {2}, Nacido en: {3}", i + 1, gente[i].nombre, gente[i].email, gente[i].anyoNacimiento); } if (!encontrado) { Console.WriteLine("No se ha encontrado."); Console.WriteLine(); } Console.WriteLine(); } public static void LeerDeFichero() { if (File.Exists(nombreFichero)) { Console.WriteLine("Abriendo fichero..."); StreamReader fichero = File.OpenText(nombreFichero); string linea1, linea2, linea3; do { linea1 = fichero.ReadLine(); if (linea1 == null) // Fichero vacío o fin de fichero break; linea2 = fichero.ReadLine(); linea3 = fichero.ReadLine(); if (cantidad < capacidad - 1) { gente[cantidad].nombre = linea1; gente[cantidad].email = linea2; gente[cantidad].anyoNacimiento = Convert.ToUInt16(linea3); cantidad++; } } while ((linea1 != null) && (linea2 != null) && (linea3 != null)); fichero.Close(); } } public static void GuardarEnFichero() { StreamWriter fichero = File.CreateText(nombreFichero); for (int i = 0; i < cantidad; i++) { fichero.WriteLine(gente[i].nombre); fichero.WriteLine(gente[i].email); fichero.WriteLine(gente[i].anyoNacimiento); } fichero.Close(); } public static void Main() { // Bucle principal LeerDeFichero(); do { MostrarMenu(); switch (LeerOpcion()) { case "1": NuevoDato(); break; case "2": MostrarDatos(); break; case "3": BuscarDatos(); break; case "0": // Salir de la aplicación Console.WriteLine(); Console.WriteLine("Saliendo..."); Console.WriteLine(); terminado = true; break; default: Console.WriteLine(); Console.WriteLine("Opción incorrecta!"); Console.WriteLine(); break; } } while (!terminado); } }