structuras en visual basic


bueno el siguiente es un ejemplo de como ultilizar las estructuras es visual basic. este ha sido realizado como un proyecto de aplicacion de consola, es simple lo unico que hace es leer lso datos personales de un alumno y luego mostrarlos en la tabla, el codigo es muy limitado, no es personalisable pero en el codigo veran en los comentarios ideas de como personalisarlos para n registros.

este codigo ultiliza una matriz dado el caso de como quiero mostrar los datos "asi como se ven en el resultado final" y utilisa uan structure que se decalra de la siguiente forma

(nivel de acceso) structure
-
-
end structure

como este es mi primer post sobre visual y para los que apenas comenzamos veamos que a diferencia de c/c++ visual no ultiliza llaves ni punto y coma(;) para finalizar una linea
termina con palabras como end por ejemplo un if seria

if (condicion)then 'digamso que aqui las lalves serian then y la de cierre end if
-
end if

bueno despues de una brebe introduccion al lenguaje aqui esta el codigo:

'Imports System
Module Module1
Private Structure datos
Dim nombres As String
Dim apellidos As String
Dim telefono As String
Dim id As Long
Dim fnacimieto As fecha
End Structure ' end estrucuta datos

Private Structure fecha
Dim dia As Byte, mes As Byte
Dim año As Int16
End Structure 'm end estrucutra fecha

Private Sub graficar(ByVal tabla(,) As String)
Dim i As Byte, j As Byte
Dim x As Byte = 0, y As Byte = 0
Console.Title = "BD virtual"
Console.SetCursorPosition(2, 1)
Console.Write("Nombres")
Console.SetCursorPosition(15, 1)
Console.Write("Apellidos")
Console.SetCursorPosition(37, 1)
Console.Write("Telefono")
Console.SetCursorPosition(53, 1)
Console.Write("ID")
Console.SetCursorPosition(66, 1)
Console.Write("Fnacimiento")



