Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created August 11, 2014 13:46
Show Gist options
  • Save Fhernd/a4e0a8705f213e778ced to your computer and use it in GitHub Desktop.
Save Fhernd/a4e0a8705f213e778ced to your computer and use it in GitHub Desktop.
Ventana principal de la aplicación.
// ===++===
//
// OrtizOL
//
// ===--===
/*============================================================
//
// Clase: Principal.cs
//
// Original en: http://goo.gl/z2cUHW
//
// Propósito: Crear la ventana principal de la aplicación.
//
============================================================*/
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Threading.Tasks;
using System.Windows.Forms;
using ElEstudiante.Modelo;
namespace ElEstudiante.GUI
{
public partial class Principal : Form
{
#region Componentes
/// <summary>
/// Control con los botones de operaciones de la aplicación.
/// </summary>
private ControlBotones controlBotones;
/// <summary>
/// Control para la visualización de los datos del estudiante.
/// </summary>
private ControlDatosEstudiante controlDatosEstudiante;
/// <summary>
/// Control para el registro de un estudiante en la Universidad.
/// </summary>
private ControlRegistroEstudiante controlRegistroEstudiante;
#endregion
#region Campos
/// <summary>
/// Representa un curso.
/// </summary>
public Curso curso;
/// <summary>
/// Representa el estudiant.
/// </summary>
private Estudiante estudiante;
/// <summary>
/// Variable auxiliar para el código de un curso.
/// </summary>
public String codigoCurso;
/// <summary>
/// Variable auxiliar para la nota de un curso.
/// </summary>
public double nota;
#endregion
#region Constructores
/// <summary>
/// Crea la ventana principal de la aplicación.
/// </summary>
public Principal()
{
InitializeComponent();
ConfiguracionComponentes();
}
#endregion
#region Métodos
/// <summary>
/// Configura los componentes de interfaz esenciales de la aplicación.
/// </summary>
private void ConfiguracionComponentes()
{
controlBotones = new ControlBotones(this);
controlBotones.Location = new Point(0, 210);
controlDatosEstudiante = new ControlDatosEstudiante();
controlDatosEstudiante.Location = new Point(0, 97);
controlRegistroEstudiante = new ControlRegistroEstudiante(this);
this.Controls.Add(controlRegistroEstudiante);
this.Controls.Add(controlDatosEstudiante);
this.Controls.Add(controlBotones);
}
/// <summary>
/// Registra un estudiante.
/// </summary>
public void RegistrarEstudiante()
{
string apellido = controlRegistroEstudiante.Apellido;
string codigo = controlRegistroEstudiante.Codigo;
string nombre = controlRegistroEstudiante.Nombre;
try
{
if (apellido.Equals("") && codigo.Equals("") && nombre.Equals(""))
{
MessageBox.Show(this, "Debe llenar todos los campos.", "Registro Estudiante", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
estudiante = new Estudiante(nombre, apellido, Int32.Parse(codigo));
controlDatosEstudiante.Apellido = estudiante.Apellido;
controlDatosEstudiante.Codigo = estudiante.Codigo.ToString();
controlDatosEstudiante.Nombre = estudiante.Nombre;
controlDatosEstudiante.Promedio = 0.0;
MessageBox.Show(this, "El estudiante ha sido registrado.", "Registro Estudiante", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch(Exception)
{
MessageBox.Show(this, "El valor del código debe ser numérico.", "Registro Estudiante", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// Registra un curso al pénsum del estudiante.
/// </summary>
public void RegistrarCurso()
{
// Valida que se haya creado un estudiante en el sistema:
if (estudiante == null)
{
MessageBox.Show(this, "Debe ingresar un estudiante primero.", "Registro Curso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else if (estudiante.TieneCursosCompletos())
{
MessageBox.Show(this, "Los cursos del estudiante están llenos.", "Registro Curso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
using(DialogoRegistroCurso drc = new DialogoRegistroCurso(this))
{
drc.ShowDialog(this);
if (drc.DialogResult == DialogResult.OK)
{
if (estudiante.PensumIncluyeCurso(curso.CodigoCurso))
{
MessageBox.Show(this, String.Format("Un curso de {0} ya ha sido asignado.", curso.CodigoCurso), "Registro Curso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
estudiante.AsignarCurso(curso);
}
}
}
}
}
/// <summary>
/// Determina si un curso está asignado al pénsum del estudiante actual.
/// </summary>
public void CursoEnPensum()
{
if (estudiante == null)
{
MessageBox.Show(this, "Debe ingresar un estudiante primero.", "Registro Curso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
using (DialogoCursoPensum dcp = new DialogoCursoPensum(this))
{
dcp.ShowDialog(this);
if (dcp.DialogResult == System.Windows.Forms.DialogResult.OK)
{
if (estudiante.PensumIncluyeCurso(codigoCurso))
{
MessageBox.Show(this, String.Format("El curso {0} está incluido en el pénsum.", codigoCurso), "Pénsum Estudiante", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show(this, String.Format("El curso {0} no está incluido en el pénsum.", codigoCurso), "Pénsum Estudiante", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
}
}
/// <summary>
/// Determina si el estudiante se haya en prueba académica.
/// </summary>
public void EstudianteEnPrueba()
{
double promedio = 0.0;
bool estaEnPrueba = false;
if (estudiante == null)
{
MessageBox.Show(this, "Debe ingresar un estudiante primero.", "Registro Curso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
promedio = estudiante.CalcularPromedioEstudiante();
estaEnPrueba = estudiante.EnPrueba();
if (promedio == 0.0)
{
MessageBox.Show(this, "Debe registrar al menos la nota de un curso.", "Cálculo Promedio", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (estaEnPrueba)
{
MessageBox.Show(this, "El estudiante se encuentra en prueba, `promedio < 3.25'.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
MessageBox.Show(this, "El estudiante no se encuentra en prueba, `promedio >= 3.25'.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
/// <summary>
/// Registra una nota a determinado curso del pénsum del estudiante.
/// </summary>
public void RegistrarNotaCurso()
{
if (estudiante == null)
{
MessageBox.Show(this, "Debe ingresar un estudiante primero.", "Registro Curso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
using (DialogoRegistroNota drn = new DialogoRegistroNota(this))
{
drn.ShowDialog(this);
if (drn.DialogResult == System.Windows.Forms.DialogResult.OK)
{
curso.AsignarNota(nota);
double promedio = estudiante.CalcularPromedioEstudiante();
controlDatosEstudiante.Promedio = promedio;
}
}
}
}
/// <summary>
/// Ve el listado de cursos en el pénsum del estudiante.
/// </summary>
public void VerCursos()
{
if (estudiante == null)
{
MessageBox.Show(this, "Debe ingresar un estudiante primero.", "Registro Curso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
ArrayList cursosPensum = new ArrayList();
for (int i = 1; i <= 5; ++i)
{
if (estudiante.BuscarCurso(i) != null)
{
cursosPensum.Add(estudiante.BuscarCurso(i));
}
}
if (cursosPensum.Count != 0)
{
using (DialogoCursos dc = new DialogoCursos())
{
dc.CambiarListaCursos(cursosPensum);
dc.ShowDialog(this);
}
}
}
}
#endregion
#region Puntos de Extensión
/// <summary>
/// Punto de extensión no. 1.
/// </summary>
public void PuntoExtension1()
{
if (estudiante != null)
{
MessageBox.Show(this, estudiante.PuntoExtension1(), "Punto de Extensión", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show(this, "Debe ingresar un estudiante primero.", "Punto de Extensión", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
/// <summary>
/// Punto de extensión no. 2.
/// </summary>
public void PuntoExtension2()
{
if (estudiante != null)
{
MessageBox.Show(this, estudiante.PuntoExtension2(), "Punto de Extensión", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show(this, "Debe ingresar un estudiante primero.", "Punto de Extensión", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
#endregion
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment