Академический Документы
Профессиональный Документы
Культура Документы
CARLOS DE GUATEMALA
FACULTAD DE INGENIERÍA
[092]
Programación de Computadoras 2
Ing. José Anibal Silva de los Angeles
Aux. Estuardo Chirix
Carnet Nombre
201503596 Diego Fernando
Quintero Paniagua
201504252 Josué David Gabriel
Gamboa
GENERAL
ESPECIFICOS
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
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
End Class
Consulta
Public Class Consulta
End Function
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
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
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
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
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()
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)
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
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
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
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
encStream.Write(plaintextBytes, 0, plaintextBytes.Length)
encStream.FlushFinalBlock()
Return Convert.ToBase64String(ms.ToArray)
End Function
End Class
Actualizar
Public Class Actualizar
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
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
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
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
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 (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
End Sub
End Class
Principal administrador
Public Class PrincipalAdministrador
If (OpenFileDialog1.FileName.Equals("OpenFileDialog1")) Then
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
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
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)
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
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
End Sub
Principal.Show()
Me.Close()
TextBoxNombre.Text = ""
TextBoxUsuario.Text = ""
TextBoxCorreo.Text = ""
TextBoxEdad.Text = ""
PictureBox1.Image = Nothing
PictureBoxEstado.BackColor = Color.Transparent
End Sub
End Class
Principal USUARIO
Public Class PrincipalUsuario
Registro administrador
Public Class RegistrarUsuarioAdmin
'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)
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
End Sub
End Sub
Bitacora
Public Class Bitacora
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
TextBoxHora.Text = Date.Now.ToShortTimeString
TextBoxFecha.Text = Date.Now.ToShortDateString
End Sub
End Sub
crearPdf("C:\Users\Diego\Desktop\reporteRegistro.pdf", DataGridView2,
"Reporte Registro")
End Sub
'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)
pdfTabla.SetWidths(ancho)
pdfTabla.HorizontalAlignment = 0
pdfTabla.SpacingBefore = 5.0F
'CREACION DE CELDAS
Dim pdfCelda As New PdfPCell
End Sub
End Sub
End Class
CONCLUSIONES