For i = 1 To 77 Step 1 'cuadro principal
Console.SetCursorPosition(i, 0)
Console.Write("-")
Console.SetCursorPosition(i, 22)
Console.Write("-")
If (i <>
Console.SetCursorPosition(0, i)
Console.Write("|")
Console.SetCursorPosition(77, i)
Console.Write("|")
End If

Next i 'cuadro principal

For i = 1 To 22 Step 1 'lineas intermedias verticales
Console.SetCursorPosition(14, i) 'este es el q limita a nombres
Console.Write("|")
Console.SetCursorPosition(36, i) 'este es el q limita a apellidos
Console.Write("|")

Console.SetCursorPosition(52, i) 'este es el q limita a telefonos
Console.Write("|")
Console.SetCursorPosition(65, i) 'este es el q limita a ID
Console.Write("|")
Next i 'lineas intermedias verticales


For j = 3 To 17 Step 6 ' lineas horizontales

For i = 1 To 77 Step 1
Console.SetCursorPosition(i, j)
Console.Write("-")
Next i 'lineas horizontales

Next j


j = 0
i = 0
For x = 0 To 2 Step 1

j += 6

Console.SetCursorPosition(2, j)
Console.Write(tabla(x, 0))

Console.SetCursorPosition(15, j)
Console.Write(tabla(x, 1))


Console.SetCursorPosition(37, j)
Console.Write(tabla(x, 2))

Console.SetCursorPosition(53, j)
Console.Write(tabla(x, 3))

Console.SetCursorPosition(66, j)
Console.Write(tabla(x, 4))

If j = 18 Then
j = 6
End If

Next x

'nota para mi: si quisieramos hacer el anterior proceso automatico con un numero
'dificil de manejar redimecnioar la pantalla para encontrar posiciones iguales
' creo que se usa Console.SetWindowSize asi correriamos en la posciion x y en y
' ademas hay q diseñar bien los siclo cuadno sale de uno y entrar en el otro porq ademas
'manejariamos las pociones en la matriz.





Console.Read()
End Sub

Sub Main()
Console.Clear()
Dim cp As datos '= New datos
Dim i As Byte = 0, j As Byte = 0
Dim ftabla As String 'la fecha en la tabal sera del tipo aa/mm//dd pero si tubiera q hacer algun conteo lo trabajo internamente como numericoS
' Dim continuar As Char
Dim continuar As ConsoleKeyInfo ' ojo ultilizar keyinfo ya que es lo mas recomendado porq si leyeramso una respuesta
'con read el entraria en un siclo si se precionaran mas teclas, es decir no se limita a leer
'un solo caracter, porloq genera repeticiones innecesarias y q podrias provocar problemas


System.Console.Title = "☺☻ " ' no los escribe pero se ven bn


'Dim BDvirtual(2, 4) As datos ' esto me declara una matriz de estructura o BDvirtual(100) As datos algo mas sencillo
'BDvirtual(i, j) = cp 'aqui ago la asiganacion

Dim BDvirtual(2, 4) As String 'pero parq mi proposito es una tabla lo que quiero realizar

While (i <= 2) ' el numero de registro que quiero presentar puede ser indefinido pero para este caso es estatico
j = 0
While (j <>
Try

Console.SetCursorPosition(30, 1)
System.Console.WriteLine("!!!!BD VIRTUAL!!!!")

Console.SetCursorPosition(0, 3)
System.Console.Write("Nombre Alumno: ")
cp.nombres = System.Console.ReadLine()

Console.SetCursorPosition(0, 4)
System.Console.Write("Apellido Alumno: ")
cp.apellidos = System.Console.ReadLine()

Console.SetCursorPosition(0, 5)
System.Console.Write("Telefono Alumno: ")
cp.telefono = System.Console.ReadLine()

Console.SetCursorPosition(0, 6)
System.Console.Write("Identificacion Alumno: ")
cp.id = System.Console.ReadLine()

Console.SetCursorPosition(0, 8)
System.Console.WriteLine("Fecha de Nacimiento:") 'fecha de naciminto
Console.SetCursorPosition(0, 9)
System.Console.Write("DD: MM: AA: ")
Console.SetCursorPosition(5, 9) 'leo el dia denacimeinto
cp.fnacimieto.dia = Convert.ToByte(Console.ReadLine)
Console.SetCursorPosition(12, 9) 'posicion del mes
cp.fnacimieto.mes = Convert.ToByte(Console.ReadLine)
Console.SetCursorPosition(21, 9) 'posicion del año
cp.fnacimieto.año = Convert.ToInt16(Console.ReadLine)

'ahora realizo la asignacion a mi BD virtual
BDvirtual(i, j) = cp.nombres
j += 1
BDvirtual(i, j) = cp.apellidos
j += 1
BDvirtual(i, j) = cp.telefono
j += 1
BDvirtual(i, j) = cp.id
j += 1
ftabla = cp.fnacimieto.dia & "-" & cp.fnacimieto.mes & "-" & cp.fnacimieto.año
BDvirtual(i, j) = ftabla

Catch ex As System.InvalidCastException ' no es la manera correcta pero tengo flojera
Console.Clear()
Console.WriteLine("(X) tenga cuidado con el tipo de dato que suministra")
Console.WriteLine("")
Console.WriteLine("")
Console.WriteLine("info del error (" & ex.ToString & ")")
Console.ReadKey()
Main()
End Try


'preguntemos si se registraran nuevos datos
Do
Console.SetCursorPosition(1, 10)
Console.WriteLine("Desea continuar s/n: ")
Console.SetCursorPosition(22, 10) ' borro donde recibo la respuesta
Console.Write(" ")
Console.SetCursorPosition(22, 10)
'continuar = Convert.ToChar(Console.Read())
continuar = Console.ReadKey()


If continuar.KeyChar = "s"c Then
i += 1
Console.Clear()
ElseIf continuar.KeyChar = "n"c Then 'hay q espesificar porq puede ser cualquier otra tecla
i = 3
End If


Loop While (continuar.KeyChar <> "s"c And continuar.KeyChar <> "n"c) 'fin wuile de decicion de continuar
End While 'while del j

End While ' while del i

System.Console.Clear()
'''' ahora boy a graficar la BDvirtual

graficar(BDvirtual)
System.Console.Read()
End Sub ' fin main

End Module

y aqui esta el proyecto en visual

el codigo es simple, son solo pruebas!!!!


No hay comentarios:

Publicar un comentario