Inicio > .NET > Ejercicio .NET Preparando Examen

Ejercicio .NET Preparando Examen

Con este ejercicio practiqué para el examen que tengo mañana de MS.NET , espero que me valla bien xD

para los que quieran ver el codigo lo dejo adjunto…

Enunciado:

ejercicio-net.pdf

Aqui dejo la Clase que hace todo xD

Clase Aplicacion.cs
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Xml;
using System.Data;
namespace PreparandoCertamen
{
class Aplicacion
{
/*
*
* Atributos
*
*/

private DataSet1 data;
private XmlDocument documento;

/* Constructor por defecto */
public Aplicacion()
{
/* creo una instancia a mi DataSet */
data = new DataSet1();
XmlToDataSet();
int opcion=0;
/* While para hacer el menu con las Opciones */
do
{
Console.WriteLine(“Menu — Ingresa la Opcion”);
Console.WriteLine(“1) Lista de Alumnos Disponibles”);
Console.WriteLine(“2) Lista de Asignaturas Disponibles”);
Console.WriteLine(“3) Lista de Inscripciones Realizadas”);
Console.WriteLine(“4) Agregar Inscripcion”);
Console.WriteLine(“5) Informe de Asignatura por Alumno”);
Console.WriteLine(“6) Informe de Notas Alumno”);
Console.WriteLine(“7) Informe de Inscripciones”);
Console.WriteLine(“8) Salir”);
opcion = getNumero();
switch (opcion)
{
case 1 :
imprimeAlumnos();
break;
case 2 :
imprimeAsignaturas();
break;
case 3 :
imprimeInscripciones();
break;
case 4 :
addInscripcion();
break;
case 5 :
informeAsignatura();
break;
case 6 :
informeAlumno();
break;
case 7 :
informeAsinaturaInscrito();
break;
}

} while (opcion != 8);
}

