POO CON C#: 010-CRUD CON LISTAS Y PROGRAMACIÓN ORIENTADA A OBJETOS (NO DB) P3

Kevin Arias
POO CON C#: 010-CRUD CON LISTAS Y PROGRAMACIÓN ORIENTADA A OBJETOS (NO DB) P3
"En esta tercera parte del CRUD empleado con POO sobre una lista estática, veremos el tema de editar y eliminar datos de una persona."

En este ejemplo Concluímos los temas de POO en lo que ahora veremos las acciones de editar y eliminar datos de una persona sobre nuestra lista estática.

Seguidamente les dejo el código que se emplea para este ejemplo.

Datos.cs

using System.Collections.Generic;

namespace AppFirst
{
    public class Datos
    {
        public static List dataPersona = new List();
    }
}

AccesoDatos.cs

using System;
using System.Collections.Generic;

namespace AppFirst
{
    public class AccesoDatos : IAccesoDatos
    {
        public bool create(Persona persona)
        {
            Datos.dataPersona.Add(persona);

            return true;
        }

        public bool delete(string documentoIdentidad)
        {
            int posicionPersona = 0;
            bool existePersona = false;

            foreach (Persona item in Datos.dataPersona)
            {
                if (item.documentoIdentidad == documentoIdentidad)
                {
                    existePersona = true;

                    break;
                }

                posicionPersona++;
            }

            if (existePersona)
            {
                Datos.dataPersona.RemoveAt(posicionPersona);

                return true;
            }
            else
            {
                return false;
            }
        }

        public List read()
        {
            return Datos.dataPersona;
        }

        public bool update(Persona persona, int posicionPersona)
        {
            Datos.dataPersona[posicionPersona - 1].nombre = persona.nombre;
            Datos.dataPersona[posicionPersona - 1].apellido = persona.apellido;
            Datos.dataPersona[posicionPersona - 1].documentoIdentidad = persona.documentoIdentidad;
            Datos.dataPersona[posicionPersona - 1].sexo = persona.sexo;
            Datos.dataPersona[posicionPersona - 1].fechaNacimiento = persona.fechaNacimiento;
            Datos.dataPersona[posicionPersona - 1].estatura = persona.estatura;
            Datos.dataPersona[posicionPersona - 1].fechaModificacion = persona.fechaModificacion;

            return true;
        }
    }
}

IAccesoDatos.cs

using System.Collections.Generic;

namespace AppFirst
{
    public interface IAccesoDatos
    {
        bool create(Persona persona);
        List read();
        bool update(Persona persona, int posicionPersona);
        bool delete(string documentoIdentidad);
    }
}

Auditoria.cs

using System;

namespace AppFirst
{
    public abstract class Auditoria
    {
        public DateTime fechaRegistro { get; set; }
        public DateTime fechaModificacion { get; set; }
    }
}

Persona.cs

using System;

namespace AppFirst
{
    public class Persona : Auditoria
    {
        public string nombre { get; set; }
        public string apellido { get; set; }
        public string documentoIdentidad { get; set; }
        public bool sexo { get; set; }
        public DateTime fechaNacimiento { get; set; }
        public float estatura { get; set; }
    }
}

Negocio.cs

using System;
using System.Collections.Generic;

namespace AppFirst
{
    public class Negocio
    {
        public void insertar()
        {
            Console.WriteLine("Ingrese nombre: ");
            string nombre = Console.ReadLine();

            Console.WriteLine("Ingrese apellido: ");
            string apellido = Console.ReadLine();

            Console.WriteLine("Ingrese documento de identidad: ");
            string documentoIdentidad = Console.ReadLine();

            Console.WriteLine("Ingrese sexo: ");
            bool sexo = Console.ReadLine()=="M" ? true : false;

            Console.WriteLine("Ingrese fecha de nacimiento: ");
            DateTime fechaNacimiento = DateTime.Parse(Console.ReadLine());

            Console.WriteLine("Ingrese estatura: ");
            float estatura = float.Parse(Console.ReadLine());

            Persona persona = new Persona();

            persona.nombre = nombre;
            persona.apellido = apellido;
            persona.documentoIdentidad = documentoIdentidad;
            persona.sexo = sexo;
            persona.fechaNacimiento = fechaNacimiento;
            persona.estatura = estatura;
            persona.fechaRegistro = DateTime.Now;
            persona.fechaModificacion = DateTime.Now;

            IAccesoDatos iAccesoDatos = new AccesoDatos();

            if (iAccesoDatos.create(persona))
            {
                Console.WriteLine("Datos registrados correctamente.");
            }
            else
            {
                Console.WriteLine("No se pudo registrar los datos.");
            }
        }

