Bienvenidos a un nuevo curso. Ahora estoy en el ciclo de grado superior: Desarrollo de aplicaciones multiplataforma. Y voy a ser parte del experimento de la formación dual. Estaré haciendo practicas durante un año, y a la vez finalizando la formación.

Deseadme suerte.

jueves, 17 de marzo de 2016

Examen de programación II

1

Resultado profesor (5 pnts. En el ejercicio se sobreescribe. No se modifica o elimina. Tengo mis dudas si eso se practica en las grandes empresas, aunque reconozco que es un método rápido. Y Hide no es salir es ocultar. Ojito con eso en grandes aplicaciones por el consumo de recursos del ordenador)





-- Clase persona (Persona.cs) --

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Agenda
{
   public class Persona
    {
        string nombre;
        string apellidos;
        string telefono;

        //
       public Persona()
        {
            nombre = "";
            apellidos = "";
            telefono = "";
        }

        public Persona(string nombre, string apellidos, string telefono)
        {
            this.nombre = nombre;
            this.apellidos = apellidos;
            this.telefono = telefono;
        }

        public string Nombre
        {
            get
            {
                return nombre;
            }

            set
            {
                nombre = value;
            }
        }

        public string Apellidos
        {
            get
            {
                return apellidos;
            }

            set
            {
                apellidos = value;
            }
        }

        public string Telefono
        {
            get
            {
                return telefono;
            }

            set
            {
                telefono = value;
            }
        }
    }
}

-- Clase lista (Lista.cs) --

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Agenda
{
    public class Lista
    {
        Persona[] vector;
        
        int numPersonas; //total de personas insertadas en el vector en un momento determinado

        public Lista(int longitud)
        {
            vector = new Persona[longitud];
            numPersonas = 0;
                  
        }

       
        public int NumPersonas
        {
            get
            {
                return numPersonas;
            }

            set
            {
                numPersonas = value;
            }
        }


        public Persona LeerPersona(int posicion)
        {
            if ((posicion > -1) && (posicion < vector.Length))
            {
                return vector[posicion];
            }
            return null;
        }

        public void BorrarPersona(int posicion)
        {
            if (numPersonas > 0) //si el vector no está vacío...
            {
                if ((posicion > -1) && (posicion < vector.Length))
                {
                    for (int i = posicion; i < vector.Length - 1; i++)
                    {
                        vector[i] = vector[i + 1];
                    }
                    numPersonas--;
                }
            }
        }

        public void ModificarPersona(int posicion, Persona persona)
        {
            if (numPersonas > 0) //si el vector no está vacío...

                if ((posicion > -1) && (posicion < vector.Length))

                    vector[posicion] = persona;


        }

        public int TamanoVector()
        {
            return vector.Length;
        }


        //Método público que inserta un objeto persona en el vector de Personas
        public void InsertarPersona(Persona nuevo)
        {
            //si no está lleno insertamos
            if (numPersonas < vector.Length)
            {
                vector[numPersonas] = nuevo;
                numPersonas++;
            }
            else
                MessageBox.Show("Lista llena...", "Error en inserción", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }


    }
}

-- Formulario principal (frmPrincipal.cs) --

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Agenda
{
    public partial class FrmPrincipal : Form
    {
        public FrmNuevaPersona frmNueva; 
        FrmMostrarPersonas frmMostrar;

        const int TAMAÑO = 20;//tamaño máximo de la lista
        public Lista lista;

      

        public FrmPrincipal()
        {
            InitializeComponent();
            //en el constructor del formulario principal inicializo el vector,
            lista = new Lista(TAMAÑO);
            frmNueva = null;
            frmMostrar = null;
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void nuevaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (frmNueva == null)
            {
               frmNueva= new FrmNuevaPersona();
            }

            //este método permite comunicar el formulario de nueva persona con el Principal
            frmNueva.FormPadre(this);
            frmNueva.MdiParent = this;
            frmNueva.Show();
             
        }

        private void mostrarPersonasToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmMostrar = new FrmMostrarPersonas();
            frmMostrar.FormPadre(this);
            frmMostrar.MdiParent = this;
            frmMostrar.Show();
           
        }

        private void frmPrincipal_Load(object sender, EventArgs e)
        {

        }
    }
}

-- Formulario nueva persona (frmNuevaPersona.cs) --

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Agenda
{
    public partial class FrmNuevaPersona : Form
    {
        FrmPrincipal padre;
      
        int posicion;//controla la posición en el vector de la persona a modificar
        

        public FrmNuevaPersona()
        {
            InitializeComponent();
            posicion = 0;
           
           
        }

        public void FormPadre(FrmPrincipal padre)
        {
            this.padre = padre;
            btnModificar.Enabled = false;
        }

        private void NuevaPersona_Load(object sender, EventArgs e)
        {

        }

        private void LimpiarCampos()
        {
            txtNombre.Clear();
            txtTelefono.Clear();
            txtApellidos.Clear();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (txtNombre.Text != "" ) //no permite introducir personas sin nombre
            {
                //creamos un objeto de la clase persona a partir de la información introducido por el usuario
                Persona nueva = new Persona(txtNombre.Text, txtApellidos.Text, txtTelefono.Text);

                //guardamos los datos introducidos en el vector de personas
                //ya que están comunicados los formularios


               // Form padre=this.MdiParent;
               
                padre.lista.InsertarPersona(nueva);
               
                string total = padre.lista.NumPersonas.ToString();
                MessageBox.Show("Nº de elementos: "+total, "Cantidad ");
                LimpiarCampos();
                
            }

        }


        public void CargarPersona(int pos)
        {
            txtApellidos.Text = padre.lista.LeerPersona(pos).Apellidos;
            txtNombre.Text = padre.lista.LeerPersona(pos).Nombre;
            txtTelefono.Text = padre.lista.LeerPersona(pos).Telefono;
            btnModificar.Enabled = true;
            btnGuardar.Enabled = false;
            posicion = pos;
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            Persona p=new Persona();

            p.Apellidos = txtApellidos.Text;
            p.Nombre = txtNombre.Text;
            p.Telefono = txtTelefono.Text;
            padre.lista.ModificarPersona(posicion, p);
            LimpiarCampos();
            Hide();
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            Hide();
        }
    }
}

-- Formulario Mostrar Personas (frmMostrarPersonas.cs) --

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Agenda
{
    public partial class FrmMostrarPersonas : Form
    {
        FrmPrincipal padre;

        public FrmMostrarPersonas()
        {
            InitializeComponent();
        }

        private void CargarDatos()
        {
            Persona aux;

            for (int i = 0; i < padre.lista.NumPersonas; i++)
            {
                aux = padre.lista.LeerPersona(i);
                listBox1.Items.Add(aux.Nombre + " " + aux.Apellidos);

            }
            txtTotal.Text = padre.lista.NumPersonas.ToString();
        }

        public void FormPadre(FrmPrincipal padre)
        {
            this.padre = padre;
            CargarDatos();
        }
        private void FrmMostrarPersonas_Load(object sender, EventArgs e)
        {

        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedIndex!=-1) {
                //elimina una persona del vector de personas
                if (padre.lista.NumPersonas > 0)
                {
                    padre.lista.BorrarPersona(listBox1.SelectedIndex);
                    listBox1.Items.RemoveAt(listBox1.SelectedIndex);
                    txtTotal.Text = padre.lista.NumPersonas.ToString();
                }
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            
            padre.frmNueva.CargarPersona(listBox1.SelectedIndex);
            padre.frmNueva.Show();
            this.Close();
        }
    }
}

Related Posts:

1 comentario:

  1. Casinos in Malta - Filmfile Europe
    Find the best Casinos nba매니아 in Malta including bonuses, games, poormansguidetocasinogambling games and 1xbet korean the history of games. We cover all the https://septcasino.com/review/merit-casino/ main reasons to visit Casinos in wooricasinos.info

    ResponderEliminar

Etiquetas actuales

BD (67) DEF (64) PROG (64) SQL (44) Java (29) PRACTICAS (20) php (18) DI (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) HTML (13) SGE (12) ERP (9) CONSULTAS (8) css (8) Linux (5) XML (5) Android (4) PDM (4) C (3) NetBeans (3) PSP (3) SMARTY (3) comandos (3) HOOK (2) POST (2) XSD (2) cURL (2) JS (1) MEDIA-QUERYS (1) PDO (1) RESPONSIVE (1) TPL (1) TRADUCCIÓN (1) app_inventor (1)

Todas las etiquetas

EJER (78) BD (67) DEF (64) PROG (64) SQL (44) c# (40) Programación (39) Ficheros (36) Java (29) bases de datos (21) PRACTICAS (20) lenguajes de marcas (19) AD (18) Entorno de desarrollo (18) php (18) PROCEDIMIENTOS (17) DI (16) FORM (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) lenguaje C (16) E/R (14) HTML (13) SGE (12) Sistemas informáticos (10) ERP (9) CONSULTAS (8) TRANSACCIONES (8) TRIGGER (8) VISUAL BASIC (8) css (8) FUNCIONES (7) html5 (6) Ada (5) EXAMEN (5) Linux (5) XML (5) estructuras (5) Android (4) DISEÑO (4) INTERFAZ (4) LOG (4) OpenBravo (4) PDM (4) ACTUALIZAR (3) C (3) DIAGRAMA (3) Directorios (3) NEW (3) NOR (3) NetBeans (3) OLD (3) PSP (3) SMARTY (3) comandos (3) css3 (3) AISLAMIENTOS (2) C++ (2) CONTROLERRORES (2) ELIMINAR (2) HOOK (2) INSERTAR (2) INST (2) MULTITABLA (2) POST (2) RECURSIVIDAD (2) SUBCONSULTAS (2) VISTAS (2) XSD (2) cURL (2) punteros (2) AJENA (1) BLOQUEOS (1) Byte (1) CREACION (1) CRM (1) Configuración (1) Controles (1) Datos (1) GOTFOCUS (1) IMAGENES (1) INDICES (1) JS (1) Lenght (1) MEDIA-QUERYS (1) Mingw (1) MonoDeveloped (1) OPTIMISTA (1) PDO (1) PESIMISTA (1) RESPONSIVE (1) SPEAK (1) Scanner (1) Serializacion (1) Streams (1) System (1) TPL (1) TRADUCCIÓN (1) USUARIOS (1) UseSystemPasswordChar (1) app_inventor (1) char (1) examenes (1) libreoffice (1) make (1) redes (1)