Está en la página 1de 6

Creo la base de datos:

CREATE DATABASE EleccionesSindicales;


USE EleccionesSindicales;

Creamos las tablas:

--Tabla Roles, donde se almacenará el admin y los interventores


CREATE TABLE Admin (
"usuario" VARCHAR(50) NOT NULL,
"password" VARCHAR(50) NOT NULL,
PRIMARY KEY ("usuario")
);

--Tabla Mesas, donde se almacenará el idMesa y el nombre


CREATE TABLE Mesas (
idMesa INT NOT NULL,
Nombre VARCHAR(50) NOT NULL,
PRIMARY KEY (idMesa)
);

--Tabla Votantes, donde se almacenarán las personas que vayan a votar, junto a su
idMesa
CREATE TABLE Votantes (
IdVotante INT NOT NULL IDENTITY(1,1),
Nombre VARCHAR(50) NOT NULL,
Apellido1 VARCHAR(50) NOT NULL,
Apellido2 VARCHAR(50) NOT NULL,
NIF CHAR(9) NOT NULL,
CodCentro VARCHAR(10) NOT NULL,
NombreCentro VARCHAR(50) NOT NULL,
idMesa INT,
Voto TINYINT NOT NULL DEFAULT 0,
Fecha DATETIME DEFAULT 0, --AAAA-MM-DD HH:MM:SS
PRIMARY KEY (NIF),
FOREIGN KEY (idMesa) REFERENCES Mesas(idMesa)
);

--Tabla Afiliado, que es lo mismo que votantes pero varian un par de campos
CREATE TABLE Afiliados (
IdAfiliado INT NOT NULL IDENTITY(1,1),
Nombre VARCHAR(50) NOT NULL,
Apellido1 VARCHAR(50) NOT NULL,
Apellido2 VARCHAR(50) NOT NULL,
NIF CHAR(9) NOT NULL,
Telefono INT NOT NULL,
Direccion VARCHAR(100) NOT NULL,
Email VARCHAR(100) NOT NULL,
CodCentro VARCHAR(10) NOT NULL,
NombreCentro VARCHAR(50) NOT NULL,
Voto TINYINT NOT NULL DEFAULT 0,
Fecha DATETIME DEFAULT 0, --AAAA-MM-DD HH:MM:SS
PRIMARY KEY (NIF),
);

--Tabla Interventor, donde el admin podrá cambiar todo.


CREATE TABLE Interventor (
IdInterventor INT NOT NULL IDENTITY(1,1),
"usuario" VARCHAR(50),
"password" VARCHAR(50),
"idMesa" INT DEFAULT 0,
PRIMARY KEY ("usuario"),
FOREIGN KEY ("idMesa") REFERENCES Mesas("idMesa") ON DELETE SET NULL
);

Para pruebas, insertaremos varios datos para comprobar que funciona:

Dentro de Admin insertamos el usuario admin.


----

--Creacion Rol Admin


INSERT INTO Admin ("usuario", "password")
VALUES ('admin', '1234');

--Creacion Mesas
INSERT INTO Mesas ("idMesa","Nombre")
VALUES ('1','Berceo');
INSERT INTO Mesas ("idMesa","Nombre")
VALUES ('2','Alcampo');

--Creación interventores.
INSERT INTO Interventor ("usuario", "password","idMesa")
VALUES ('inter1', '0000','1');