        public void listar()
        {
            IAccesoDatos iAccesoDatos = new AccesoDatos();

            List listaPersona = iAccesoDatos.read();

            int i = 1;

            foreach (Persona item in listaPersona)
            {
                Console.WriteLine(string.Concat(i, ". ", item.nombre, "---", item.apellido, "---", item.documentoIdentidad, "---", item.sexo, "---", item.fechaNacimiento, "---", item.estatura, "---", item.fechaRegistro, "---", item.fechaModificacion));

                i++;
            }
        }

        public void editar()
        {
            listar();

            Console.WriteLine();
            Console.WriteLine("Ingrese el nro de la persona que desea editar:");
            int posicionPersona = int.Parse(Console.ReadLine());

            Console.WriteLine("Ingrese nombre: ");
            string nombre = Console.ReadLine();

            Console.WriteLine("Ingrese apellido: ");
            string apellido = Console.ReadLine();

            Console.WriteLine("Ingrese documento de identidad: ");
            string documentoIdentidad = Console.ReadLine();

            Console.WriteLine("Ingrese sexo: ");
            bool sexo = Console.ReadLine() == "M" ? true : false;

            Console.WriteLine("Ingrese fecha de nacimiento: ");
            DateTime fechaNacimiento = DateTime.Parse(Console.ReadLine());

            Console.WriteLine("Ingrese estatura: ");
            float estatura = float.Parse(Console.ReadLine());

            Persona persona = new Persona();

            persona.nombre = nombre;
            persona.apellido = apellido;
            persona.documentoIdentidad = documentoIdentidad;
            persona.sexo = sexo;
            persona.fechaNacimiento = fechaNacimiento;
            persona.estatura = estatura;
            persona.fechaModificacion = DateTime.Now;

            IAccesoDatos iAccesoDatos = new AccesoDatos();

            if (iAccesoDatos.update(persona, posicionPersona))
            {
                Console.WriteLine("Datos modificados correctamente.");
            }
            else
            {
                Console.WriteLine("No se pudo modificar los datos.");
            }
        }

        public void eliminar()
        {
            listar();

            Console.WriteLine();
            Console.WriteLine("Ingrese el documento de identidad de la persona que desea eliminar:");
            string documentoIdentidad = Console.ReadLine();

            IAccesoDatos iAccesoDatos = new AccesoDatos();

            if (iAccesoDatos.delete(documentoIdentidad))
            {
                Console.WriteLine("Persona eliminada correctamente.");
            }
            else
            {
                Console.WriteLine("No se pudo eliminar los datos porque la persona no existe.");
            }
        }
    }
}

Program.cs

using System;

namespace AppFirst
{
    public class Program
    {
        public static void Main(string[] args)
        {
            int opcionSeleccionada = 0;
            int x;

            Negocio negocio = new Negocio();

            while (opcionSeleccionada != 5)
            {
                Console.WriteLine("1. Insertar persona.");
                Console.WriteLine("2. Listar personas.");
                Console.WriteLine("3. Editar persona.");
                Console.WriteLine("4. Eliminar persona.");
                Console.WriteLine("5. Salir.");
                Console.WriteLine("----------------------------------------------------");
                Console.WriteLine("Ingrese una opción:");

                string opcionSeleccionadaTemporal = Console.ReadLine();

                if (int.TryParse(opcionSeleccionadaTemporal, out x))
                {
                    opcionSeleccionada = int.Parse(opcionSeleccionadaTemporal);

                    switch (opcionSeleccionada)
                    {
                        case 1:
                            negocio.insertar();

                            break;
                        case 2:
                            negocio.listar();

                            break;
                        case 3:
                            negocio.editar();

                            break;
                        case 4:
                            negocio.eliminar();

                            break;
                        case 5:

                            break;

                        default:
                            Console.WriteLine("La opción asignada no está definida en el menú.");

                            break;
                    }
                }
                else
                {
                    opcionSeleccionada = 0;

                    Console.WriteLine("El valor ingresado no es correcto");
                }

                if (opcionSeleccionada != 5)
                {
                    Console.ReadLine();
                }

                Console.Clear();
            }
        }
    }
}

A continuación les dejo con un video que explica detalladamente todas las partes del código anterior.


Archivo de soporte disponible
Descarga los materiales del tutorial para practicar localmente.
Descargar archivo
¿Te sirvió este artículo? Apóyanos con una donación para seguir creando contenido gratuito de calidad:
Sobre el autor
Kevin Arnold Arias Figueroa
SOFTWARE ARCHITECT - CODIDEEP E.I.R.L.
Profesional en tecnologías de la información con más de 10 años de experiencia en desarrollo de software empresarial, con amplios conocimientos en manejo de arquitecturas de software de escala vertical y horizontal, gestión de proyectos, liderazgo de equipos y dominio en modelado de procesos a gran escala.
Anterior Siguiente