Skip to content

Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

🗳️ Sistema de Padrón Electoral

Sistema de votación electrónica de escritorio desarrollado en Java con interfaz gráfica Swing y base de datos MySQL. Permite gestionar el proceso completo de votación presidencial: autenticación de autoridades de mesa, consulta del padrón, emisión de votos y cierre de mesa con estadísticas finales.


📋 Descripción

Este sistema fue desarrollado para simular las Elecciones Presidenciales 2023 de Argentina. Permite que el presidente de mesa inicie sesión, valide a los votantes contra el padrón electoral, y registre cada voto de forma segura en la base de datos. Incluye un sistema de registro de incidencias para auditoría.

Candidatos disponibles

CandidatoPartido
Javier MileiLibertad Avanza
Sergio MassaUnión por la Patria
Patricia BullrichJuntos por el Cambio
Juan SchiarettiHacemos por Nuestro País
Myriam BregmanFrente de Izquierda
Voto en blanco

🚀 Funcionalidades

  • 🔐 Autenticación de presidente de mesa — Login con usuario y contraseña, con control de acceso y registro de horario de apertura.
  • 🕐 Control horario — El sistema permite votar únicamente en el horario establecido (08:00 a 18:00 hs).
  • 📋 Consulta de padrón — Verificación del votante por DNI mostrando nombre y apellido.
  • 🗳️ Emisión de voto — Selección de candidato mediante botones de opción, con validación de voto doble.
  • 📊 Estadísticas de cierre — Al cerrar la mesa se muestran los votos totales por candidato, porcentajes y el ganador (o ballotage en caso de empate).
  • 📝 Registro de incidencias — Auditoría automática de todos los eventos importantes (ingresos, votos, errores, cierres).
  • 🌐 Verificación de conectividad — Chequeo de conexión a Internet antes de registrar el voto.

🏗️ Estructura del Proyecto

padron/
├── build.xml # Script de compilación Ant
├── manifest.mf # Manifiesto del JAR
├── src.zip # Backup de fuentes
├── nbproject/ # Configuración de NetBeans
│ ├── project.xml
│ ├── project.properties
│ ├── build-impl.xml
│ └── genfiles.properties
└── src/ # Código fuente
├── Clases/ # Capa de acceso a datos
│ ├── conectar.java # Clase de conexión MySQL (singleton)
│ └── conexion.java # Frame auxiliar de conexión
├── elecciones/ # Lógica principal del sistema
│ ├── Login.java # Pantalla de autenticación
│ ├── Login.form # Diseño visual del login
│ ├── Elecciones.java # Consulta e identificación del votante
│ ├── Elecciones.form # Diseño visual de la pantalla de padrón
│ ├── Candidatos.java # Pantalla de votación
│ ├── Candidatos.form # Diseño visual de la papeleta
│ └── Incidencia.java # Registro de eventos/auditoría
└── main/
└── main.java # Clase principal (entrada)

🗄️ Base de Datos

El sistema requiere una base de datos MySQL llamada padron en localhost:3308.

Tablas necesarias

padron — Registro de votantes habilitados

CREATETABLEpadron (
DNI INTPRIMARY KEY,
NOMBRE VARCHAR(100),
APELLIDO VARCHAR(100),
ESTADO_VOTACION INT DEFAULT 0-- 0: no votó, 1: ya votó
);

presidente — Lista de candidatos

CREATETABLEpresidente (
ID INTPRIMARY KEY AUTO_INCREMENT,
NOMBRE VARCHAR(100),
PARTIDO VARCHAR(100),
LISTA VARCHAR(50)
);

acceso_presidentemesa — Control de autoridades de mesa

CREATETABLEacceso_presidentemesa (
USUARIO VARCHAR(50) PRIMARY KEY,
PASS VARCHAR(50),
ACCESO TINYINT(1) DEFAULT 0,
APERTURAREAL DATETIME,
HORACIERRE DATETIME,
CIERREMESA TINYINT(1) DEFAULT 0
);

votacion — Registro de votos emitidos

CREATETABLEvotacion (
ID INT,
CANDIDATO VARCHAR(100),
FECHA_HORA DATETIME
);

incidencia — Log de auditoría

CREATETABLEincidencia (
ID INT AUTO_INCREMENT PRIMARY KEY,
USUARIO VARCHAR(50),
HORA DATETIME,
OBSERVACION VARCHAR(255)
);

⚙️ Requisitos

HerramientaVersión recomendada
Java JDK8 o superior
MySQL5.7 o superior
NetBeans IDE12+ (opcional)
MySQL Connector/J5.1.x

🛠️ Configuración e Instalación

1. Clonar el repositorio

git clone https://github.com/tu-usuario/padron.git
cd padron

2. Configurar la base de datos

  1. Iniciar el servidor MySQL en el puerto 3308.
  2. Crear la base de datos y las tablas indicadas en la sección anterior.
  3. Insertar los candidatos en la tabla presidente:
INSERT INTO presidente (NOMBRE, PARTIDO, LISTA) VALUES
('Javier Milei', 'Libertad Avanza', '1'),
('Sergio Massa', 'Unión por la Patria', '2'),
('Patricia Bullrich', 'Juntos por el Cambio', '3'),
('Juan Schiaretti', 'Hacemos por Nuestro País', '4'),
('Myriam Bregman', 'Frente de Izquierda', '5'),
('Voto en blanco', '', '6');
  1. Crear al menos un usuario para presidente de mesa:
INSERT INTO acceso_presidentemesa (USUARIO, PASS) VALUES ('admin', '1234');

3. Configurar la conexión

Si necesitás cambiar los parámetros de conexión, editá el archivo src/Clases/conectar.java:

privatestaticfinalStringuser = "root";
privatestaticfinalStringpassword = "";
privatestaticfinalStringurl = "jdbc:mysql://localhost:3308/padron";

4. Compilar y ejecutar

Desde NetBeans:

  1. Abrir el proyecto (File > Open Project).
  2. Click en Run Project (F6).

Desde línea de comandos (Ant):

ant run

Compilar y generar JAR:

ant jar

🔄 Flujo de Uso

Login (Presidente de Mesa)
│
▼
Autenticación
+ Control horario (08:00 - 18:00)
│
▼
Pantalla Elecciones
→ Ingresar DNI del votante
→ Consultar padrón
│
▼
Pantalla Candidatos
→ Seleccionar candidato
→ Registrar voto
│
▼
Vuelve a Elecciones (siguiente votante)
│
(Cierre de mesa)
▼
Estadísticas finales + Resultados

🔒 Seguridad y Auditoría

  • Cada inicio de sesión queda registrado en la tabla incidencia.
  • Se impide el doble voto verificando ESTADO_VOTACION en el padrón.
  • El ingreso del presidente de mesa se registra con APERTURAREAL = NOW().
  • Las credenciales incorrectas generan un registro de incidencia y cierran el sistema.
  • La verificación de conectividad impide registrar votos sin conexión activa.

📌 Notas

  • El proyecto fue desarrollado con NetBeans IDE y utiliza Apache Ant como herramienta de build.
  • Los archivos .form corresponden al diseño visual generado por el editor de formularios de NetBeans (GUI Builder).
  • La clase conexion.java es un frame auxiliar utilizado durante el desarrollo; la clase principal de conexión es conectar.java.

👩‍💻 Autora

Florencia — Proyecto académico / Sistema de padrón electoral 2023

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages