Вы находитесь на странице: 1из 28

UNIVERSIDAD DE SAN

CARLOS DE GUATEMALA
FACULTAD DE INGENIERÍA
[092]
Programación de Computadoras 2
Ing. José Anibal Silva de los Angeles
Aux. Estuardo Chirix

Grupo no. Tarea:


9 Proyecto

Carnet Nombre
201503596 Diego Fernando
Quintero Paniagua
201504252 Josué David Gabriel
Gamboa

201403813 Elizardo Jimenez Cotto

201602498 Herber Fernando


Sandoval Márquez
______________________________
INTRODUCCIÓN
Una Base de datos es lo que se conoce como un almacén que nos permite almacenar
grandes cantidades de información de una manera organizada permitiéndonos
encontrarla y utilizarla con facilidad.
Desde un punto de vista informático la base de datos corresponde a un sistema formado
por un conjunto de datos almacenados en discos que permiten el acceso directo a la
información que se almacena y al grupo de programas que se utilizan para manipular
los datos. Entre estos programas podemos mencionar SQL Server, que es un sistema
de gestión de base de datos desarrollado por Microsoft, entre otros sistemas de gestión
de base de datos podemos mencionar Oracle, Postgres, etc. Los sistemas de bases de
datos utilizan un sistema de gestión que son un tipo de software muy específico
dedicado a servir como interfaz entre la base de datos y los usuarios que las manejaran.
Las bases de datos se encuentran compuestas de tablas que guardan la información.
Cada tabla contiene columnas, que guardan una parte de la información sobre cada
elemento y filas que conforman su respectivo registro.
JUSTIFICACIÓN
La primera vez que se acuño el termino de base de dato fue en 1963, en un simposio
celebrado en California, en donde se determinó que una base de datos correspondía a
un conjunto de información relacionada que se encuentra estructurada o agrupada.
Una base de datos corresponde a una serie organizada y relacionada de datos entre sí,
que son recolectados y extrapolados por los sistemas de información utilizados por un
negocio o empresa. Entre las características que podemos mencionar de una base de
datos es su acceso concurrente por partes de los usuarios, la integridad de los datos,
las diversas consultas que se pueden realizar, el acceso mediante lenguajes de
programación y la independencia lógica y física de los datos.
Como futuros Ingenieros Industriales y Mecánicos Industriales es importante que
tengamos conocimiento del manejo de bases de datos, ya que al estar al frente de
proceso productivos debemos de tener un manejo adecuado de las materias primas,
suministros y productos que se manejaran, y un manejo adecuado de ellos se puede
lograr con la utilización de sistemas de bases de datos que nos permitan el control y
optimo manejo de estos.
OBJETIVOS

GENERAL

Desarrollar un programa en VisualBasic.Net donde se apliquen los conocimientos de


programación por eventos y sus conexiones con Bases de Datos de SQL Server.

ESPECIFICOS

 Solicitar distintos datos de usuarios, tales como usuario y contraseña, con la


capacidad de registrar nuevos usuarios, para inicios de sesión de administrador
y usuarios comunes.

 Registrar en Bases de Datos SQL Server los inicios y finalizaciones de sesión


de los diferentes usuarios registrados.

 Registrar en Bases de Datos SQL Server los datos de registro de los diferentes
usuarios, tales como nombre, usuario, correo electrónico, edad, fotografía y
contraseña.
FASE 1
El proyecto se inició con la siguiente fase

Login de usuario y administrador

Se ejecuta la pantalla principal donde es el login para el usuario o el administrador.


Los usuarios y administradores inicial su login y los usuarios pueden ver su login exitoso.
De lo contrario se les bloqueara su usuario.
El usuario se bloquea con los 6 intentos al igual que el administrador.
Login de administrador

Después de ingresar con el login del administrador se ejecuta la pantalla donde


podemos hacer las correcciones, bitácoras y creación de nuevos usuarios.
En esta parte se nota como se necesita un nombre de usuario, un nombre completo, o
correo electrónico. Es importante aclarar que el correo necesita solamente tener un @
para poder continuar.
La contraseña será de cantidad de 12 caracteres, con números, minúsculas y demás.
Se cifra además la contraseña para lograr un conexión segura.
La fotografía se transforma en unos y ceros.
También es posible activar los usuarios en caso de que hayan sido bloqueados por el
mismo usuario, opción que solo el administrador puede ejecutar.
El administrador dentro de su misma plataforma puede crear usuarios.
El administrador también puede modificar y eliminar los usuarios que se crearon dentro
de la plataforma.
Bitácoras

