Bienvenidos sean a este post, hoy les traigo todos los codigos finales de los proyectos que posee la solucion Universidad, sin explicacion ni nada, codigo hecho y derecho, las caracteristicas de la solucion Universidad y los proyectos es:
- Lenguaje: C#
- Plataforma: Windows
- Tipo de Proyecto: Consola (Net Framework)
- Nombre Solucion: Universidad
- Version Framework: La ultima disponible.
Proyecto: Alumnos
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();
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:
estudiante.MostrarNotas();
break;
case 3:
break;
default:
Console.WriteLine("Debes elegir una opcion del menu!!!");
Console.ReadLine();
break;
}
} while (opcion != 3);
}
}
}
Carpeta Clases
Estudiantes.cs
using System;
using System.IO;
namespace Alumnos.Clases
{
/// <summary>
/// Esta es la clase que concede los metodos de consulta
/// a los alumnos.
/// <list type="bullet">
/// <item>
/// <term>ListarAlumnos</term>
/// <description>Listado el codigo y nombre de todos los alumnos</description>
/// </item>
/// <item>
/// <term>MostrarNotas</term>
/// <description>Devuelve las notas de un alumno.</description>
/// </item>
/// </list>
/// </summary>
/// <remarks>
/// Esta clase sirve solo para los alumnos pero comparte el metodo
/// MostrarNotas con los profesores.
/// </remarks>
public class Estudiantes
{
Inifile configuracion = new Inifile("config.ini");
string pathAlumnos;
string pathExamenes;
string pathNotas;
/// <summary>
/// <para>Este es el metodo encargado de listar el ID junto al</para>
/// <para>Nombre y Apellido de los Alumnos.</para>
/// </summary>
public void ListarAlumnos()
{
pathAlumnos = configuracion.mostrar("rutas","alumnos");
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("Presiona Enter para volver al menu");
Console.ReadLine();
}
/// <summary>
/// <para>Se encarga de buscar las notas del alumno informado</para>
/// Mira <see cref="Estudiantes.ListarAlumnos()"/>si no sabes el ID del Alumno
/// </summary>
/// <returns>
/// Este metodo devuelve un listado de las notas del alumno
/// </returns>
public void MostrarNotas()
{
string alumno;
pathNotas = configuracion.mostrar("rutas", "notas");
pathExamenes = configuracion.mostrar("rutas", "examenes");
Console.Clear();
Console.Write("Ingresa el ID del alumno: ");
alumno = Console.ReadLine();
using (StreamReader sr = File.OpenText(pathNotas))
{
float total = 0;
int cuenta = 0;
string examen = "";
string linea,t;
string[] s, u;
while ((linea = sr.ReadLine()) != null)
{
s = linea.Split(',');
if (s[1] == alumno.ToUpper())
{
using(StreamReader sr2 = File.OpenText(pathExamenes))
{
while((t = sr2.ReadLine())!=null)
{
u = t.Split(',');
if (u[0] == s[0])
examen = u[1];
}
}
Console.WriteLine(s[1] + "\t" + examen + "\t" + s[2]);
total += float.Parse(s[2]);
cuenta++;
}
}
Console.WriteLine("Tu promedio es: " + (total/cuenta));
}
Console.Write("Presiona Enter para volver al menu");
Console.ReadLine();
}
}
}
Inifile.cs
using System;
using System.Collections.Generic;
using System.IO;
namespace Alumnos.Clases
{
/// <summary>
/// <para>Esta clase se encarga de tomar la informacion de nuestro</para>
/// <para>archivo de configuracion local, se hereda a los otros proyectos</para>
/// </summary>
public class Inifile
{
private string _archivo;
private string ComentLimit;
private Dictionary<string,string> diccionario=new Dictionary<string, string>();
/// <summary>
/// <para>Constructor que recibe el nombre del archivo de configuracion y</para>
/// <para>tambien de forma opcional el parametro que usamos para los </para>
/// <para>comentarios, sino informamos ninguno utiliza el ; como predeterminado</para>
/// </summary>
/// <param name="archivo">Un dato de tipo cadena</param>
/// <param name="comentLimit">Un caracter de tipo cadena</param>
public Inifile(string archivo, string comentLimit = ";")
{
ComentLimit = comentLimit;
elarchivo = archivo;
}
/// <summary>
/// Variable que por medio de get y set se encarga de abrir el
/// archivo, mirar su interior y en base a las instrucciones
/// que posee almacena los datos en un Diccionario.
/// </summary>
public string elarchivo
{
get
{
return _archivo;
}
set
{
_archivo = null;
if (File.Exists(value))
{
_archivo = value;
using (StreamReader sr = File.OpenText(_archivo))
{
string linea, seccion = "", clave = "", clave2 = "", valor = "";
while ((linea = sr.ReadLine()) != null)
{
if (linea.Length == 0)
continue;
if ((!String.IsNullOrEmpty(ComentLimit))
&& (linea.StartsWith(ComentLimit)))
continue;
if (linea.StartsWith("[") && linea.Contains("]"))
{
int indice = linea.IndexOf(']');
seccion = linea.Substring(1, indice - 1).Trim();
// Console.WriteLine(seccion);
}
if (linea.Contains("="))
{
int indice = linea.IndexOf('=');
clave = linea.Substring(0, indice).Trim();
valor = linea.Substring(indice + 1).Trim();
if (valor.StartsWith("\"") && valor.EndsWith("\""))
{
valor = valor.Substring(1, valor.Length - 2);
}
}
// Console.WriteLine(seccion + "->" + clave + "->" + valor);
if (seccion != "" && clave != "")
{
clave2 = seccion + "-" + clave;
diccionario.Add(clave2, valor);
}
}
}
}
}
}
/// <summary>
/// <para>
/// Es el encargado de buscar entre los datos del diccionario
/// al parametro que necesitamos
/// </para>
/// </summary>
/// <remarks>
/// Esto lo hace por medio de dos valores de tipo string.
/// </remarks>
/// <param name="seccion">El nombre que esta entre corchetes</param>
/// <param name="dato">El valor que esta antes del igual</param>
/// <returns>Devuelve un valor de tipo string</returns>
public string mostrar(string seccion, string dato)
{
string clave = seccion + "-" + dato;
return diccionario[clave];
}
}
}
Proyecto Profesores
Program.cs
using System;
using Profesores.Clases;
using Alumnos.Clases;
namespace Profesores
{
/// <summary>
/// Esta es la clase ejecutante
/// </summary>
class Program
{
static void Main(string[] args)
{
int opcion;
Profesor profesor = new Profesor();
Estudiantes alumno = new Estudiantes();
do
{
Console.Clear();
Console.WriteLine("Bienvenido a la Universidad.");
Console.WriteLine("Opciones disponibles:");
Console.WriteLine("(1) Agregar Examen");
Console.WriteLine("(2) Agregar notas");
Console.WriteLine("(3) Ver notas de alumno");
Console.WriteLine("(4) Salir del programa");
Console.Write("Elige una opcion:");
opcion = int.Parse(Console.ReadLine());
switch (opcion)
{
case 1:
profesor.CrearExamen();
break;
case 2:
profesor.AgregarNota();
break;
case 3:
alumno.MostrarNotas();
break;
case 4:
break;
default:
Console.WriteLine("Debes elegir una opcion entre 1-4");
Console.ReadLine();
break;
}
} while (opcion!=4);
}
}
}
Carpeta Clases
Profesor.cs
using System;
using System.IO;
using Alumnos.Clases;
namespace Profesores.Clases
{
class Profesor
{
Inifile config = new Inifile("config.ini");
string pathAlumnos;
string pathExamenes;
string pathNotas;
public void CrearExamen()
{
pathExamenes = config.mostrar("rutas", "examenes");
string codigo, fecha, tipo;
int pos = 0;
Console.Clear();
Console.Write("Ingresa la fecha de examen: ");
fecha = Console.ReadLine();
Console.Write("Elige el tipo de examen (P) Parcial o (F) Final: ");
tipo = Console.ReadLine();
if (!File.Exists(pathExamenes))
using (StreamWriter sw = File.CreateText(pathExamenes)) { }
using(StreamReader sr = File.OpenText(pathExamenes))
{
while ((sr.ReadLine()) != null)
{
pos++;
}
}
if (tipo.ToUpper() == "P")
codigo = "PA100" + pos;
else
codigo = "FI100" + pos;
using (StreamWriter sw = File.AppendText(pathExamenes))
{
sw.WriteLine(codigo + "," + fecha);
}
Console.Write("Presiona Enter para volver al Menu");
Console.ReadLine();
}
public void AgregarNota()
{
pathExamenes = config.mostrar("rutas", "examenes");
pathAlumnos = config.mostrar("rutas", "alumnos");
pathNotas = config.mostrar("rutas", "notas");
string alumno, examen, nota;
Console.Clear();
Console.WriteLine("Codigo de 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 codigo del alumno: ");
alumno = Console.ReadLine();
Console.WriteLine("Codigos de examenes:");
using (StreamReader sr = File.OpenText(pathExamenes))
{
string linea;
string[] s;
while ((linea = sr.ReadLine()) != null)
{
s = linea.Split(',');
Console.WriteLine(s[0] + " - " + s[1]);
}
}
Console.Write("Ingresa el codigo del examen: ");
examen = Console.ReadLine();
Console.Write("Ingresa la nota: ");
nota = Console.ReadLine();
using(StreamWriter sw = File.AppendText(pathNotas))
{
sw.WriteLine(examen.ToUpper() + ","
+ alumno.ToUpper() + "," + nota);
}
Console.Write("Presiona Enter para volver al menu");
Console.ReadLine();
}
}
}
Proyecto Secretaria
Program.cs
using System;
using Secretaria.Clases;
namespace Secretaria
{
class Program
{
static void Main(string[] args)
{
int opcion;
Alumno alumno = new Alumno();
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);
}
}
}
Carpeta Clases
Alumno.cs
using System;
using System.IO;
using Alumnos.Clases;
namespace Secretaria.Clases
{
class Alumno
{
Inifile config = new Inifile("config.ini");
string nombre,apellido,edad,pcia;
string path;
string pathNotas;
public void CrearArchivo()
{
path = config.mostrar("rutas", "alumnos");
if (File.Exists(path))
File.Delete(path);
using(StreamWriter sw = File.CreateText(path)){}
}
public void AgregarAlumno()
{
path = config.mostrar("rutas", "alumnos");
if(!File.Exists(path))
using (StreamWriter sw = File.CreateText(path)) { }
int pos = 0;
using (StreamReader sr = File.OpenText(path))
{
string s;
while((s = sr.ReadLine()) != null)
{
pos++;
}
}
Console.Write("Ingrese el nombre: ");
nombre = Console.ReadLine();
Console.Write("Ingrese el apellido: ");
apellido = Console.ReadLine();
Console.Write("Ingrese el edad: ");
edad = Console.ReadLine();
Console.Write("Ingrese el Provincia: ");
pcia = Console.ReadLine();
using (StreamWriter sw = File.AppendText(path))
{
sw.WriteLine("ID100" + pos + "," + nombre
+ "," + apellido + "," + edad + "," + pcia);
}
Console.Write("Presione Enter para volver al menu");
Console.ReadLine();
}
public void ListarAlumnos()
{
path = config.mostrar("rutas", "alumnos");
Console.Clear();
Console.WriteLine("Listado de alumnos regulares");
using(StreamReader sr = File.OpenText(path))
{
string linea;
string[] s;
while ((linea = sr.ReadLine()) != null)
{
s = linea.Split(',');
Console.WriteLine("Usuario: " + s[0] + "\t\t"
+ "Nombre: " + s[2] + ", " + s[1] + "\n"
+ "Edad: " + s[3] + "\t\t" + "Provincia: " + s[4] + "\n");
}
Console.ReadLine();
}
}
public void CalidadAcademica()
{
path = config.mostrar("rutas", "alumnos");
pathNotas = config.mostrar("rutas", "notas");
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();
}
}
}
Estos son todos los codigos de la solucion Universidad si necesitas una explicacion te paso el listado de todos los posts donde comento cada uno de estos codigos:
- Solucion Universidad – proyecto Alumnos
- Clase examenes (Alumnos)
- Proyecto Secretaria
- Proyecto Profesores
- Modificando la clase Alumnos
- Preparando a Universidad
- Usando archivos .ini
- Esparciendo inifile
- Documentando el codigo
Espero te sea util 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