Anuncios

Bienvenidos sean a este post, con lo anteriormente visto hoy vamos a hacer unas modificaciones fiinales para nuestros tres proyectos y vamos a mostrar como deberiamos usarlo en su version final.

Anuncios

Primero vamos a abrir el proyecto Secretaria, iremos a la clase Alumno.cs y agregaremos el siguiente metodo:

        public void CalidadAcademica()
        {
            float notaAlta = 0;
            float notaBaja = float.MaxValue;
            float promedio = 0;
            int cuenta = 0;

            string linea;
            string[] s;
            Console.Clear();
            Console.WriteLine("La calidad academica: ");
            using(StreamReader sr = File.OpenText(pathNotas))
            {
                while((linea = sr.ReadLine()) != null)
                {
                    s = linea.Split(',');
                    promedio += float.Parse(s[2]);
                    cuenta++;
                    notaAlta = Math.Max(float.Parse(s[2]), notaAlta);
                    notaBaja = Math.Min(float.Parse(s[2]), notaBaja);
                }
            }
            Console.WriteLine("La media general es de: " + (promedio/cuenta));
            Console.WriteLine("La nota mas alta es de: " + notaAlta);
            Console.WriteLine("La nota mas baja es de: " + notaBaja);
            Console.Write("Presione Enter para volver al menu");
            Console.ReadLine();
        }
Anuncios
Anuncios

En este metodo calcularemos un promedio de las notas y averiguaremos cual es la mejor nota y la peor de nuestros alumnos, como primer caso definiremos todas nuestras variables, la primera para la nota mas alta (notaAlta), luego para la nota mas baja (notaBaja), despues para calcular el promedio y la ultima para contar la cantidad de notas que tenemos, las tres primeras son de tipo float por si poseen decimales y la ultima de int porque no va a tener decimales, despues tendremos una de tipo string llamada linea para almacenar la linea leida y por ultimo un array de tipo string para recibir el resultado del Split.

Una curiosidad, todos nuestros valores fueron iniciados con 0 salvo notaBaja, esto es debido a que si lo hacemos de esa forma ninguna nota va a estar por debajo de ese valor, para evitar este problema le decimos que el valor inicial va a ser el maximo disponible por float, esto nos ayudara a que cualquier valor que ingresemos estara por debajo de ese y se almacenara correctamente.

Anuncios

Retomando, nuestro codigo limpiara la pantalla y mostrara un mensaje para luego proceder a abrir el archivo de notas, en el bloque usaremos un while para verificar que la linea leida y almacenada en linea sea distinta de null y por ende se ejecute, dentro del bucle usaremos a nuestro array de string, s, para almacenar el Split que hacemos a linea, para luego convertir el valor de la nota almacenado en la tercer posicion del array (s[2]) en float mediante el metodo Parse y sumarselo al valor de promedio, nuestro siguiente paso es incrementar cuenta y por medio de Math.Max y Math.Min almacenaremos los valores maximos y minimos en notaAlta y notaBaja respectivamente.

Anuncios
Nota: Math.Max recibe dos valores para comparar entre si y devolver cual es mas grande, en este caso lo comparamos con el valor que leimos y el valor almacenado en notaAlta, si el nuevo es mas grande procede a asignarselo y reemplazarlo, de esta forma siempre obtendremos el valor mas grande, Math.Min trabaja de la misma forma pero solo busca el valor mas chico.
Anuncios

Por ultimo, una vez que tenemos todos los datos, procedemos a mostrarlo donde primero haremos el calculo del promedio mediante la division entre promedio y cuenta, y luego mostrando los valores finales almacenados en notaAlta y notaBaja, para ir terminando con las modificaciones al principio debemos agregar esta linea junto a la de path:

string pathNotas = "..\\..\\..\\notas.txt";
Anuncios

Esta linea es la que nos permite ubicar el archivo de notas, pasemos a nuestra siguiente modificacion en Program.cs donde modificaremos el bucle do…while de la siguiente manera:

            do
            {
                Console.Clear();
                Console.WriteLine("Bienvenido a la secretaria.");
                Console.WriteLine("Acciones disponibles:");
                Console.WriteLine("1) Borrar todos los alumnos");
                Console.WriteLine("2) Agregar nuevo Alumno");
                Console.WriteLine("3) Listar Alumnos");
                Console.WriteLine("4) Calidad Academica");
                Console.WriteLine("5) Salir");
                Console.Write("Elija una opcion:");
                opcion = int.Parse(Console.ReadLine());

                switch(opcion)
                {
                    case 1:
                        alumno.CrearArchivo();
                        break;
                    case 2:
                        alumno.AgregarAlumno();
                        break;
                    case 3:
                        alumno.ListarAlumnos();
                        break;
                    case 4:
                        alumno.CalidadAcademica();
                        break;
                    case 5:
                        break;
                    default:
                        Console.WriteLine("Eliga una opcion entre 1-5");
                        Console.ReadLine();
                        break;
                }
            } while (opcion != 5);
Anuncios

En este caso modificamos el valor de while para que salga cuando opcion sea igual a 5, luego agregamos una linea mas en el menu para que 4 sea el acceso a la nueva funcion, luego modificaremos a case 4 para que llame a la funcion y por ultimo agregamos a case 5 para que sea la salida, con esto ya concluimos nuestro programa, podemos compilar y probarlo pero esto lo veremos mas adelante.

Anuncios
Nota: No se olviden de modificar el mensaje de default.
Anuncios

