BIBLIOTECA VIRTUAL de Derecho, Economía y Ciencias Sociales

DESARROLLO DE APLICACIONES EN MICROSOFT® EXCEL

Juan Carlos Vergara Schmalbach y Víctor Manuel Quesada Ibargüen




Esta página muestra parte del texto pero sin formato.

Puede bajarse el libro completo en PDF comprimido ZIP (162 páginas, 1.85 Mb) pulsando aquí

 

10. DISEÑO DE UNA APLICACIÓN PARA EL CONTROL DE VOTACIONES

Objetivo: Desarrollar una aplicación para el CONTROL DE VOTACIONES, empleando Visual Basic para Aplicaciones.

Primer paso: Diseño de la portada de la aplicación

Diseñe una portada distintiva relacionada con una campaña de elecciones. Incluya un botón denominado INICIAR mediante un hipervínculo que dirija al usuario a una hoja llamada REGISTRO.

En este caso, se eliminaron las líneas de división y encabezados, desmarcando la opción VER que se encuentra en la ficha DISEÑO DE PÁGINA en Office 2007 o en la ficha VISTA para Office 2010.

Segundo paso: Diseño de la plantilla para el registro de sufragios por mesas

Creé una tabla que contenga los siguientes campos:

Número (No.)

Nombre(s) (Máximo 20 caracteres)

Apellidos (Máximo 20 caracteres)

Cédula

Además, se incluirán dos botones denominados INGRESAR INSCRITO y BUSCAR. A diferencia de otros ejercicios de entregas anteriores, no se diseñará un formulario para realizar la búsqueda. En vez de esta opción, se colocarán los campos de búsqueda y resultados en el mismo formulario. La búsqueda se realizará por el número de CÉDULA, mostrando el(los) NOMBRE(S) y APELLIDOS en caso tal de que exista una coincidencia. Un ejemplo del diseño de la hoja podría ser como el que se muestra en la siguiente ilustración.

Tercer paso: Diseño del formulario principal para el ingreso de inscritos

Diseñe un formulario que contenga los campos sobre los datos personales de los inscritos e incluya un botón llamado INGRESAR, para efectuar el enlace entre el formulario y la hoja de cálculo (ver ilustración). Cambie la opción BACKCOLOR de los objetos y formulario para agregarle un poco más de vistosidad a la aplicación.

Modifique la opción MAXLENGTH de los TEXTBOX 1 y 2 para que admita un máximo de 20 caracteres. Haga doble click en el botón INGRESAR e incluya la siguiente rutina

Private Sub CommandButton1_Click()

For I = 1 To 200

If Cells(I + 9, 5).Value = TextBox3.Text Then

MsgBox ("LA PERSONA YA SE ENCUENTRA REGISTRADA")

Exit For

Else

If Cells(I + 9, 2).Value = "" Then

Cells(I + 9, 2).Value = I

Cells(I + 9, 3).Value = TextBox1.Text

Cells(I + 9, 4).Value = TextBox2.Text

Cells(I + 9, 5).Value = TextBox3.Text

TextBox1.Text = ""

TextBox2.Text = ""

TextBox3.Text = ""

Exit For

End If

End If

Next

End Sub

Entre las adiciones novedosas para el estudiante, se incluyó un condicional inicial en el ciclo FOR (IF THEN ELSE), cuya función es la de buscar si existe un registro de un usuario que coincida con el número de CÉDULA. Si esto ocurre, se enviará un mensaje de error empleando el comando MSGBOX (recuerde que la cédula se ubica en el ejemplo en la columna número 5 de la hoja de cálculo y en el TEXTBOX3 del formulario), saliendo del ciclo mediante el uso del comando EXIT FOR.