En este apartado se muestra el apartado de bitácoras para conocer los registros que
han ocurrido en los usuarios y administradores.
Logra poder enviar PDF’S al escritorio mediante una función que se integró en el código.
Aquí se ven los cambios que han ocurrido a lo largo de la configuración con el
administrador y los usuarios.
Código utilizado

Conexión
Imports System.Data.SqlClient

Public Class Conexion

Dim conexion As SqlConnection = New SqlConnection("Data Source = DIEGO-


PC\SQLEXPRESS; Initial Catalog = Aplicacion; Integrated Security = True")

Function RecibirConexion() As SqlConnection


Return conexion
End Function

End Class

Consulta
Public Class Consulta

Dim miconexion As New Conexion

Function verificarClave(usuario As String)


Dim clave As String
Dim conectar As SqlConnection = miconexion.RecibirConexion
Try
conectar.Open()
Dim accion As String = "SELECT clave FROM Usuario WHERE usuario =
@usuario;"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)
comando.Parameters.AddWithValue("@usuario", usuario)
Try
clave = Convert.ToString(comando.ExecuteScalar)
conectar.Close()
Return clave
Catch ex As Exception
conectar.Close()
Return vbNull
End Try
Catch ex As Exception
Console.WriteLine(ex.ToString)
Return vbNull
End Try

End Function

Function verificarEstado(usuario As String)


Dim estado As String
Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "SELECT estado FROM Usuario WHERE usuario =
@usuario;"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)
comando.Parameters.AddWithValue("@usuario", usuario)
Try
estado = Convert.ToString(comando.ExecuteScalar)
conectar.Close()
Return estado
Catch ex As Exception
conectar.Close()
Return vbNull
End Try
Catch ex As Exception
Console.WriteLine(ex.ToString)
Return vbNull
End Try

End Function

Function verificarUsuario(usuario As String)


Dim usuarioV As String
Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "SELECT usuario FROM Usuario WHERE usuario =
@usuario;"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)
comando.Parameters.AddWithValue("@usuario", usuario)
Try
usuarioV = Convert.ToString(comando.ExecuteScalar)
Console.WriteLine(usuarioV)
conectar.Close()
Return usuarioV
Catch ex As Exception
conectar.Close()
Return vbNull
End Try
Catch ex As Exception
Console.WriteLine(ex.ToString)
Return vbNull
End Try
End Function

Function conocerId(usuario As String)


Dim id As Integer
Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "SELECT id FROM Usuario WHERE usuario =
@usuario;"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)
comando.Parameters.AddWithValue("@usuario", usuario)
Try
id = Convert.ToString(comando.ExecuteScalar)
conectar.Close()
Return id
Catch ex As Exception
conectar.Close()
Return vbNull
End Try
Catch ex As Exception
Console.WriteLine(ex.ToString)
Return vbNull
End Try
End Function

Function ultimoRegistro()
Dim id As Integer
Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "SELECT id FROM Bitacora_Registro WHERE id =
(SELECT MAX(id) FROM Bitacora_Registro);"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)

Try
id = Convert.ToString(comando.ExecuteScalar)
conectar.Close()
Return id
Catch ex As Exception
conectar.Close()
Return vbNull
End Try
Catch ex As Exception
Console.WriteLine(ex.ToString)
Return vbNull
End Try

End Function

End Class

Eliminacion
Public Class Eliminacion

Dim miconexion As Conexion = New Conexion()

Sub eliminarUsuario(id As String)


Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "DELETE FROM Usuario WHERE id = @id;"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)

comando.Parameters.AddWithValue("@id", id)

Try
comando.ExecuteScalar()
MsgBox("Usuario Eliminado", MsgBoxStyle.Information,
"Informacion")
conectar.Close()
Catch ex As Exception
conectar.Close()
End Try

Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub

Sub eliminarIngreso(id As String)


Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "DELETE FROM Bitacora_Ingreso WHERE id_usuario
= @id;"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)

comando.Parameters.AddWithValue("@id", id)

Try
comando.ExecuteScalar()
conectar.Close()
Catch ex As Exception
conectar.Close()
End Try

Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub

End Class

Insersiones
Public Class Insersiones
Dim miconexion As Conexion = New Conexion()

