domingo, 20 de octubre de 2019

DÉCIMO - DOCUMENTO DE APOYO PARA PROYECTO VB


DOCUMENTO DE APOYO PARA EL PRIMER COMPROMISO COGNITIVO
PERIODO IV – GRADO DÉCIMO
Proyecto: Clasificación Edad

Esta aplicación captura la edad de una persona y cuando ella pulse el botón de procesar le indicara al usuario: 1) el día de la semana en que nació 2) la edad en años cumplidos 3) en qué etapa de la vida se encuentra 4) signo del zodíaco 5) planeta que lo rige 6) elemento al cual pertenece y 7) le mostrara la imagen del signo dentro del grupo del elemento al cual corresponde.

Interfaz Gráfica de Usuario



Dada la gran cantidad de elementos (40) que reúne esta GUI, vamos a ver los requerimientos de cada uno de ellos, buscando agruparlos por su funcionalidad:

EL FORMULARIO
Como sabemos es el elemento que nos permite diseñar la ventana en la cual desarrollaremos nuestra aplicación.
Nombre à propiedad: Name = frmCaptura
Título à propiedad: Text = Apellido y grado EJ: Prada Matiz 100X
La imagen de mayor tamaño que se ve al fondo se logra mostrar afectando la propiedad BackgroundImage que al pulsar el botón de los tres puntos nos permite navegar por el disco duro de nuestro computador hasta encontrar la imagen que deseamos mostrar. Como es claro debemos preparar esta imagen previamente a esta acción.



Al pulsar sobre el botón mediante la siguiente interfaz se puede ubicar la imagen en el sitio del disco duro en el cual se encuentre.




LAS ETIQUETAS
Como sabemos las etiquetas (label) son elementos de la interfaz gráfica que nos permiten colocar información para el usuario de la aplicación. En este formulario vamos a manejar 21 etiquetas.
1.       Título: la frase ¿Quién eres? Está escrita en una etiqueta a la cual le hemos afectado las siguientes propiedades:
                Name = lblAviso
                Text = ¿Quién eres?
                ForeColor = Cyan (se escogió este color por el contraste con el fondo)
                Font = se aumentó el tamaño de la letra a 28
2.       Indicación para escribir la fecha de nacimiento: debajo de la anterior etiqueta se encuentra otra, a la cual se le cambiaron las siguientes propiedades:
                Name = lblEscribaFechaNac
                Text = Escribe tu fecha de nacimiento acá à
                ForeColor = Cyan (se escogió este color por el contraste con el fondo)
                Font = se aumentó el tamaño de la letra a 12
3.       Debajo de la caja de texto en la que el usuario escribe su fecha de nacimiento hay otra etiqueta que le indica al usuario el formato en que debe escribir dicha fecha y a la que se le cambiaron las siguientes propiedades:
                Name = lblFormatoFechaNac
                Text = dd/mm/aaaa

Debajo del botón de procesamiento hay seis etiquetas organizadas en dos columnas de tres en las cuales le daremos la información al usuario, ellas son:
4.                       Name = lblNacisteUn
                Text = Escribe tu fecha de nacimiento acá à
                ForeColor = Cyan (se escogió este color por el contraste con el fondo)

5.                       Name = lblEdad
                Text = Tienes…
                ForeColor = Cyan (se escogió este color por el contraste con el fondo)

6.                       Name = lblClasificacion
                Text = Eres un…
                ForeColor = Cyan (se escogió este color por el contraste con el fondo)

7.                       Name = lblSigno
                Text = Signo
                ForeColor = Black (se escogió este color por el contraste con el fondo)

8.                       Name = lblPlaneta
                Text = Planeta
                ForeColor = Black (se escogió este color por el contraste con el fondo)

9.                       Name = lblElemento
                Text = Elemento
                ForeColor = Black (se escogió este color por el contraste con el fondo)

Los nombres de los 12 signos aparecen cada uno de ellos en una etiqueta que se ubica sobre la imagen correspondiente. Ejemplo:

10.                   Name = lblAries
                Text = Aries
                BackColor = Se escoge un color libremente         

En este proyecto se utiliza un nuevo elemento que es el GroupBox, que permite crear grupos de elementos pues está configurado para recibir otras herramientas dentro de él. El ícono que se debe escoger en la caja de herramientas es el que se observa en la figura.



Como existen cuatro Elementos (fuego, aire, tierra y agua), se crean estos cuatro grupos y en cada uno de ellos se agregan los 3 signos zodiacales correspondientes a dicho grupo. Veamos el ejemplo del grupo correspondiente al elemento Fuego.



