using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace agenda
{
class Persona
{
#region Atributos
private int _id;
private string _nombre;
private string _apellido;
private string _tel;
private DateTime _nacimiento;
private string _local;
#endregion
#region Propiedades
public int Id
{
get { return _id; }
}
public string Nombre
{
get { return _nombre; }
set { _nombre = value; }
}
public string Apellido
{
get { return _apellido; }
set { _apellido = value; }
}
public string Tel
{
get { return _tel; }
set { _tel = value; }
}
public DateTime Nacimineto
{
get { return _nacimiento; }
set { _nacimiento = value; }
}
public string Local
{
get { return _local; }
set { _local = value; }
}
#endregion
#region Constructor
public Persona()
{ }
public Persona(string nom, string ape, string tel, DateTime nacimiento, string local)
{
_nombre = nom;
_apellido = ape;
_tel = tel;
_nacimiento = nacimiento;
_local = local;
}
#endregion
}
[Serializable]
class Agenda
{
#region Atributos
private List<string> _observaciones;
private List<Persona> _amigo;
private List<DateTime> _alarma;
public const string FILE = "c:\\MiAgenda.xml";
#endregion
#region Propiedades
public List<string> Observaciones
{
get { return _observaciones; }
set { _observaciones = value; }
}
public List<Persona> Amigo
{
get { return _amigo; }
set { _amigo = value; }
}
public List<DateTime> Alarma
{
get { return _alarma; }
set { _alarma = value; }
}
#endregion
#region Metodos
static public void GuardarEnDisco(Agenda aux)
{
XmlTextWriter wr = new XmlTextWriter(FILE, Encoding.UTF8);
XmlSerializer sr = new XmlSerializer(typeof(Agenda));
sr.Serialize(wr, aux);
Console.WriteLine("Guardando datos...");
Console.ReadKey();
Console.WriteLine("Datos guardados");
Console.Read();
}
public Agenda()
{
_observaciones =new List<string>();
_amigo = new List<Persona>();
_alarma = new List<DateTime>();
}
public void CargarPersonas()
{
Console.WriteLine("Nombre:");
string nom = Console.ReadLine();
Console.WriteLine("Apellido:");
string ape = Console.ReadLine();
Console.WriteLine("Teléfono: ");
string tel = Console.ReadLine();
Console.WriteLine("Localidad: ");
string loc = Console.ReadLine();
Console.WriteLine("Ingrese Fecha de nacimiento: \n Año:");
int año = int.Parse(Console.ReadLine());
Console.WriteLine("Mes:\n");
int mes = int.Parse(Console.ReadLine());
Console.WriteLine("Dia: ");
int dia = int.Parse(Console.ReadLine());
DateTime fech = new DateTime(año, mes, dia);
Persona auxx = new Persona(nom, ape, tel, fech, loc);
Amigo.Add(auxx);
}
public void ModificarDatos(Agenda aux)
{
GuardarEnDisco(aux);
string rta = "s";
while (rta == "s")
{
Console.WriteLine("Datos de la persona a buscar:");
Console.WriteLine("Nombre:");
string auxnom = Console.ReadLine();
Console.WriteLine("Apellido:");
string auxape = Console.ReadLine();
int flag = 0;
foreach (Persona a in Amigo)
{
if (a.Nombre == auxnom && a.Apellido == auxape)
{
flag = 1;
Console.WriteLine("Ingrese nuevos datos");
CargarPersonas();
}
}
if (flag == 0)
{
Console.WriteLine("Persona inexistente");
Console.Read();
}
Console.WriteLine("Modificar otro -> s/n?");
rta = Console.ReadLine();
while (rta != "s" || rta != "n")
{
Console.WriteLine("Respuesta no valida\nReingrese");
Console.WriteLine("Modificar otro -> s/n?");
rta = Console.ReadLine();
}
}
}
public void EliminarPersonas(Agenda aux)
{
GuardarEnDisco(aux);
string rta = "s";
while (rta == "s")
{
Console.WriteLine("Datos de la persona a eliminar:");
Console.WriteLine("Nombre:");
string auxnom = Console.ReadLine();
Console.WriteLine("Apellido:");
string auxape = Console.ReadLine();
int flag = 0;
foreach (Persona a in Amigo)
{
if (a.Nombre == auxnom && a.Apellido == auxape)
{
flag = 1;
Console.WriteLine("Realmente desea eliminar esta persona?");
Console.WriteLine("Nombre:{0}\nApellidp:{0}", auxnom, auxape);
Console.WriteLine("s/n?");
string op = Console.ReadLine();
while (op != "s" || op != "n")
{
Console.WriteLine("Respuesta no valida\nReingrese:");
Console.WriteLine("Eliminar ->s/n?");
op = Console.ReadLine();
}
if (rta == "s")
{
Console.WriteLine("Persona Eliminada");
}
}
}
if (flag == 0)
{
Console.WriteLine("Persona inexistente");
}
Console.WriteLine("Eliminar otro -> s/n?");
rta = Console.ReadLine();
while (rta != "s" || rta != "n")
{
Console.WriteLine("Respuesta no valida\nReingrese");
Console.WriteLine("Eliminar otro -> s/n?");
rta = Console.ReadLine();
}
}
}
public void BuscarPersonas()
{
Console.WriteLine(" BUSQUEDA DE PERSONAS \n ");
Console.WriteLine("1-por apellido\n2-por loccalidad");
int opi = int.Parse(Console.ReadLine());
while (opi != 1 && opi != 2)
{
Console.WriteLine(" ERROR, opcion no valida reingrese\nBUSQUEDA DE PERSONAS \n ");
Console.WriteLine("1-por apellido\n2-por loccalidad");
opi = int.Parse(Console.ReadLine());
}
int esta = 0;
if (opi == 1)
{
Console.WriteLine(" Ingrese Apellido: \n");
string auxape = Console.ReadLine();
foreach (Persona var in _amigo)
{
if (auxape == var.Apellido)
Console.WriteLine("ID:{0}\nNombre:{0}\nApellido:{0}\nFecha de nacimiento:{0}\nTelefono:{0}\nLocalidad:{0}", var.Id, var.Nombre, var.Apellido, var.Nombre, var.Tel, var.Local);
Console.Read();
esta = 1;
}
}
else
{
Console.WriteLine(" Ingrese Localidad: \n");
string auxloki = Console.ReadLine();
foreach (Persona var in _amigo)
{
if (auxloki == var.Local)
Console.WriteLine("ID:{0}\nNombre:{0}\nApellido:{0}\nFecha de nacimiento:{0}\nTelefono:{0}\nLocalidad:{0}", var.Id, var.Nombre, var.Apellido, var.Nombre, var.Tel, var.Local);
Console.Read();
esta = 1;
}
}
if (esta == 0)
Console.WriteLine(" la persona es inexistente");
}
public void Aniversarios()
{
DateTime actual = DateTime.Now;
int flag = 0;
foreach (Persona fecha in Amigo)
{
if (fecha.Nacimineto == actual)
{
flag = 1;
Console.WriteLine("FELIZ CUMPLEAÑOS {0}{1}\n", fecha.Nombre, fecha.Apellido);
Console.WriteLine("ID:{0}\nNombre:{0}\nApellido:{0}\nFecha de nacimiento:{0}\nTelefono:{0}\nLocalidad:{0}", fecha.Id, fecha.Nombre, fecha.Apellido, fecha.Nombre, fecha.Tel, fecha.Local);
Console.Read();
}
}
if (flag == 0)
{
Console.WriteLine("No hay aniversarios");
Console.ReadLine();
}
}
public void Salir()
{
Console.WriteLine("SALIR, ADIOOOOSS!!");
Console.Read();
}
public void DefinirAlarma()
{
Console.WriteLine("ingrse fecha de recordatorio");
Console.WriteLine("Año:");
int año = int.Parse(Console.ReadLine());
while (año < DateTime.Now.Year)
{
Console.WriteLine("ERROR, REINGRSE año:");
año = int.Parse(Console.ReadLine());
}
Console.WriteLine("Mes:\n");
int mes = int.Parse(Console.ReadLine());
while (mes < DateTime.Now.Month)
{
Console.WriteLine("REINGRESE Mes:");
mes = int.Parse(Console.ReadLine());
}
Console.WriteLine("Dia: ");
int dia = int.Parse(Console.ReadLine());
while (dia > 31 && dia < 0)
{
Console.WriteLine("REINGRESE dia:");
dia = int.Parse(Console.ReadLine());
}
if (mes == DateTime.Now.Month)
while (dia < DateTime.Now.Day)
{
Console.WriteLine("ERROR, no puede ingresar una fecha anterior,,, Reingrse:");
dia = int.Parse(Console.ReadLine());
}
DateTime fech = new DateTime(año, mes, dia);
Alarma.Add(fech);
Console.WriteLine("Ingrese observacion");
string obs = Console.ReadLine();
Observaciones.Add(obs);
}
public void RealizarBackup(Agenda aux)
{
GuardarEnDisco(aux);
}
public void Menu()
{
Console.Clear();
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("╔══════════════════════════════════════════════╗");
Console.WriteLine("║ MENU ║");
Console.WriteLine("╚══════════════════════════════════════════════╝");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("C");
Console.ResetColor();
Console.WriteLine("argar Personas");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("M");
Console.ResetColor();
Console.WriteLine("odificacion de Datos");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("E");
Console.ResetColor();
Console.WriteLine("liminar Personas");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("A");
Console.ResetColor();
Console.WriteLine("niversarios");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("D");
Console.ResetColor();
Console.WriteLine("efinir Alarmas");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("B");
Console.ResetColor();
Console.WriteLine("uscar");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("R");
Console.ResetColor();
Console.WriteLine("ealizar Backup");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("S");
Console.ResetColor();
Console.WriteLine("alir");
Console.ForegroundColor = ConsoleColor.Red;
Console.Read();
}
#endregion
}
class Program
{
static void Main(string[] args)
{
Agenda miagenda = new Agenda();
miagenda.Menu();
string op =Console.ReadLine();
while (op != "C" && op != "M" && op != "E" && op != "A" && op != "D" && op != "B" && op != "R" && op != "S")
{
Console.Beep(200, 35);
Console.WriteLine("ERROR, REINGRESE SU OPCION:");
op = Console.ReadLine();
}
switch (op)
{
case "C":
miagenda.CargarPersonas();
break;
case "M":
miagenda.ModificarDatos(miagenda);
break;
case "E":
miagenda.EliminarPersonas(miagenda);
break;
case "A":
miagenda.Aniversarios();
break;
case "D":
miagenda.DefinirAlarma();
break;
case "B":
miagenda.BuscarPersonas();
break;
case "R":
miagenda.RealizarBackup(miagenda);
break;
case "S":
miagenda.Salir();
break;
}
}
}
}