Skip to content

Flor125/padron

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

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

Candidato Partido
Javier Milei Libertad Avanza
Sergio Massa Unión por la Patria
Patricia Bullrich Juntos por el Cambio
Juan Schiaretti Hacemos por Nuestro País
Myriam Bregman Frente 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

CREATE TABLE padron (
    DNI             INT PRIMARY KEY,
    NOMBRE          VARCHAR(100),
    APELLIDO        VARCHAR(100),
    ESTADO_VOTACION INT DEFAULT 0  -- 0: no votó, 1: ya votó
);

presidente — Lista de candidatos

CREATE TABLE presidente (
    ID      INT PRIMARY KEY AUTO_INCREMENT,
    NOMBRE  VARCHAR(100),
    PARTIDO VARCHAR(100),
    LISTA   VARCHAR(50)
);

acceso_presidentemesa — Control de autoridades de mesa

CREATE TABLE acceso_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

CREATE TABLE votacion (
    ID         INT,
    CANDIDATO  VARCHAR(100),
    FECHA_HORA DATETIME
);

incidencia — Log de auditoría

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

⚙️ Requisitos

Herramienta Versión recomendada
Java JDK 8 o superior
MySQL 5.7 o superior
NetBeans IDE 12+ (opcional)
MySQL Connector/J 5.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:

private static final String user     = "root";
private static final String password = "";
private static final String url      = "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

Watchers

Forks

Releases

Packages

Contributors

Languages