Sub insertaUsuario(nombre As String, usuario As String, correo As String,


edad As String, fotografia As Byte(), clave As String)
Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "INSERT INTO
Usuario(nombre,usuario,edad,correo_electronico,fotografia,clave,estado)
VALUES(@nombre, @usuario, @edad, @correo, @rutaimg, @clave,1)"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)

comando.Parameters.AddWithValue("@nombre", nombre)
comando.Parameters.AddWithValue("@usuario", usuario)
comando.Parameters.AddWithValue("@edad", edad)
comando.Parameters.AddWithValue("@correo", correo)
comando.Parameters.AddWithValue("@rutaimg", fotografia)
comando.Parameters.AddWithValue("@clave", clave)

Try
comando.ExecuteScalar()
conectar.Close()
Catch ex As Exception
conectar.Close()
End Try

Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub
Sub bitacoraIngreso(fechaIngreso As String, hora As String, estado As String,
id As Integer)

Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "INSERT INTO Bitacora_Ingreso(fecha_ingreso,
hora , estado, id_usuario) VALUES(@fecha_ingreso, @hora, @estado, @id_usuario);"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)

comando.Parameters.AddWithValue("@fecha_ingreso", fechaIngreso)
comando.Parameters.AddWithValue("@hora", hora)
comando.Parameters.AddWithValue("@estado", estado)
comando.Parameters.AddWithValue("@id_usuario", id)

Try
comando.ExecuteScalar()
conectar.Close()
Catch ex As Exception
conectar.Close()
End Try

Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub

Sub bitacoraRegistro(horaInicio As String)

Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "INSERT INTO Bitacora_Registro(hora_inicio,
id_usuario) VALUES(@hora_inicio, '1');"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)

comando.Parameters.AddWithValue("@hora_inicio", horaInicio)

Try
comando.ExecuteScalar()
conectar.Close()
Catch ex As Exception
conectar.Close()
End Try

Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub

Sub bitacoraCambio(nombreCambio As String, nombreUsuario As String, id As


Integer)

Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "INSERT INTO Cambio(nombre_cambio,
nombre_usuario, id_bitacora_registro) VALUES(@nombre_cambio, @nombre_usuario,
@id_bitacora_registro);"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)

comando.Parameters.AddWithValue("@nombre_cambio", nombreCambio)
comando.Parameters.AddWithValue("@nombre_usuario", nombreUsuario)
comando.Parameters.AddWithValue("@id_bitacora_registro", id)

Try
comando.ExecuteScalar()
conectar.Close()
Catch ex As Exception
conectar.Close()
End Try

Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub

End Class

Sesion
Public Class Sesion
Dim miconexion As Conexion = New Conexion()
Dim idUsuario As String

Sub enviarUsuario(usuario As String)


Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "SELECT id FROM Usuario WHERE usuario =
@usuario;"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)
comando.Parameters.AddWithValue("@usuario", usuario)

Try
idUsuario = Convert.ToString(comando.ExecuteScalar)
conectar.Close()
Catch ex As Exception
conectar.Close()
End Try

Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub

Function recibirId()
Return idUsuario
End Function

End Class
Encriptacion
Public Class SImple3Des

Private TripleDes As New TripleDESCryptoServiceProvider

Private Function TruncateHash(ByVal key As String, ByVal length As Integer)


As Byte()
Dim sha1 As New SHA1CryptoServiceProvider

Dim keyBytes() As Byte =


System.Text.Encoding.Unicode.GetBytes(key)
Dim hash() As Byte = sha1.ComputeHash(keyBytes)

ReDim Preserve hash(length - 1)


Return hash
End Function

Sub New(ByVal key As String)


TripleDes.Key = TruncateHash(key, TripleDes.KeySize \ 8)
TripleDes.IV = TruncateHash("", TripleDes.BlockSize \ 8)
End Sub

'metodo para cifrar cadenas


Public Function EncryptData(ByVal plaintext As String) As String

Dim plaintextBytes() As Byte =


System.Text.Encoding.Unicode.GetBytes(plaintext)

Dim ms As New System.IO.MemoryStream

Dim encStream As New CryptoStream(ms,


TripleDes.CreateEncryptor(),
System.Security.Cryptography.CryptoStreamMode.Write)

encStream.Write(plaintextBytes, 0, plaintextBytes.Length)
encStream.FlushFinalBlock()

Return Convert.ToBase64String(ms.ToArray)
End Function

End Class

Actualizar
Public Class Actualizar

Dim miconexion As New Conexion

Sub actualizarUsuario(id As String, nombre As String, usuario As String,


correo As String, edad As String)

Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "UPDATE Usuario SET nombre = @nombre, usuario
= @usuario, edad = @edad, correo_electronico = @correo WHERE id = @id;"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)

comando.Parameters.AddWithValue("@id", id)
comando.Parameters.AddWithValue("@nombre", nombre)
comando.Parameters.AddWithValue("@usuario", usuario)
comando.Parameters.AddWithValue("@edad", edad)
comando.Parameters.AddWithValue("@correo", correo)

Try
comando.ExecuteScalar()
MsgBox("Usuario actualizado", MsgBoxStyle.Information,
"Informacion")
conectar.Close()
Catch ex As Exception
conectar.Close()
End Try

Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub

Sub actualizarEstado(estado As String, id As String)

Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "UPDATE Usuario SET estado = @estado WHERE id
= @id;"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)

comando.Parameters.AddWithValue("@estado", estado)
comando.Parameters.AddWithValue("@id", id)

Try
comando.ExecuteScalar()
conectar.Close()
Catch ex As Exception
conectar.Close()
End Try

Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub

Sub actualizarUsuarioImg(id As String, nombre As String, usuario As String,


correo As String, edad As String, foto As Byte())

Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "UPDATE Usuario SET nombre = @nombre, usuario
= @usuario, edad = @edad, correo_electronico = @correo, fotografia = @foto WHERE
id = @id;"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)

comando.Parameters.AddWithValue("@id", id)
comando.Parameters.AddWithValue("@nombre", nombre)
comando.Parameters.AddWithValue("@usuario", usuario)
comando.Parameters.AddWithValue("@edad", edad)
comando.Parameters.AddWithValue("@correo", correo)
comando.Parameters.AddWithValue("@foto", foto)
Try
comando.ExecuteScalar()
MsgBox("Usuario actualizado", MsgBoxStyle.Information,
"Informacion")
conectar.Close()
Catch ex As Exception
conectar.Close()
End Try

Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub

Sub actualizarBitacora(horaFin As String, id As String)

Dim conectar As SqlConnection = miconexion.RecibirConexion

Try
conectar.Open()
Dim accion As String = "UPDATE Bitacora_Registro SET hora_fin =
@hora_fin WHERE id = @id;"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)

comando.Parameters.AddWithValue("@hora_fin", horaFin)
comando.Parameters.AddWithValue("@id", id)

Try
comando.ExecuteScalar()
conectar.Close()
Catch ex As Exception
conectar.Close()
End Try

Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub

End Class

Opciones a ejecutar en la clase principal


Public Class Principal

Dim contador As Integer = 0


Dim hora As String
Dim fecha As String