public void imprimeAlumnos()
{
Console.WriteLine(“Listado de Alumnos: “);
foreach (DataRow fila in data.Alumno.Rows)
{
Console.WriteLine(” [Nombre: ” + fila[“nombre”].ToString() + “] [Rut: ” + fila[“rut”].ToString() + “]”);
}
}
public void imprimeAsignaturas()
{
Console.WriteLine(“Listado de Asignaturas: “);
foreach (DataRow fila in data.Asignatura.Rows)
{
Console.WriteLine(” [Nombre: ” + fila[“nombre”].ToString() + “] [Codigo: ” + fila[“codigo”].ToString() + “]”);
}
}
public void imprimeInscripciones()
{
Console.WriteLine(“Listado de Inscripciones: “);
foreach (DataRow fila in data.Inscripcion.Rows)
{
Console.WriteLine(” [Rut: ” + fila[“rut”].ToString() + “] [Codigo: ” + fila[“codigo”].ToString() + “] [Semestre: ” + fila[“semestre”].ToString() + “] [Año: ” + fila[“año”].ToString() + “] [Nota: ” + fila[“nota”].ToString() + “]”);
}
}
public void addInscripcion()
{
imprimeAlumnos();
Console.WriteLine(“\r\nIngresa el Rut del Alumno que Quieres Ingresar a la Inscripcion”);
String newInscripcionRut, newInscripcionCodigo;
int newInscripcionSemestre, newInscripcionAño;
Decimal newInscripcionNota;
newInscripcionRut = Console.ReadLine();
while(!contieneRut(newInscripcionRut))
{
Console.WriteLine(“ERROR: Ese rut es Invalido”);
Console.WriteLine(“Ingresa el Rut del Alumno que Quieres Ingresar a la Inscripcion”);
newInscripcionRut = Console.ReadLine();
}
imprimeAsignaturas();
Console.WriteLine(“\r\nIngresa el Codigo de la Asignatura que Quieres Ingresar a la Inscripcion”);
newInscripcionCodigo = Console.ReadLine();
while (!contieneCodigo(newInscripcionCodigo))
{
Console.WriteLine(“ERROR: Ese codigo es Invalido”);
Console.WriteLine(“Ingresa el Codigo de la Asignatura que Quieres Ingresar a la Inscripcion”);
newInscripcionCodigo = Console.ReadLine();
}
Console.WriteLine(“Ingresa el Semestre de la Inscripcion”);
newInscripcionSemestre = getNumero();
Console.WriteLine(“Ingresa el Año de la Inscripcion”);
newInscripcionAño = getNumero();
Console.WriteLine(“Ingresa la Nota del alumno para esta Inscripcion”);
newInscripcionNota = getDecimal();
if (agregaInscripcion(newInscripcionRut, newInscripcionCodigo, newInscripcionSemestre, newInscripcionAño, newInscripcionNota))
Console.WriteLine(“OK: Agregada Inscripcion.”);
else
Console.WriteLine(“ERROR: No se Pudo ingresar la Inscripcion.”);
}
public void informeAsignatura()
{
Console.WriteLine(“Ingresa el Nombre de un Alumno para ver su Informe”);
String nombre = Console.ReadLine();
int alumnosEncontrados = 0;
Console.WriteLine(“Nombre de Asignatura\t\tSemestre\t\tAño\t\tNota”);
foreach (DataRow fila in data.Alumno.Select(“nombre LIKE ‘%” + nombre + “%'”))
{
foreach (DataRow fila3 in data.Inscripcion.Rows)
{
if (fila3[“rut”].ToString() == fila[“rut”].ToString())
{
foreach (DataRow fila2 in data.Asignatura.Select(“codigo = ” + fila3[“codigo”].ToString()))
{
Console.WriteLine(fila2[“nombre”].ToString() + “\t\t\t\t” + fila3[“semestre”].ToString() + “\t\t\t” + fila3[“año”].ToString() + “\t\t” + fila3[“nota”].ToString());
}
}
}

alumnosEncontrados++;
}
if (alumnosEncontrados == 0) Console.WriteLine(“ERROR: No se Encontraron Alumnos con ese Nombre.”);
}
public void informeAlumno()
{
Console.WriteLine(“Ingresa el Nombre de un Alumno para ver su Informe”);
String nombre = Console.ReadLine();
foreach (DataRow fila in data.Alumno.Select(“nombre LIKE ‘%” + nombre + “%'”))
{
Hashtable DistinctAños = new Hashtable();
foreach (DataRow filados in data.Inscripcion.Select(“rut='” + fila[“rut”] + “‘”))
{
if (!DistinctAños.ContainsKey(filados[“año”])) DistinctAños.Add(filados[“año”], filados);
}
if (DistinctAños.Count > 0) Console.WriteLine(“Nombre Alumno\t\tSemestre\t\tAño\t\tPromedio”);
foreach (DictionaryEntry al in DistinctAños)
{
Double prom=0;
int i = 0;
foreach (DataRow fila3 in data.Inscripcion.Select(“rut='” + fila[“rut”] + “‘ AND año=” + al.Key+” AND semestre=1″))
{
prom = 0;
i = 0;
prom += Double.Parse(fila3[“nota”].ToString());
i++;
}
if (i > 0) Console.WriteLine(fila[“nombre”] + “\t\t1\t\t\t” + ((DataRow)al.Value)[“año”] + “\t\t” + (prom / i));

prom = 0;
i = 0;
foreach (DataRow fila3 in data.Inscripcion.Select(“rut='” + fila[“rut”] + “‘ AND año=” + al.Key + ” AND semestre=2″))
{
prom = 0;
i = 0;
prom += Double.Parse(fila3[“nota”].ToString());
i++;
}
if (i > 0) Console.WriteLine(fila[“nombre”] + “\t\t2\t\t\t” + ((DataRow)al.Value)[“año”] + “\t\t” + (prom / i));
}

}
}
public void informeAsinaturaInscrito()
{
Console.WriteLine(“Ingresa el Semestre De la inscripcion”);
int semestre = getNumero();
Console.WriteLine(“Ingresa el Año De la inscripcion”);
int año = getNumero();
DataRow[] inscritos = data.Inscripcion.Select(“semestre =” + semestre + ” AND año=” + año);
Console.WriteLine(“Nombre Asignatura\t\tSemestre\t\tAño\t\t#Inscritos”);
Hashtable codigos = new Hashtable();
foreach (DataRow fila in inscritos)
{
if (!codigos.ContainsKey(fila[“codigo”])) codigos.Add(fila[“codigo”], fila);
}
foreach (DictionaryEntry fff in codigos)
{
foreach (DataRow fila2 in data.Asignatura.Select(“codigo='” + ((DataRow)fff.Value)[“codigo”] + “‘”))
{
Console.WriteLine(fila2[“nombre”] + “\t\t” + ((DataRow)fff.Value)[“semestre”] + “\t\t\t” + ((DataRow)fff.Value)[“año”] + “\t\t” + data.Inscripcion.Select(“semestre =” + semestre + ” AND año=” + año + ” AND codigo=” + ((DataRow)fff.Value)[“codigo”]).Length);
}
}

}
public bool agregaInscripcion(String rut,String codigo,int semestre, int año,Decimal nota)
{
bool addComplete = false;
try
{
DataSet1.InscripcionRow nuevaInscripcion = data.Inscripcion.NewInscripcionRow();
nuevaInscripcion[“rut”] = rut;
nuevaInscripcion[“codigo”] = codigo;
nuevaInscripcion[“semestre”] = semestre;
nuevaInscripcion[“año”] = año;
nuevaInscripcion[“nota”] = nota;
data.Inscripcion.AddInscripcionRow(nuevaInscripcion);
addComplete = true;
}
catch (Exception e) { }
return addComplete;
}
public bool contieneRut(String val)
{
foreach(DataRow r in data.Alumno.Rows) { if (r[“rut”].ToString() == val) return true; }
return false;
}
public bool contieneCodigo(String val)
{
foreach (DataRow r in data.Asignatura.Rows) { if (r[“codigo”].ToString() == val) return true; }
return false;
}
/*
*
* Metodo Para Cargar Los Datos del XML al DataSet
*
*/
public void XmlToDataSet()
{
documento = new XmlDocument();
/* Cargo El Xml “Alumnos.xml” en el XmlDocument */
documento.Load(@”..\..\Alumnos.xml”);
/* Recorro el xml para sacar los datos que hay en el */
foreach (XmlNode nodo in documento.ChildNodes)
{
foreach(XmlNode nodo2 in nodo.ChildNodes)
{
/* Creo una nueva Fila en la Tabla Alumno del DataSet */
DataSet1.AlumnoRow row = data.Alumno.NewAlumnoRow();
/* En esa Fila Hay Dos Columnas, Rut y Nombre , Le Asigno el Valor del XML a esos campos */
row[“rut”] = nodo2.SelectSingleNode(“rut”).InnerText;
row[“nombre”] = nodo2.SelectSingleNode(“nombre”).InnerText;
/* Agrego la Fila a la Tabla Alumno */
data.Alumno.AddAlumnoRow(row);
}
}
documento = new XmlDocument();
/* Cargo El Xml “Asignaturas.xml” en el XmlDocument */
documento.Load(@”..\..\Asignaturas.xml”);
/* Recorro el xml para sacar los datos que hay en el */
foreach (XmlNode nodo in documento.ChildNodes)
{
foreach (XmlNode nodo2 in nodo.ChildNodes)
{
DataSet1.AsignaturaRow filaAsignatura = data.Asignatura.NewAsignaturaRow();
filaAsignatura[“codigo”] = nodo2.SelectSingleNode(“codigo”).InnerText;
filaAsignatura[“nombre”] = nodo2.SelectSingleNode(“nombre”).InnerText;
data.Asignatura.AddAsignaturaRow(filaAsignatura);
}
}
documento = new XmlDocument();
/* Cargo El Xml “Inscripcion.xml” en el XmlDocument */
documento.Load(@”..\..\Inscripcion.xml”);
/* Recorro el xml para sacar los datos que hay en el */
foreach (XmlNode nodo in documento.ChildNodes)
{
foreach (XmlNode nodo2 in nodo.ChildNodes)
{
DataSet1.InscripcionRow filaInscripcion = data.Inscripcion.NewInscripcionRow();
filaInscripcion[“rut”] = nodo2.SelectSingleNode(“rut”).InnerText;
filaInscripcion[“codigo”] = nodo2.SelectSingleNode(“codigo”).InnerText;
filaInscripcion[“semestre”] = nodo2.SelectSingleNode(“semestre”).InnerText;
filaInscripcion[“año”] = nodo2.SelectSingleNode(“año”).InnerText;
filaInscripcion[“nota”] = nodo2.SelectSingleNode(“nota”).InnerText;
data.Inscripcion.AddInscripcionRow(filaInscripcion);
}
}
}
public int getNumero()
{
String numeroInsertado;
numeroInsertado = Console.ReadLine();
while (!esNumero(numeroInsertado))
{
Console.WriteLine(“ERROR: Ingresa un Numero.”);
numeroInsertado = Console.ReadLine();
}
return int.Parse(numeroInsertado);
}
public Decimal getDecimal()
{
String numeroInsertado;
numeroInsertado = Console.ReadLine();
while (!esDecimal(numeroInsertado))
{
Console.WriteLine(“ERROR: Ingresa un Numero Decimal.”);
numeroInsertado = Console.ReadLine();
}
return Decimal.Parse(numeroInsertado);
}
public bool esNumero(String val)
{
bool num = false;
try {
int.Parse(val);
num = true;
}
catch (Exception e) { num = false; }
return num;
}
public bool esDecimal(String val)
{
bool num = false;
try
{
Decimal.Parse(val);
num = true;
}
catch (Exception e) { num = false; }
return num;
}
/* Property’s */
public DataSet1 Data
{
get { return data; }
set { data = value; }
}
}
}

Para Los que Quieren descargar el src lo dejo:

PreparandoExamen.rar

Saludos.

PD: Compilado en VisualStudio 2008 .NET Framework 3.5

Categorías:.NET Etiquetas: , , ,
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: