AD Ruiz Sanchez Alfredo Practica1 Tarea1

8
ACCESO A DATOS Práctica 1 – Tarea 1 Alfredo Ruiz Sánchez DAM 2

Transcript of AD Ruiz Sanchez Alfredo Practica1 Tarea1

  • ACCESO A DATOS

    Prctica 1 Tarea 1

    Alfredo Ruiz Snchez DAM 2

  • Acceso a datos Tarea 1 Prctica 1

    Alfredo Ruiz Snchez DAM 2 pgina 1

    Tarea 1: Creacin de las clases necesarias para una aplicacin. Despus de una larga espera para poder tener claros los conocimientos necesarios para hacer esta prctica, al final me he decidido a hacerla en C Sharp, un lenguaje nuevo para mi pero que en realidad no dista mucho de java. La espera ha valido la pena.

    Para hacer esta Tarea se han creado dos clases: la clase Productos que contiene las variables necesarias para el uso de colecciones y la clase Programa, donde se aloja el cdigo propiamente dicho de la aplicacin. Esta est diseada para pedir por consola una serie de productos, eliminar uno de ellos y modificar otro, mostrando siempre el resultado final.

    Clase Productos

    Se han inicializado las variables cod_sku, nombre, descripcion y precio_unidad, creando los correspondiente set y get

    private String cod_sku;

    public String Cod_sku {

    get { return cod_sku; }

    set { cod_sku = value; } }

    private String nombre;

    public String Nombre {

    get { return nombre; }

    set { nombre = value; } }

    private String descripcion;

    public String Descripcion

    {

    get { return descripcion; }

    set { descripcion = value; } }

    private String precio_unidad;

    public String Precio_unidad

    {

    get { return precio_unidad; } set { precio_unidad = value; }

    }

    //constructor sin argumentos public Productos()

    {

    this.cod_sku = "";

    this.nombre = ""; this.descripcion = "";

    this.precio_unidad = "";

    }

  • Acceso a datos Tarea 1 Prctica 1

    Alfredo Ruiz Snchez DAM 2 pgina 2

    Posteriormente se crea un constructor sin argumentos para inicializar las variables y un constructor con argumentos. public Productos()

    { this.cod_sku = "";

    this.nombre = "";

    this.descripcion = ""; this.precio_unidad = "";

    }

    public Productos(String cod_sku, String nombre, String descripcion,

    String precio_unidad)

    { this.cod_sku = cod_sku;

    this.nombre = nombre;

    this.descripcion = descripcion;

    this.precio_unidad = precio_unidad; }

    Finalmente, se crea un mtodo toString que sobrescribir el original para hacer una presentacin en consola de los datos.

    public String toString()

    {

    return( "Cdigo Sku = "+ cod_sku+ "\n"+ "Nombre = "+ nombre + "\n"+ "Descripcin = "+ descripcion

    +"\n" + "Precio por unidad = "+ precio_unidad);

    }

    El cdigo completo de la clase Producto es el siguiente:

    using System;

    using System.Collections.Generic; using System.Linq;

    using System.Text;

    namespace GestionProductos

    {

    class Productos {

    private String cod_sku;

    public String Cod_sku {

    get { return cod_sku; }

    set { cod_sku = value; } }

    private String nombre;

    public String Nombre

    {

    get { return nombre; }

    set { nombre = value; } }

    private String descripcion;

    public String Descripcion

    {

    get { return descripcion; }

  • Acceso a datos Tarea 1 Prctica 1

    Alfredo Ruiz Snchez DAM 2 pgina 3

    set { descripcion = value; }

    } private String precio_unidad;

    public String Precio_unidad {

    get { return precio_unidad; }

    set { precio_unidad = value; }

    } //constructor sin argumentos

    public Productos()

    { this.cod_sku = "";

    this.nombre = "";

    this.descripcion = ""; this.precio_unidad = "";

    }

    //constructor con parmetros

    public Productos(String cod_sku, String nombre, String descripcion, String precio_unidad)

    {

    this.cod_sku = cod_sku; this.nombre = nombre;

    this.descripcion = descripcion;

    this.precio_unidad = precio_unidad; }

    public String toString()

    { return( "Cdigo Sku = "+ cod_sku+ "\n"+ "Nombre = "+ nombre + "\n"+

    "Descripcin = "+ descripcion

    +"\n" + "Precio por unidad = "+ precio_unidad);

    }

    } }

    Clase Programa

    En la clase programa est el grueso del cdigo de la aplicacin.

    En primer lugar, creamos una coleccin de productos llamada ListaProductos y limitamos el nmero de entradas, en este caso a 5.

    static List ListaProductos = new List();

    int numprod = 5;

    A continuacin creamos el mtodo AnadirProductos que pedir al usuario que introduzca por consola los datos de los 5 productos: Cdigo Sku, nombre, descripcin y precio.

    Se crea el objeto p, instancia de la clase producto para relacionar las variables con lo que el usuario introduzca por consola. Se indica con ListaProductos.Add(p) que aada lo introducido por consola.

    Tras el bucle for, se lama al mtodo MostrarProductos (ListaProductos), declarado ms adelante y que nos presenta los productos que se han introducido.

    public void AnadirProductos(List c) {

    for (int i = 0; i < numprod; i++)

  • Acceso a datos Tarea 1 Prctica 1

    Alfredo Ruiz Snchez DAM 2 pgina 4

    {

    Productos p = new Productos(); Console.WriteLine("Introduzca el Cdigo Sku");

    p.Cod_sku= Console.ReadLine();

    Console.WriteLine("Introduzca el nombre del producto"); p.Nombre= Console.ReadLine();

    Console.WriteLine("Introduzca la descripin del producto");

    p.Descripcion= Console.ReadLine();

    Console.WriteLine("Introduzca el Precio por unidad"); p.Precio_unidad = Console.ReadLine();

    ListaProductos.Add(p);

    } MostrarProductos(ListaProductos);

    }

    A continuacin se declara el mtodo MostrarProductos. Con un foreach se recorre la coleccin ListaProductos contenida en la clase Productos (llamada a travs del objeto p).

    Se imprime por consola con el mtodo sobrescrito toString declarado en la clase Productos.

    public void MostrarProductos(List c){

    Console.WriteLine("");

    Console.WriteLine("LISTA DE PRODUCTOS:"); foreach (Productos p in ListaProductos)

    {

    Console.WriteLine(""); Console.WriteLine("");

    Console.WriteLine(p.toString());

    }

    Despus le toca el turno al mtodo ModificarProductos.

    Se pide al usuario que introduzca el cdigo Sku del producto a modificar, declarando la variable dato obtenida de la consola.

    Con un foreach se recorre la coleccin conteniendo la condicin de encontrar el Cod_sku que coincida exactamente con el introducido por consola (variable dato).

    Una vez encontrado, se pide por consola que introduzca los nuevos valores.

    Una vez introducidos, se enva un mensaje al usuario avisando de que el producto ha sido modificado.

    Finalmente, se vuelve a llamar al mtodo MostrarProductos

    public void ModificarProductos(List c) {

    Console.WriteLine("Introduzca el CodSku del producto a modificar :");

    String dato = Console.ReadLine(); foreach (Productos p in ListaProductos)

    {

    if (dato == p.Cod_sku) {

    Console.WriteLine("Introduzca el nuevo nombre:");

    p.Nombre = Console.ReadLine(); Console.WriteLine("Introduzca la nueva descripcin");

    p.Descripcion = Console.ReadLine();

    Console.WriteLine("Introduzca el nuevo precio por unidad");

    p.Precio_unidad = Console.ReadLine();

  • Acceso a datos Tarea 1 Prctica 1

    Alfredo Ruiz Snchez DAM 2 pgina 5

    Console.Write("El producto " + dato);

    Console.Write(" ha sido actualizado"); Console.Write("");

    MostrarProductos(ListaProductos);

    return; }

    }

    }

    A continuacin le toca el turno al mtodo para borrar, BorrarProductos. Utilizamos un cdigo parecido al de modificar pero simplificado.

    Se pide al usuario por consola que indique el cdigo sku del producto a eliminar. Mediante un foreach se recorre la coleccin de datos y con un condicional se comprueba si el dato introducido por consola coincide con alguno de los que ya existen en la coleccin de datos. Si es as, se elimina el producto correspondiente con un ListaProductos.remove(p) y se indica que el producto ha sido eliminado.

    Para mostrar que as ha sido, se llama nuevamente al mtodo MostrarProductos.

    public void BorrarProductos(List c)

    { Console.WriteLine("Indique el cdigo del producto a eliminar:");

    String dato = Console.ReadLine();

    foreach (Productos p in ListaProductos)

    { if (dato == p.Cod_sku)

    {

    ListaProductos.Remove(p); Console.Write("El producto " + dato);

    Console.Write(" ha sido eliminado");

    Console.Write(""); MostrarProductos(ListaProductos);

    return;

    }

    } }

    Finalmente, en el mtodo main se indica al programa qu mtodos debe ejecutar y en qu orden, acabando con un mensaje final al usuario para que cierre la consola pulsando cualquier tecla y que con la orden Console.Read() esta se detiene a la espera de recibir nuevos datos.

    static void Main(string[] args) {

    Programa p=new Programa();

    p.AnadirProductos(ListaProductos); p.ModificarProductos(ListaProductos);

    p.BorrarProductos(ListaProductos);

    Console.Write("");

    Console.Write("Pulse cualquier tecla para cerrar la consola"); Console.Read();

    }

    El cdigo completo de la clase programa es este:

    using System;

    using System.Collections.Generic;

    using System.IO;

  • Acceso a datos Tarea 1 Prctica 1

    Alfredo Ruiz Snchez DAM 2 pgina 6

    namespace GestionProductos {

    class Programa

    { static List ListaProductos = new List();

    int numprod = 3;

    public void AnadirProductos(List c)

    {

    for (int i = 0; i < numprod; i++) {

    Productos p = new Productos();

    Console.WriteLine("Introduzca el Cdigo Sku"); p.Cod_sku= Console.ReadLine();

    Console.WriteLine("Introduzca el nombre del producto");

    p.Nombre= Console.ReadLine();

    Console.WriteLine("Introduzca la descripin del producto"); p.Descripcion= Console.ReadLine();

    Console.WriteLine("Introduzca el Precio por unidad");

    p.Precio_unidad = Console.ReadLine(); ListaProductos.Add(p);

    }

    MostrarProductos(ListaProductos);

    }

    public void MostrarProductos(List c){

    Console.WriteLine("");

    Console.WriteLine("LISTA DE PRODUCTOS:");

    foreach (Productos p in ListaProductos) {

    Console.WriteLine("");

    Console.WriteLine(""); Console.WriteLine(p.toString());

    }

    }

    public void ModificarProductos(List c)

    { Console.WriteLine("Introduzca el CodSku del producto a modificar :");

    String dato = Console.ReadLine();

    foreach (Productos p in ListaProductos) {

    if (dato == p.Cod_sku)

    { Console.WriteLine("Introduzca el nuevo nombre:");

    p.Nombre = Console.ReadLine();

    Console.WriteLine("Introduzca la nueva descripcin");

    p.Descripcion = Console.ReadLine(); Console.WriteLine("Introduzca el nuevo precio por unidad");

    p.Precio_unidad = Console.ReadLine();

    Console.Write("El producto " + dato); Console.Write(" ha sido actualizado");

    Console.Write("");

    MostrarProductos(ListaProductos); return;

    }

    }

  • Acceso a datos Tarea 1 Prctica 1

    Alfredo Ruiz Snchez DAM 2 pgina 7

    }

    public void BorrarProductos(List c)

    {

    Console.WriteLine("Indique el cdigo del producto a eliminar:"); String dato = Console.ReadLine();

    foreach (Productos p in ListaProductos)

    {

    if (dato == p.Cod_sku) {

    ListaProductos.Remove(p);

    Console.Write("El producto " + dato); Console.Write(" ha sido eliminado");

    Console.Write("");

    MostrarProductos(ListaProductos); return;

    }

    }

    }

    static void Main(string[] args)

    { Programa p=new Programa();

    p.AnadirProductos(ListaProductos);

    p.ModificarProductos(ListaProductos); p.BorrarProductos(ListaProductos);

    Console.Write("");

    Console.Write("Pulse cualquier tecla para cerrar la consola");

    Console.Read();

    }

    } }

    Junto con este documento se adjuntan los archivos del programa.