Private Sub LinkLabel1_LinkClicked(sender As Object, e As


LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
RegistroUsuario.Show()
Me.Hide()
End Sub

Private Sub Principal_Load(sender As Object, e As EventArgs) Handles


MyBase.Load
Timer1.Enabled = True 'inicio de temporizador
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles


Button1.Click
Dim usuario As String = Convert.ToString(TextBoxUsuario.Text)
Dim clave As String = Convert.ToString(TextBoxClave.Text)
Dim miConsulta As Consulta = New Consulta()
Dim enSesion As Sesion = New Sesion()

enSesion.enviarUsuario(usuario)

Try
Dim capturarEstado As String = miConsulta.verificarEstado(usuario)
'proteger clave
Dim proteger As New SImple3Des(clave)
Dim cifrarClave As String = proteger.EncryptData(clave)

If (TextBoxUsuario.Text IsNot "" And TextBoxClave.Text IsNot "") Then


If (capturarEstado.Equals("False")) Then
MsgBox("Usuario Bloqueado", MsgBoxStyle.Exclamation,
"Advertencia")
Else
Dim claveCapturada As String =
miConsulta.verificarClave(usuario)

If (claveCapturada.Equals(cifrarClave)) Then
If (usuario.Equals("administrador")) Then
PrincipalAdministrador.Show()
Me.Hide()
Else
'reporte de ingresos fallidos
Dim ingreso As New Insersiones
ingreso.bitacoraIngreso(fecha, hora, "Exitoso",
miConsulta.conocerId(usuario))

PrincipalUsuario.Show()
Me.Hide()
End If

Else
'reporte de ingresos fallidos
Dim ingreso As New Insersiones
ingreso.bitacoraIngreso(fecha, hora, "Fallido",
miConsulta.conocerId(usuario))

MsgBox("Credenciales Incorrectas")
contador = contador + 1

If (contador = 3) Then
MsgBox("Datos incorrectos.(3 intentos)",
MsgBoxStyle.Exclamation, "Advertencia")
ElseIf (contador = 6) Then
MsgBox("Su cuenta ha sido bloqueda por exceso de
intentos.(6)", MsgBoxStyle.Exclamation, "Advertencia")
Dim actualizar As New Actualizar
Dim consultar As New Consulta
actualizar.actualizarEstado(False,
consultar.conocerId(usuario))
End If

End If
End If
Else
MsgBox("Ingrese sus credenciales", MsgBoxStyle.Exclamation,
"Advertencia")
End If

Catch ex As Exception
MsgBox("Credenciales no existen")
End Try

TextBoxClave.Text = ""

End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick


hora = Date.Now.ToShortTimeString
fecha = Date.Now.ToShortDateString
End Sub

Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles


PictureBox1.Click

End Sub
End Class

Principal administrador
Public Class PrincipalAdministrador

Dim miconexion As New Conexion


Dim horaInicio As String
Dim horaFin As String

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles


Button2.Click
Dim actualizar As New Actualizar

Dim id As String = ComboBox1.SelectedValue


Dim nombre As String = TextBoxNombre.Text
Dim usuario As String = TextBoxUsuario.Text
Dim edad As String = TextBoxEdad.Text
Dim correo As String = TextBoxCorreo.Text
Dim foto As Byte() = Nothing

If (OpenFileDialog1.FileName.Equals("OpenFileDialog1")) Then

actualizar.actualizarUsuario(id, nombre, usuario, correo, edad)


Else
Console.WriteLine(OpenFileDialog1.FileName)
foto = System.IO.File.ReadAllBytes(OpenFileDialog1.FileName)
actualizar.actualizarUsuarioImg(id, nombre, usuario, correo, edad,
foto)
End If

TextBoxNombre.Text = ""
TextBoxUsuario.Text = ""
TextBoxCorreo.Text = ""
TextBoxEdad.Text = ""
PictureBox1.Image = Nothing
PictureBoxEstado.BackColor = Color.Transparent
'guardar cambios de bitacora de registro
Dim insertar As New Insersiones
Dim consulta As New Consulta
insertar.bitacoraCambio("Actualizacion", ComboBox1.Text,
consulta.ultimoRegistro)

End Sub

Private Sub PrincipalAdministrador_Load() Handles MyBase.Load


Timer1.Enabled = True
'registro hora inicio
horaInicio = Date.Now.ToShortTimeString
Console.WriteLine("hora inicio: " + horaInicio)
Dim insertar As New Insersiones
insertar.bitacoraRegistro(horaInicio)

Dim conectar As SqlConnection = miconexion.RecibirConexion


Try
conectar.Open()
Dim accion As String = "SELECT *FROM Usuario WHERE id != '1';"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)
Dim adaptador As New SqlDataAdapter(comando)

Try
Dim tabla As New DataTable()
adaptador.Fill(tabla)
ComboBox1.DataSource = tabla
ComboBox1.DisplayMember = "usuario"
ComboBox1.ValueMember = "id"
conectar.Close()
Catch ex As Exception
conectar.Close()
End Try
Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub

Private Sub Button9_Click(sender As Object, e As EventArgs) Handles


Button9.Click

Dim id As String = ComboBox1.SelectedValue


Dim conectar As SqlConnection = miconexion.RecibirConexion
Try
conectar.Open()
Dim accion As String = "SELECT nombre, usuario, edad,
correo_electronico, fotografia, estado FROM Usuario WHERE id = @id;"
Dim comando As SqlCommand = New SqlCommand(accion, conectar)
comando.Parameters.AddWithValue("@id", id)
Dim leer As SqlDataReader = comando.ExecuteReader()

Try
If (leer.Read()) Then

TextBoxNombre.Text = leer("nombre").ToString
TextBoxUsuario.Text = leer("usuario").ToString
TextBoxEdad.Text = leer("edad").ToString
TextBoxCorreo.Text = leer("correo_electronico").ToString
Dim bytes As Byte() = leer("fotografia")
PictureBox1.Image = Image.FromStream(New MemoryStream(bytes))
Dim estado As String = leer("estado").ToString
Console.WriteLine("estado" + estado)

If (estado = "True") Then


PictureBoxEstado.BackColor = Color.Green
Else
PictureBoxEstado.BackColor = Color.Red
End If

End If
leer.Close()
conectar.Close()
Catch ex As Exception
leer.Close()
conectar.Close()
End Try
Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try

End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles


Button4.Click
RegistrarUsuarioAdmin.Show()
Me.Close()
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick


TextBoxHora.Text = Date.Now.ToShortTimeString
TextBoxFecha.Text = Date.Now.ToShortDateString
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles


Button1.Click
OpenFileDialog1.ShowDialog()
Dim capturarFoto As String = OpenFileDialog1.FileName
PictureBox1.ImageLocation = capturarFoto
End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles


Button3.Click
Dim id As String = ComboBox1.SelectedValue
Dim eliminar As New Eliminacion
eliminar.eliminarIngreso(id)
eliminar.eliminarUsuario(id)
'guardar cambios de bitacora de registro
Dim insertar As New Insersiones
Dim consulta As New Consulta
insertar.bitacoraCambio("Eliminar", ComboBox1.Text,
consulta.ultimoRegistro)
Me.PrincipalAdministrador_Load()

TextBoxNombre.Text = ""
TextBoxUsuario.Text = ""
TextBoxCorreo.Text = ""
TextBoxEdad.Text = ""
PictureBox1.Image = Nothing
PictureBoxEstado.BackColor = Color.Transparent

End Sub
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles
Button8.Click

Dim id As String = ComboBox1.SelectedValue


Dim actualizar As New Actualizar
actualizar.actualizarEstado("True", id)
Me.PrincipalAdministrador_Load()
MsgBox("Estado actualizado", MsgBoxStyle.Information, "Informacion")

'guardar cambios de bitacora de registro


Dim insertar As New Insersiones
Dim consulta As New Consulta
insertar.bitacoraCambio("Activar Usuario", ComboBox1.Text,
consulta.ultimoRegistro)

End Sub

Private Sub Button10_Click(sender As Object, e As EventArgs) Handles


Button10.Click
'hora fin de la sesion
horaFin = TextBoxHora.Text
Dim actualizar As New Actualizar
Dim consultar As New Consulta
actualizar.actualizarBitacora(horaFin, consultar.ultimoRegistro)

Principal.Show()
Me.Close()
TextBoxNombre.Text = ""
TextBoxUsuario.Text = ""
TextBoxCorreo.Text = ""
TextBoxEdad.Text = ""
PictureBox1.Image = Nothing
PictureBoxEstado.BackColor = Color.Transparent
End Sub

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles


Button5.Click
Bitacora.Show()
End Sub

End Class

Principal USUARIO
Public Class PrincipalUsuario

Private Sub PrincipalUsuario_Load(sender As Object, e As EventArgs) Handles


MyBase.Load
Timer1.Enabled = True
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick


TextBoxHora.Text = Date.Now.ToShortTimeString
TextBoxFecha.Text = Date.Now.ToShortDateString
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles


Button1.Click
Principal.Show()
Principal.TextBoxClave.Text = ""
Principal.TextBoxUsuario.Text = ""
Me.Close()
End Sub

Registro administrador
Public Class RegistrarUsuarioAdmin

Dim miConsulta As New Consulta


Dim insertar As New Insersiones

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles


Button2.Click
Dim nombre As String = Convert.ToString(TextBoxNombre.Text)
Dim usuario As String = Convert.ToString(TextBoxUsuario.Text)
Dim correo As String = Convert.ToString(TextBoxCorreo.Text)
Dim edad As String = Convert.ToString(TextBoxEdad.Text)
Dim clave As String = Convert.ToString(TextBoxClave.Text)

'proteger clave
Dim proteger As New SImple3Des(clave)
Dim cifrarClave As String = proteger.EncryptData(clave)

If (nombre IsNot "" And usuario IsNot "" And correo IsNot "" And edad
IsNot "" And OpenFileDialog1.FileName IsNot "OpenFileDialog1" And clave IsNot "")
Then
Dim foto As Byte() = Nothing
foto = System.IO.File.ReadAllBytes(OpenFileDialog1.FileName)
If (miConsulta.verificarUsuario(usuario).Equals("")) Then
If (clave.Length >= 12 And Regex.IsMatch(clave, "[0-9][0-9]*")
And Regex.IsMatch(clave, "[a-zA-Z][a-zA-Z]*") And Regex.IsMatch(clave, "[@|.|-
|_]")) Then

If (Regex.IsMatch(correo, "[a-zA-Z][a-zA-Z|_]*@[a-zA-Z][a-zA-
Z]*.com")) Then
insertar.insertaUsuario(nombre, usuario, correo, edad,
foto, cifrarClave)
Console.WriteLine(cifrarClave)

Dim capturarAccion As String = MsgBox("Usuario creado con


exito", MsgBoxStyle.OkOnly)
Console.WriteLine(capturarAccion)
If (capturarAccion.Equals("1")) Then
TextBoxNombre.ResetText()
TextBoxUsuario.ResetText()
TextBoxCorreo.ResetText()
TextBoxEdad.ResetText()
PictureBox1.ImageLocation() = ""
TextBoxClave.ResetText()
PrincipalAdministrador.Show()
Me.Hide()

End If
Else
MsgBox("Formato de correo no valido",
MsgBoxStyle.Exclamation, "Advertencia")
End If
Else
MsgBox("Contraseña de contener: almenos 12 caracteres,
numeros, letras y caracteres especiales(@, -, _, .)", MsgBoxStyle.Exclamation,
"Advertencia")
End If
Else
MsgBox("El usuario ya existe", MsgBoxStyle.Exclamation,
"Advertencia")
End If
Else
MsgBox("Complete los campos obligatorios", MsgBoxStyle.Exclamation,
"Advertencia")
End If

'guardar cambios de bitacora de registro


Dim consulta As New Consulta
insertar.bitacoraCambio("Registrar Usuario", usuario,
consulta.ultimoRegistro)

End Sub

Private Sub RegistrarUsuarioAdmin_Load(sender As Object, e As EventArgs)


Handles MyBase.Load
Timer1.Enabled = True

Dim img As Byte() =


System.IO.File.ReadAllBytes("C:\Users\Alejandro\Documents\Visual Studio
2013\Projects\AplicacionFase1\FotoPerfil\perfil.png")
Console.WriteLine(img)

End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick


TextBoxHora.Text = Date.Now.ToShortTimeString
TextBoxFecha.Text = Date.Now.ToShortDateString
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles


Button1.Click
OpenFileDialog1.ShowDialog()
Dim capturarFoto As String = OpenFileDialog1.FileName
PictureBox1.ImageLocation = capturarFoto
End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles


Button3.Click
TextBoxNombre.ResetText()
TextBoxUsuario.ResetText()
TextBoxCorreo.ResetText()
TextBoxEdad.ResetText()
PictureBox1.ImageLocation() = ""
TextBoxClave.ResetText()
PrincipalAdministrador.Show()
Me.Hide()
End Sub
End Class

Bitacora
Public Class Bitacora

Private Sub Bitacora_Load(sender As Object, e As EventArgs) Handles


MyBase.Load
'TODO: This line of code loads data into the
'AplicacionDataSet2.QueryCambioNuevo' table. You can move, or remove it, as
needed.

Me.QueryCambioNuevoTableAdapter.Fill(Me.AplicacionDataSet2.QueryCambioNuevo)
'TODO: This line of code loads data into the
'AplicacionDataSet1.QueryCambio' table. You can move, or remove it, as needed.
Me.QueryCambioTableAdapter.Fill(Me.AplicacionDataSet1.QueryCambio)
'TODO: This line of code loads data into the
'AplicacionDataSet.Query_procedure' table. You can move, or remove it, as needed.
Me.Query_procedureTableAdapter.Fill(Me.AplicacionDataSet.Query_procedure)

Timer1.Enabled = True

End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

TextBoxHora.Text = Date.Now.ToShortTimeString
TextBoxFecha.Text = Date.Now.ToShortDateString

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles


Button1.Click
crearPdf("C:\Users\Diego\Desktop\reporteIngreso.pdf", DataGridView1,
"Reporte Ingreso")

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles


Button2.Click

crearPdf("C:\Users\Diego\Desktop\reporteRegistro.pdf", DataGridView2,
"Reporte Registro")

End Sub

Sub crearPdf(ruta As String, datagrid As DataGridView, titulo As String)

Dim path As String = ruta


Dim parrafo As New Paragraph ' CREAR NUEVO PARRAFO
Dim archivoPDF As New Document(PageSize.A4, 40, 40, 40, 20) 'DIMENCIONES
DEL ARCHIVO PDF
archivoPDF.AddTitle(titulo) 'Titulo del pdf
Dim escribir As PdfWriter = PdfWriter.GetInstance(archivoPDF, New
FileStream(path, FileMode.Create))
archivoPDF.Open()

'TIPO DE LETRA
Dim pTitulo As New Font(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 14,
iTextSharp.text.Font.BOLD, BaseColor.BLACK)
Dim pTabla As New Font(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 12,
iTextSharp.text.Font.NORMAL, BaseColor.BLACK)

'INSERTAR TITULO EN ARCHIVO PDF


parrafo = New Paragraph(New Chunk(titulo, pTitulo))
parrafo.Alignment = Element.ALIGN_CENTER
parrafo.SpacingAfter = 5.0F

'AGREGAR LA PAGINA CON SU CONFIGURACION


archivoPDF.Add(parrafo)
'CREAR INFORMACION EN LA TABLA
Dim pdfTabla As New PdfPTable(datagrid.Columns.Count)
'CONFIGURACION DE LA TABLA
pdfTabla.TotalWidth = 500.0F
pdfTabla.LockedWidth = True

Dim ancho(0 To datagrid.Columns.Count - 1) As Single


For i As Integer = 0 To datagrid.Columns.Count - 1
ancho(i) = 1.0F
Next

pdfTabla.SetWidths(ancho)
pdfTabla.HorizontalAlignment = 0
pdfTabla.SpacingBefore = 5.0F

'CREACION DE CELDAS
Dim pdfCelda As New PdfPCell

'CREAR CABECERA DEL PDF


For i As Integer = 0 To datagrid.Columns.Count - 1
pdfCelda = New PdfPCell(New Phrase(New
Chunk(datagrid.Columns(i).HeaderText, pTabla)))

'ALINEAR CABECERA DE LA TABLA


pdfCelda.HorizontalAlignment = PdfPCell.ALIGN_LEFT
'AGREGAR CELDA DENTRO DE LA TABLA
pdfTabla.AddCell(pdfCelda)
Next

'AGREGAR DATA DENTRO DE LA TABLA


For i As Integer = 0 To datagrid.Rows.Count - 2
For j As Integer = 0 To datagrid.Columns.Count - 1
pdfCelda = New PdfPCell(New Phrase(datagrid(j,
i).Value.ToString(), pTabla))
pdfTabla.HorizontalAlignment = PdfPCell.ALIGN_LEFT
pdfTabla.AddCell(pdfCelda)
Next
Next

'AGREGAR LA TABLA DENTRO DEL DOCUMENTO PDF


archivoPDF.Add(pdfTabla)
archivoPDF.Close() 'CERRRAR TODAS LA SESIONES

'MOSTRAR MENSAJE DE EXPORTACION


MsgBox("PDF Exportado", MsgBoxStyle.Information, "Informacion")

End Sub

Private Sub DataGridView1_CellContentClick(sender As Object, e As


DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick

End Sub
End Class
CONCLUSIONES

 Se logro ejecutar una aplicación capaz de solicitar distintos datos, a través de


una pequeña ventana, tales como los nombres completos, usuarios, contraseñas
enlazadas a dichos usuarios, además de la capacidad de crear nuevos usuarios,
y realizar inicios y cierres de sesión.

 Se programo la capacidad de llevar un registro ordenado de los inicios y cierres


de sesión, clasificándolos por usuarios y horas de actividad, a través de la
conexión con base de datos de SQL Server.

 Se programo la capacidad de llevar un registro ordenado de los datos más


relevantes que identifican a los diferentes usuarios de la aplicación, tales como
los nombres completos, nombres de usuario, correo electrónico, edad, fotografía
y contraseña enlazadas a las cuentas.
Bibliografia
 Foro de Microsoft, dudas y consultas sobre visual studio, sin fecha,
www.microsoft.com
Anexos
 Link de video de Youtube para conocer a profundidad el programa
https://www.youtube.com/watch?v=c77gx4-FpTA&list=UUYFjTwGnlx-r1-ADpN7fwxA

Вам также может понравиться