--Creacion Afiliados
INSERT INTO Afiliados
(Nombre,Apellido1,Apellido2,NIF,Telefono,Direccion,Email,CodCentro,NombreCentro)
VALUES ('Andrei','Miu','
','X9999999F','666666666','C/Duero','andrei@miu.com','43332A','IESComercio');
INSERT INTO Afiliados
(Nombre,Apellido1,Apellido2,NIF,Telefono,Direccion,Email,CodCentro,NombreCentro)
VALUES ('Oscar','Gonzales',' ','69696969Z','123456789','Av. Gran
Vía','oscar@gonzales.com','1234B','IESComercio');
INSERT INTO Afiliados
(Nombre,Apellido1,Apellido2,NIF,Telefono,Direccion,Email,CodCentro,NombreCentro)
VALUES ('Pepe','Díaz','Martínez','12345678J','111111111','Av. Gran
Vía','pepedm@comercio.com','123123','Empresa Fantasma');
--Añadiendole voto 1
INSERT INTO Afiliados
(Nombre,Apellido1,Apellido2,NIF,Telefono,Direccion,Email,CodCentro,NombreCentro,Vot
o,Fecha)
VALUES ('Dario','Alcobendas','Fernandez','22241477H','987654321','Av.
Madrid','dario@haribo.com','5555','Haribo',1,GETDATE());
INSERT INTO Afiliados
(Nombre,Apellido1,Apellido2,NIF,Telefono,Direccion,Email,CodCentro,NombreCentro,Vot
o,Fecha)
VALUES ('Dario','Alcobendas','Fernandez','22242477H','987654321','Av.
Madrid','dario@haribo.com','5555','Haribo',1,GETDATE());
INSERT INTO Afiliados
(Nombre,Apellido1,Apellido2,NIF,Telefono,Direccion,Email,CodCentro,NombreCentro,Vot
o,Fecha)
VALUES ('Dario','Alcobendas','Fernandez','22243477H','987654321','Av.
Madrid','dario@haribo.com','5555','Haribo',1,GETDATE());
INSERT INTO Afiliados
(Nombre,Apellido1,Apellido2,NIF,Telefono,Direccion,Email,CodCentro,NombreCentro,Vot
o,Fecha)
VALUES ('Dario','Alcobendas','Fernandez','22277477H','987654321','Av.
Madrid','dario@haribo.com','5555','Haribo',1,GETDATE());
INSERT INTO Afiliados
(Nombre,Apellido1,Apellido2,NIF,Telefono,Direccion,Email,CodCentro,NombreCentro,Vot
o,Fecha)
VALUES ('Dario','Alcobendas','Fernandez','22246477H','987654321','Av.
Madrid','dario@haribo.com','5555','Haribo',1,GETDATE());
INSERT INTO Afiliados
(Nombre,Apellido1,Apellido2,NIF,Telefono,Direccion,Email,CodCentro,NombreCentro,Vot
o,Fecha)
VALUES ('Dario','Alcobendas','Fernandez','22242277H','987654321','Av.
Madrid','dario@haribo.com','5555','Haribo',1,GETDATE());
INSERT INTO Afiliados
(Nombre,Apellido1,Apellido2,NIF,Telefono,Direccion,Email,CodCentro,NombreCentro,Vot
o,Fecha)
VALUES ('Dario','Alcobendas','Fernandez','22233477H','987654321','Av.
Madrid','dario@haribo.com','5555','Haribo',1,GETDATE());

--Creamos Votantes
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Santiago','Perez','Vildosola','232323234','12121','Gonzalo
Berceo','1',1,GETDATE());
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Martin','Salosa','Morado','121111111','12121','Gonzalo
Berceo','2',1,GETDATE());
INSERT INTO Votantes (Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa)
VALUES ('Diana','Fati','Harom','444444444','55','Delhuyar','2');
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Maria','Perez','Silleda','121222222','12121','Gonzalo
Berceo','1',1,GETDATE());
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Mario','Exam','Tumbor','331231457','12121','Gonzalo
Berceo','1',1,GETDATE());
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Gonzalo','Perez','Vildosola','567345672','12121','Gonzalo
Berceo','1',1,GETDATE());
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Silla','Salom','Vildosola','123412345','12121','Gonzalo
Berceo','1',1,GETDATE());
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Tudor','Exachi','Vildosola','786786786','12121','Gonzalo
Berceo','1',1,GETDATE());
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Rama','Por','','345456765','12121','Gonzalo Berceo','1',1,GETDATE());
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Maria','Belbas','Sagastume','328876794','12121','Gonzalo
Berceo','1',1,GETDATE());
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Luna','Exachi','Vildosola','000005546','12121','Gonzalo
Berceo','1',1,GETDATE());
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Oumaima','Exachi','Vildosola','900978456','12121','Gonzalo
Berceo','1',1,GETDATE());
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Hamza','Exachi','Vildosola','123456456','12121','Gonzalo
Berceo','1',1,GETDATE());
INSERT INTO Votantes
(Nombre,Apellido1,Apellido2,NIF,CodCentro,NombreCentro,idMesa,Voto,Fecha)
VALUES ('Bilal','Exachi','Vildosola','777766690','12121','Gonzalo
Berceo','1',1,GETDATE());

--SQL VOTANTES ESTADISTICAS


SELECT m.idMesa,COUNT(vt.idVotante) AS TotalVotantes,SUM(CASE WHEN vt.voto = 1 THEN
1 ELSE 0 END) AS VotadoV,
SUM(CASE WHEN vt.voto = 0 THEN 1 ELSE 0 END) AS NoVotadoV FROM mesas m
LEFT JOIN votantes vt ON m.idMesa = vt.idMesa WHERE m.idMesa<> 0 GROUP BY m.idMesa;
--SQL AFILIADOS ESTADISTICAS
SELECT (SELECT COUNT(idVotante) FROM afiliados) AS TotalAfiliados,
(SELECT COUNT(Voto) FROM afiliados WHERE Voto = 1) AS VotadoA,
(SELECT COUNT(Voto) FROM afiliados WHERE Voto = 0) AS NoVotadoA
---PROYECTO---
Pagina default admin: Votantes

El menú constará de:


-Mesa -> Cambiar nombre de la mesa (NO ID)
-Votantes -> Cambiar datos de los
votantes(Nombre,1erApellido,2doApellido,NIF,CodCentro,NombreCentro,idMesa)
-Afiliado -> Cambiar datos de los afiliados (Lo mismo pero sin idMesa y
añadiendo telf,direccion y correo)
-Interventor -> Cambiar nombre usuario/password/mesa de los
interventores
-Estadisticas -> Estadisticas de quien a votado, quien no.
-Salir -> Logout

Pagina default interventor: Votantes de su mesa


Menu:
-InicioVotante -> Inicio
-Salir -> Logout

Realizar filtros en pagina votante y afiliado para admin, y en la de inicio


votantes

Cliente:

Listados filtrados?
Hacer filtros en las paginas de votantes, afiliados,mesas,interventores? Si, en
votante y afiliado + inicioInterventor
Estadisticas? Con Crud? ** Tiempo real/ REFRESH **
Crud= Le das a no votado/votado y te sale una pagina con la lista, hay que
editar/eliminar/filtrar?
No. Solo estadisticas con refresh
Si se borra una mesa, y esta mesa tiene asignados votantes, que hacer con los
votantes? Ponerlos en mesa 0(Sin asignar)? Y que pasa con el voto?.
Si se borra mesa se queda sin asignar y se mantiene el voto. <- HECHO
Hashear password de interventores? De admin no? HASH SI INTERVENTOR
Hacer otra tabla con codCentro + NombreCentro que se pueda editar cod+Nombre? No,
mejor no. No pasa nada
Añadir votantes/Afiliados? O se añaden desde la bbdd? No es necesario.
Regex (patron) para NIF? SI
Campos obligatorios votantes/afiliados? nombre/nif/codcentro/nombrecentro? Solo
DNI.

Interventor ver solo: 1erApellido+2doApellido+Nombre+NIF+Voto+Fecha


El cambio de voto de este tiene que ser lo mas simple posible.
+Filtrado
1er apellido 2do ape nombre nif ordenado asi
Export excel +ADD
Añadir boton de confirmacion de eliminar (¿Estás seguro de que quieres eliminar?)
______ ¿ CUADRO PARA NO HACER SCROLL ? ______
Como crear contenedor div con scroll vertical.

AMPLIACIONES Y POSIBLES MEJORAS:


Ampliación:
-Añadido un botón de exportar los datos a excel en el apartado de votantes y
afiliados.
-Añadido un boton de resetar los votos y fechas de estos.
-Añadido un boton de copiar contraseña/nombre mesa
-Añadido un texto informando de la accion al guardar/eliminar los datos
-Añadido un scroll vertical y horizontal, evitando así hacer scroll a toda la
página.

Posibles mejoras:
-Mejora estética/visual de la aplicación.
-El tema de fluidez/rendimiento se puede mejorar.
-Añadir mas cosas en el apartado de estadísticas.
-Añadir un boton de importar los datos a excel.
-Añadir filtros ascendente y descendente en las cabeceras th de las tablas.
-Añadir patron regex para NIF/NIE.
-Añadir votantes/afiliados desde el programa.
-Añadir regex/filtro al email de los afiliados

---
Respecto a estilos y demas:
Posibilidad boostrap + CSS
Responsive

JS recomendaciones?

---Profe---

Memoria 23 M --> Se entrega al final el 29.


Proyecto 29 M --> Se pueden hacer cosas hasta el dia de la presentación, y decir:
se a implementado esto extra, que no está en la memoria.
Presentaciones - 1 al 16 J.

Recomendaciones y mejoras?
-------- PRUEBAS ---------
En la memoria pruebas poner: Se ha realizado de manera manual las siguientes
pruebas:
---
Las siguientes pruebas han sido llevadas a cabo con éxito de forma manual:
---
Con satisfacción y éxito, se han completado las siguientes pruebas de manera
minuciosa y manual:
---
---------- PASSWD -----------
Poner tambien que el administrador puede ver las contraseñas (asi se evita usar
hash)
---
------------ DESPLIEGUE --------------
Tema de despliegue: se habló con el cliente de que eso lo gestionan ellos de manera
interna.
---
En cuanto al despliegue de la aplicación del cliente,
es importante destacar que será responsabilidad del propio cliente llevar a cabo
dicha gestión.
Esto implica que el cliente deberá encargarse de la puesta en marcha de la
aplicación en su entorno.
Además, es crucial mencionar que el cumplimiento del Reglamento General de
Protección de Datos (RGPD) también recae en manos del cliente.
El cliente deberá asegurarse de que la aplicación cumple con todos los requisitos
legales y normativos
establecidos por el RGPD para garantizar la protección y privacidad de los datos
personales de los usuarios.

También podría gustarte