Bienvenidos sean a este post, hoy continuaremos con la solucion creada en el post anterior, hasta ahora tenemos una sola clase para manejar a nuestros alumnos pero en el caso de hoy agregaremos a los examenes que pueden tener.
Para esto haremos click derecho sobre la carpeta Clases, seleccionaremos Agregar -> Clase (esta al final del menu), nos aparecera un cuadro, seleccionamos Clase y la llamamos Examenes.cs, una vez generada nuestra clase modificaremos el codigo generado por el siguiente:
Examenes.cs
using System;
namespace Alumnos.Clases
{
class Examenes
{
string[,] examen = new string[100, 100];
string[,] nota = new string[100, 100];
public void CrearExamen(string fecha, string tipo, int pos)
{
if (tipo == "P")
examen[pos, 0] = "PA100" + pos;
else
examen[pos, 0] = "FI100" + pos;
examen[pos, 1] = fecha;
}
public void AgregarExamen(string examen, string alumno
, string valor, int pos)
{
nota[pos, 0] = examen;
nota[pos, 1] = alumno;
nota[pos, 2] = valor;
}
public void ConsultaNotas(Estudiantes alumno)
{
string alumnoId;
string examenId;
Console.Clear();
Console.WriteLine("Codigos de Alumnos:");
for (int i = 0; i < alumno.Contar(); i++)
{
if (alumno.getId(i) == null)
break;
Console.WriteLine(alumno.getId(i));
}
Console.Write("Elige un codigo:");
alumnoId = Console.ReadLine();
Console.WriteLine("Codigos de Examen:");
for (int i = 0; i < examen.GetLength(0); i++)
{
if (examen[i, 0] == null)
break;
Console.WriteLine(examen[i, 0] + " - " + examen[i, 1]);
}
Console.Write("Elige un examen:");
examenId = Console.ReadLine();
for (int i = 0; i < nota.GetLength(0); i++)
{
if ((nota[i,0]==examenId.ToUpper()) && (nota[i,1]==alumnoId.ToUpper()))
{
Console.WriteLine(alumnoId + "\t" + examenId + "\t" + nota[i, 2]);
}
}
Console.ReadLine();
}
}
}
En esta clase primero crearemos dos arrays de tipo string, la primera sera para almacenar los datos del examen, la segunda para almacenar las notas del examen, para entender mejor el concepto vamos a analizar el primer metodo:
public void CrearExamen(string fecha, string tipo, int pos)
{
if (tipo == "P")
examen[pos, 0] = "PA100" + pos;
else
examen[pos, 0] = "FI100" + pos;
examen[pos, 1] = fecha;
}
Este metodo sera el encargado de crear los nuevos examenes, para ello recibira tres datos el primero para la fecha del examen, el segundo para el tipo (si es Parcial o Final) y el ultimo la posicion en el array, de vuelta de forma temporal, en este caso primero tendremos un condicional donde chequearemos si tipo es igual a P, es decir que es parcial, entonces guardara en la primera posicion el codigo que dependera del tipo:
- Si es parcial, sera PA100 seguido de la posicion que pasemos.
- Si es final, sera FI100 seguido de la posicion que pasemos.
Nuestro siguiente paso sera agregar la fecha en la siguiente coordenada, cuando veamos el Program.cs quedara mas claro, veamos el siguiente metodo:
public void AgregarExamen(string examen, string alumno
, string valor, int pos)
{
nota[pos, 0] = examen;
nota[pos, 1] = alumno;
nota[pos, 2] = valor;
}
Con este otro metodo nos encargaremos de agregar las notas de los alumnos de cada examen, el primer dato sera el id del examen, el que generamos con el metodo anterior, el siguiente dato sera el id del alumno, el cual generamos cuando lo damos de alta, despues ira la nota del examen y por ultimo la posicion en el array, observen que en el bloque lo unico que hace es asignarlo y quedara como una tabla para trabajar con ella, despues tendremos este metodo:
public void ConsultaNotas(Estudiantes alumno)
{
string alumnoId;
string examenId;
Console.Clear();
Console.WriteLine("Codigos de Alumnos:");
for (int i = 0; i < alumno.Contar(); i++)
{
if (alumno.getId(i) == null)
break;
Console.WriteLine(alumno.getId(i));
}
Console.Write("Elige un codigo:");
alumnoId = Console.ReadLine();
Console.WriteLine("Codigos de Examen:");
for (int i = 0; i < examen.GetLength(0); i++)
{
if (examen[i, 0] == null)
break;
Console.WriteLine(examen[i, 0] + " - " + examen[i, 1]);
}
Console.Write("Elige un examen:");
examenId = Console.ReadLine();
for (int i = 0; i < nota.GetLength(0); i++)
{
if ((nota[i,0]==examenId.ToUpper()) && (nota[i,1]==alumnoId.ToUpper()))
{
Console.WriteLine(alumnoId + "\t" + examenId + "\t" + nota[i, 2]);
}
}
Console.ReadLine();
}
Este ultimo metodo sera el encargado de buscar las notas en los examenes, para ello recibira un objeto de tipo Estudiantes y lo llamaremos alumno, nuestro siguiente paso sera crear dos variables de tipo string llamada alumnoId y examenId que luego usaremos para almacenar el id del alumno y el id del examen respectivamente, despues limpiamos la pantalla y en este caso mostraremos todos los ids disponibles de alumnos para ello usaremos este bucle for:
for (int i = 0; i < alumno.Contar(); i++)
{
if (alumno.getId(i) == null)
break;
Console.WriteLine(alumno.getId(i));
}
En este bloque usaremos al metodo Contar de la clase Estudiantes para obtener el total de los espacios, esto no nos devuelve solamente el total de elementos, entonces para ello entra en accion el condicional solamente si al momento de obtener los id por medio de getId, ya hablaremos sobre este metodo, nos devuelve null llama al break y sale del for, mientras no se cumpla mostrara los ids en pantalla, luego nos pedira que elijamos uno, este dato sera almacenado en alumnoId por medio de ReadLine, una vez ingresado pasaremos a mostrar los ids de los examenes, para ello usaremos este bucle for:
for (int i = 0; i < examen.GetLength(0); i++)
{
if (examen[i, 0] == null)
break;
Console.WriteLine(examen[i, 0] + " - " + examen[i, 1]);
}
Aca usaremos a GetLength para que obtenga de examen el total de la primera dimension pero como vimos hasta ahora nos traera todo, para ello volvemos a usar el mismo condicional y en caso de pasar a ser null usa el break, de lo contrario mostrara en pantalla el id del examen y la fecha, por ultimo pediremos que seleccionen uno y lo almacenaremos en examenId por medio de ReadLine, con estos dos datos solo nos resta buscar la nota y para ello usaremos este bucle for:
for (int i = 0; i < nota.GetLength(0); i++)
{
if ((nota[i,0]==examenId.ToUpper()) && (nota[i,1]==alumnoId.ToUpper()))
{
Console.WriteLine(alumnoId + "\t" + examenId + "\t" + nota[i, 2]);
}
Aca usaremos nuevamente el bucle for para buscar en todos los lugares del array nota pero no mostraremos nada en pantalla solamente lo haremos si la posicion con la coordenada 0 coincide con el examenId y lo mismo con la posicion con la coordenada 1 y alumnoId, una vez que lo haya encontrado mostrara el id del alumno, el id del examen y la nota, todo separados por tabuladores, por ultimo espera un Enter para volver al menu principal.
Para lo siguiente debemos modificar la clase Estudiantes.cs donde agregaremos estos metodos:
public string getId(int id)
{
return datos[id, 0];
}
public int Contar()
{
return datos.GetLength(0);
}
El primer metodo nos permitira obtener el id de la posicion que informemos, para ello debemos pasar la posicion y la coordenada va a ser 0 porque siempre se almacena ahi, nuestro siguiente metodo nos devolvera el total de espacios disponibles en la primera dimension, como vimos en algunos metodos anteriores no nos devuelve el numero real de elementos sino el total de espacios por este motivo usamos unos condicionales para detenerlo cuando esta vacio, con esto ya cubrimos a esta clase, nuestra siguiente modificacion sera en Program.cs para agregar unos bloques de datos y modificar algunas cositas mas, primero veamos el bloque que agregamos:
Examenes examen = new Examenes();
examen.CrearExamen("24/3/2020", "P", 0);
examen.CrearExamen("24/4/2020", "P", 1);
examen.AgregarExamen("PA1000", "ID1000", "7", 0);
examen.AgregarExamen("PA1000", "ID1001", "8", 1);
examen.AgregarExamen("PA1000", "ID1002", "9", 2);
examen.AgregarExamen("PA1000", "ID1003", "6", 3);
examen.AgregarExamen("PA1000", "ID1004", "6", 4);
examen.AgregarExamen("PA1000", "ID1005", "5", 5);
examen.AgregarExamen("PA1000", "ID1006", "4", 6);
examen.AgregarExamen("PA1001", "ID1000", "8", 7);
examen.AgregarExamen("PA1001", "ID1001", "7", 8);
examen.AgregarExamen("PA1001", "ID1002", "6", 9);
examen.AgregarExamen("PA1001", "ID1003", "7", 10);
examen.AgregarExamen("PA1001", "ID1004", "7", 11);
examen.AgregarExamen("PA1001", "ID1005", "8", 12);
examen.AgregarExamen("PA1001", "ID1006", "9", 13);
En este bloque primero crearemos un objeto de la clase Examenes y en este caso vamos a crear dos examenes por medio de CrearExamen, vean que pasamos la fecha, el tipo (como son parciales sera P en mayuscula) y la posicion en el array, nuestro siguiente paso sera aprovechar que tenemos el objeto y usamos AgregarExamen donde pasaremos primero el id del examen, despues el id del alumno, luego la nota y por ultimo la posicion en el array, como vimos el examen se encargara de acomodarlo, nuestra siguiente modificacion sera en el menu:
Console.WriteLine("Bienvenidos a la universidad");
Console.WriteLine("Tienes este listado de opciones:");
Console.WriteLine("(1) Listado de alumnos");
Console.WriteLine("(2) Notas del alumno");
Console.WriteLine("(3) Salir del programa");
Console.Write("Elige una opcion: ");
opcion = int.Parse(Console.ReadLine());
En este caso agregamos una nueva linea para las notas del alumno y ahora en lugar de salir con 2 salimos con 3, veamos como cambio el switch:
switch (opcion)
{
case 1:
Console.Clear();
estudiante.ListarAlumnos();
break;
case 2:
examen.ConsultaNotas(estudiante);
break;
case 3:
break;
default:
Console.WriteLine("Debes elegir una opcion del menu!!!");
Console.ReadLine();
break;
En este nuevo bloque, case 2 no esta mas vacio sino que ahora llama a ConsultaNotas y pasamos nuestro objeto estudiante que generamos anteriormente, y ahora dejamos el case 3 en blanco con un break, y el while cambio de esta forma:
while (opcion != 3);
Antes de compilarlo, les paso los codigos finales de Estudiantes.cs y Program.cs:
Program.cs
using System;
using System.Collections.Generic;
using Alumnos.Clases;
namespace Alumnos
{
class Program
{
static void Main(string[] args)
{
int opcion;
Estudiantes estudiante = new Estudiantes();
estudiante.AgregarAlumno("Martin", "Miranda", "44", "Mendoza",0);
estudiante.AgregarAlumno("Enzo", "Tortore", "34", "Cordoba",1);
estudiante.AgregarAlumno("Marta", "Gargaglione", "50", "Tucuman", 2);
estudiante.AgregarAlumno("Javier", "Marcuzzi", "46", "Rio Negro", 3);
estudiante.AgregarAlumno("Ariel", "Polizzi", "48", "Buenoss Aires", 4);
estudiante.AgregarAlumno("Raul", "Picos", "51", "Salta", 5);
estudiante.AgregarAlumno("Juan", "Militello", "40", "Santa Fe", 6);
Examenes examen = new Examenes();
examen.CrearExamen("24/3/2020", "P", 0);
examen.CrearExamen("24/4/2020", "P", 1);
examen.AgregarExamen("PA1000", "ID1000", "7", 0);
examen.AgregarExamen("PA1000", "ID1001", "8", 1);
examen.AgregarExamen("PA1000", "ID1002", "9", 2);
examen.AgregarExamen("PA1000", "ID1003", "6", 3);
examen.AgregarExamen("PA1000", "ID1004", "6", 4);
examen.AgregarExamen("PA1000", "ID1005", "5", 5);
examen.AgregarExamen("PA1000", "ID1006", "4", 6);
examen.AgregarExamen("PA1001", "ID1000", "8", 7);
examen.AgregarExamen("PA1001", "ID1001", "7", 8);
examen.AgregarExamen("PA1001", "ID1002", "6", 9);
examen.AgregarExamen("PA1001", "ID1003", "7", 10);
examen.AgregarExamen("PA1001", "ID1004", "7", 11);
examen.AgregarExamen("PA1001", "ID1005", "8", 12);
examen.AgregarExamen("PA1001", "ID1006", "9", 13);
do
{
Console.Clear();
Console.WriteLine("Bienvenidos a la universidad");
Console.WriteLine("Tienes este listado de opciones:");
Console.WriteLine("(1) Listado de alumnos");
Console.WriteLine("(2) Notas del alumno");
Console.WriteLine("(3) Salir del programa");
Console.Write("Elige una opcion: ");
opcion = int.Parse(Console.ReadLine());
switch (opcion)
{
case 1:
Console.Clear();
estudiante.ListarAlumnos();
break;
case 2:
examen.ConsultaNotas(estudiante);
break;
case 3:
break;
default:
Console.WriteLine("Debes elegir una opcion del menu!!!");
Console.ReadLine();
break;
}
} while (opcion != 3);
}
}
}
Estudiantes.cs
using System;
namespace Alumnos.Clases
{
class Estudiantes
{
string[,] datos = new string[10, 10];
public void AgregarAlumno(string nombre,
string apellido, string edad, string pcia, int pos)
{
datos[pos, 0] = "ID100" + pos;
datos[pos, 1] = nombre;
datos[pos, 2] = apellido;
datos[pos, 3] = edad;
datos[pos, 4] = pcia;
}
public void ListarAlumnos()
{
for (int i = 0; i < datos.GetLength(0); i++)
{
if (datos[i, 0] == null)
break;
for (int j = 0; j < datos.GetLength(1); j++)
{
if (datos[i, j] == null)
break;
Console.Write(datos[i, j] + "\t");
}
Console.WriteLine();
}
Console.WriteLine("Presiona Enter para salir...");
Console.ReadLine();
}
public string getId(int id)
{
return datos[id, 0];
}
public int Contar()
{
return datos.GetLength(0);
}
}
}
Con todo esto explicado veamos a nuestro nuevo programa en accion mediante el siguiente video
En este video podemos ver todas las opciones, como sigue funcionando el listado de los alumnos y ahora como en base al id del usuario y el id del examen podemos obtener la nota que saco.
En resumen, hasta ahora hemos visto como podemos agregar mas clases a nuestros proyectos, como podemos hacer que se vinculen entre ellos, como podemos trabajar entre distintos datos y poder relacionarlos para obtener un dato en comun, en proximos posts agregaremos mas mejoras, espero les haya gustado sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.
Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar
Es para mantenimiento del sitio, gracias!
1.00 $