Para nuestro siguiente paso vamos a modificar el proyecto Profesores para que utilice el nuevo metodo para ver notas que hicimos en el proyecto Alumnos, para ello primero vamos a agregar este proyecto como Referencia, para ello debemos hacer Click con el boton derecho sobre Referencias y seleccionar Agregar Referencia, nos aparecera el siguiente cuadro

Anuncios

En este caso tendremos la posibilidad de poder agregar tanto librerias de Framework como asi tambien los proyectos que tenemos disponibles en nuestra solucion, debe estar seleccionado Proyectos, para este caso seleccionamos Alumnos, lo tildamos y presionamos Aceptar, y Referencias nos quedara de la siguiente manera

Anuncios

Como pueden ver ahora nuestro Proyecto tendra acceso al Proyecto Alumnos y por ende tendremos acceso a todas las clases de tipo publicas, volvamos a nuestra clase Profesor.cs y comentemos el metodo MostrarNotas de la siguiente manera:

        /* public void MostrarNotas()
        {
            string alumno;
            Console.WriteLine("Codigos de los alumnos: ");
            using(StreamReader sr = File.OpenText(pathAlumnos))
            {
                string linea;
                string[] s;
                while((linea = sr.ReadLine()) != null)
                {
                    s = linea.Split(',');
                    Console.WriteLine(s[0] + " - " + s[2] + "," + s[1]);
                }
            }
            Console.Write("Ingresa el ID del alumno: ");
            alumno = Console.ReadLine();
            using(StreamReader sr = File.OpenText(pathNotas))
            {
                string linea;
                string[] s;
                while((linea = sr.ReadLine()) != null)
                {
                    s = linea.Split(',');
                    if (s[1] == alumno.ToUpper())
                        Console.WriteLine(s[1] + "\t" + s[0] + "\t" + s[2]);
                }
            }
            Console.Write("Presiona Enter para volver al menu");
            Console.ReadLine();
        } */
Anuncios

Nuestras siguiente modificaciones van a ser en Program.cs donde agregaremos esta linea a las de using:

using Alumnos.Clases;
Anuncios

Esta nos permitira tener acceso a la clase Estudiantes sin tener que usar todo el path para invocarla, dentro de main vamos a crear nuestro nuevo objeto antes del bucle do:

Estudiantes alumno = new Alumnos.Clases.Estudiantes();
Anuncios

Si se les autocompleta de esta forma, esta correcto y si encima les deja la notificacion de error doblemente correcto, esto es debido a que como comentamos antes cuando hacemos referencias solo tendremos acceso a las partes publicas del proyecto, por ello debemos ir al Proyecto Alumnos, abrir la clase Estudiantes y modificar esta linea:

class Estudiantes
Anuncios

Por esta liena:

public class Estudiantes
Anuncios

Con esta modificacion convertimos a la clase en publica, salvamos la modificacion y si retornamos al Proyecto Profesores ya deberia estar solucionado, y podemos modificar la linea del objeto de la siguiente manera:

Estudiantes alumno = new Estudiantes();
Anuncios

Nuestra ultima modificacion va a ser con el bucle do donde cambiaremos el case 3 de la siguiente manera:

                    case 3:
                        alumno.MostrarNotas();
                        break;
Anuncios

Con esto modificado, podemos compilar nuestro programa y probarlo para ver como funciona, con todo esto podemos hacer una prueba “piloto” donde veremos como seria nuestra solucion en produccion, para ello les recomiendo comentar en los tres proyectos las variables donde estan los paths de los archivos y modificarlas como les indico a continuacion:

Estudiantes.cs

        /* string pathAlumnos = "..\\..\\..\\alumnos.txt";
        string pathExamenes = "..\\..\\..\\examenes.txt";
        string pathNotas = "..\\..\\..\\notas.txt"; */
        string pathAlumnos = "alumnos.txt";
        string pathExamenes = "examenes.txt";
        string pathNotas = "notas.txt";
Anuncios

Alumno.cs

        /* string path = "..\\..\\..\\alumnos.txt";
        string pathNotas = "..\\..\\..\\notas.txt"; */
        string path = "alumnos.txt";
        string pathNotas = "notas.txt";
Anuncios

Profesor.cs

        /* string pathAlumnos = "..\\..\\..\\alumnos.txt";
        string pathExamenes = "..\\..\\..\\examenes.txt";
        string pathNotas = "..\\..\\..\\notas.txt"; */
        string pathAlumnos = "alumnos.txt";
        string pathExamenes = "examenes.txt";
        string pathNotas = "notas.txt";
Anuncios

Con esto haremos que busquen los archivos desde donde se esten ejecutando, nuestro siguiente paso sera crear una carpeta en el C donde ira nuestra solucion completa, por ejemplo c:\universidad, una vez hecho esto procedemos a compilarlo y por ultimo copiaremos todos los archivos .exe de nuestros proyectos y los archivos de texto en la nueva carpeta de destino, nos debera quedar algo como esto:

Anuncios

Con esto tenemos concluida nuestra simulacion de un entorno de “produccion”, vamos a ver como hacer todos estos pasos y como se ejecuta en el siguiente video

Anuncios

En este video vimos como se hacen todos los pasos, y como podemos acceder a cada una de las aplicaciones para poder trabajar, cada uno con sus respectivas acciones.

Anuncios

En resumen, ya tenemos una aplicacion casi para nivel de produccion, hemos visto como podemos hacer una referencia de un proyecto hacia otro, por ende podemos acceder a las clases que sean publicas, con sus respectivos metodos y propiedades publicas tambien, solo nos falta una modificacion mas para que quede mas operativo, 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.

Anuncios

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 $