Acceder Registrarme

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.

Autor: Kevin Arias (Ver todos sus post)

C# C Sharp Programación orientada a objetos POO CRUD Listas

Fecha de publicación: 2016-09-09 17:14:41

Ayúdanos con el arduo trabajo que realizamos.
[POO CON C#] POO CON C#: 010-CRUD CON LISTAS Y PROGRAMACIÓN ORIENTADA A OBJETOS (NO DB) P3

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.




INFORMACIÓN SOBRE EL AUTOR DEL ARTÍCULO
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.


  • Debes estar logueado para realizar comentarios