mar 18 2011
Programando en C Sharp – VI
Para concluir con el bloque de programación básica en C#, les he compartido un “mini proyecto” hecho en Visual Studio 2010; se emplea un objeto Persona con 3 atributos: dni, nombre y edad, los cuales están validados respectivamente, se emplea una lista “List
using System;
using System.Collections.Generic;
namespace Listas
{
public class Persona
{
//Atributos privados de la clase
//Nótese como están escritos [minúsculas]
private int dni;
private string nombre;
private int edad;
//Lista donde se almacenarán los datos
public static List<Persona> personas = new List<Persona>();
/* Emplearemos el uso de #region
* para tener un poco más de orden
* en nuestro entorno de programación
*/
#region Metodos Get y Set
//get: Obtenemos el valor del atributo
//set: Establecemos el valor del atributo
public int Dni
{
get { return dni; }
set { dni = value; }
}
public string Nombre
{
get { return nombre; }
set { nombre = value; }
}
public int Edad
{
get { return edad; }
set { edad = value; }
}
#endregion
#region Constructores
//Constructor sin parámetros [por default]
public Persona()
{
}
//Constructor con parámetros
public Persona(int d, string n, int e)
{
// this.dni refierido a:
// la variable privada declarada al inicio
this.dni = d;
this.nombre = n;
this.edad = e;
}
#endregion
#region Validaciones de numeros y letras
//validaciones
public static int ValidarNumeros(string tipoNumero)
{
int valor = -1;
string texto;
bool validar = true;
do
{
//try catch: Manejo de excepciones
try
{
//En este bloque se coloca
//lo que podría darnos error
texto = Console.ReadLine();
if (texto.Equals(""))
{
//Salimos del bucle
//motivo: ingreso de un vacio
break;
}
//Parseamos a un Integer32 el texto ingresado
valor = Int32.Parse(texto);
validar = false;
}
catch (Exception ex)
{
Console.Write("Ingrese " + tipoNumero + ": ");
}
} while (validar || valor < 0);
/* Para entender este do while, recordemos
* tablas de verdad [clases de lógica]
* A V B | Resulta | Comentario
* 0 0 | 0 | Necesitamos que esto suceda.
* 0 1 | 1 |
* 1 0 | 1 |
* 1 1 | 1 |
*/
return valor;
}
public static string ValidarLetras(string tipoLetra)
{
//Valida solamente que no se ingresen valores vacios
string texto = null;
do
{
if (texto != null)
{
Console.Write("Ingrese " + tipoLetra + ":");
}
texto = Console.ReadLine();
} while (texto.Equals(""));
return texto;
}
#endregion
#region Metodos de la clase Persona
/* El BuscarV2:
* Recorre la lista hasta que encuentre
* el elemento buscado; donde obtiene toda
* la cantidad de elementos mediante la propiedad
* Count", compara con el código ingresado
* Devuelve la posición del elemento encontrado.
*/
public static int BuscarV2(int dniAux)
{
int pos = -1;
for (int i = 0; i < personas.Count; i++)
{
if (personas[i].Dni.Equals(dniAux) == true)
{
pos = i;
break;
}
}
return pos;
}
public static void RegistrarPersona()
{
//Instanciamos la variable para hacer
//uso de los métodos definidos en ella.
Persona p = new Persona();
Console.WriteLine("\nNuevo Registro");
Console.WriteLine("--------------");
//Asignamos los datos
do{
Console.Write("\nDni: ");
p.Dni = ValidarNumeros("Dni");
Console.Write("Nombre: ");
p.Nombre = ValidarLetras("Nombre");
Console.Write("Edad: ");
p.Edad = ValidarNumeros("Edad");
if (p.Dni == -1 || p.Edad == -1)
{
Console.WriteLine("Corregir valores vacios");
}
}while(p.Dni== -1 || p.Edad== -1);
//Ahora procedemos a registrar
personas.Add(p);
Console.WriteLine("\nElemento agregado!");
}
public static void ModificarPersona()
{
Console.WriteLine("\nModificando registros");
Console.WriteLine("----------------------");
int dniaux;
int mod;
Console.Write("Dni: ");
dniaux = ValidarNumeros("Dni");
mod = BuscarV2(dniaux);
if (mod != -1)
{
Console.Write("Nombre: ");
personas[mod].Nombre = ValidarLetras("Nombre");
Console.Write("Edad: ");
personas[mod].Edad = ValidarNumeros("Edad");
Console.WriteLine("\nElemento modificado!");
}
else
{
Console.WriteLine("\nNo se encontró Dni solicitado");
}
}
public static void EliminarPersona()
{
int dniaux;
int mod;
Console.Write("Dni: ");
dniaux = ValidarNumeros("Dni");
mod = BuscarV2(dniaux);
if (mod != -1)
{
personas.RemoveAt(mod);
Console.WriteLine("\nElemento deleteado!");
}
else
{
Console.WriteLine("\nNo se encontró Dni solicitado");
}
}
public static void ReportarPersona()
{
Console.WriteLine("\n");
Console.WriteLine("\nReportando datos ingresados");
Console.WriteLine("---------------------------");
Console.WriteLine("Edad\tNombres\tDni");
for (int i = 0; i < personas.Count; i++)
{
Console.WriteLine(personas[i].Edad + "\t" + personas[i].Nombre + "\t" + personas[i].Dni);
}
Console.WriteLine("\n");
}
#endregion
//Finalmente implementamos el MAIN:
static void Main(string[] args)
{
Console.WriteLine(Console.WindowHeight.ToString());
Console.Title = "Powered by IFXPERU - IFX Informatrix";
int opcion = new int();
do
{
Console.WriteLine("\nTrabajando con List<Persona>");
Console.WriteLine("--------------------------");
Console.WriteLine("");
Console.WriteLine("1.-Registrar");
Console.WriteLine("2.-Modificar");
Console.WriteLine("3.-Eliminar");
Console.WriteLine("4.-Listar");
Console.WriteLine("0.-Salir");
Console.Write("\nIngrese opción: ");
opcion = ValidarNumeros("opción");
switch (opcion)
{
case 1:
RegistrarPersona();
break;
case 2:
ModificarPersona();
break;
case 3:
EliminarPersona();
break;
case 4:
ReportarPersona();
break;
}
} while (opcion!=0);
Console.WriteLine("\nDesconectando...");
Console.Write("Ahora puede apagar del sistema");
Console.ReadLine();
}
}
}