11.   El Grupo del elemento fuego se genera mediante la herramienta GroupBox, a la cual le cambiamos las siguientes propiedades:

Name: grpFuego
ForeColor: Red
Text: Fuego
Los demás grupos (Tierra, Aire y Agua) se configuran de la misma manera.

12.   Las imágenes de los signos del zodiaco se muestran cada una de ellas en un PictureBox. Veamos un ejemplo:

Name: picAries
Visible: False, para que por defecto no sean vistas
Image: se escoge la imagen con el uso del botón de tres puntos, como se muestra en la figura.



Es claro, que las imágenes deben ser preparadas previamente por el programador.

13.   Los nombres de los signos se ubicaron cada uno en una etiqueta, a la cual se le cambiaron las siguientes propiedades, ejemplo:

Name: lblAries
BackColor: se escoge un color de acuerdo a nuestro diseño
Text: ARIES
ForeColor: Black

Estas etiquetas se ubicaron sobre la imagen correspondiente.

Ahora nos falta solamente escribir el código fuente...

Public Class frmCaptura
    'Toda línea de código que se inicie con el signo ' es tomada por VB como un comentario y se torna de color verde 
    'Se utiliza para hacer comentarios - como por ejemplo esta línea - que sirven para documentar la programación y 
    'orientar a quienes lean el código fuente. Generalmente se escribe antes de las sentencias o frases del código fuente
    'o al frente de las líneas de código, como podemos ver a continuación

    'En las siguientes líneas hacemos la declaración de variables de trabajo

    Dim FechaNacimiento As Date 'Variable tipo fecha, para guardar la fecha de nacimiento del usuario    
    Dim Hoy As Date 'Variable tipo fecha para guarda la fecha del dia actual, es decir la fecha de hoy
    Dim Edad As Integer 'Variable tipo numero integer para guardar la edad de la persona una vez la calculemos
    Dim DíaSemana As Byte 'Variable tipo numero Byte para guardar el número que indica el dia de la semana (0,1,2,3,4,5,6 = domingo, lunes, etc)
    Dim vDia As Byte 'Variable tipo numero Byte para guardar el día de nacimiento del usuario (1, 2,...,31)
    Dim vMes As Byte 'Variable tipo numero Byte para guardar el mes de nacimiento del usuario (1, 2,..., 12)

    'Programación para el evento click del botón procesar (btnProcesar)
    Private Sub btnProcesar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProcesar.Click
        'Vamos a controlar que la caja de texto no sea dejada vacía
        If txtFechaNac.Text = "" Then
            MsgBox("Escriba la fecha de su nacimiento", MsgBoxStyle.Critical, "¿Quién eres?")
            txtFechaNac.Text = "" 'limpiamos el contenido de la caja de texto
            txtFechaNac.Focus() 'ubicamos el cursor en la caja de texto 
        Else 'En caso de que SI se haya escrito en la caja...

            'Se captura la fecha de hoy y se guarda en la variable Hoy
            Hoy = Today.Date

            'LA FECHA ESCRITA POR EL USUARIO EN LA CAJA DE TEXTO SE CONVIERTE EN FECHA Y SE GUARDA EN LA VARIABLE CORRERSPONDIENTE
            FechaNacimiento = CDate(txtFechaNac.Text)

            'El valor del día de la semana se guarda en la variable correspondiente
            DíaSemana = FechaNacimiento.DayOfWeek

            'Se guardan el valor del día y del mes de la fecha de nacimiento
            vDia = FechaNacimiento.Day
            vMes = FechaNacimiento.Month

            'Se muestra el día de la semana en que nació el usuario
            'Domingo
            If DíaSemana = 0 Then 'Si el número del día es 0 (cero) entonces
                lblNacisteUn.Text = "Naciste un Domingo" ' señalamos en la etiqueta lblNacisteUn la frase: Naciste un domingo
            Else
                'Lunes
                If DíaSemana = 1 Then
                    lblNacisteUn.Text = "Naciste un Lunes"
                Else
                    'Martes
                    If DíaSemana = 2 Then
                        lblNacisteUn.Text = "Naciste un Martes"
                    Else
                        'Miercoles
                        If DíaSemana = 3 Then
                            lblNacisteUn.Text = "Naciste un Miércoles"
                        Else
                            'Jueves
                            If DíaSemana = 4 Then
                                lblNacisteUn.Text = "Naciste un Jueves"
                            Else
                                'Viernes
                                If DíaSemana = 5 Then
                                    lblNacisteUn.Text = "Naciste un Viernes"
                                Else
                                    'Sabado
                                    If DíaSemana = 6 Then
                                        lblNacisteUn.Text = "Naciste un Sábado"
                                        'Se cierran los if
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If

            'Calculo de la edad, se calcula el numero de días entre la fecha de nacimiento y el día de hoy con la función DateDiff
            'y se divide el resultado por 365 días para calcular el número de años. Como en la mayoría de los casos los años no serán 
            'exactamente un número entero, se aplica la funcion Int que desprecia la parte decimal del anterior resultado
            Edad = Int((DateDiff("d", FechaNacimiento, Hoy) / 365))
            lblEdad.Text = "Tienes " & Edad & " años" ' Se carga en la etiqueta correspondiente la edad calculada. El simbolo & encadena
            ' la palabra Tienes con el valor de la variable Edad y la palabra años

            'A continuación se hace la clasificación de la persona según su edad
            ' Primera infancia
            If Edad < 6 Then
                lblClasificacion.Text = "Estás en la primera infancia"
            Else 'Segunda infancia
                If Edad < 12 Then
                    lblClasificacion.Text = "Estás en la segunda infancia"
                Else 'Pre adolescencia
                    If Edad < 15 Then
                        lblClasificacion.Text = "Estás en la pre adolescencia"
                    Else ' Adolescencia
                        If Edad < 18 Then
                            lblClasificacion.Text = "Estás en la adolescencia"
                        Else 'Mayor de edad joven
                            If Edad < 25 Then
                                lblClasificacion.Text = "Eres mayor de edad y estás en la juventud"
                            Else 'Adulto
                                If Edad < 64 Then
                                    lblClasificacion.Text = "Eres un adulto"
                                Else ' Adulto mayor
                                    lblClasificacion.Text = "Eres un adulto mayor"
                                    ' se cierran los if
                                End If
                            End If
                        End If
                    End If
                End If
            End If

            'A continuación se clasifica El signo zodiacal teniendo en cuenta que los mismos inician el dia 21 de un mes y hasta
            'el dia 20 del mes siguiente, lo cual debe evaluarse en dos secciones: 
            'Primera: dia 21 al 31 del mes 12 - para este primer ejemplo o 
            'Segunda: dia 1 al 20 del mes 1 corresponde al signo:

            'Capricornio
            If (vDia > 20) And (vDia <= 31) And (vMes = 12) Or ((vDia > 0) And (vDia < 21) And vMes = 1) Then
                'Al clasificar el signo Capricornio el planeta(s) y elemento son siempre los mismos
                'Se cambia la propiedad visible del picCapricornio al valor True para que se haga visible
                'Todos los simbolos se trabajan igual
                lblSigno.Text = "Tu signo es CAPRICORNIO"
                lblPlaneta.Text = "Tu planeta es Saturno"
                lblElemento.Text = "Tu elemento es Tierra"
                picCapricornio.Visible = True
            Else
                'Acuario
                If (vDia > 20) And (vDia <= 31) And (vMes = 1) Or ((vDia > 0) And (vDia < 21) And vMes = 2) Then
                    lblSigno.Text = "Tu signo es ACUARIO"
                    lblPlaneta.Text = "Tus planetas son Urano y Saturno"
                    lblElemento.Text = "Tu elemento es Aire"
                    picAcuario.Visible = True
                Else
                    'Piscis
                    If (vDia > 20) And (vDia <= 31) And (vMes = 2) Or ((vDia > 0) And (vDia < 21) And vMes = 3) Then
                        lblSigno.Text = "Tu signo es PISCIS"
                        lblPlaneta.Text = "Tus planetas son Neptuno y Jupiter"
                        lblElemento.Text = "Tu elemento es Agua"
                        picPiscis.Visible = True
                    Else
                        'Aries
                        If (vDia > 20) And (vDia <= 31) And (vMes = 3) Or ((vDia > 0) And (vDia < 21) And vMes = 4) Then
                            lblSigno.Text = "Tu signo es ARIES"
                            lblPlaneta.Text = "Tus planetas son Marte y Plutón"
                            lblElemento.Text = "Tu elemento es Fuego"
                            picAries.Visible = True
                        Else
                            'Tauro
                            If (vDia > 20) And (vDia <= 31) And (vMes = 4) Or ((vDia > 0) And (vDia < 21) And vMes = 5) Then
                                lblSigno.Text = "Tu signo es TAURO"
                                lblPlaneta.Text = "Tus planetas son Venus y Tierra"
                                lblElemento.Text = "Tu elemento es Tierra"
                                picTauro.Visible = True
                            Else
                                'Geminis
                                If (vDia > 20) And (vDia <= 31) And (vMes = 5) Or ((vDia > 0) And (vDia < 21) And vMes = 6) Then
                                    lblSigno.Text = "Tu signo es GEMINIS"
                                    lblPlaneta.Text = "Tu planeta es Mercurio"
                                    lblElemento.Text = "Tu elemento es Aire"
                                    picGeminis.Visible = True
                                Else
                                    'Cancer
                                    If (vDia > 20) And (vDia <= 31) And (vMes = 6) Or ((vDia > 0) And (vDia < 21) And vMes = 7) Then
                                        lblSigno.Text = "Tu signo es CANCER"
                                        lblPlaneta.Text = "Tu planeta es Luna"
                                        lblElemento.Text = "Tu elemento es Agua"
                                        picCancer.Visible = True
                                    Else
                                        'Leo
                                        If (vDia > 20) And (vDia <= 31) And (vMes = 7) Or ((vDia > 0) And (vDia < 21) And vMes = 8) Then
                                            lblSigno.Text = "Tu signo es LEO"
                                            lblPlaneta.Text = "Tu planeta es Sol"
                                            lblElemento.Text = "Tu elemento es Fuego"
                                            picLeo.Visible = True
                                        Else
                                            'Virgo
                                            If (vDia > 20) And (vDia <= 31) And (vMes = 8) Or ((vDia > 0) And (vDia < 21) And vMes = 9) Then
                                                lblSigno.Text = "Tu signo es VIRGO"
                                                lblPlaneta.Text = "Tu planeta es Mercurio"
                                                lblElemento.Text = "Tu elemento es Tierra"
                                                picVirgo.Visible = True
                                            Else
                                                'Libra
                                                If (vDia > 20) And (vDia <= 31) And (vMes = 9) Or ((vDia > 0) And (vDia < 21) And vMes = 10) Then
                                                    lblSigno.Text = "Tu signo es LIBRA"
                                                    lblPlaneta.Text = "Tu planeta es Venus"
                                                    lblElemento.Text = "Tu elemento es Aire"
                                                    picLibra.Visible = True
                                                Else
                                                    'Escorpión
                                                    If (vDia > 20) And (vDia <= 31) And (vMes = 10) Or ((vDia > 0) And (vDia < 21) And vMes = 11) Then
                                                        lblSigno.Text = "Tu signo es ESCORPION"
                                                        lblPlaneta.Text = "Tus planetas son Plutón y Marte"
                                                        lblElemento.Text = "Tu elemento es Agua"
                                                        picEscorpion.Visible = True
                                                    Else
                                                        'Sagitario
                                                        If (vDia > 20) And (vDia <= 31) And (vMes = 11) Or ((vDia > 0) And (vDia < 21) And vMes = 12) Then
                                                            lblSigno.Text = "Tu signo es SAGITARIO"
                                                            lblPlaneta.Text = "Tu planeta es Jupiter"
                                                            lblElemento.Text = "Tu elemento es Fuego"
                                                            picSagitario.Visible = True
                                                            'Se cierran todos los IF
                                                        End If
                                                    End If
                                                End If
                                            End If
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End Sub
    'En este evento se escriben las sentencias que permiten que en una segunda, tercera, cuarta, etc, oportunidades de calculo de fechas
    'se limpien los datos de la fecha inmediatamente anterior procesada

    Private Sub txtFechaNac_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtFechaNac.Click
        'Ocultar las imagenes de los signos zodiacales mostrados en un proceso de fecha de nacimiento
        picAcuario.Visible = False
        picAries.Visible = False
        picCancer.Visible = False
        picCapricornio.Visible = False
        picEscorpion.Visible = False
        picGeminis.Visible = False
        picLeo.Visible = False
        picLibra.Visible = False
        picPiscis.Visible = False
        picSagitario.Visible = False
        picTauro.Visible = False
        picVirgo.Visible = False
        'se reinician las 6 etiquetas que muestran la información de: edad, dia de la semana, clasificación, signo, elemento, planeta
        lblClasificacion.Text = "Eres un..."
        lblEdad.Text = "Tienes..."
        lblElemento.Text = "Elemento"
        lblNacisteUn.Text = "Naciste un..."
        lblPlaneta.Text = "Planeta"
        lblSigno.Text = "Signo"

    End Sub

End Class


No hay comentarios:

Publicar un comentario