Si no se encuentra una coincidencia en el número de la CÉDULA, se procederá a trasladar los valores del formulario a la hoja de cálculo. Observe que una vez ingresados los datos de la persona, se borrarán los TEXTBOX de forma automática (esto se logra empleando la línea de código TEXTBOX#.TEXT = “”).

Cuarto paso: Activar el formulario desde la hoja de cálculo

Regrese a la hoja de cálculo y haga doble click en el botón INGRESAR INSCRITO y escriba el siguiente código.

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Realice una prueba rápida sobre el funcionamiento del formulario.

Quinto paso: Programación de la opción de búsqueda de inscritos

Ingrese el siguiente código para programar el botón BUSCAR que esta ubicado en la hoja.

Private Sub CommandButton2_Click()

For I = 1 To 200

If Cells(18, 8).Value = Cells(I + 9, 5).Value Then

Cells(23, 8).Value = Cells(I + 9, 3).Value

Cells(24, 8).Value = Cells(I + 9, 4).Value

Exit For

End If

Next

End Sub

Nótese que el llamado que hace el comando CELLS(18,8).VALUE equivale al valor de la celda donde se escribe la CÉDULA que va a ser buscada.

Sexto paso: Plantilla para el registro de las votaciones

Luego de programar el registro de inscritos a la jornada electoral, se procederá a la creación de una plantilla (en una hoja llamada MESAS) para el registro de los votos de aquellas personas que reposan en el listado anterior. Para este ejercicio se tomarán los siguientes supuestos:

Cuatro aspirantes a un mismo cargo

Una mesa de votación

Solo se podrá votar una vez

Se debe elegir a un solo candidato de los cuatro aspirantes

Puede votar aquel que se haya inscrito previamente

Para cumplir con estos requisitos, la plantilla debe contar con los siguientes campos:

Consecutivo (No.)

Votantes (equivalente a la cédula de la persona que ejerce el voto)

Candidato 1 (Acumulado de votos a favor del candidato 1)

Candidato 2 (Acumulado de votos a favor del candidato 2)

Candidato 3 (Acumulado de votos a favor del candidato 3)

Candidato 4 (Acumulado de votos a favor del candidato 4)

Total (el resultado de la suma de todos los votos)

Incluya imágenes que representen los candidatos, un botón denominado VOTAR, una gráfica resumen y el número de la mesa.

Ingrese la función SUMA para calcular el número total de los votos. Rellene los votos por candidato con valores de cero.

Séptimo paso: Formulario para el registro de los votos

El primer paso para crear el formulario basado en los requisitos definidos en el paso anterior, se debe agregar un campo denominado CÉDULA DEL VOTANTE junto a un botón con la función de ACTIVAR. Luego coloque un control IMAGE para representar la opción de voto con la imagen del candidato.

Haga doble click en la propiedad PICTURE para desplegar una ventana y poder seleccionar la imagen del candidato.

Modifique la propiedad PICTURESIZEMODE a 1 – FMPICTURESIZEMODESTRETCH para poder mostrar la imagen completa en el recuadro del control.

Realice los pasos anteriores para agregar las imágenes de los demás candidatos. Acompañe cada imagen con su correspondiente etiqueta de texto que los identifican.

Para evitar un voto no autorizado, cambie la propiedad ENABLED a FALSE para cada uno de los controles tipo IMAGE.

Octavo paso: Activar el formulario desde la hoja de cálculo

Regrese a la hoja de cálculo y haga doble click en el botón REGISTRO e ingrese el siguiente código.

Private Sub CommandButton1_Click()

UserForm2.Show

End Sub

Noveno paso: Programación del registro de votaciones

Haga doble click en el botón ACTIVAR del USERFORM2 e ingrese el siguiente código.

Private Sub CommandButton1_Click()

Registrado = "NO"

For I = 1 To 200

If TextBox1.Text = Sheets("Registro").Cells(I + 9, 5).Value Then

MsgBox ("EL USUARIO SE ENCUENTRA REGISTRADO. PUEDE REALIZAR LA VOTACIÓN")

Registrado = "SI"

Image1.Enabled = True

Image2.Enabled = True

Image3.Enabled = True

Image4.Enabled = True

Exit For

End If

Next

If Registrado = "NO" Then

MsgBox ("EL USUARIO NO SE ENCUENTRA REGISTRADO. USTED NO PUEDE VOTAR")

End If

End Sub

La primera parte del código crea una variable llamada REGISTRO cuyo valor es NO. Esto indica que de forma predeterminada el votante no está registrado. Luego se inicia un ciclo que busca el número de cédula en la hoja REGISTRO. En caso de que exista una coincidencia, aparecerá un mensaje EL USUARIO SE ENCUENTRA REGISTRADO. PUEDE REALIZAR LA VOTACIÓN, cambiando el valor de la variable registro a SI y activando cada control IMAGE.

En caso de que no exista una coincidencia, se muestra el mensaje EL USUARIO NO SE ENCUENTRA REGISTRADO. USTED NO PUEDE VOTAR. Ahora que están activados los controles IMAGE, proceda a pulsar doble click en el primero de ellos e ingrese el siguiente código.

Private Sub Image1_Click()

Voto = "NO"

For I = 1 To 200

If TextBox1.Text = Cells(I + 2, 14).Value Then

MsgBox ("EL USUARIO YA VOTÓ")

Voto = "SI"

Exit For

End If

Next

If Voto = "NO" Then

For I = 1 To 200

If Cells(I + 2, 13).Value = "" Then

Cells(13, 7).Value = Cells(13, 7).Value + 1

Cells(I + 2, 13).Value = I

Cells(I + 2, 14).Value = TextBox1.Text

Image1.Enabled = False

Image2.Enabled = False

Image3.Enabled = False

Image4.Enabled = False

UserForm2.Hide

Exit For

End If

Next

End If

End Sub

Este código comienza con la definición de la variable VOTO con un valor predeterminado igual a NO. Luego se realiza una búsqueda para determinar si la persona ha votado con anterioridad (esto evita que un usuario registrado vote más de una veces). En caso de acierto el valor de la variable VOTO cambia a SI.

El código continúa, en el caso de que la variable mantenga el valor NO, sumando un voto al candidato 1, actualizando el registro de votación y luego desactivando los controles IMAGE preparando el ingreso de un nuevo votante. Haga doble click en el control IMAGE2 e ingrese el siguiente código.

Private Sub Image2_Click()

Voto = "NO"

For I = 1 To 200

If TextBox1.Text = Cells(I + 2, 14).Value Then

MsgBox ("EL USUARIO YA VOTÓ")

Voto = "SI"

Exit For

End If

Next

If Voto = "NO" Then

For I = 1 To 200

If Cells(I + 2, 13).Value = "" Then

Cells(14, 7).Value = Cells(14, 7).Value + 1

Cells(I + 2, 13).Value = I

Cells(I + 2, 14).Value = TextBox1.Text

Image1.Enabled = False

Image2.Enabled = False

Image3.Enabled = False

Image4.Enabled = False

UserForm2.Hide

Exit For

End If

Next

End If

End Sub

Esta rutina cambia solo en la línea de código CELLS(14, 7).VALUE = CELLS(14, 7).VALUE + 1, donde la fila se incrementa en 1 para coincidir con el conteo de votos del candidato 2. Generé las rutinas para el resto de componentes IMAGE (3 y 4).

Décimo paso: Prueba de la aplicación

Realice la siguiente prueba sobre la aplicación

1.Ingrese los siguientes usuarios en la lista de inscritos

Pedro Pérez Ortiz – Cédula: 102049391

Julio López Romero – Cédula: 102049203

.

2.Ingrese la siguiente persona

Jaime Varela Ramírez – Cédula: 102049203

En este paso se debería generar el mensaje de coincidencia de la cédula

3.Modifique el número de cédula de la persona, para poder registrarla en la base de datos

Jaime Varela Ramírez – Cédula: 102047727

4.Pulse en el botón VOTAR de la hoja MESAS, digite la cédula 102041110 y pulse en el botón ACTIVAR.

Debe aparecer una ventana de aviso de que la persona se encuentra inscrita y da el paso a la votación.

5.Elija el candidato 2

La cédula aparece en listado anexo de votantes y la votación del candidato 2 es de 1.

6.Pulse en el botón VOTAR de la hoja MESAS, digite la cédula 102041880 y pulse en el botón ACTIVAR.

Debe salir un mensaje donde informa que el usuario no está inscrito.

7.Pulse en el botón VOTAR de la hoja MESAS, digite la cédula 102041110 y pulse en el botón ACTIVAR.

Debe aparecer una ventana de aviso de que la persona se encuentra inscrita y da el paso a la votación.

8.Elija el candidato 3

La aplicación debe mostrar un mensaje indicando que la persona ya ha votado.


Grupo EUMEDNET de la Universidad de Málaga Mensajes cristianos

Venta, Reparación y Liberación de Teléfonos Móviles
Enciclopedia Virtual
Biblioteca Virtual
Servicios