lunes, 7 de mayo de 2012

Utilizar menú y realizar acciones por opciones 3- Consola

For enghish support and procedure: riva.claudio@gmail.com - Visita Mi perfil de LINKEDIN

Ejercicio 5 (Visual Basic.NET, aplicación de consola)

Introducción: Básicamente este ejercicio utiliza las mismas herramientas que el Ejercicio 2 (Procedimientos e If) aunque se agrega algo de complejidad a la letra del mismo.

Se utiliza un Proyecto de tipo "Aplicación de consola" de Visual Basic 2010 que se ejecuta precisamente en una consola de MS-DOS para interactuar con el usuario.


Letra:
Combinar las opciones, menús y acciones de los ejercicios 3 y 4





Descargar Archivos del Proyecto

Código de la Solución:
Module Module1
    Dim opcion, nota As Integer
    Dim nombre, apellido, yn, ci, status, nuevo As String
    Dim fecha As Date

    Sub Main()
        nota = 0
        nombre = "nulo"
        apellido = "nulo"

        Console.Clear()
        Console.WriteLine("Seleccione una opción:")
        Lineapunteada()
        Console.WriteLine("1- Ingresar Nombre")
        Console.WriteLine("2- Ingresar Apellido")
        Console.WriteLine("3- Ingresar datos del Examen")
        Console.WriteLine("4- Salir")
        Lineapunteada()
        opcion = Console.ReadLine

        If opcion = "1" Then
            PedirDatos(nombre)
        ElseIf opcion = "2" Then
            PedirDatos(apellido)
        ElseIf opcion = "3" Then
            ConDato()
        Else
            End
        End If
    End Sub

    'Procedimiento que solicita nombre o apellido dependiendo de la opción seleccionada en el menú
    'y pregunta si se desea ingresar el resto de los datos del examen
    'al responder S comienza a pedir el resto de los datos
    'al responder N muestra lo ingresado y finaliza

    Sub PedirDatos(ByVal name As String)
        If opcion = "1" Then
            Console.Write("Ingrese el nombre: ")
            name = Console.ReadLine
            nombre = name
        ElseIf opcion = "2" Then
            Console.Write("Ingrese el apellido: ")
            name = Console.ReadLine
            apellido = name
        End If

        Console.WriteLine("¿Desea ingresar el resto de los datos del exámen (S/N)?")
        yn = Console.ReadLine

        If yn = "S" Then
            ConDato()
        Else
            If opcion = "1" Then
                Console.WriteLine("El nombre ingresado es: " & nombre)
            ElseIf opcion = "2" Then
                Console.WriteLine("El apellido ingresado es: " & apellido)
            End If

            Console.ReadLine()
        End If
    End Sub

    'Procedimiento que incluye el dato ya ingresado (nombre o apellido) dependiendo de la opción   'seleccionada en el menú
    'y solicita el resto de los datos del examen

    Sub ConDato()
        Console.Clear()
        Lineapunteada()
        If opcion = "1" Then
            Console.WriteLine("Ingrese el nombre: " & nombre)
            Console.Write("Ingrese el Apellido: ")
            apellido = Console.ReadLine
        ElseIf opcion = "2" Then
            Console.WriteLine("Ingrese el apellido: " & apellido)
            Console.Write("Ingrese el Nombre: ")
            nombre = Console.ReadLine
        ElseIf opcion = "3" Then
            Console.Write("Ingrese el Nombre: ")
            nombre = Console.ReadLine
            Console.Write("Ingrese el Apellido: ")
            apellido = Console.ReadLine
        End If

        Console.Write("Ingrese CI (x.xxx.xxx-x): ")
        ci = Console.ReadLine
        Console.Write("Ingrese Fecha de Nacimiento (DD/MM/AAAA): ")
        fecha = Console.ReadLine

        PedirNota(nota)
    End Sub

    'Procedimiento que solicita el valor de la nota y llama al procedimiento Validarnota

    Sub PedirNota(ByVal valor As Integer)
        Console.Write("Ingrese la Nota del examen: ")
        valor = Console.ReadLine
        Validarnota(valor)
    End Sub

    'Procedimiento que valida si la nota ingresada es mayor que 100
    'Si no es mayor que 100, llama al procedimiento SetStatus

    Sub Validarnota(ByVal valor As Integer)
        If valor > 100 Then
            Console.WriteLine("La nota no puede ser mayor a 100")
            PedirNota(nota)
        Else
            nota = valor
            SetStatus(nota)
        End If
    End Sub

    'Procedimiento que determina el valor de Status según la nota ingresada

    Sub SetStatus(ByVal result As String)
        If nota >= 86 Then
            result = "EXONERA"
            status = result
            Mostrar()
        ElseIf nota < 70 Then
            result = "PERDIO EL EXAMEN"
            status = result
            Mostrar()
        Else
            result = "DEBE RENDIR OTRA PRUEBA"
            status = result
            Mostrar()
        End If
    End Sub

    'Procedimiento que muestra todos los datos ingresados y obtenidos
    'Consulta si se desean ingresar datos de otro alumno, volviendo al Procedimiento Main
    'para mostrar el menú inicial nuevamente en caso de responder que si (S)

    Sub Mostrar()
        Console.Clear()
        Lineapunteada()
        Console.WriteLine("Nombre: " & nombre)
        Console.WriteLine("Cédula: " & ci)
        Console.WriteLine("F.Nacimiento: " & fecha)
        Console.WriteLine("Nota: " & nota)
        Console.WriteLine("Resultado: " & status)
        Lineapunteada()
        Console.ReadLine()

        Console.WriteLine("¿Desea ingresar otro alumno? (S/N)")
        nuevo = Console.ReadLine
        If nuevo = "S" Then
            Main()
        Else
            End
        End If
    End Sub

    'Procedimiento que muestra línea punteada, sólo un detalle estético

    Sub Lineapunteada()
        Console.WriteLine(".....................................")
    End Sub

End Module

For enghish support and procedure: riva.claudio@gmail.com - Visita Mi perfil de LINKEDIN

No hay comentarios:

Publicar un comentario