En la Entrada anterior desarrollamos gran parte del sistema, pueden ver la entrada aquí:
Parte 2
En la parte 3 desarrollaremos lo restante del sistema. Recuerda que el código fuente descargable se encuentra al final del tutorial.
Crear 4 windows forms como en la imagen:
Tenemos:
4 Labels.
3 TextBox: usuario(Enabled = False), contraseña, confirmar contraseña.
2 Buttons: Guardar y Salir.
1 PictureBox con una imagen cualquiera
usrInf As UsuarioInfo: Sirve para manipular un objeto info.
message As String: Sirve para almacenar texto de mensajes importantes a mostrar.
Tenemos:
3 Labels.
2 TextBox: usuario, contraseña.
2 Buttons: Guardar y Salir.
1 PictureBox con una imagen cualquiera
usrInf As UsuarioInfo: Sirve para manipular un objeto info.
message As String: Sirve para almacenar texto de mensajes importantes a mostrar.
Tenemos:
1 StatusStrip: Con un Label dentro para indicar el nombre del usuario en sesión.
1 MenuStrip: Dockeado en sentido vertical a la izquierda, para el diseño seguir la siguiente imagen:
PD: Cambiar el valor de la propiedad del formulado isMdiContainer en True.
Caso creación de usuario, "Guardado con éxito".
Caso cambio de contraseña, "Contraseñas no coinciden".
Caso cambio de contraseña, "Cambiada con éxito".
Parte 2
En la parte 3 desarrollaremos lo restante del sistema. Recuerda que el código fuente descargable se encuentra al final del tutorial.
Capa de Interfaz de Usuario
Se debe realizar referencias de la capa Business e Info.Crear 4 windows forms como en la imagen:
FrmLogin.vb
Ventana de login para acceso al sistema. Crear el diseño como en la imagen o a su preferencia:
Tenemos:
- 2 SplitContainer, uno horizontal y otro vertical.
- 1 PictureBox con una imagen cualquier.
- 2 TextBox, uno para ingresar nombre de usuario y el otro para la contraseña.
- 2 Labels.
- 2 Buttons, Aceptar y Salir
Propiedades:
userBus as UsuarioBus: Al realizar una instancia de esta propiedad, sirve para acceder a los métodos en la clase UsuarioBus.Constructor:
Se llama al método InitializeComponent y se instancia la propiedad userBus.Eventos:
- btnAceptar_Click: Invoca al método IsValidCredential proporcionandole los datos ingresados en los textboxes. Si las credenciales son válidas, se guarda el usuario logoneado en los parámetros del sistema (Business.SystemParameters.Instance.UserLogedIn). Finalmente se muestra un mensaje de bienvenida.
- btnSalir_Click: Cierra la ventana con un DialogResult de No, (esto le servirá al MDI para saber cuando mostrarse).
Código de la clase FrmLogin.
Imports RestorantSystem.Seguridad.Business Imports RestorantSystem.Seguridad.Info Public Class FrmLogin Private userBus As UsuarioBus Sub New() ' This call is required by the designer. InitializeComponent() ' Add any initialization after the InitializeComponent() call. userBus = New UsuarioBus() End Sub Private Sub btnAceptar_Click(sender As Object, e As EventArgs) Handles btnAceptar.Click Dim isValidLogin As Boolean = userBus.IsValidCredential(txtUserName.Text, txtPassword.Text) If isValidLogin Then Me.DialogResult = Windows.Forms.DialogResult.Yes Business.SystemParameters.Instance.UserLogedIn = New UsuarioInfo() With {.UserName = txtUserName.Text} MessageBox.Show("Bienvenido al Sistema!", "Ingreso Correcto", MessageBoxButtons.OK, MessageBoxIcon.Information) Me.Close() Else MessageBox.Show("Usuario o Contraseña incorrectos!, por favor verifique.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End If End Sub Private Sub btnSalir_Click(sender As Object, e As EventArgs) Handles btnSalir.Click Me.DialogResult = Windows.Forms.DialogResult.No
Me.Close() End Sub Protected Overrides Sub OnShown(e As EventArgs) MyBase.OnShown(e) txtUserName.Focus() End Sub End Class
FrmCambiarPwd.vb
Ventana para cambiar o reestablecer la contraseña del usuario logoneado. Crear el diseño como en la imagen.Tenemos:
4 Labels.
3 TextBox: usuario(Enabled = False), contraseña, confirmar contraseña.
2 Buttons: Guardar y Salir.
1 PictureBox con una imagen cualquiera
Propiedades
usrBus As UsuarioBus: Sirve para acceder a los métodos de la capa business.usrInf As UsuarioInfo: Sirve para manipular un objeto info.
message As String: Sirve para almacenar texto de mensajes importantes a mostrar.
Funciones
isValidInput: Función booleana para validar que todos los textboxes están llenos y que el texto en el campo "contraseña" sea igual al texto en el campo "confimar contraseña".Eventos
- btnGuardar_Click: Realiza 3 pasos; validar campos obligatorios, mapear textboxes a objeto info y guadar el registro en la base de datos.
- FrmCambiarPwd_Load: Escribe por default el nombre de usuario actualmente logoneado en el textbox correspondiente, usando los parametros generales del sistema (txtUserName.Text = Business.SystemParameters.Instance.UserLogedIn.UserName).
- btnSalir_Click: Cierra la ventana.
Código de la clase FrmCambiaPwd.
Imports RestorantSystem.Seguridad.Business Imports RestorantSystem.Seguridad.Info Public Class FrmCambiarPwd Private usrBus As UsuarioBus Private usrInf As UsuarioInfo Private message As String Private Function isValidInput() If txtUserName.Text.Equals(String.Empty) Then MessageBox.Show("Por favor ingrese nombre de usuario.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) txtUserName.Focus() Return False End If If txtPassword.Text.Equals(String.Empty) Then MessageBox.Show("Por favor ingrese la contraseña.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) txtPassword.Focus() Return False End If If txtPasswordConf.Text.Equals(String.Empty) Then MessageBox.Show("Por favor ingrese confirmación de la contraseña.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) txtPasswordConf.Focus() Return False End If If Not txtPasswordConf.Text.Equals(txtPassword.Text) Then MessageBox.Show("Contraseñas no coinciden.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) txtPasswordConf.Focus() Return False End If Return True End Function Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click 'validar campos obligatorios If Not isValidInput() Then Return 'mapear textboxes a objeto info usrInf = New UsuarioInfo usrInf.UserName = txtUserName.Text usrInf.Contrasenia = txtPassword.Text 'Guadar en la DB usrBus = New UsuarioBus usrBus.ChangePassword(usrInf) MessageBox.Show("Contraseña cambiada con éxito.", "Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub Private Sub FrmCambiarPwd_Load(sender As Object, e As EventArgs) Handles Me.Load txtUserName.Text = Business.SystemParameters.Instance.UserLogedIn.UserName End Sub Private Sub btnSalir_Click(sender As Object, e As EventArgs) Handles btnSalir.Click Me.Close() End Sub End Class
FrmUsuarioMnt.vb
Ventana para creación de nuevos usuarios. Crear el diseño como en la imagen.Tenemos:
3 Labels.
2 TextBox: usuario, contraseña.
2 Buttons: Guardar y Salir.
1 PictureBox con una imagen cualquiera
Propiedades
usrBus As UsuarioBus: Sirve para acceder a los métodos de la capa business.usrInf As UsuarioInfo: Sirve para manipular un objeto info.
message As String: Sirve para almacenar texto de mensajes importantes a mostrar.
Funciones
isValidInput: Función booleana para validar que todos los textboxes están llenos.Eventos
- btnGuardar_Click: Realiza 3 pasos; validar campos obligatorios, mapear textboxes a objeto info y guadar el registro en la base de datos.
- btnSalir_Click: Cierra la ventana.
Código de la clase FrmUsuarioMnt.
Imports RestorantSystem.Seguridad.Business Imports RestorantSystem.Seguridad.Info Public Class FrmUsuarioMnt Private usrBus As UsuarioBus Private usrInf As UsuarioInfo Private message As String Private Sub btnSalir_Click(sender As Object, e As EventArgs) Handles btnSalir.Click Me.Close() End Sub Private Function isValidInput() If txtUserName.Text.Equals(String.Empty) Then MessageBox.Show("Por favor ingrese nombre de usuario.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) txtUserName.Focus() Return False End If If txtPassword.Text.Equals(String.Empty) Then MessageBox.Show("Por favor ingrese la contraseña.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) txtPassword.Focus() Return False End If Return True End Function Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click 'validar campos obligatorios If Not isValidInput() Then Return 'mapear textboxes a objeto info usrInf = New UsuarioInfo usrInf.UserName = txtUserName.Text usrInf.Contrasenia = txtPassword.Text usrInf.Estado = "A" 'Guadar en la DB usrBus = New UsuarioBus usrBus.Insert(usrInf, message) MessageBox.Show(message, "Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub End Class
MDIRestorantSystem.vb
Formulario contenedor padre del sistema. Crear el diseño como en la imagen.Tenemos:
1 StatusStrip: Con un Label dentro para indicar el nombre del usuario en sesión.
1 MenuStrip: Dockeado en sentido vertical a la izquierda, para el diseño seguir la siguiente imagen:
Dentro del Menú "Sistema", tenemos 3 submenues; Usuarios, Cambiar Contraseña y Salir, con imagenes.
PD: Cambiar el valor de la propiedad del formulado isMdiContainer en True.
Eventos
- SalirToolStripMenuItem_Click: Cierra el formulario Mdi, y todos sus formularios hijos si los tuviere (es decir también cierra las otras ventanas si estuvieren abiertas).
- CambiarContraseñaToolStripMenuItem_Click: Abre la ventana de cambiar contraseñas.
- UsuariosToolStripMenuItem_Click: Abre la ventana de creación de cuentas de usuarios.
- MDIRestorantSystem_Load: Abre la ventana de logoneo como una ventana de dialogo, si al cerrar esta ventana, el resultado del dialogo fue "Yes" entonces se escribe en el StatusStrip el nombre del usuario logoneado. Si el resultado del dialogo fue diferente de "Yes", se cierra el sistema.
Código de la clase MDIRestorantSystem.
Public Class MDIRestorantSystem Private Sub SalirToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SalirToolStripMenuItem.Click Me.Close() End Sub Private Sub CambiarContraseñaToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CambiarContraseñaToolStripMenuItem.Click Dim frm As New FrmCambiarPwd frm.MdiParent = Me frm.Show() End Sub Private Sub UsuariosToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UsuariosToolStripMenuItem.Click Dim frm As New FrmUsuarioMnt frm.MdiParent = Me frm.Show() End Sub Private Sub MDIRestorantSystem_Load(sender As Object, e As EventArgs) Handles Me.Load Dim frmLog As New FrmLogin If frmLog.ShowDialog() <> Windows.Forms.DialogResult.Yes Then Me.Close() Else Me.tsslUserLogedIn.Text = "User: " + Business.SystemParameters.Instance.UserLogedIn.UserName End If End Sub End Class
Configuración del proyecto WinformUI
Se debe configurar las propiedades del proyecto para que el formulario de inicio sea "MDIRestorantSystem". En esta sección también se puede configurar un ícono. Ver la siguiente imagen:
Compilar toda la solución y ejecutar.
Pruebas
Caso credenciales incorrectas:
Caso credenciales correctas
Caso creación de usuario, "Usuario ya existe en la base de datos".
Caso cambio de contraseña, "Contraseñas no coinciden".
Comentarios
Publicar un comentario