Compare commits

...

2 Commits

Author SHA1 Message Date
Soka_jplr be3dbacc02 cambios frontend y backend 2024-05-21 15:14:13 -06:00
Soka_jplr 8814524f3f version 2.0 2024-05-21 11:35:35 -06:00
61 changed files with 1907 additions and 2974 deletions

View File

@ -1,23 +1,56 @@
create database universidad;
drop database universidad;
CREATE USER 'UserRemoto' @'localhost' IDENTIFIED BY 'password123';
DROP USER 'UserRemoto'@'localhost';
GRANT ALL PRIVILEGES ON cocina TO 'UserRemoto' @'localhost';
GRANT ALL PRIVILEGES ON universidad.* TO 'UserRemoto'@'LOCALHOST';
FLUSH PRIVILEGES;
use universidad;
drop table alumno;
create table alumno(
create table usuario(
id integer auto_increment primary key,
nombre varchar(40) not null,
apellido varchar(100) not null,
matricula varchar(40) not null UNIQUE,
contrasena varchar(40) not null,
correo varchar(40) not null,
nacionalidad varchar(30),
tipoSangre varchar(6),
fecha_nacimiento date,
curp varchar(18),
rol varchar(30) not null,
idCarrera integer references carrera,
inscrito BIT
);
create table carrera(
id integer auto_increment primary key,
nombre varchar(40),
apellido varchar(100),
fecha_nacimiento date,
nacionalidad varchar(40),
tipoSangre varchar(40),
matricula varchar(40),
password varchar(40),
correo varchar(40)
area varchar(40)
);
create table tutor(
id integer auto_increment primary key,
nombre varchar(40),
apellido varchar(40),
numeroDeTelefono integer,
idUsuario integer references usuario
);
create table documento(
id integer auto_increment primary key,
titulo varchar(40),
archivo blob,
idUsuario integer references usuario,
valido BIT
);
create table inscripcion(
id integer auto_increment primary key,
idUusario integer references usuario,
idDocumento integer references documento
);
create table registro(
@ -25,147 +58,44 @@ create table registro(
matricula varchar(40),
descripcion varchar(100)
);
drop table examen;
create table examen(
id integer auto_increment primary key,
calificacion double,
derecho_inscripcion boolean,
id_alumno integer,
FOREIGN KEY (id_alumno) REFERENCES alumno(id)
INSERT INTO usuario (
nombre, apellido, matricula, contrasena, correo, nacionalidad, tipoSangre, fecha_nacimiento, curp, rol, idCarrera, inscrito
) VALUES (
'Juan', 'Perez', 'SIU241001', 'password123', 'juan.perez@example.com', 'Mexicana', 'O+', '1990-05-15', 'JUAP900515HDFLRN03', 'estudiante', 1, 1
);
ALTER TABLE carrera
ADD COLUMN campus VARCHAR(40),
ADD COLUMN descripcion VARCHAR(600),
ADD COLUMN mision VARCHAR(600),
ADD COLUMN vision VARCHAR(600),
ADD COLUMN objetivo VARCHAR(600);
INSERT INTO carrera (nombre, area) VALUES
('Ingeniería de Sistemas', 'Tecnología'),
('Medicina', 'Salud'),
('Derecho', 'Ciencias Sociales'),
('Arquitectura', 'Arte y Diseño'),
('Administración de Empresas', 'Negocios'),
('Psicología', 'Ciencias Sociales');
UPDATE carrera
SET campus = 'Perote',
descripcion = 'La carrera de Ingeniería de Sistemas se dedica a formar profesionales capaces de diseñar, implementar y gestionar soluciones tecnológicas que optimicen procesos en diversas industrias. El plan de estudios integra conocimientos en programación, redes, bases de datos y sistemas operativos, complementados con habilidades prácticas a través de laboratorios y proyectos reales.',
mision = 'Nuestra misión es formar ingenieros de sistemas altamente competentes y éticamente responsables, capaces de desarrollar soluciones innovadoras que contribuyan al avance tecnológico y al bienestar de la sociedad. Nos comprometemos a proporcionar una educación de calidad, basada en la excelencia académica y la actualización constante en tecnologías emergentes.',
vision = 'Aspiramos a ser una institución líder en la formación de ingenieros de sistemas a nivel nacional e internacional, reconocida por su compromiso con la innovación tecnológica, la investigación aplicada y la colaboración con el sector industrial. Nos proponemos ser un referente en la educación tecnológica, adaptándonos a los cambios y necesidades del entorno global.',
objetivo = 'Nuestro objetivo es preparar a los estudiantes para enfrentar los desafíos del mercado laboral con una sólida base de conocimientos técnicos y habilidades prácticas. Buscamos fomentar el pensamiento crítico, la creatividad y la capacidad de resolver problemas complejos, formando profesionales que puedan contribuir significativamente al desarrollo y crecimiento de sus comunidades y organizaciones.'
WHERE id = 1;
UPDATE carrera
SET campus = 'Xalapa',
descripcion = 'La carrera de Medicina se enfoca en la formación de médicos integrales, con un profundo conocimiento de las ciencias básicas y clínicas, y una sólida ética profesional. El currículo está diseñado para proporcionar una educación completa que abarca desde la anatomía y fisiología hasta la práctica clínica y la atención al paciente, con un fuerte énfasis en la investigación y la práctica basada en evidencia.',
mision = 'Nuestra misión es formar médicos altamente capacitados y comprometidos con la salud integral de sus pacientes, capaces de ofrecer una atención médica de calidad y de contribuir al avance de las ciencias de la salud. Promovemos una educación médica basada en la excelencia académica, la investigación científica y el servicio a la comunidad.',
vision = 'Nuestra visión es ser una facultad de medicina de referencia nacional e internacional, reconocida por su excelencia en la educación médica, su liderazgo en investigación y su compromiso con la salud pública. Aspiramos a formar profesionales de la salud que sean líderes en sus comunidades y que contribuyan de manera significativa al bienestar de la sociedad.',
objetivo = 'El objetivo de nuestro programa es formar médicos con sólidos conocimientos científicos y habilidades clínicas, capaces de diagnosticar y tratar enfermedades de manera efectiva. Fomentamos el desarrollo de una actitud crítica y reflexiva, y un compromiso con la actualización continua y la mejora de la calidad de la atención médica.'
WHERE id = 2;
drop table tutor;
create table tutor(
id integer auto_increment primary key,
nombre varchar(40),
apellidos varchar(100),
parentesco varchar(40),
ocupacion varchar(100),
telefono varchar(100)
);
drop table carrera;
create table carrera(
id integer auto_increment primary key,
area varchar(100),
nombre varchar(40),
modalidad varchar(40),
campus varchar(40),
costo double
);
drop table documentacion;
create table documentacion(
id integer auto_increment primary key,
acta_nacimiento blob,
certificado_bachillerato blob,
curp blob,
ine blob,
ine_tutor blob,
certificado_medico blob,
comprobante blob,
fotografia blob,
constancia blob
);
drop table fichaP;
create table fichaP(
id integer auto_increment primary key,
id_alumno integer,
id_carrera integer,
fecha_inicio date,
fecha_fin date,
FOREIGN KEY (id_alumno) REFERENCES alumno(id),
FOREIGN KEY (id_carrera) REFERENCES carrera(id)
);
drop table fichaI;
create table fichaI(
id_alumno integer,
id_carrera integer,
id_tutor integer,
id_documentacion integer,
fecha_inicio date,
fecha_fin date,
FOREIGN KEY (id_alumno) REFERENCES alumno(id),
FOREIGN KEY (id_carrera) REFERENCES carrera(id),
FOREIGN KEY (id_tutor) REFERENCES tutor(id),
FOREIGN KEY (id_documentacion) REFERENCES documentacion(id)
);
drop table administrador;
create table administrador(
id integer auto_increment primary key,
matricula varchar(40),
contraseña varchar(40)
);
create table documentacion;
create table documentacion (
id integer auto_increment primary key,
acta_nacimiento BLOB,
certificadoBachillerato BLOB,
curp BLOB,
ine_Alumno BLOB,
ine_Tutor BLOB,
certificado_Medico BLOB,
comprobante_Domicilio BLOB,
fotografia BLOB,
constancia BLOB,
municipio varchar(40),
estado varchar(40),
telefono varchar(40),
domicilio varchar(40)
);
INSERT INTO alumno (nombre, apellidos, fecha_nacimiento, nacionalidad, tipoSangre, matricula, password)
VALUES
('Juan', 'Pérez García', '2000-05-15', 'Mexicana', 'O+', '123ABC', 'contraseña123'),
('María', 'López Rodríguez', '1999-10-20', 'Mexicana', 'A-', '456DEF', 'maria123'),
('Carlos', 'González Martínez', '2001-03-08', 'Mexicana', 'B+', '789GHI', 'carlos456'),
('Laura', 'Hernández Sánchez', '1998-12-03', 'Mexicana', 'AB-', '012JKL', 'laura789'),
('Pedro', 'Díaz Pérez', '2002-07-11', 'Mexicana', 'O-', '345MNO', 'pedro123');
INSERT INTO examen (calificacion, derecho_inscripcion, id_alumno)
VALUES
(85.5, true, 1),
(78.9, false, 2),
(92.3, true, 3),
(64.7, false, 4),
(88.1, true, 5);
INSERT INTO tutor (nombre, apellidos, parentesco, ocupacion, telefono)
VALUES
('Ana', 'García Martínez', 'Madre', 'Ingeniera', '555-123-4567'),
('Luis', 'López Rodríguez', 'Padre', 'Abogado', '555-987-6543'),
('María', 'Pérez Sánchez', 'Tía', 'Médico', '555-456-7890'),
('Juan', 'Martínez González', 'Abuelo', 'Profesor', '555-234-5678'),
('Laura', 'Díaz Fernández', 'Hermana', 'Estudiante', '555-678-9012');
INSERT INTO carrera (area, nombre, modalidad, campus, costo)
VALUES
('Ingeniería', 'Ingeniería Civil', 'Presencial', 'Ciudad Universitaria', 120000),
('Ciencias de la Salud', 'Medicina', 'Presencial', 'Hospital Universitario', 180000),
('Ciencias Sociales', 'Psicología', 'Presencial', 'Campus Central', 100000),
('Arte y Diseño', 'Diseño Gráfico', 'Presencial', 'Campus de Arte', 90000),
('Ciencias de la Computación', 'Ingeniería en Sistemas', 'Presencial', 'Campus Tecnológico', 150000);
INSERT INTO fichaP (id_alumno, id_carrera, fecha_inicio, fecha_fin)
VALUES
(1, 1, '2023-09-01', '2027-06-30'),
(2, 2, '2023-09-01', '2027-06-30'),
(3, 3, '2023-09-01', '2027-06-30'),
(4, 4, '2023-09-01', '2027-06-30'),
(5, 5, '2023-09-01', '2027-06-30');
INSERT INTO administrador (matricula, contraseña) VALUES ('Daniel', 'lalelilolu');
INSERT INTO administrador (matricula, contraseña) VALUES ('Juan', 'perrotonto16');
INSERT INTO administrador (matricula, contraseña) VALUES ('francis', 'palapa');
INSERT INTO administrador (matricula, contraseña) VALUES ('citlali', 'java');

View File

@ -7,19 +7,21 @@ import java.util.HashMap;
import com.google.gson.*;
import mx.uv.Controller.DAO;
import mx.uv.Controller.DAO_Carrrera;
import mx.uv.Model.*;
public class App {
static Gson gson = new Gson();
static HashMap<String, Alumno> usuarios = new HashMap<>();
static HashMap<String, Usuario> usuarios = new HashMap<>();
public static void main(String[] args) {
// fuente:https://gist.github.com/saeidzebardast/e375b7d17be3e0f4dddf
// Configuración de CORS
options("/*", (request, response) -> {
String accessControlRequestHeaders = request.headers("Access-Control-Request-Headers");
if (accessControlRequestHeaders != null) {
response.header("Access-Control-Allow-Headers", accessControlRequestHeaders);
}
String accessControlRequestMethod = request.headers("Access-Control-Request-Method");
if (accessControlRequestMethod != null) {
response.header("Access-Control-Allow-Methods", accessControlRequestMethod);
@ -27,60 +29,75 @@ public class App {
return "OK";
});
before((request, response) -> response.header("Access-Control-Allow-Origin", "*"));
before((request, response) -> {
response.header("Access-Control-Allow-Origin", "http://localhost:5173");
response.header("Access-Control-Allow-Credentials", "true");
});
get("/todosLosAlumnos", (request, response) -> {
response.type("application/json");
return gson.toJson(DAO.dameAlumnos());
});
post("/agregarAlumno", (request, response) -> {
String payload = request.body();
Alumno alumno = gson.fromJson(payload, Alumno.class);
Mensaje msj = DAO.agregarAlumno(alumno);
Usuario usuario = gson.fromJson(payload, Usuario.class);
usuario.setRol("estudiante");
Mensaje msj = DAO.agregarAlumno(usuario);
JsonObject respuesta = new JsonObject();
respuesta.addProperty("contrasena", msj.getAlumno().getContrasena());
respuesta.addProperty("matricula", msj.getAlumno().getMatricula());
respuesta.addProperty("contrasena", msj.getUsuario().getContrasena());
respuesta.addProperty("matricula", msj.getUsuario().getMatricula());
respuesta.addProperty("verificacion", msj.isVerificacion());
return respuesta;
});
put("/editarAlumno", (request, response) -> {
String payload = request.body();
Alumno alumno = gson.fromJson(payload, Alumno.class);
boolean verificado = DAO.editarAlumno(alumno);
Usuario usuario = gson.fromJson(payload, Usuario.class);
boolean verificado = DAO.editarAlumno(usuario);
JsonObject respuesta = new JsonObject();
respuesta.addProperty("Editado", verificado);
return respuesta;
});
delete("/eliminarAlumno", (request, response) -> {
String payload = request.body();
Alumno alumno = gson.fromJson(payload, Alumno.class);
boolean verificado = DAO.eliminarAlumno(alumno.getId());
Usuario usuario = gson.fromJson(payload, Usuario.class);
boolean verificado = DAO.eliminarAlumno(usuario.getId());
JsonObject respuesta = new JsonObject();
respuesta.addProperty("existe", verificado);
return respuesta;
});
get("/alumnoIniciado", (request, response) -> {
post("/alumnoIniciado", (request, response) -> {
String payload = request.body();
response.type("application/json");
String contrasena = request.queryParams("contrasena");
String matricula = request.queryParams("matricula");
Alumno alumno = new Alumno(matricula, contrasena);
if (contrasena == null || matricula == null) {
response.status(400); // Bad request
Usuario u = gson.fromJson(payload, Usuario.class);
if (u.getContrasena() == null || u.getMatricula() == null) {
response.status(400);
return gson.toJson("Missing matricula or contrasena");
}
return gson.toJson(DAO.alumnoIniciado(alumno.getMatricula(), alumno.getContrasena()));
Usuario usuario = DAO.alumnoIniciado(u.getMatricula(), u.getContrasena());
JsonObject respuesta = new JsonObject();
respuesta.addProperty("matricula", usuario.getMatricula());
respuesta.addProperty("authToken", usuario.crearToken());
respuesta.addProperty("authRol", usuario.getRol());
respuesta.addProperty("message", "Binevenido " + usuario.getNombre());
return gson.toJson(respuesta);
});
post("/usuarioValido", (request, response) -> {
String payload = request.body();
Alumno alumno = gson.fromJson(payload, Alumno.class);
boolean verificado = DAO.validarAlumno(alumno);
Usuario usuario = gson.fromJson(payload, Usuario.class);
boolean verificado = DAO.validarAlumno(usuario);
JsonObject respuesta = new JsonObject();
respuesta.addProperty("existe", verificado);
return respuesta;
});
get("/carreras", (request, response) -> {
response.type("application/json");
return gson.toJson(DAO_Carrrera.dameCarreras());
});
}
}
}

View File

@ -6,168 +6,202 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import mx.uv.Model.Alumno;
import mx.uv.Model.Usuario;
import mx.uv.Model.Mensaje;
import mx.uv.Model.Registro;
import java.sql.*;
import java.util.*;
import java.time.LocalDateTime;
public class DAO {
private static Conexion cn = Conexion.getInstance();
private static String nombreTabla = "usuario";
private static String colId = "id";
private static String colNombre = "nombre";
private static String colApellido = "apellido";
private static String colMatricula = "matricula";
private static String colContrasena = "contrasena";
private static String colCorreo = "correo";
private static String colNacionalidad = "nacionalidad";
private static String colTipoSangre = "tipoSangre";
private static String colFechaNacimiento = "fecha_nacimiento";
private static String colCurp = "curp";
private static String colRol = "rol";
private static String colIdCarrera = "idCarrera";
private static String colInscrito = "inscrito";
public static List<Alumno> dameAlumnos() {
public static List<Usuario> dameAlumnos() {
Statement stm = null;
ResultSet rs = null;
Connection conn = null;
List<Alumno> resultado = new ArrayList<>();
List<Usuario> resultado = new ArrayList<>();
conn = cn.conectar();
try {
String sql = "SELECT * from alumno";
String sql = "SELECT " + colId + " " + colNombre + " " + colApellido + " " + colMatricula + " from "
+ nombreTabla;
stm = conn.createStatement();
rs = stm.executeQuery(sql);
while (rs.next()) {
Alumno u = new Alumno(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4), rs.getString(5),rs.getString(6),rs.getString(7),rs.getString(8),rs.getString(9));
Usuario u = new Usuario(rs.getInt(colId), rs.getString(colNombre), rs.getString(colApellido),
rs.getString(colMatricula));
resultado.add(u);
}
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(null, conn);
cerrarConexiones(null, conn);
}
return resultado;
}
public static boolean validarAlumno(Alumno alumno) {
Statement stm = null;
public static boolean validarAlumno(Usuario alumno) {
PreparedStatement stm = null;
Connection conn = null;
boolean verificacion =false;
boolean verificacion = false;
ResultSet rs = null;
conn = cn.conectar();
try {
String sql ="select * from alumno "
+ "where matricula= '"+alumno.getMatricula()+"' and password='"+alumno.getContrasena()+"'";
stm = (Statement) conn.createStatement();
rs = stm.executeQuery(sql);
if(rs.next()){
verificacion = true;
}else{
verificacion = false;
}
conn.close();
} catch (SQLException ex) {
System.err.println(ex);
String sql = "SELECT * FROM " + nombreTabla + " WHERE " + colMatricula + " = ? AND " + colContrasena
+ " = ?";
stm = conn.prepareStatement(sql);
stm.setString(1, alumno.getMatricula());
stm.setString(2, alumno.getContrasena());
rs = stm.executeQuery();
if (rs.next()) {
verificacion = true;
} else {
verificacion = false;
}
} catch (SQLException ex) {
System.err.println(ex);
} finally {
cerrarConexiones(stm, conn);
}
return verificacion;
}
public static Mensaje agregarAlumno(Alumno alumno) {
public static Mensaje agregarAlumno(Usuario usuario) {
Mensaje mensaje = new Mensaje();
PreparedStatement stm = null;
Connection conn = null;
boolean msj= false;
String matricula = "SIU24";
String matricula = "SIU24" + (1000 + obtenerUltimoID());
String password = crearContrasena();
matricula += 1000+ obtenerUltimoID();
alumno.setContrasena(password);
alumno.setMatricula(matricula);
usuario.setContrasena(password);
usuario.setMatricula(matricula);
conn = cn.conectar();
try {
String sql = "INSERT INTO `alumno`(`nombre`,`apellido`,`nacionalidad`,`matricula`,`password`, `correo`)VALUES(?,?,?,?,?,?);";
stm = (PreparedStatement) conn.prepareStatement(sql);
stm.setString(1, alumno.getNombre());
stm.setString(2, alumno.getApellido());
stm.setString(3, alumno.getNacionalidad());
stm.setString(4, alumno.getMatricula());
stm.setString(5, alumno.getContrasena());
stm.setString(6, alumno.getCorreo());
if (stm.executeUpdate() > 0){
String sql = "INSERT INTO " + nombreTabla + " (" + colNombre + ", " + colApellido + ", " + colNacionalidad
+ ", " + colMatricula + ", " + colContrasena + ", " + colCorreo + ", " + colRol
+ ") VALUES (?, ?, ?, ?, ?, ?,?)";
stm = conn.prepareStatement(sql);
stm.setString(1, usuario.getNombre());
stm.setString(2, usuario.getApellido());
stm.setString(3, usuario.getNacionalidad());
stm.setString(4, usuario.getMatricula());
stm.setString(5, usuario.getContrasena());
stm.setString(6, usuario.getCorreo());
stm.setString(7, usuario.getRol());
if (stm.executeUpdate() > 0) {
mensaje.setVerificacion(true);
mensaje.setAlumno(alumno);
}
else
mensaje.setUsuario(usuario);
} else {
mensaje.setVerificacion(false);
}
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(stm,conn);
cerrarConexiones(stm, conn);
}
return mensaje;
}
public static String crearContrasena() {
Random random = new Random();
String contrasena = "";
StringBuilder contrasena = new StringBuilder();
String CARACTERES_PERMITIDOS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#";
for (int i = 0; i < 10; i++) {
int numero = random.nextInt(CARACTERES_PERMITIDOS.length());
char caracterAleatorio = CARACTERES_PERMITIDOS.charAt(numero);
contrasena += caracterAleatorio;
contrasena.append(CARACTERES_PERMITIDOS.charAt(numero));
}
return contrasena.toString();
}
private static void cerrarConexiones(PreparedStatement stm,Connection conn) {
private static void cerrarConexiones(PreparedStatement stm, Connection conn) {
if (stm != null) {
try {
stm.close();
} catch (Exception e) {
System.out.println(e);
}
stm = null;
}
try {
conn.close();
cn.cerrarConexion();
if (conn != null) {
conn.close();
cn.cerrarConexion();
}
} catch (Exception e) {
System.out.println(e);
}
}
public static boolean eliminarAlumno(int idAlumno) {
return false;
return false;
}
public static boolean editarAlumno(Alumno alumno) {
public static boolean editarAlumno(Usuario usuario) {
PreparedStatement stm = null;
Connection conn = null;
boolean verificacion =false;
boolean verificacion = false;
conn = cn.conectar();
try {
String sql ="UPDATE `alumno` SET `nombre` = '"+alumno.getNombre()+"',`apellido` = '"+alumno.getApellido()+"',`fecha_nacimiento` = '"+alumno.getFechaNacimiento()+"',`nacionalidad` = '"+alumno.getNacionalidad()+"', `tipoSangre` = '"+alumno.getTipoDeSangre()+"', `password`= '"+alumno.getContrasena()+"' WHERE `id` = '"+alumno.getId()+"';";
stm = conn.prepareStatement(sql);
stm.executeUpdate();
verificacion = true;
} catch (SQLException ex) {
System.err.println(ex);
}finally{
cerrarConexiones(stm, conn);
cn.cerrarConexion();
}
String sql = "UPDATE " + nombreTabla + " SET " + colNombre + " = ?, " + colApellido + " = ?, "
+ colFechaNacimiento + " = ?, " + colNacionalidad + " = ?, " + colTipoSangre + " = ?, "
+ colContrasena + " = ? WHERE " + colId + " = ?";
stm = conn.prepareStatement(sql);
stm.setString(1, usuario.getNombre());
stm.setString(2, usuario.getApellido());
stm.setString(3, usuario.getFecha_nacimiento());
stm.setString(4, usuario.getNacionalidad());
stm.setString(5, usuario.getTipoSangre());
stm.setString(6, usuario.getContrasena());
stm.setInt(7, usuario.getId());
stm.executeUpdate();
verificacion = true;
} catch (SQLException ex) {
System.err.println(ex);
} finally {
cerrarConexiones(stm, conn);
cn.cerrarConexion();
}
return verificacion;
}
public static Alumno alumnoIniciado(String matricula, String contrasena) {
public static Usuario alumnoIniciado(String matricula, String contrasena) {
ResultSet rs = null;
Connection conn = null;
Alumno alumno =null;
Usuario usuario = null;
conn = cn.conectar();
try {
String sql = "SELECT * FROM alumno WHERE matricula = ? AND password = ?";
String sql = "SELECT * FROM " + nombreTabla + " WHERE " + colMatricula + " = ? AND " + colContrasena
+ " = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, matricula);
stmt.setString(2, contrasena);
rs = stmt.executeQuery();
while (rs.next()) {
alumno = new Alumno(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4), rs.getString(5),rs.getString(6),rs.getString(7),rs.getString(8),rs.getString(9));
if (rs.next()) {
usuario = new Usuario(rs.getInt(colId), rs.getString(colNombre), rs.getString(colApellido),
rs.getString(colMatricula), rs.getString(colRol));
DAORegistro.registrar(usuario, "Inicio Sesión", LocalDateTime.now());
}
DAORegistro.registrar(alumno," Inicio Sesión ", LocalDateTime.now());
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(null, conn);
cerrarConexiones(null, conn);
}
return alumno;
return usuario;
}
public static int obtenerUltimoID() {
@ -175,24 +209,24 @@ public class DAO {
Statement stm = null;
ResultSet rs = null;
int ultimoID = -1;
try {
conn = cn.conectar();
String sql = "SELECT MAX(id) AS ultimo_id FROM alumno";
String sql = "SELECT MAX(" + colId + ") AS ultimo_id FROM " + nombreTabla;
stm = conn.createStatement();
rs = stm.executeQuery(sql);
if (rs.next()) {
ultimoID = rs.getInt("ultimo_id");
}
} catch (SQLException ex) {
System.err.println(ex);
} finally {
// Cerrar recursos
try {
if (rs != null) rs.close();
if (stm != null) stm.close();
if (conn != null) conn.close();
if (rs != null)
rs.close();
if (stm != null)
stm.close();
if (conn != null)
conn.close();
} catch (SQLException ex) {
System.err.println(ex);
}

View File

@ -3,29 +3,29 @@ package mx.uv.Controller;
import java.time.LocalDateTime;
import java.sql.*;
import mx.uv.Model.Alumno;
import mx.uv.Model.Usuario;
public class DAORegistro {
private static Conexion cn = Conexion.getInstance();
public static void registrar(Alumno alumno, String descripcion, LocalDateTime day) {
public static void registrar(Usuario usuario, String descripcion, LocalDateTime day) {
PreparedStatement stm = null;
Connection conn = null;
conn = cn.conectar();
try {
String sql = "INSERT INTO `registro`(`matricula`,`descripcion`)VALUES(?,?);";
stm = (PreparedStatement) conn.prepareStatement(sql);
stm.setString(1, alumno.getMatricula());
stm.setString(1, usuario.getMatricula());
stm.setString(2, descripcion + day);
stm.executeUpdate();
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(stm,conn);
cerrarConexiones(stm, conn);
}
}
private static void cerrarConexiones(PreparedStatement stm,Connection conn) {
private static void cerrarConexiones(PreparedStatement stm, Connection conn) {
if (stm != null) {
try {
stm.close();

View File

@ -10,11 +10,10 @@ import java.util.List;
import mx.uv.Model.Tutor;
public class DAOTutor {
private static Conexion cn = Conexion.getInstance();
public static List<Tutor> dameTutores() {
Statement stm = null;
ResultSet rs = null;
@ -28,7 +27,7 @@ public class DAOTutor {
stm = conn.createStatement();
rs = stm.executeQuery(sql);
while (rs.next()) {
Tutor u = new Tutor(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4), rs.getString(5),rs.getString(6));
Tutor u = new Tutor(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getInt(5));
resultado.add(u);
}
} catch (Exception e) {
@ -39,26 +38,26 @@ public class DAOTutor {
return resultado;
}
public static boolean validarTutor(Tutor tutor){
public static boolean validarTutor(Tutor tutor) {
Statement stm = null;
Connection conn = null;
boolean verificacion =false;
boolean verificacion = false;
ResultSet rs = null;
conn = cn.conectar();
try {
String sql ="select * from tutor "
+ "where id= '"+tutor.getId()+"' and nombre='"+tutor.getNombre()+"'";
stm = (Statement) conn.createStatement();
rs = stm.executeQuery(sql);
if(rs.next()){
verificacion = true;
}else{
verificacion = false;
}
conn.close();
} catch (Exception ex) {
System.err.println(ex);
String sql = "select * from tutor "
+ "where id= '" + tutor.getId() + "' and nombre='" + tutor.getNombre() + "'";
stm = (Statement) conn.createStatement();
rs = stm.executeQuery(sql);
if (rs.next()) {
verificacion = true;
} else {
verificacion = false;
}
conn.close();
} catch (Exception ex) {
System.err.println(ex);
}
return verificacion;
}
@ -73,19 +72,18 @@ public class DAOTutor {
stm = (PreparedStatement) conn.prepareStatement(sql);
stm.setString(1, tutor.getNombre());
stm.setString(2, tutor.getApellido());
stm.setString(3, tutor.getParentesco());
stm.setString(4, tutor.getOcupacion());
stm.setString(5, tutor.getTelefono());
stm.setString(3, tutor.getNumeroDeTelefono());
stm.setInt(4, tutor.getIdUsuario());
} catch (Exception e) {
System.out.println(e);
} finally {
//cerrarConexiones(stm, conn);
// cerrarConexiones(stm, conn);
}
return msj;
}
private static void cerrarConexiones(PreparedStatement stm, Connection conn){
if(stm != null){
private static void cerrarConexiones(PreparedStatement stm, Connection conn) {
if (stm != null) {
try {
stm.close();
} catch (Exception e) {
@ -93,7 +91,7 @@ public class DAOTutor {
}
stm = null;
}
try{
try {
conn.close();
cn.cerrarConexion();
} catch (Exception e) {
@ -110,12 +108,13 @@ public class DAOTutor {
Connection conn = null;
boolean verificacion = false;
conn = cn.conectar();
try{
String sql ="UPDATE `tutor` SET `nombre` = '"+tutor.getNombre()+"',`apellido` = '"+tutor.getApellido()+"',`parentesco` = '"+tutor.getParentesco()+"',`ocupacion` = '"+tutor.getOcupacion()+"', `telefono` = '"+tutor.getTelefono()+"';";
try {
String sql = "UPDATE `tutor` SET `nombre` = '" + tutor.getNombre() + "',`apellido` = '"
+ tutor.getApellido() + "';";
stm = conn.prepareStatement(sql);
stm.executeQuery();
verificacion = true;
} catch (SQLException ex){
} catch (SQLException ex) {
System.out.println(ex);
} finally {
cerrarConexiones(stm, conn);

View File

@ -1,153 +0,0 @@
package mx.uv.Controller;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import mx.uv.Model.Administrador;
public class DAO_Administrador{
private static Conexion cn = Conexion.getInstance();
public static List<Administrador> dameAministradores(){
Statement stm = null;
ResultSet rs = null;
Connection conn = null;
List<Administrador> resultado = new ArrayList<>();
conn = cn.conectar();
try {
String sql = "SELECT * from administrador";
stm = conn.createStatement();
rs = stm.executeQuery(sql);
while (rs.next()) {
Administrador u = new Administrador(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4),rs.getString(5));
resultado.add(u);
}
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(null, conn);
}
return resultado;
}
public static boolean ValidarAdministrador(Administrador administrador){
Statement stm = null;
Connection conn = null;
boolean verificacion =false;
ResultSet rs = null;
conn = cn.conectar();
try {
String sql ="select * from administrador "
+ "where matricula= '"+administrador.getMatricula()+"' and contrasena='"+administrador.getContrasena()+"'";
stm = (Statement) conn.createStatement();
rs = stm.executeQuery(sql);
if(rs.next()){
verificacion = true;
}else{
verificacion = false;
}
conn.close();
} catch (SQLException ex) {
System.err.println(ex);
}
return verificacion;
}
public boolean agregarAdministrador(Administrador administrador){
PreparedStatement stm = null;
Connection conn = null;
boolean msj= false;
conn = cn.conectar();
try{
String sql ="INSERT INTO `administrador` (`matricula`,`contrasena`, `nombre`, `apellido`) VALUES(?,?,?,?);";
stm = (PreparedStatement) conn.prepareStatement(sql);
stm.setString(1, administrador.getMatricula());
stm.setString(2, administrador.getContrasena());
stm.setString(3, administrador.getNombre());
stm.setString(4, administrador.getNombre());
stm.setString(5, administrador.getApellido());
}catch(Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(stm,conn);
}
return msj;
}
private static void cerrarConexiones(PreparedStatement stm,Connection conn) {
if (stm != null) {
try {
stm.close();
} catch (Exception e) {
System.out.println(e);
}
stm = null;
}
try {
conn.close();
cn.cerrarConexion();
} catch (Exception e) {
System.out.println(e);
}
}
public static boolean eliminarAdministrador(int idAdministrador){
return false;
}
public static boolean editarAdministrador(Administrador administrador){
PreparedStatement stm = null;
Connection conn = null;
boolean verificacion =false;
conn = cn.conectar();
try{
String sql ="UPDATE `administrador` SET `matricula` = '"+administrador.getMatricula()+"',`contrasena` = '"+administrador.getContrasena()+"',`nombre` = '"+administrador.getNombre()+"',`apellido` = '"+administrador.getApellido()+"' WHERE `id` = '"+administrador.getId()+"';";
stm = conn.prepareStatement(sql);
stm.executeUpdate();
verificacion = true;
}catch (SQLException ex) {
System.err.println(ex);
}finally{
cerrarConexiones(stm, conn);
cn.cerrarConexion();
}
return verificacion;
}
public static Administrador administradorIniciado(String matricula, String contrasena){
ResultSet rs = null;
Connection conn = null;
Administrador administrador =null;
conn = cn.conectar();
try {
String sql = "SELECT * FROM administrador WHERE matricula = ? AND contrasena = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, matricula);
stmt.setString(2, contrasena);
rs = stmt.executeQuery();
while (rs.next()) {
administrador = new Administrador(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5));
}
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(null, conn);
}
return administrador;
}
}

View File

@ -4,65 +4,63 @@ import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import mx.uv.Model.Carrera;
public class DAO_Carrrera{
public class DAO_Carrrera {
private static Conexion cn = Conexion.getInstance();
public static List<Carrera> dameCarreras(){
Statement stm = null;
public static List<Carrera> dameCarreras() {
Statement stm = null;
ResultSet rs = null;
Connection conn = null;
List<Carrera> resultado = new ArrayList<>();
conn = cn.conectar();
try {
try {
String sql = "SELECT * from carrera";
stm = conn.createStatement();
rs = stm.executeQuery(sql);
while (rs.next()) {
Carrera u = new Carrera(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4), rs.getString(5),rs.getDouble(6));
Carrera u = new Carrera(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4),
rs.getString(5), rs.getString(6), rs.getString(7));
resultado.add(u);
}
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(null, conn);
cerrarConexiones(null, conn);
}
return resultado;
}
public static boolean agregarCarrera(Carrera carrera){
/*public static boolean agregarCarrera(Carrera carrera) {
PreparedStatement stm = null;
Connection conn = null;
boolean msj= false;
boolean msj = false;
conn = cn.conectar();
try{
String sql ="INSERT INTO `carrera` (`area`,`nombre`, `modalidad`, `campus`, `costo`) VALUES(?,?,?,?,?);";
try {
String sql = "INSERT INTO `carrera` (`area`,`nombre`, `modalidad`, `campus`, `costo`) VALUES(?,?,?,?,?);";
stm = (PreparedStatement) conn.prepareStatement(sql);
stm.setString(1, carrera.getArea());
stm.setString(2, carrera.getNombre());
stm.setString(3, carrera.getModalidad());
stm.setString(4, carrera.getCampus());
stm.setDouble(5, carrera.getCosto());
}catch(Exception e) {
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(stm,conn);
cerrarConexiones(stm, conn);
}
return msj;
}
}*/
private static void cerrarConexiones(PreparedStatement stm,Connection conn) {
private static void cerrarConexiones(PreparedStatement stm, Connection conn) {
if (stm != null) {
try {
stm.close();
@ -79,29 +77,31 @@ public class DAO_Carrrera{
}
}
public static boolean eliminarCarrera(int idCarrera){
public static boolean eliminarCarrera(int idCarrera) {
return false;
}
public static boolean editarCarrera(Carrera carrera){
/*public static boolean editarCarrera(Carrera carrera) {
PreparedStatement stm = null;
Connection conn = null;
boolean verificacion =false;
boolean verificacion = false;
conn = cn.conectar();
try{
String sql ="UPDATE `alumno` SET `area` = '"+carrera.getArea()+"',`nombre` = '"+carrera.getNombre()+"',`modalidad` = '"+carrera.getModalidad()+"',`campus` = '"+carrera.getCampus()+"', `costo` = '"+carrera.getCosto()+"' WHERE `id` = '"+carrera.getId()+"';";
stm = conn.prepareStatement(sql);
stm.executeUpdate();
verificacion = true;
}catch (SQLException ex) {
try {
String sql = "UPDATE `alumno` SET `area` = '" + carrera.getArea() + "',`nombre` = '" + carrera.getNombre()
+ "',`modalidad` = '" + carrera.getModalidad() + "',`campus` = '"
+ carrera.getCampus() + "', `costo` = '" + carrera.getCosto() + "' WHERE `id` = '"
+ carrera.getId() + "';";
stm = conn.prepareStatement(sql);
stm.executeUpdate();
verificacion = true;
} catch (SQLException ex) {
System.err.println(ex);
}finally{
} finally {
cerrarConexiones(stm, conn);
cn.cerrarConexion();
}
return verificacion;
}
return verificacion;
}*/
}

View File

@ -8,71 +8,59 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import mx.uv.Model.Documentacion;
import mx.uv.Model.Documento;
public class DAO_Documentacion {
private static Conexion cn = Conexion.getInstance();
@SuppressWarnings("null")
public List<Documentacion> dameDocumentacion() {
public List<Documento> dameDocumentacion() {
Statement stm = null;
ResultSet rs = null;
Connection conn = null;
List<Documentacion> resultado = new ArrayList<>();
List<Documento> resultado = new ArrayList<>();
try {
String sql = "SELECT * from documentacion";
stm = conn.createStatement();
rs = stm.executeQuery(sql);
while (rs.next()) {
Documentacion u = new Documentacion(rs.getInt(1), rs.getBytes(2), rs.getBytes(3),rs.getBytes(4), rs.getBytes(5),rs.getBytes(6), rs.getBytes(7), rs.getBytes(8), rs.getBytes(9), rs.getBytes(10));
resultado.add(u);
// Documento u = new Documento(rs.getInt(1), rs.getBytes(2),
// rs.getBytes(3),rs.getBytes(4), rs.getBytes(5),rs.getBytes(6), rs.getBytes(7),
// rs.getBytes(8), rs.getBytes(9), rs.getBytes(10));
// resultado.add(u);
}
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(null, conn);
cerrarConexiones(null, conn);
}
return resultado;
}
public static boolean agregarDocumentacion(Documentacion documentacion){
public static boolean agregarDocumentacion(Documento documentacion) {
PreparedStatement stm = null;
Connection conn = null;
boolean msj= false;
boolean msj = false;
conn = cn.conectar();
try{
String sql ="INSERT INTO `documentacion` (`id`,`acta_nacimiento`, `certificado_bachillerato`, `curp`, `ine`, `ine_tutor`, `certificado_medico`, `comprobante`, `fotografia`, `constancia`) VALUES(?,?,?,?,?,?,?,?,?,?);";
try {
String sql = "INSERT INTO `documentacion` (`id`,`acta_nacimiento`, `certificado_bachillerato`, `curp`, `ine`, `ine_tutor`, `certificado_medico`, `comprobante`, `fotografia`, `constancia`) VALUES(?,?,?,?,?,?,?,?,?,?);";
stm = (PreparedStatement) conn.prepareStatement(sql);
stm.setInt(1, documentacion.getId());
stm.setBytes(2, documentacion.getActaNacimiento());
stm.setBytes(3, documentacion.getCertificadoBachillerato());
stm.setBytes(4, documentacion.getCurp());
stm.setBytes(5, documentacion.getIne());
stm.setBytes(6, documentacion.getIneTutor());
stm.setBytes(7, documentacion.getCertificadoMedico());
stm.setBytes(8, documentacion.getComprobante());
stm.setBytes(9, documentacion.getFotografia());
stm.setBytes(10, documentacion.getConstancia());
}catch(Exception e) {
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(stm,conn);
cerrarConexiones(stm, conn);
}
return msj;
}
private static void cerrarConexiones(PreparedStatement stm,Connection conn) {
private static void cerrarConexiones(PreparedStatement stm, Connection conn) {
if (stm != null) {
try {
stm.close();
@ -89,27 +77,41 @@ public class DAO_Documentacion {
}
}
public static boolean eliminarDocumentacion(int idDocumentacion){
public static boolean eliminarDocumentacion(int idDocumentacion) {
return false;
}
public static boolean editarDocumentacion(Documentacion documentacion){
public static boolean editarDocumentacion(Documento documentacion) {
PreparedStatement stm = null;
Connection conn = null;
boolean verificacion =false;
boolean verificacion = false;
conn = cn.conectar();
try{
String sql ="UPDATE `documentacion` SET `acta_nacimiento` = '"+documentacion.getActaNacimiento()+"',`certificado_bachillerato` = '"+documentacion.getCertificadoBachillerato()+"',`curp` = '"+documentacion.getCurp()+"',`ine` = '"+documentacion.getIne()+"', `ine_tutor` = '"+documentacion.getIneTutor()+"',`certificado_medico` = '"+documentacion.getCertificadoMedico()+"',`comprobante` = '"+documentacion.getComprobante()+"',`fotografia` = '"+documentacion.getFotografia()+"',`constancia` = '"+documentacion.getConstancia()+"' WHERE `id` = '"+documentacion.getId()+"';";
stm = conn.prepareStatement(sql);
stm.executeUpdate();
verificacion = true;
}catch (SQLException ex) {
try {
/*
* String sql = "UPDATE `documentacion` SET `acta_nacimiento` = '" +
* documentacion.getActaNacimiento()
* + "',`certificado_bachillerato` = '" +
* documentacion.getCertificadoBachillerato() + "',`curp` = '"
* + documentacion.getCurp() + "',`ine` = '" + documentacion.getIne() +
* "', `ine_tutor` = '"
* + documentacion.getIneTutor() + "',`certificado_medico` = '" +
* documentacion.getCertificadoMedico()
* + "',`comprobante` = '" + documentacion.getComprobante() +
* "',`fotografia` = '"
* + documentacion.getFotografia() + "',`constancia` = '" +
* documentacion.getConstancia()
* + "' WHERE `id` = '" + documentacion.getId() + "';";
*/
stm = conn.prepareStatement("");
stm.executeUpdate();
verificacion = true;
} catch (SQLException ex) {
System.err.println(ex);
}finally{
} finally {
cerrarConexiones(stm, conn);
cn.cerrarConexion();
}
return verificacion;
return verificacion;
}
}

View File

@ -1,109 +0,0 @@
package mx.uv.Controller;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import mx.uv.Model.Examen;
public class DAO_Examen {
private static Conexion cn = Conexion.getInstance();
public static List<Examen> dameExamenes(){
Statement stm = null;
ResultSet rs = null;
Connection conn = null;
List<Examen> resultado = new ArrayList<>();
conn = cn.conectar();
try {
String sql = "SELECT * from examen";
stm = conn.createStatement();
rs = stm.executeQuery(sql);
while (rs.next()) {
Examen u = new Examen(rs.getInt(1),rs.getDouble(2),rs.getBoolean(3),rs.getInt(4));
resultado.add(u);
}
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(null, conn);
}
return resultado;
}
public static boolean agregarExamen(Examen examen){
PreparedStatement stm = null;
Connection conn = null;
boolean msj = false;
conn = cn.conectar();
try{
String sql = "INSERT INTO `examen` (`calificacion`, `derechoInscripcion`) VALUES(?,?);";
stm = (PreparedStatement) conn.prepareStatement(sql);
stm.setDouble(1, examen.getCalificacion());
stm.setBoolean(2, examen.isDerechoInscripcion());
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(stm, conn);
}
return msj;
}
private static void cerrarConexiones(PreparedStatement stm, Connection conn) {
if(stm != null){
try{
stm.close();
}catch(Exception e){
System.out.println(e);
}
stm = null;
}
try{
conn.close();
cn.cerrarConexion();
} catch(Exception e){
System.out.println(e);
}
}
public static boolean eliminarExamen(int id){
return false;
}
public static boolean editarExamen(Examen examen){
PreparedStatement stm = null;
Connection conn = null;
boolean verificacion = false;
conn = cn.conectar();
try{
String sql = "UPDATE `examen` SET `calificacion` = ?, `derechoInscripcion` = ? WHERE `idExamen` = ?;";
stm = conn.prepareStatement(sql);
stm.executeQuery();
verificacion = true;
} catch (SQLException ex){
System.err.println(ex);
} finally{
cerrarConexiones(stm, conn);
cn.cerrarConexion();
}
return verificacion;
}
}

View File

@ -1,118 +0,0 @@
package mx.uv.Controller;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import mx.uv.Model.FichaI;
public class DAO_FichaI {
private static Conexion cn = Conexion.getInstance();
public static List<FichaI> obtenerFichas() {
Statement stm = null;
ResultSet rs = null;
Connection conn = null;
List<FichaI> resultado = new ArrayList<>();
conn = cn.conectar();
try {
String sql = "SELECT * FROM fichaI";
stm = conn.createStatement();
rs = stm.executeQuery(sql);
while (rs.next()) {
FichaI ficha = new FichaI(
rs.getInt("id_alumno"),
rs.getInt("id_carrera"),
rs.getInt("id_tutor"),
rs.getInt("id_documentacion"),
rs.getDate("fecha_inicio"),
rs.getDate("fecha_fin")
);
resultado.add(ficha);
}
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(null, conn);
}
return resultado;
}
public static boolean agregarFichaI(FichaI ficha) {
PreparedStatement stm = null;
Connection conn = null;
boolean agregado = false;
conn = cn.conectar();
try {
String sql = "INSERT INTO fichaI (id_alumno, id_carrera, id_tutor, id_documentacion, fecha_inicio, fecha_fin) VALUES (?, ?, ?, ?, ?, ?)";
stm = conn.prepareStatement(sql);
stm.setInt(1, ficha.getIdAlumno());
stm.setInt(2, ficha.getIdCarrera());
stm.setInt(3, ficha.getIdTutor());
stm.setInt(4, ficha.getIdDocumentacion());
stm.setDate(5, new java.sql.Date(ficha.getFechaInicio().getTime()));
stm.setDate(6, new java.sql.Date(ficha.getFechaFin().getTime()));
agregado = stm.executeUpdate() > 0;
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(stm, conn);
}
return agregado;
}
public static boolean editarFichaI(FichaI ficha) {
PreparedStatement stm = null;
Connection conn = null;
boolean actualizado = false;
conn = cn.conectar();
try {
String sql = "UPDATE fichaI SET id_carrera = ?, id_tutor = ?, id_documentacion = ?, fecha_inicio = ?, fecha_fin = ? WHERE id_alumno = ?";
stm = conn.prepareStatement(sql);
stm.setInt(1, ficha.getIdCarrera());
stm.setInt(2, ficha.getIdTutor());
stm.setInt(3, ficha.getIdDocumentacion());
stm.setDate(4, new java.sql.Date(ficha.getFechaInicio().getTime()));
stm.setDate(5, new java.sql.Date(ficha.getFechaFin().getTime()));
stm.setInt(6, ficha.getIdAlumno());
actualizado = stm.executeUpdate() > 0;
} catch (SQLException ex) {
System.err.println(ex);
} finally {
cerrarConexiones(stm, conn);
}
return actualizado;
}
public static boolean eliminarFicha(int idAlumno) {
return false;
}
private static void cerrarConexiones(PreparedStatement stm, Connection conn) {
if (stm != null) {
try {
stm.close();
} catch (Exception e) {
System.out.println(e);
}
}
if (conn != null) {
try {
conn.close();
cn.cerrarConexion();
} catch (Exception e) {
System.out.println(e);
}
}
}
}

View File

@ -1,113 +0,0 @@
package mx.uv.Controller;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import mx.uv.Model.FichaP;
public class DAO_FichaP {
private static Conexion cn = Conexion.getInstance();
// Método para obtener todas las fichas
public static List<FichaP> dameFichasP() {
Statement stm = null;
ResultSet rs = null;
Connection conn = null;
List<FichaP> resultado = new ArrayList<>();
conn = cn.conectar();
try {
String sql = "SELECT * FROM fichaP";
stm = conn.createStatement();
rs = stm.executeQuery(sql);
while (rs.next()) {
FichaP ficha = new FichaP(
rs.getInt("id"),
rs.getInt("id_alumno"),
rs.getInt("id_carrera"),
rs.getDate("fecha_inicio"),
rs.getDate("fecha_fin")
);
resultado.add(ficha);
}
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(null, conn);
}
return resultado;
}
public static boolean agregarFichaP(FichaP ficha) {
PreparedStatement stm = null;
Connection conn = null;
boolean agregado = false;
conn = cn.conectar();
try {
String sql = "INSERT INTO fichaP (id_alumno, id_carrera, fecha_inicio, fecha_fin) VALUES (?, ?, ?, ?)";
stm = conn.prepareStatement(sql);
stm.setInt(1, ficha.getIdAlumno());
stm.setInt(2, ficha.getIdCarrera());
stm.setDate(3, new java.sql.Date(ficha.getFechaInicio().getTime()));
stm.setDate(4, new java.sql.Date(ficha.getFechaFin().getTime()));
agregado = stm.executeUpdate() > 0;
} catch (Exception e) {
System.out.println(e);
} finally {
cerrarConexiones(stm, conn);
}
return agregado;
}
public static boolean editarFichaP(FichaP ficha) {
PreparedStatement stm = null;
Connection conn = null;
boolean actualizado = false;
conn = cn.conectar();
try {
String sql = "UPDATE fichaP SET id_alumno = ?, id_carrera = ?, fecha_inicio = ?, fecha_fin = ? WHERE id = ?";
stm = conn.prepareStatement(sql);
stm.setInt(1, ficha.getIdAlumno());
stm.setInt(2, ficha.getIdCarrera());
stm.setDate(3, new java.sql.Date(ficha.getFechaInicio().getTime()));
stm.setDate(4, new java.sql.Date(ficha.getFechaFin().getTime()));
stm.setInt(5, ficha.getId());
actualizado = stm.executeUpdate() > 0;
} catch (SQLException ex) {
System.err.println(ex);
} finally {
cerrarConexiones(stm, conn);
}
return actualizado;
}
public static boolean eliminarFichaP(int id) {
return false;
}
private static void cerrarConexiones(PreparedStatement stm, Connection conn) {
if (stm != null) {
try {
stm.close();
} catch (Exception e) {
System.out.println(e);
}
}
if (conn != null) {
try {
conn.close();
cn.cerrarConexion();
} catch (Exception e) {
System.out.println(e);
}
}
}
}

View File

@ -1,55 +0,0 @@
package mx.uv.Model;
public class Administrador {
private int id;
private String matricula;
private String contrasena;
private String nombre;
private String apellido;
public Administrador() {
}
public Administrador(int id, String matricula, String contrasena, String nombre, String apellido) {
this.id = id;
this.matricula = matricula;
this.contrasena = contrasena;
this.nombre = nombre;
this.apellido = apellido;
}
public void setId(int id) {
this.id = id;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public void setContrasena(String contrasena) {
this.contrasena = contrasena;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public int getId() {
return id;
}
public String getMatricula() {
return matricula;
}
public String getContrasena() {
return contrasena;
}
public String getNombre() {
return nombre;
}
public String getApellido() {
return apellido;
}
}

View File

@ -1,106 +0,0 @@
package mx.uv.Model;
// * Clase Alumno que servira para comunicarse con el controlador.
public class Alumno {
private int id;
private String nombre;
private String apellido;
private String fechaNacimiento;
private String nacionalidad;
private String tipoDeSangre;
private String matricula;
private String contrasena;
private String correo;
public Alumno(int id, String nombre, String apellido, String fechaNacimiento, String nacionalidad,
String tipoDeSangre, String matricula, String contrasena, String correo) {
this.id = id;
this.nombre = nombre;
this.apellido = apellido;
this.fechaNacimiento = fechaNacimiento;
this.nacionalidad = nacionalidad;
this.tipoDeSangre = tipoDeSangre;
this.matricula = matricula;
this.contrasena = contrasena;
this.correo = correo;
}
public Alumno() {
}
public Alumno(String nombre, String apellido, String nacionalidad, String matricula, String contrasena,String correo) {
this.nombre = nombre;
this.apellido = apellido;
this.nacionalidad = nacionalidad;
this.matricula = matricula;
this.contrasena = contrasena;
this.correo = correo;
}
public Alumno(String matricula, String contrasena) {
this.matricula = matricula;
this.contrasena = contrasena;
}
public void setId(int id) {
this.id = id;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public void setFechaNacimiento(String fechaNacimiento) {
this.fechaNacimiento = fechaNacimiento;
}
public void setNacionalidad(String nacionalidad) {
this.nacionalidad = nacionalidad;
}
public void setTipoDeSangre(String tipoDeSangre) {
this.tipoDeSangre = tipoDeSangre;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public void setContrasena(String contrasena) {
this.contrasena = contrasena;
}
public int getId() {
return id;
}
public String getNombre() {
return nombre;
}
public String getApellido() {
return apellido;
}
public String getFechaNacimiento() {
return fechaNacimiento;
}
public String getNacionalidad() {
return nacionalidad;
}
public String getTipoDeSangre() {
return tipoDeSangre;
}
public String getMatricula() {
return matricula;
}
public String getContrasena() {
return contrasena;
}
public String getCorreo() {
return correo;
}
public void setCorreo(String correo) {
this.correo = correo;
}
}

View File

@ -2,69 +2,92 @@ package mx.uv.Model;
public class Carrera {
private int id;
private String area;
private String nombre;
private String modalidad;
private String area;
private String campus;
private Double costo;
private String descripcion;
private String mision;
private String vision;
private String objetivo;
public Carrera(int id,String area, String nombre, String modalidad, String campus, double costo){
this.id=id;
this.area=area;
this.nombre=nombre;
this.modalidad=modalidad;
this.campus=campus;
this.costo=costo;
public Carrera(int id, String nombre, String campus, String descripcion, String mision, String vision,
String objetivo) {
this.id = id;
this.nombre = nombre;
this.campus = campus;
this.descripcion = descripcion;
this.mision = mision;
this.vision = vision;
this.objetivo = objetivo;
}
public void setId(int id){
this.id=id;
public Carrera(int id, String nombre, String area) {
this.id = id;
this.nombre = nombre;
this.area = area;
}
public void setArea(String area){
this.area=area;
public void setCampus(String campus) {
this.campus = campus;
}
public void setNombre(String nombre){
this.nombre=nombre;
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public void setModalidad(String modalidad){
this.modalidad=modalidad;
public void setMision(String mision) {
this.mision = mision;
}
public void setCampus(String campus){
this.campus=campus;
public void setVision(String vision) {
this.vision = vision;
}
public void setCosto(double costo){
this.costo=costo;
public void setObjetivo(String objetivo) {
this.objetivo = objetivo;
}
public int getId(){
public String getCampus() {
return campus;
}
public String getDescripcion() {
return descripcion;
}
public String getMision() {
return mision;
}
public String getVision() {
return vision;
}
public String getObjetivo() {
return objetivo;
}
public int getId() {
return id;
}
public String getArea(){
return area;
}
public String getNombre(){
public String getNombre() {
return nombre;
}
public String getModalidad(){
return modalidad;
public String getArea() {
return area;
}
public String getCampus(){
return campus;
}
public double getCosto(){
return costo;
public void setId(int id) {
this.id = id;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setArea(String area) {
this.area = area;
}
}

View File

@ -1,108 +0,0 @@
package mx.uv.Model;
public class Documentacion {
private int id;
private byte[] actaDeNacimiento;
private byte[] certificadoBachillerato;
private byte[] curp;
private byte[] ine;
private byte[] ineTutor;
private byte[] certificadoMedico;
private byte[] comprobante;
private byte[] fotografia;
private byte[] constancia;
public Documentacion(int id, byte[] actaDeNacimiento, byte[] certificadoBachillerato, byte[] curp, byte[] ine, byte[] ineTutor, byte[] certificadoMedico, byte[] comprobante, byte[] fotografia, byte[] constancia){
this.id=id;
this.actaDeNacimiento=actaDeNacimiento;
this.certificadoBachillerato=certificadoBachillerato;
this.curp=curp;
this.ine=ine;
this.ineTutor=ineTutor;
this.certificadoMedico=certificadoMedico;
this.comprobante=comprobante;
this.fotografia=fotografia;
this.constancia=constancia;
}
public void setId(int id){
this.id=id;
}
public void setActaNacimiento(byte[] actaDeNacimiento){
this.actaDeNacimiento=actaDeNacimiento;
}
public void setCertificadoBachillerato(byte[] certificadoBachillerato){
this.certificadoBachillerato=certificadoBachillerato;
}
public void setCurp(byte[] curp){
this.curp=curp;
}
public void setIne(byte[] ine){
this.ine=ine;
}
public void setIneTutor(byte[] ineTutor){
this.ineTutor=ineTutor;
}
public void setCertificadoMedico(byte[] certificadoMedico){
this.certificadoMedico=certificadoMedico;
}
public void setComprobante(byte[] comprobante){
this.comprobante=comprobante;
}
public void setFoto(byte[] fotografia){
this.fotografia=fotografia;
}
public void setConstancia(byte[] constancia){
this.constancia=constancia;
}
public int getId(){
return id;
}
public byte[] getActaNacimiento(){
return actaDeNacimiento;
}
public byte[] getCertificadoBachillerato(){
return certificadoBachillerato;
}
public byte[] getCurp(){
return curp;
}
public byte[] getIne(){
return ine;
}
public byte[] getIneTutor(){
return ineTutor;
}
public byte[] getCertificadoMedico(){
return certificadoMedico;
}
public byte[] getComprobante(){
return comprobante;
}
public byte[] getFotografia(){
return fotografia;
}
public byte[] getConstancia(){
return constancia;
}
}

View File

@ -0,0 +1,57 @@
package mx.uv.Model;
public class Documento {
private int id;
private String titulo;
private byte[] archivo;
private int idUsuario;
private int valido;
public Documento(int id, String titulo, byte[] archivo, int idUsuario, int valido) {
this.id = id;
this.titulo = titulo;
this.archivo = archivo;
this.idUsuario = idUsuario;
this.valido = valido;
}
public int getId() {
return id;
}
public String getTitulo() {
return titulo;
}
public byte[] getArchivo() {
return archivo;
}
public int getIdUsuario() {
return idUsuario;
}
public int getValido() {
return valido;
}
public void setId(int id) {
this.id = id;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public void setArchivo(byte[] archivo) {
this.archivo = archivo;
}
public void setIdUsuario(int idUsuario) {
this.idUsuario = idUsuario;
}
public void setValido(int valido) {
this.valido = valido;
}
}

View File

@ -1,59 +0,0 @@
package mx.uv.Model;
public class Examen {
private int id;
private double calificacion;
private boolean derechoInscripcion;
private int idAlumno;
public Examen(int id, double calificacion, boolean derechoInscripcion, int idAlumno) {
this.id = id;
this.calificacion = calificacion;
this.derechoInscripcion = derechoInscripcion;
this.idAlumno = idAlumno;
}
// Getters y Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getCalificacion() {
return calificacion;
}
public void setCalificacion(double calificacion) {
this.calificacion = calificacion;
}
public boolean isDerechoInscripcion() {
return derechoInscripcion;
}
public void setDerechoInscripcion(boolean derechoInscripcion) {
this.derechoInscripcion = derechoInscripcion;
}
public int getIdAlumno() {
return idAlumno;
}
public void setIdAlumno(int idAlumno) {
this.idAlumno = idAlumno;
}
// toString() para representación legible
@Override
public String toString() {
return "Examen{" +
"id=" + id +
", calificacion=" + calificacion +
", derechoInscripcion=" + derechoInscripcion +
", idAlumno=" + idAlumno +
'}';
}
}

View File

@ -1,84 +0,0 @@
package mx.uv.Model;
import java.util.Date;
public class FichaI {
private int idAlumno;
private int idCarrera;
private int idTutor;
private int idDocumentacion;
private Date fechaInicio;
private Date fechaFin;
public FichaI(int idAlumno, int idCarrera, int idTutor, int idDocumentacion, Date fechaInicio, Date fechaFin) {
this.idAlumno = idAlumno;
this.idCarrera = idCarrera;
this.idTutor = idTutor;
this.idDocumentacion = idDocumentacion;
this.fechaInicio = fechaInicio;
this.fechaFin = fechaFin;
}
// Getters y Setters
public int getIdAlumno() {
return idAlumno;
}
public void setIdAlumno(int idAlumno) {
this.idAlumno = idAlumno;
}
public int getIdCarrera() {
return idCarrera;
}
public void setIdCarrera(int idCarrera) {
this.idCarrera = idCarrera;
}
public int getIdTutor() {
return idTutor;
}
public void setIdTutor(int idTutor) {
this.idTutor = idTutor;
}
public int getIdDocumentacion() {
return idDocumentacion;
}
public void setIdDocumentacion(int idDocumentacion) {
this.idDocumentacion = idDocumentacion;
}
public Date getFechaInicio() {
return fechaInicio;
}
public void setFechaInicio(Date fechaInicio) {
this.fechaInicio = fechaInicio;
}
public Date getFechaFin() {
return fechaFin;
}
public void setFechaFin(Date fechaFin) {
this.fechaFin = fechaFin;
}
// toString() para representación legible
@Override
public String toString() {
return "FichaI{" +
"idAlumno=" + idAlumno +
", idCarrera=" + idCarrera +
", idTutor=" + idTutor +
", idDocumentacion=" + idDocumentacion +
", fechaInicio=" + fechaInicio +
", fechaFin=" + fechaFin +
'}';
}
}

View File

@ -1,73 +0,0 @@
package mx.uv.Model;
import java.util.Date;
public class FichaP {
private int id;
private int idAlumno;
private int idCarrera;
private Date fechaInicio;
private Date fechaFin;
public FichaP(int id, int idAlumno, int idCarrera, Date fechaInicio, Date fechaFin) {
this.id = id;
this.idAlumno = idAlumno;
this.idCarrera = idCarrera;
this.fechaInicio = fechaInicio;
this.fechaFin = fechaFin;
}
// Getters y Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getIdAlumno() {
return idAlumno;
}
public void setIdAlumno(int idAlumno) {
this.idAlumno = idAlumno;
}
public int getIdCarrera() {
return idCarrera;
}
public void setIdCarrera(int idCarrera) {
this.idCarrera = idCarrera;
}
public Date getFechaInicio() {
return fechaInicio;
}
public void setFechaInicio(Date fechaInicio) {
this.fechaInicio = fechaInicio;
}
public Date getFechaFin() {
return fechaFin;
}
public void setFechaFin(Date fechaFin) {
this.fechaFin = fechaFin;
}
// toString() para representación legible
@Override
public String toString() {
return "FichaP{" +
"id=" + id +
", idAlumno=" + idAlumno +
", idCarrera=" + idCarrera +
", fechaInicio=" + fechaInicio +
", fechaFin=" + fechaFin +
'}';
}
}

View File

@ -0,0 +1,38 @@
package mx.uv.Model;
public class Incripcion {
private int id;
private int idUusario;
private int idDocumento;
public Incripcion(int id, int idUusario, int idDocumento) {
this.id = id;
this.idUusario = idUusario;
this.idDocumento = idDocumento;
}
public void setId(int id) {
this.id = id;
}
public void setIdUusario(int idUusario) {
this.idUusario = idUusario;
}
public void setIdDocumento(int idDocumento) {
this.idDocumento = idDocumento;
}
public int getId() {
return id;
}
public int getIdUusario() {
return idUusario;
}
public int getIdDocumento() {
return idDocumento;
}
}

View File

@ -2,25 +2,30 @@ package mx.uv.Model;
public class Mensaje {
private boolean verificacion;
private Alumno alumno;
private Usuario usuario;
public Mensaje(){
};
public Mensaje(boolean verificacion, Alumno alumno) {
this.verificacion = verificacion;
this.alumno = alumno;
public Mensaje() {
}
public Mensaje(boolean verificacion, Usuario usuario) {
this.verificacion = verificacion;
this.usuario = usuario;
}
public boolean isVerificacion() {
return verificacion;
}
public Alumno getAlumno() {
return alumno;
public Usuario getUsuario() {
return usuario;
}
public void setVerificacion(boolean verificacion) {
this.verificacion = verificacion;
}
public void setAlumno(Alumno alumno) {
this.alumno = alumno;
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
}

View File

@ -1,5 +1,38 @@
package mx.uv.Model;
public class Registro {
private int id;
private String matricula;
private String descripcion;
public Registro(int id, String matricula, String descripcion) {
this.id = id;
this.matricula = matricula;
this.descripcion = descripcion;
}
public void setId(int id) {
this.id = id;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public int getId() {
return id;
}
public String getMatricula() {
return matricula;
}
public String getDescripcion() {
return descripcion;
}
}

View File

@ -1,57 +1,58 @@
package mx.uv.Model;
public class Tutor {
private int id;
private String nombre;
private String apellido;
private String parentesco;
private String ocupacion;
private String telefono;
public Tutor(int id, String nombre, String apellido, String parentesco, String ocupacion, String telefono) {
this.id = id;
this.nombre = nombre;
this.apellido = apellido;
this.parentesco = parentesco;
this.ocupacion = ocupacion;
this.telefono = telefono;
}
private String numeroDeTelefono;
private int idUsuario;
public void setId(int id) {
public Tutor(int id, String nombre, String apellido, String numeroDeTelefono, int idUsuario) {
this.id = id;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public void setParentesco(String parentesco) {
this.parentesco = parentesco;
}
public void setOcupacion(String ocupacion) {
this.ocupacion = ocupacion;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
this.numeroDeTelefono = numeroDeTelefono;
this.idUsuario = idUsuario;
}
public int getId() {
return id;
}
public String getNombre() {
return nombre;
}
public String getApellido() {
return apellido;
}
public String getParentesco() {
return parentesco;
public String getNumeroDeTelefono() {
return numeroDeTelefono;
}
public String getOcupacion() {
return ocupacion;
public int getIdUsuario() {
return idUsuario;
}
public String getTelefono() {
return telefono;
public void setId(int id) {
this.id = id;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public void setNumeroDeTelefono(String numeroDeTelefono) {
this.numeroDeTelefono = numeroDeTelefono;
}
public void setIdUsuario(int idUsuario) {
this.idUsuario = idUsuario;
}
}

View File

@ -0,0 +1,176 @@
package mx.uv.Model;
import java.security.SecureRandom;
public class Usuario {
private int id;
private String nombre;
private String apellido;
private String matricula;
private String contrasena;
private String correo;
private String nacionalidad;
private String tipoSangre;
private String fecha_nacimiento;
private String curp;
private String rol;
private int idCarrera;
private int inscrito;
public Usuario(int id, String nombre, String apellido, String matricula, String contrasena, String correo,
String nacionalidad, String tipoSangre, String fecha_nacimiento, String curp, String rol, int idCarrera,
int inscrito) {
this.id = id;
this.nombre = nombre;
this.apellido = apellido;
this.matricula = matricula;
this.contrasena = contrasena;
this.correo = correo;
this.nacionalidad = nacionalidad;
this.tipoSangre = tipoSangre;
this.fecha_nacimiento = fecha_nacimiento;
this.curp = curp;
this.rol = rol;
this.idCarrera = idCarrera;
this.inscrito = inscrito;
}
public Usuario(int id, String nombre, String apellido, String matricula) {
this.id = id;
this.nombre = nombre;
this.apellido = apellido;
this.matricula = matricula;
}
public Usuario(int id, String nombre, String apellido, String matricula, String rol) {
this.id = id;
this.nombre = nombre;
this.apellido = apellido;
this.matricula = matricula;
this.rol = rol;
}
public Usuario(String matricula, String contrasena) {
this.matricula = matricula;
this.contrasena = contrasena;
}
public int getId() {
return id;
}
public String getNombre() {
return nombre;
}
public String getApellido() {
return apellido;
}
public String getMatricula() {
return matricula;
}
public String getContrasena() {
return contrasena;
}
public String getCorreo() {
return correo;
}
public String getNacionalidad() {
return nacionalidad;
}
public String getTipoSangre() {
return tipoSangre;
}
public String getFecha_nacimiento() {
return fecha_nacimiento;
}
public String getCurp() {
return curp;
}
public String getRol() {
return rol;
}
public int getIdCarrera() {
return idCarrera;
}
public int getInscrito() {
return inscrito;
}
public void setId(int id) {
this.id = id;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public void setContrasena(String contrasena) {
this.contrasena = contrasena;
}
public void setCorreo(String correo) {
this.correo = correo;
}
public void setNacionalidad(String nacionalidad) {
this.nacionalidad = nacionalidad;
}
public void setTipoSangre(String tipoSangre) {
this.tipoSangre = tipoSangre;
}
public void setFecha_nacimiento(String fecha_nacimiento) {
this.fecha_nacimiento = fecha_nacimiento;
}
public void setCurp(String curp) {
this.curp = curp;
}
public void setRol(String rol) {
this.rol = rol;
}
public void setIdCarrera(int idCarrera) {
this.idCarrera = idCarrera;
}
public void setInscrito(int inscrito) {
this.inscrito = inscrito;
}
public String crearToken() {
String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
SecureRandom random = new SecureRandom();
StringBuilder token = new StringBuilder(15);
for (int i = 0; i < 15; i++) {
int index = random.nextInt(CHARACTERS.length());
token.append(CHARACTERS.charAt(index));
}
return token.toString();
}
}

View File

@ -2,12 +2,12 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<!--<link rel="icon" type="image/svg+xml" href="/vite.svg" />-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Registro</title>
<title>SIU</title>
</head>
<body>
<div id="root"></div>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -10,12 +10,16 @@
"preview": "vite preview"
},
"dependencies": {
"axios": "^1.6.8",
"@fortawesome/fontawesome-free": "^6.5.2",
"axios": "^1.7.0",
"bootstrap": "^5.3.3",
"chart.js": "^4.4.3",
"react": "^18.2.0",
"react-bootstrap-pagination-control": "^1.0.5",
"react-chartjs-2": "^5.2.0",
"react-dom": "^18.2.0",
"react-dropzone": "^14.2.3",
"react-router": "^6.23.1",
"react-router-dom": "^6.23.1"
"react-router-dom": "^6.23.1",
"sweetalert2": "^11.11.0"
},
"devDependencies": {
"@types/react": "^18.2.66",
@ -25,7 +29,6 @@
"eslint-plugin-react": "^7.34.1",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.6",
"react-router-dom": "^6.23.1",
"vite": "^5.2.0"
}
}

37
frontend/src/App.jsx Normal file
View File

@ -0,0 +1,37 @@
import { BrowserRouter, Routes, Route } from "react-router-dom";
import Nav from "./Components/Nav";
import Login from "./Views/Login";
import Registro from "./Views/Registro";
import './Styles/App.css';
import ProtectorDeRutas from "./Components/ProtectorDeRutas";
import OfertaEducativa from "./Views/OfertaEducativa";
import Inscripcion from "./Views/Inscripcion";
import ProtectorEstudiante from "./Components/ProtectorEstudiante";
import ProtectorAdmin from "./Components/ProtectorAdmin";
import ValidacionAdm from "./Views/ValidacionAdm";
import Informacion from "./Views/Informacion";
function App() {
return (
<BrowserRouter>
<Nav />
<Routes>
<Route path="/login" element={<Login />} />
<Route path="/registro" element={<Registro />} />
<Route element={<ProtectorDeRutas />}>
<Route path="/home" element={<OfertaEducativa />} />
<Route path="/info" element={<Informacion />} />
<Route element={<ProtectorAdmin />}>
<Route path="/inscripcion" element={<Inscripcion />} />
</Route>
<Route element={<ProtectorEstudiante />}>
<Route path="/adminHome" element={<ValidacionAdm/>} />
</Route>
</Route>
</Routes>
</BrowserRouter>
);
}
export default App;

View File

@ -0,0 +1,68 @@
import { Link, useNavigate } from "react-router-dom";
import storage from "../Storage/storage";
const Nav = () => {
const go = useNavigate();
const logout = async () => {
storage.remove("authToken");
storage.remove("authUser");
storage.remove("authRol");
go("/login");
};
return (
<nav className="navbar navbar-expand-lg navbar-white bg-success">
<div className="container-fluid">
<a className="navbar-brand">Dran.Net</a>
<button
className="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#nav"
aria-controls="navbarSupportedContent"
>
<span className="navbar-toggler-icon"></span>
</button>
</div>
{storage.get("authUser") ? (
<div className="collapse navbar-collapse" id="nav">
<ul className="navbar-nav mx-auto mb-2">
<li className="nav-item px-lg-5 h4"> </li>
<li className="nav-item px-lg-5">
<Link to="/home" className="nav-link">
Oferta Educativa
</Link>
</li>
<li className="nav-item px-lg-5">
{ storage.get("authRol") == "estudiante" ? (
<Link to="/inscripcion" className="nav-link">
Incripción
</Link>
):(
<Link to="/adminHome" className="nav-link">
Incripción Panel
</Link>
)}
</li>
<li className="nav-item px-lg-5">
<Link to="/info" className="nav-link">
Informacion
</Link>
</li>
</ul>
<ul className="navbar-nav mx-auto mb-2">
<li className="nav-item px-lg-5">
<button className="btn btn-success" onClick={logout}>
Cerrar Sesión
</button>
</li>
</ul>
</div>
) : (
<h5>Bienvenido</h5>
)}
</nav>
);
};
export default Nav;

View File

@ -0,0 +1,14 @@
import React from "react";
import { Navigate, Outlet } from "react-router-dom";
import storage from "../Storage/storage";
export const ProtectorAdmin = () => {
const authRol = storage.get("authRol");
if (authRol != 'estudiante') {
return <Navigate to="/adminHome" />;
}
return <Outlet />;
}
export default ProtectorAdmin

View File

@ -0,0 +1,13 @@
import React from "react";
import { Navigate, Outlet } from "react-router-dom";
import storage from "../Storage/storage";
export const ProtectorDeRutas = ({ children }) => {
const authUser = storage.get("authToken");
if (!authUser) {
return <Navigate to="/login" />;
}
return <Outlet />;
};
export default ProtectorDeRutas;

View File

@ -0,0 +1,13 @@
import React from "react";
import { Navigate, Outlet } from "react-router-dom";
import storage from "../Storage/storage";
export const ProtectorEstudiante = ({ children }) => {
const authRol = storage.get("authRol");
if (authRol != 'administrador') {
return <Navigate to="/home" />;
}
return <Outlet />;
}
export default ProtectorEstudiante

View File

@ -0,0 +1,45 @@
import React, { forwardRef, useEffect, useRef } from "react";
export default forwardRef(
(
{
type = "",
icon = "",
placeholder = "",
name,
id,
value,
className,
required,
isFocused,
handleChange,
},
ref
) => {
const input = ref ? ref : useRef();
useEffect(() => {
if (isFocused) {
input.current.focus();
}
}, []);
return (
<div className="input-group mb-3">
<span className="input-group-text">
<i className={"fa-solid" + icon}></i>
</span>
<input
type={type}
placeholder={placeholder}
name={name}
id={id}
value={value}
className={className}
ref={input}
required={required}
onChange={(e) => handleChange(e)}
/>
</div>
);
}
);

View File

@ -0,0 +1,19 @@
export const storage = {
get(key) {
const val = window.localStorage.getItem(key);
if (!val) {
return null;
}
return JSON.parse(val);
},
set(key, val) {
window.localStorage.setItem(key, JSON.stringify(val));
},
remove(key) {
window.localStorage.removeItem(key);
},
clear() {
window.localStorage.clear();
},
};
export default storage;

View File

@ -0,0 +1,4 @@
footer {
margin-top: auto;
/* Coloca el footer al final */
}

View File

@ -0,0 +1,63 @@
import React from 'react'
import { useState, useEffect } from 'react';
import { sendRequest } from "../funciones";
const Informacion = () => {
const [productosData, setProductosData] = useState([]);
useEffect(() => {
const fetchData = async () => {
try {
const res = await axios.get("/carreras");
setProductosData(res.data);
} catch (error) {
console.error(error);
}
};
fetchData();
}, []);
const Picture = (parametros) => {
const id = parametros.id;
const nombre = parametros.nombre;
const area = parametros.area;
const campus = parametros.campus;
const descripcion = parametros.descripcion;
const mision = parametros.mision;
const vision = parametros.vision;
const objetivo = parametros.objetivo;
return (
<a>
<div key={id}>
<div >
<div >
<h1 >{nombre}</h1>
<h2 >{area}</h2>
<h2 >{campus}</h2>
<h2 >{descripcion}</h2>
<h2 >{mision}</h2>
<h2 >{vision}</h2>
<h2 >{objetivo}</h2>
</div>
</div>
</div>
</a>
);
};
return (
<>
<div >
<div >
{productosData.map((producto) => (
<Picture key={producto.id} {...producto} />
))}
</div>
</div>
</>
);
}
export default Informacion

View File

@ -0,0 +1,26 @@
import React from 'react';
const Inscripcion = () => {
return (
<div className='container'>
<div className='nbn'>
<form>
<div className="mb-4">
<h5>Datos Personales</h5>
{/* Campos del formulario para Datos Personales */}
</div>
<div className="mb-4">
<h5>Datos del Tutor</h5>
{/* Campos del formulario para Datos del Tutor */}
</div>
<div className="mb-4">
<h5>Documentación</h5>
{/* Campos del formulario para Documentación */}
</div>
</form>
</div>
</div>
);
}
export default Inscripcion;

View File

@ -0,0 +1,93 @@
import React, { useState } from "react";
import { useNavigate, NavLink } from "react-router-dom";
import { sendRequest } from "../funciones";
import DivInput from "../Components/divInput";
import storage from "../Storage/storage";
const Login = () => {
const [usuario, setUsuario] = useState({ matricula: "", contrasena: "" });
const go = useNavigate();
const login = async (e) => {
e.preventDefault();
const form = { ...usuario };
try {
const res = await sendRequest("POST", form, "/alumnoIniciado", "", false);
if (res && res.authToken) {
storage.set("authToken", res.authToken);
storage.set("authUser", res.matricula);
storage.set("authRol", res.authRol);
const rol =storage.get("authRol");
go("/home")
} else {
console.error("Respuesta de la API inválida:", res);
}
} catch (error) {
console.error("Error al iniciar sesión:", error);
}
};
const handleChange = (e) => {
const { name, value } = e.target;
setUsuario((prevUsuario) => ({ ...prevUsuario, [name]: value }));
};
return (
<div className="container-fluid d-flex flex-column min-vh-100 p-0 overflow-hidden">
<div className="container flex-grow-1 d-flex align-items-center justify-content-center overflow-hidden">
<div className="row w-100 h-100">
<div className="col-md-6 d-flex align-items-center justify-content-center">
<img src="imagen.jpg" alt="Imagen" className="img-fluid" />
</div>
<div className="col-md-6 d-flex align-items-center">
<form className="p-4 border rounded bg-light w-100" onSubmit={login}>
<DivInput
type="text"
icon="fa-at"
name="matricula"
value={usuario.matricula}
className="form-control mb-3"
placeholder="Matrícula"
required
handleChange={handleChange}
/>
<DivInput
type="password"
icon="fa-lock"
name="contrasena"
value={usuario.contrasena}
className="form-control mb-3"
placeholder="Contraseña"
required
handleChange={handleChange}
/>
<NavLink to="/registro" className="d-block mb-3">
¿Aún no te has registrado?
</NavLink>
<button type="submit" className="btn btn-dark w-100">
<i className="fa-solid fa-door-open me-2"></i> Login
</button>
</form>
</div>
</div>
</div>
<footer className="bg-success text-white text-center py-3">
<div className="d-flex justify-content-center">
<a href="mailto:uniregistro@outlook.com" className="text-white mx-3">
uniregistro@outlook.com
</a>
<a href="#" className="text-white mx-3">
uniBandeVer
</a>
<a href="tel:4582349234" className="text-white mx-3">
4582349234
</a>
</div>
</footer>
</div>
);
};
export default Login;

View File

@ -0,0 +1,60 @@
import React from 'react';
const OfertaEducativa = () => {
return (
<div>
<h1 className="text-primary text-uppercase text-center my-5" style={{ fontSize: '50px' }}>
Oferta Educativa
</h1>
<div className="container">
<div className="row gy-5">
<div className="col-md-6 col-lg-3">
<div className="border border-primary p-3 h-100">
<h2 className="text-warning">Área Técnica</h2>
<ul className="list-unstyled text-secondary">
<li>Licenciatura en Matemáticas</li>
<li>Licenciatura en Física</li>
<li>Licenciatura en Arquitectura</li>
</ul>
</div>
</div>
<div className="col-md-6 col-lg-3">
<div className="border border-primary p-3 h-100">
<h2 className="text-warning">Área Económico-Administrativo</h2>
<ul className="list-unstyled text-secondary">
<li>Licenciatura en Contabilidad</li>
<li>Licenciatura en Economía</li>
<li>Licenciatura en Administración</li>
</ul>
</div>
</div>
<div className="col-md-6 col-lg-3">
<div className="border border-primary p-3 h-100">
<h2 className="text-warning">Área de Humanidades</h2>
<ul className="list-unstyled text-secondary">
<li>Licenciatura en Historia</li>
<li>Licenciatura en Antropología</li>
<li>Licenciatura en Pedagogía</li>
</ul>
</div>
</div>
<div className="col-md-6 col-lg-3">
<div className="border border-primary p-3 h-100">
<h2 className="text-warning">Área de Biológicas y Agropecuarias</h2>
<ul className="list-unstyled text-secondary">
<li>Licenciatura en Biología</li>
<li>Ingeniería Química</li>
<li>Ingeniero Agrónomo</li>
</ul>
</div>
</div>
</div>
</div>
<footer className="bg-success text-white text-center py-3 mt-5">
© 2024 Universidad Filadelfia. Todos los derechos reservados.
</footer>
</div>
);
};
export default OfertaEducativa;

View File

@ -0,0 +1,121 @@
import React, { useState } from 'react';
import { useNavigate, NavLink } from 'react-router-dom';
import { sendRequest } from '../funciones';
import DivInput from '../Components/divInput';
const Registro = () => {
const [alumno, setAlumno] = useState({
nombre: '',
apellido: '',
nacionalidad: '',
correo: '',
});
const [mensaje, setMensaje] = useState('');
const [error, setError] = useState('');
const [cargando, setCargando] = useState(false);
const go = useNavigate();
const limpiar = () => {
setAlumno({
nombre: '',
apellido: '',
nacionalidad: '',
correo: '',
});
};
const registro = async (e) => {
e.preventDefault();
const form = { ...alumno };
try {
setCargando(true);
const res = await sendRequest('POST', form, '/agregarAlumno', '', false);
if (res && res.verificacion) {
limpiar();
setMensaje(`Alumno Registrado Correctamente. Contraseña: ${res.contrasena}, Matrícula: ${res.matricula}`);
} else {
setError('Error: No se pudo Registrar');
}
} catch (error) {
console.error('Error al registrar:', error);
setError('Error: Ocurrió un problema al procesar la solicitud.');
} finally {
setCargando(false);
}
};
const handleChange = (e) => {
const { name, value } = e.target;
setAlumno((prevAlumno) => ({ ...prevAlumno, [name]: value }));
};
return (
<div className="container-fluid d-flex flex-column min-vh-100 p-0 overflow-hidden">
<div className="container flex-grow-1 d-flex align-items-center justify-content-center overflow-hidden">
<div className="row w-100 h-100">
<div className="col-md-6 d-flex align-items-center justify-content-center">
<h3>Registrarse</h3>
</div>
<div className="col-md-6 d-flex align-items-center">
<form className="p-4 border rounded bg-light w-100" onSubmit={registro}>
<DivInput
type="text"
icon="fa-user"
name="nombre"
value={alumno.nombre}
className="form-control mb-3"
placeholder="Nombre"
required
handleChange={handleChange}
/>
<DivInput
type="text"
icon="fa-user"
name="apellido"
value={alumno.apellido}
className="form-control mb-3"
placeholder="Apellido"
required
handleChange={handleChange}
/>
<DivInput
type="text"
icon="fa-flag"
name="nacionalidad"
value={alumno.nacionalidad}
className="form-control mb-3"
placeholder="Nacionalidad"
required
handleChange={handleChange}
/>
<DivInput
type="email"
icon="fa-at"
name="correo"
value={alumno.correo}
className="form-control mb-3"
placeholder="Correo"
required
handleChange={handleChange}
/>
{mensaje && <div className="alert alert-success">{mensaje}</div>}
{error && <div className="alert alert-danger">{error}</div>}
<div className="form-group">
<button className="btn btn-primary w-100" disabled={cargando}>
{cargando ? 'Registrando...' : 'Registrarse'}
</button>
<NavLink to="/login" className="d-block mb-3">
Regresar al Login
</NavLink>
</div>
</form>
</div>
</div>
</div>
</div>
);
};
export default Registro;

View File

@ -0,0 +1,9 @@
import React from 'react'
const ValidacionAdm = () => {
return (
<div>ValidacionAdm</div>
)
}
export default ValidacionAdm

View File

@ -1,7 +0,0 @@
import React from "react";
function Ajustes() {
return <></>;
}
export default Ajustes;

View File

@ -1,12 +0,0 @@
import React, { useState } from 'react';
function Comprobante() {
return (
<>
</>
);
}
export default Comprobante;

View File

@ -1,40 +0,0 @@
import React from "react";
import "../styles/Encabezado.css";
import { NavLink } from "react-router-dom";
function Encabezado({ usuario, setUsario }) {
return (
<header className="headerOE">
<nav>
<ul>
<div className="grupo1">
<img id="logo" src="logo.png" alt="Imagen" />
<li className="tit">Universidad Filadelfia de México</li>
</div>
<div className="grupo2">
<li>
<NavLink to={`/home/${usuario.id}/${usuario.nombre}`}>
Ofeta Educativa
</NavLink>
</li>
<li>
<NavLink to={`/preinscripcion/${usuario.id}/${usuario.nombre}`}>
Preiscripcion
</NavLink>
</li>
{/*<li>
<NavLink to="/ruta3">Ajustes</NavLink>
</li>*/}
<li>
<NavLink to={`/licenciatura/${usuario.id}/${usuario.nombre}`}>
Licenciaturas
</NavLink>
</li>
</div>
</ul>
</nav>
</header>
);
}
export default Encabezado;

View File

@ -1,14 +0,0 @@
import React from 'react';
import Encabezado from './Encabezado';
import Registro from './Registro';
function General() {
return (
<div>
<Encabezado />
<Registro />
</div>
);
}
export default General;

View File

@ -1,414 +0,0 @@
import React, { useState } from "react";
import "../styles/Licenciatura.css";
import Encabezado from "./Encabezado.jsx";
import { useParams } from "react-router";
const Licenciatura = () => {
const { id } = useParams();
const { nombre } = useParams();
const [usuario, setUsuario] = useState({
id: id,
nombre: nombre,
});
const [area, setArea] = useState("Tecnica");
const [licenciatura, setLicenciatura] = useState("Mátematicas");
const licenciaturas = {
Tecnica: ["Mátematicas", "Física", "Arquitectura"],
Economica: ["Contabilidad", "Economía", "Administración"],
Humanidades: ["Historia", "Antropología", "Pedagogía"],
Biologicas: ["Biología", "Química", "Agronomía"],
};
const infoLicenciaturas = {
Mátematicas: {
campusDisponibles: (
<div id="campusDisponibles">
<span id="campus1">Xalapa</span>
<span>Orizaba</span>
</div>
),
descripcion:
"La Licenciatura en Matemáticas tiene como misión preservar, desarrollar y difundir la cultura matemática en beneficio de la sociedad. Se enfoca en la formación integral de profesionales altamente calificados en matemáticas y con sólidos principios éticos, capaces de integrarse en equipos interdisciplinarios para aplicar su conocimiento matemático en diversas áreas.",
conocimientos:
"Aritmética, álgebra, trogonometría, cálculo diferencial e integral, geometría euclidiana, geometría analítica.",
habilidades:
"Razonamiento abstracto, concentración, generalizar y particularizar.",
actitudes:
"Perseverancia, disciplina, interés científico y capacidad de trabajar en equipo.",
egreso:
"El egresado de la Licenciatura en Matemáticas adquiere una sólida formación profesional que le capacita para comunicar ideas matemáticas con claridad y precisión, enseñar matemáticas en diferentes niveles educativos, iniciar investigaciones en su campo, apoyar en el diseño y evaluación de cursos, aplicar conocimientos para resolver problemas en diversos campos como ciencia, tecnología, economía y sociedad, trabajar en equipos interdisciplinarios, interpretar fenómenos naturales de manera crítica y creativa, ser autodidacta, y mantener una actitud de superación constante y actualización.",
mision:
"La Facultad de Matemáticas se enfoca en desarrollar, difundir y preservar la cultura matemática, formando profesionales altamente académicos, con un enfoque humanista y comprometidos con la sustentabilidad.",
vision:
"La Facultad de Matemáticas se destaca con una planta docente que genera una producción científica influyente y certificada por organismos externos, lo que garantiza la calidad de sus programas educativos. Este entorno propicia el desarrollo integral de los estudiantes, promoviendo valores de sustentabilidad y respeto a los derechos humanos.",
objetivo:
"Formar profesionistas de las matemáticas que destaquen por su constancia, creatividad, responsabilidad, compromiso social y aprendizaje de por vida, y como consecuencia participen de manera multi e interdisciplinaria en la docencia, en la generación y aplicación del conocimiento matemático en beneficio de la sociedad.",
},
Física: {
campusDisponibles: (
<div id="campusDisponibles">
<span id="campus1">Xalapa</span>
<span>Orizaba</span>
</div>
),
descripcion:
"El profesional en Física tiene un amplio espectro de funciones, desde investigación hasta aplicaciones prácticas en industrias y servicios como PEMEX o CFE. El programa educativo consta de 422 créditos y ofrece dos áreas terminales: investigación, para quienes buscan posgrados, y aplicada, que prepara para docencia, análisis de datos o cómputo científico. El dominio del inglés es necesario para la acreditación.",
conocimientos:
"álgebra, trigonometría, cálculo diferencial e integral, geometría analítica, y cursos básicos de mecánica, electromagnetismo y termodinámica.",
habilidades:
"Habilidad para realizar abstracciones, el uso del lenguaje matemático y asimilar conceptos y conocimientos nuevos.",
actitudes:
"Disciplina, disposición para trabajar en equipo y para el trabajo autodidacta.",
egreso:
"El egresado de la Licenciatura en Física estará capacitado para trabajar en una amplia gama de sectores, incluyendo gobierno, educación, investigación, industria y empresas, tanto a nivel nacional como internacional. Además, estará preparado para realizar estudios de posgrado y resolver problemas utilizando modelos matemáticos y métodos computacionales. Sus habilidades le permitirán identificar y proponer soluciones a desafíos en su campo, tanto en entornos laborales como sociales a nivel local y global.",
mision:
"La Facultad de Física se enfoca en el desarrollo y difusión de las ciencias físicas mediante la formación de recursos humanos y la investigación de alta calidad. Los estudiantes reciben una formación integral que les proporciona habilidades en liderazgo, manejo de herramientas, programación, pensamiento abstracto, docencia y realización de experimentos rigurosos. Esto les permite ingresar al sector productivo o continuar con estudios de posgrado para involucrarse en investigación, innovación y desarrollo tecnológico en el ámbito educativo o industrial.",
vision:
"La Facultad de Física busca ser un referente en el sureste mexicano, reconocida por la excelencia académica de sus programas educativos científica y socialmente relevantes, la calidad de sus egresados, la enseñanza y la investigación básica y aplicada de vanguardia con un impacto significativo en la sociedad y la región.",
objetivo:
"El objetivo general de la facultad es formar profesionales en Física con competencias para abordar eficazmente los desafíos planteados por la ciencia, la academia, la sociedad, la industria y la empresa, a nivel local y global. Se promueve una actitud crítica, humanista y solidaria, junto con un compromiso ambiental, considerando la complejidad de la realidad. A través de la enseñanza, investigación, difusión cultural y servicios comunitarios, se busca contribuir a una sociedad más productiva, justa y segura, con responsabilidad social y transparencia.",
},
Arquitectura: {
campusDisponibles: (
<div id="campusDisponibles">
<span id="campus1">Xalapa</span>
<span>Orizaba</span>
</div>
),
descripcion:
"El Programa de Arquitectura, ofrece una educación superior de calidad reconocida nacional e internacionalmente, que brinda a los futuros arquitectos la adquisición de herramientas y actitudes necesarias para el desarrollo permanente del conocimiento de la disciplina, que le permitan como egresado dar solución a los problemas y demandas de la sociedad. Dicho plan posee un total de 505 créditos de los que el alumno debe acreditar 415 para obtener el grado, lo anterior en un tiempo estándar de 9 semestres.",
conocimientos:
"Razonamiento aritmético, algebraico, estadístico y probabilístico, geométrico y trigonométrico.",
habilidades:
"Expresión gráfica (dibujo técnico y mano alzada), básicos de cómputo, conocimientos sobre propiedades de los materiales, óptica.",
actitudes:
"Constancia, disciplina, actitud crítica, capacidad reflexiva, actitud proactiva para encontrar soluciones sostenibles, actitud de atención al cuerpo y cuidado de la salud, apreciación del arte, convivencia con inclusión e igualdad, colaboración y trabajo en equipo.",
egreso:
"El egresado en Arquitectura debe ser un individuo integral, consciente y comprometido con su entorno, cuyo trabajo profesional se fundamenta en una relación equilibrada entre sociedad y territorio. Debe ser competente e innovador, capaz de resolver de manera creativa los desafíos estéticos y técnicos de los espacios arquitectónicos y urbanos de forma sostenible. Para ello, debe utilizar tecnologías relevantes y generar y gestionar soluciones espaciales, sociales y ambientalmente responsables.",
mision:
"La Facultad de Arquitectura se centra en la docencia, investigación, vinculación y gestión, con énfasis en proyectos arquitectónicos, edificación, humanismo y urbanismo, orientados a abordar problemas contemporáneos. Su formación va desde licenciatura hasta doctorado, destacando la sostenibilidad, humanismo, tecnología e innovación, con un enfoque en la pertinencia, equidad y ética. Mantiene colaboraciones estrechas con sectores gubernamentales, sociales, productivos y educativos, promoviendo el desarrollo sustentable para una sociedad inclusiva, humana, justa y segura.",
vision:
"La Facultad de Arquitectura lidera la formación de arquitectos con programas educativos de alta calidad y enfoque en la mejora continua. Ofrece programas a nivel licenciatura, especialización, maestría y doctorado, contribuyendo al desarrollo sustentable mediante la investigación y vinculación con diversos sectores. Su objetivo es formar egresados capaces de abordar problemas sociales actuales, promoviendo la inclusión y la sustentabilidad en el diseño de espacios habitables.",
objetivo:
"El objetivo es formar arquitectos de manera integral, con habilidades técnicas y sociales para diseñar soluciones arquitectónicas sostenibles que aborden las necesidades del entorno cultural, social y económico a nivel global. Se promueve una actitud comprometida y responsable en la práctica profesional, así como la búsqueda continua de innovación tecnológica para mejorar la calidad de vida de los usuarios.",
},
Contabilidad: {
campusDisponibles: (
<div id="campusDisponibles">
<span id="campus1">Xalapa</span>
<span>Orizaba</span>
</div>
),
descripcion:
"La contabilidad es crucial para el desarrollo socioeconómico al promover la creación de empresas y atraer inversiones, asegurando un funcionamiento económico estable y estimulando la creación de empleo. Proporciona información financiera esencial para la toma de decisiones, satisfaciendo las necesidades de entidades transnacionales y participantes en los mercados globales.",
conocimientos:
"Conocimientos básicos de las ciencias económicas y administrativas.",
habilidades:
"Planeación y Organización de trabajo, creatividad, razonamiento lógico, razonamiento matemático, liderazgo, negociación, trabajo en equipo.",
actitudes:
"Adaptación al cambio, analizar y sintetizar información, aprender investigar actitudes, seguridad, superación, iniciativa emprendedora, respeto, compromiso, responsabilidad, honestidad, integridad",
egreso:
"El egresado de la Licenciatura en Contaduría será un profesional ético y responsable, con sólidos conocimientos en contabilidad financiera, administrativa, auditoría, finanzas y fiscalidad. Estará preparado para enfrentar los desafíos organizacionales en un contexto global y podrá actuar como agente de cambio y líder en su campo de estudio.",
mision:
"El programa de Licenciatura en Contaduría forma profesionales comprometidos, con habilidades críticas y creativas, adaptados a los avances tecnológicos y respetuosos de la biodiversidad y multiculturalidad. Su objetivo es impactar positivamente en entidades económicas y la sociedad a nivel local, regional, nacional e internacional, buscando la excelencia.",
vision:
"Ser un programa educativo de excelencia, innovador, flexible, abierto al cambio en la formación integral y en la generación y aplicación del conocimiento; reconocido como formador de profesionales líderes, con un alto compromiso social y respeto a la sustentabilidad.",
objetivo:
"La formación en Contaduría busca crear profesionales competentes en sistemas de información financiera, administrativa y fiscal, con valores éticos, humanísticos y espíritu emprendedor. Se enfoca en la generación de información útil para micro, pequeñas y medianas empresas, reduciendo el riesgo de fracaso y promoviendo el desarrollo sustentable, sin descuidar su contribución a grandes empresas y otros sectores.",
},
Economía: {
campusDisponibles: (
<div id="campusDisponibles">
<span id="campus1">Xalapa</span>
<span>Orizaba</span>
</div>
),
descripcion:
"El Programa Educativo de la Licenciatura en Economía está integrado por saberes axiológicos fundamentales y complementarios con los saberes teóricos y heurísticos que deben prevalecer en la formación y desempeño profesional.",
conocimientos: "Manejo apropiado del lenguaje oral y escrito.",
habilidades:
"Facilidad para generar y procesar información, manejo de herramientas técnicas y cuantitativas para diagnosticar y ofrecer soluciones a los problemas económicos.",
actitudes:
"Vocación para indagar las causas y evolución de la problemática económica de la sociedad.",
egreso:
"El programa se enfoca en comprender la realidad socioeconómica a nivel local, regional, nacional e internacional, así como las interacciones entre el Estado, la economía y la sociedad, mediante un enfoque teórico-metodológico. Se promueve la investigación y análisis socioeconómico para entender el impacto de las políticas públicas en aspectos como el empleo, la inflación y la distribución del ingreso, proponiendo soluciones para mejorar la gestión institucional y reducir la pobreza.",
mision:
"Formar economistas con un acervo teórico, metodológico e instrumental, que les permita insertarse de manera efectiva al mercado laboral, con aptitudes para analizar los problemas económicos y proponer soluciones en el ámbito local, regional y nacional, con sentido ético y compromiso con la equidad y la justicia social.",
vision:
"Ser un programa educativo líder en México, en la generación, transmisión y aplicación del conocimiento de la ciencia económica, con reconocimiento nacional e internacional, certificado en calidad por las instancias correspondientes.",
objetivo:
"Formar economistas habilitados para entender su entorno económico y social, capacitados para contribuir a la atención de necesidades de la realidad actual.",
},
Administración: {
campusDisponibles: (
<div id="campusDisponibles">
<span id="campus1">Xalapa</span>
<span>Orizaba</span>
</div>
),
descripcion:
"La administración integra conocimientos sobre la conducta humana y requiere habilidades multidisciplinarias para resolver problemas organizacionales. Los administradores deben dominar técnicas de diagnóstico y tomar decisiones eficaces para alcanzar objetivos. Por tanto, necesitan conocimientos en psicología, sociología, contabilidad, finanzas, informática, matemáticas, estadísticas, economía, derecho y ecología.",
conocimientos:
"Conocimientos relacionados a la cultura general, manejo de paquetería para oficina, manejo del idioma inglés que le permita establecer comunicación verbal y escrita.",
habilidades:
"Habilidades del pensamiento y lectura y redacción, razonamiento lógico y matemático.",
actitudes: "Disciplina y trabajo en equipo.",
egreso:
"El egresado de la Licenciatura en Administración contará con una formación sólida en administración, lo que le capacitará para abordar los desafíos organizacionales y ofrecer servicios de calidad. Será capaz de tomar decisiones eficientes y aplicar el proceso administrativo en diversas áreas funcionales, contribuyendo a la competitividad y responsabilidad social de las organizaciones en contextos multiculturales.",
mision:
"Formar profesionales en ciencias administrativas que puedan abordar las necesidades sociales a través de la aplicación y difusión de conocimientos. Se busca que estos profesionales resuelvan problemas en diversas áreas organizacionales, promoviendo la competitividad y contribuyendo al logro de objetivos institucionales con calidad, pertinencia, responsabilidad y compromiso social.",
vision:
"La entidad busca destacar a nivel nacional e internacional con estándares de excelencia académica y de gestión, centrándose en la formación integral de profesionales con relevancia social. Sus programas académicos integran la docencia, investigación, creación y difusión cultural, en consonancia con las necesidades de desarrollo sostenible a nivel local, regional y nacional.",
objetivo:
"El programa de administración forma profesionales para abordar desafíos sociales, promoviendo una cultura de calidad y el desarrollo económico y social. Se enfoca en desarrollar habilidades de liderazgo, análisis y toma de decisiones en condiciones inciertas. También fomenta la aplicación de conocimientos estratégicos para mantener la competitividad y comprender el comportamiento humano en las organizaciones.",
},
Historia: {
campusDisponibles: (
<div id="campusDisponibles">
<span id="campus1">Xalapa</span>
<span>Orizaba</span>
</div>
),
descripcion:
"Los docentes de la Facultad, mayormente con doctorado en Historia, fomentan el pensamiento histórico en los estudiantes y les proveen herramientas para comprender y difundir el conocimiento histórico. Promueven el análisis crítico de los procesos históricos y animan a los alumnos a reflexionar sobre su historia personal y social.",
conocimientos:
"Conocer y analizar los fenómenos socioeconómicos, políticos y culturales de México y el mundo en el pasado y el presente.",
habilidades:
"Razonamiento verbal y abstracto e interés por participar en la solución de los problemas socioeconómicos y políticos que afectan a la sociedad.",
actitudes:
"Aptitudes que le permitan adentrarse en la problemática disciplinar y le posibilite la inserción en el mercado laboral en las mejores condiciones posibles.",
egreso:
"El programa busca desarrollar habilidades de investigación en ciencias sociales, ofrecer soluciones basadas en análisis históricos a problemas contemporáneos, formar docentes, contribuir a la producción mediática, gestionar archivos y patrimonio histórico, y proporcionar asesoramiento a instituciones públicas y privadas sobre su contexto histórico y social.",
mision:
"El programa busca formar profesionales en Historia interesados en analizar críticamente los hechos y procesos históricos, ofreciendo explicaciones pertinentes que contribuyan al debate social. Se promueve el estudio crítico, la reflexión y la participación social para comprender el pasado y su relevancia en el presente.",
vision:
"La Facultad de Historia se compromete a ser una Institución de Educación Superior que contribuya a la formación de un espacio de reflexión y producción del conocimiento histórico. Su equipo de profesores integrales y responsables busca fortalecer una identidad disciplinar y universitaria socialmente responsable, crítica, incluyente e integradora.",
objetivo:
"La Facultad de Historia tiene como objetivo formar académicos y profesionales capaces de contribuir al conocimiento y desarrollo de la historia regional y nacional, así como a la reflexión sobre la realidad sociocultural del país. Busca que sus egresados sean competentes, comprometidos con el aprendizaje continuo y responsables socialmente, para abordar los problemas sociales y contribuir al desarrollo del estado y del país.",
},
Antropología: {
campusDisponibles: (
<div id="campusDisponibles">
<span id="campus1">Xalapa</span>
<span>Orizaba</span>
</div>
),
descripcion:
"La Carrera de Antropología Histórica tiene el propósito de proporcionar una formación Profesionales sobre el patrimonio intangible como la memoria colectiva y la vida cotidiana y sus relaciones con el patrimonio cultural tangible.",
conocimientos:
"Conocimientos en el área de humanidades o artes y conocimiento general de los problemas sociales mas recurrentes en el mundo y en el país.",
habilidades:
"Habilidades para los trabajadores prácticos de tipo instrumental.",
actitudes:
"Dominio de la comunicación oral y escrita para la lectura, comprensión y exposición de textos en lengua castellana.",
egreso:
"El perfil de egreso se define por la habilidad de diseñar y participar en proyectos interdisciplinarios de investigación y promoción cultural, con un énfasis en el patrimonio cultural. El egresado deberá poseer competencias interpretativas para su inserción profesional y social, y fomentar valores de respeto y tolerancia para el trabajo comunitario.",
mision:
"El programa forma profesionales con pensamiento crítico y ético para abordar problemáticas socio-culturales, promoviendo el desarrollo sostenible y el respeto a la diversidad cultural. Se integran a proyectos de investigación y vinculación para adquirir habilidades en docencia, investigación y gestión en campos antropológicos.",
vision:
"La Facultad de Antropología destaca a nivel nacional e internacional por su calidad educativa y su enfoque en la investigación y la vinculación social. Sus egresados tienen oportunidades para trabajar en diversos ámbitos o continuar sus estudios en programas de posgrado.",
objetivo:
"El programa promueve la valoración del patrimonio histórico-cultural mediante el análisis de entornos sociales y culturales, el desarrollo de habilidades comunicativas para el trabajo comunitario y el dominio de técnicas de conservación y difusión del patrimonio.",
},
Pedagogía: {
campusDisponibles: (
<div id="campusDisponibles">
<span id="campus1">Xalapa</span>
<span>Orizaba</span>
</div>
),
descripcion:
"Otorga prioridad a la formación integral del estudiante universitario, convencida de que a través de sus egresados es como podrá 113 contribuir eficazmente a la transformación de la sociedad. Así su empeño se traduce en la realización plena de la persona humana, mediante la atención cuidadosa de todas sus dimensiones para orientar sus intenciones y tareas hacia el desarrollo de lo intelectual, humano, social y profesional.",
conocimientos:
"Conocimientos básicos del área social y humanista, mostrando interés hacia los problemas educativos y del entorno social.",
habilidades:
"Habilidad para las relaciones interpersonales, manejo básico de herramientas tecnológicas que le permitan acceder anuevas formas de aprendizaje y comunicación.",
actitudes:
"Uso de elementos lingüísticos que le permitan comunicarse de manera oral y escrita.",
egreso:
"El estudiante investiga y utiliza información de diversas fuentes, utilizando tecnología de manera autónoma y respetando la propiedad intelectual. Además, crea entornos de aprendizaje basados en principios pedagógicos mediante diseño, planificación, implementación y evaluación didáctica.",
mision:
"La formación de profesionales en educación se basa en cultivar valores humanistas y desarrollar habilidades críticas y creativas para promover el cambio a través de proyectos pedagógicos en la sociedad.",
vision:
"Fomentar la movilidad estudiantil nacional e internacional, integrando saberes multidisciplinarios y valores adquiridos durante la formación, para influir positivamente en el entorno social y mejorar la calidad de vida mediante innovación, tecnología, proyectos sustentables y colaboración comunitaria, con ética y responsabilidad social.",
objetivo:
"El objetivo es formar educadores con una perspectiva integral, crítica, reflexiva, colaborativa e innovadora, capaces de comprender, intervenir y valorar los procesos educativos en todas sus dimensiones, con el fin de promover el desarrollo continuo del país.",
},
Biología: {
campusDisponibles: (
<div id="campusDisponibles">
<span id="campus1">Xalapa</span>
<span>Orizaba</span>
</div>
),
descripcion:
"El programa educa para enfrentar desafíos en conservación de biodiversidad, seguridad alimentaria, salud, gestión de residuos y energía renovable.",
conocimientos:
"Ciencias naturales y exactas así como de antropología, sociología y ética.",
habilidades:
"Capacidad de análisis y de síntesis, capacidad de observación y creatividad, agudeza perceptiva y destreza manual",
actitudes:
"Disciplina para el estudio, disponibilidad para el trabajo en equipo en actividades propias de la carrera, entre ellas, prácticas de laboratorio y de campo.",
egreso:
"Administra programas de conservación con mínimo impacto, aplica biología para salud y ambiente, propone soluciones bajo normativa ambiental.",
mision:
"Formar profesionales en el conocimiento, conservación y uso de la biodiversidad para coadyuvar al desarrollo sostenible a través de la aplicación de competencias integrales.",
vision:
"Promover la difusión del conocimiento sobre el manejo sostenible de la biodiversidad, especialmente en Veracruz, mediante innovación educativa, tecnologías de información, investigación y pensamiento complejo para satisfacer las necesidades de formación y actualización de los egresados.",
objetivo:
"Formar profesionales en biología con compromiso social y capacidad para abordar problemas ambientales como contaminación, pérdida de biodiversidad y cambio climático.",
},
Química: {
campusDisponibles: (
<div id="campusDisponibles">
<span id="campus1">Xalapa</span>
<span>Orizaba</span>
</div>
),
descripcion:
"El programa de ingeniería química está reconocido y acreditado por formar profesionales competentes y responsables, tanto en licenciatura como en posgrado. Se enfoca en valores de colaboración y éxito académico del estudiante, según su Modelo Educativo Integral y Flexible.",
conocimientos:
"Ciencias físicas, matemáticas y químicas, razonamiento para el entendimiento de las transformaciones fisicoquímicas.",
habilidades:
"Habilidad para el estudio de técnicas propias de la ingeniería, tales como, estadística, computación, ingeniería económica, comunicación gráfica, comprensión y redacción",
actitudes: "Matemática y razonamiento abstracto, trabajo en equipo",
egreso:
"La Universidad prepara ingenieros químicos con sólidos conocimientos y habilidades para diagnosticar, controlar procesos químicos, diseñar instalaciones industriales, gestionar tecnologías ambientalmente responsables y desarrollar soluciones innovadoras para desafíos sociales y económicos.",
mision:
"La universidad forma líderes en Ingeniería Química, Ambiental y de Alimentos, y programas relacionados, mediante la enseñanza, investigación, conexión con la comunidad y calidad ética. Opera en instalaciones adecuadas, con responsabilidad social, transparencia y compromiso con el desarrollo sostenible, manteniendo su prestigio institucional.",
vision:
"La institución es reconocida por su calidad en la formación de profesionales en ingeniería química, ambiental y de alimentos, a nivel nacional e internacional, con responsabilidad social, innovación y enfoque en el desarrollo sustentable.",
objetivo:
"Formar profesionales integrales en Ingeniería Química, comprometidos con el aprendizaje continuo y la responsabilidad social, capaces de contribuir con soluciones innovadoras a problemas sociales en su campo de competencia.",
},
Agronomía: {
campusDisponibles: (
<div id="campusDisponibles">
<span id="campus1">Xalapa</span>
<span>Orizaba</span>
</div>
),
descripcion:
"El programa de Ingeniero Agrónomo busca abordar los desafíos de la producción y productividad agroindustrial, fomentando el conocimiento teórico y tecnológico. Su objetivo es formar profesionales con una visión integral y crítica, capaces de interpretar y transformar la realidad agropecuaria hacia una agricultura sustentable y productiva, en beneficio de los productores y los recursos naturales.",
conocimientos:
"Capacidad de razonamiento abstracto, numérico, espacial y verbal",
habilidades:
"Lectura, análisis y redacción de documentos. Dominio en la utilización de herramientas tecnológicas",
actitudes:
"Vocación, iniciativa propia, alto sentido de organización y adaptabilidad a diferentes medios sociales.",
egreso:
"El ingeniero agrónomo egresado será competente en abordar la problemática de producción, interpretar y divulgar conocimientos agropecuarios, evaluar el uso de recursos naturales, aplicar técnicas para mejorar la producción de especies vegetales y animales, practicar una agricultura sostenible, preservar la identidad cultural y promover el desarrollo comunitario en el sector rural.",
mision:
"Formar profesionales con sólidos conocimientos científicos, técnicos y humanísticos, comprometidos con el desarrollo sustentable de los recursos naturales del país y capacitados para analizar y resolver los desafíos en la producción agropecuaria y forestal a través de la generación y aplicación del conocimiento.",
vision:
"La meta es ser una institución líder, reconocida por su excelencia académica y comprometida con el desarrollo sostenible del país. A través de sus funciones esenciales, busca ser un referente clave para la formulación de políticas agropecuarias, forestales y educativas tanto en el ámbito público como en el privado.",
objetivo:
"Formar ingenieros agrónomos conscientes y responsables para abordar los desafíos de la producción y productividad agroindustrial en México. Desarrollar habilidades tecnológicas y promover valores éticos y sociales, comprometidos con el sector rural y la sociedad en general.",
},
};
const handleAreaChange = (event) => {
setArea(event.target.value);
setLicenciatura(licenciaturas[event.target.value][0]);
};
const handleLicenciaturaChange = (event) => {
setLicenciatura(event.target.value);
};
return (
<>
<div id="bodyLicenciatura">
<Encabezado usuario={usuario} setUsuario={setUsuario} />
<h1 id="h1Programas">Programas Educativos</h1>
<div id="opciones">
<label id="labelSelect">Seleccionar área:</label>
<select id="area" name="area" onChange={handleAreaChange}>
<option value="Tecnica">Técnica</option>
<option value="Economica">Economica-Administrativa</option>
<option value="Humanidades">Humanidades</option>
<option value="Biologicas">Biológicas y Agropecuarias</option>
</select>
<label id="labelSelect">Seleccionar carrera:</label>
<select
id="licenciaturas"
name="licenciaturas"
onChange={handleLicenciaturaChange}
>
{licenciaturas[area].map((licenciatura) => (
<option key={licenciatura} value={licenciatura}>
{licenciatura}
</option>
))}
</select>
</div>
<div id="informacion">
<p id="grupoP">
<span id="subtitulo">
Campus:
{infoLicenciaturas[licenciatura].campusDisponibles}
</span>
</p>
<p id="grupoP">
<span id="subtitulo">Descripción:</span>
<p id="subtituloTexto">
{infoLicenciaturas[licenciatura].descripcion}
</p>
</p>
<p id="grupoP">
<span id="subtitulo">
Perfil de ingreso:
<li id="subtituloIngreso">
Conocimientos:{" "}
<span id="subtituloTexto">
{" "}
{infoLicenciaturas[licenciatura].conocimientos}
</span>
</li>
<li id="subtituloIngreso">
Habilidades:{" "}
<span id="subtituloTexto">
{infoLicenciaturas[licenciatura].habilidades}
</span>
</li>
<li id="subtituloIngreso">
Actitudes:{" "}
<span id="subtituloTexto">
{infoLicenciaturas[licenciatura].actitudes}
</span>
</li>
</span>
</p>
<p id="grupoP">
<span id="subtitulo">Perfil de egreso:</span>
<p id="subtituloTexto">{infoLicenciaturas[licenciatura].egreso}</p>
</p>
<p id="grupoP">
<span id="subtitulo">Misión:</span>
<p id="subtituloTexto">{infoLicenciaturas[licenciatura].mision}</p>
</p>
<p id="grupoP">
<span id="subtitulo">Visión:</span>
<p id="subtituloTexto">{infoLicenciaturas[licenciatura].vision}</p>
</p>
<p id="grupoP">
<span id="subtitulo">Objetivo:</span>
<p id="subtituloTexto">
{infoLicenciaturas[licenciatura].objetivo}
</p>
</p>
</div>
<input
type="submit"
className="btnElegirCarrera"
value="Elegir Licenciatura"
/>
</div>
</>
);
};
export default Licenciatura;

View File

@ -1,69 +0,0 @@
import { Outlet } from "react-router-dom";
import "../styles/OfertaEducativa.css";
import Encabezado from "./Encabezado";
import { useParams } from "react-router-dom";
import { useState } from "react";
function OfertaEducativa() {
const { id } = useParams();
const { nombre } = useParams();
const [usuario, setUsuario] = useState({
id: id,
nombre: nombre,
});
console.log(usuario);
return (
<>
<Encabezado usuario={usuario} setUsuario={setUsuario} />
<h1 className="tituloOE">Oferta Educativa</h1>
<div className="container">
<div className="area" id="areaTecnica">
Área Técnica
<div className="listaLic">
<ul>
<li>Licenciatura en Matemáticas</li>
<li>Licenciatura en Física</li>
<li>Licenciatura en Arquitectura</li>
</ul>
</div>
</div>
<div className="area">
Área Económico-Administrativo
<div className="listaLic">
<ul>
<li>Licenciatura en Contabilidad</li>
<li>Licenciatura en Economía</li>
<li>Licenciatura en Administración</li>
</ul>
</div>
</div>
<div className="area">
Área de Humanidades
<div className="listaLic">
<ul>
<li>Licenciatura en historia</li>
<li>Licenciatura en Antropología</li>
<li>Licenciatura en Pedagogía</li>
</ul>
</div>
</div>
<div className="area" id="areaBiologica">
Área de Biológicas y Agropecuarias
<div className="listaLic">
<ul>
<li>Licenciatura en Biología</li>
<li>Ingeniería Química</li>
<li>Ingeniero Agrónomo</li>
</ul>
</div>
</div>
</div>
<footer className="footerOE">
© 2024 Universidad Filadelfia. Todos los derechos reservados.
</footer>
</>
);
}
export default OfertaEducativa;

View File

@ -1,45 +0,0 @@
import SubirPDF from "./SubirPDF";
import React, { useState } from "react";
import "../styles/Preinscripcion.css";
import Encabezado from "./Encabezado";
import { useParams } from "react-router-dom";
const App = () => {
const { id } = useParams();
const { nombre } = useParams();
const [usuario, setUsuario] = useState({
id: id,
nombre: nombre,
});
return (
<>
<div id="bodyPre">
<Encabezado usuario={usuario} setUsuario={setUsuario} />
<h1 id="h1Pre">Proceso de Preinscripción</h1>
<p id="p1Pre">¡Bienvenido a esta gran comunidad estudiantil!</p>
<p id="p2Pre">
Para dar seguimiento al proceso de preinscripción es necesario que
subas los siguientes documentos en formato pdf que se te solicitan.
</p>
<label id="labelPre">Certificado de bachillerato</label>
<div>
<SubirPDF />
</div>
<label id="labelPre">Acta de nacimiento certificada</label>
<div>
<SubirPDF />
</div>
<label id="labelPre">Clave Única de Registro de Población (CURP)</label>
<div>
<SubirPDF />
</div>
<footer className="footerOE">
© 2024 Universidad Filadelfia. Todos los derechos reservados.
</footer>
</div>
</>
);
};
export default App;

View File

@ -1,91 +0,0 @@
import React, {useState} from 'react';
import axios from 'axios'
import '../styles/Registro.css'; // Estilo para el formulario
function Registro(){
const [Cargando, setCargando] = useState(false);
const [alumno, setAlumno] = useState({
nombre: "",
apellido: "",
nacionalidad: "",
correo: "",
});
const limpiar = () => {
setAlumno((prevAlumno) => ({
...prevAlumno,
nombre: "",
apellido: "",
nacionalidad: "",
correo: "",
}));
};
const hacerPeticion = async () => {
try {
const res = await axios.post("http://localhost:4567/agregarAlumno", alumno);
return res.data;
} catch (error) {
throw error;
}
};
const procesarFormulario = async (e) => {
e.preventDefault();
setCargando(true);
try {
const res = await hacerPeticion();
setCargando(false);
if (res.verificacion) {
limpiar();
alert("Producto Registrado Correctamente" + "Contraseña: " + res.contrasena +" Matricula: " +res.matricula);
} else {
alert("Error Producto No registrado");
}
} catch (error) {
console.log(error);
setCargando(false);
}finally{
}
};
const cambiosAlumno = (e) => {
const { name, value } = e.target;
setAlumno({
...alumno,
[name]: value,
});
};
return (
<div className="formulario">
<h2>Registro</h2>
<div><h4>Datos Personales</h4></div>
<form className='form'>
<div className="campo">
<label htmlFor="nombre">Nombre:</label>
<input type="text" id="nombre" onChange={cambiosAlumno} name='nombre' value={alumno.nombre} />
</div>
<div className="campo">
<label htmlFor="apellidoPaterno">Apellidos:</label>
<input type="text" id="apellidoPaterno" onChange={cambiosAlumno} name='apellido' value={alumno.apellido} />
</div>
<div className="campo">
<label htmlFor="nacionalidad">Nacionalidad:</label>
<input type="text" id="nacionalidad" onChange={cambiosAlumno} name="nacionalidad" value={alumno.nacionalidad} />
</div>
<div className="campo">
<label htmlFor="correo">Correo:</label>
<input type="email" id="correo" onChange={cambiosAlumno} name="correo" value={alumno.correo} />
</div>
</form>
<div>
<button type="submit" className='boton' disabled={Cargando} onClick={procesarFormulario}>Registrarse</button>
</div>
</div>
);
}
export default Registro;

View File

@ -1,36 +0,0 @@
import React, { useCallback } from 'react';
import { useDropzone } from 'react-dropzone';
import axios from 'axios';
import './SubirPDF'
const SubirPDF = () => {
const onDrop = useCallback(acceptedFiles => {
const file = acceptedFiles[0];
const formData = new FormData();
formData.append('pdfFile', file);
axios.post('http://localhost:${port}', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
.then(response => {
// Manejar la respuesta del servidor
console.log(response.data);
})
.catch(error => {
// Manejar errores
console.error('Error al subir el archivo:', error);
});
}, []);
const { getRootProps, getInputProps } = useDropzone({ onDrop });
return (
<div {...getRootProps()}>
<input id='inputPdf' type='submit' value='Subir pdf' />
</div>
);
};
export default SubirPDF;

View File

@ -1,152 +0,0 @@
import React, { useState } from "react";
import "../styles/login.css";
import { NavLink, useNavigate } from "react-router-dom";
import axios from "axios";
function Login() {
const [cargando, setCargando] = useState(false);
const [datosUsuario, setDatosUsuario] = useState({
matricula: "",
contrasena: "",
});
const [usuario, setUsuario] = useState({
id: 0,
nombre: "",
contrasena: "",
correo: "",
});
const navigate = useNavigate(); // Usa el hook useNavigate para la navegación programática
const limpiar = () => {
setDatosUsuario({
matricula: "",
contrasena: "",
});
};
const hacerPeticion = async () => {
try {
const res = await axios.post(
"http://localhost:4567/usuarioValido",
datosUsuario
);
return res.data;
} catch (error) {
throw error;
}
};
const obtenerUsuario = async () => {
try {
const res = await axios.get(
`http://localhost:4567/alumnoIniciado?matricula=${datosUsuario.matricula}&contrasena=${datosUsuario.contrasena}`
);
return res.data;
} catch (error) {
throw error;
}
};
const procesarFormulario = async (e) => {
e.preventDefault();
setCargando(true);
try {
const res = await hacerPeticion();
setCargando(false);
if (res.existe) {
const aux = await obtenerUsuario();
setUsuario({
id: aux.id,
nombre: aux.nombre,
contrasena: aux.contrasena,
correo: aux.correo,
});
alert("¡Bienvenido! " + aux.nombre);
limpiar();
// Navega a la página objetivo después del inicio de sesión exitoso, pasando parámetros si es necesario
navigate(`/home/${aux.id}/${aux.nombre}`);
} else {
alert("Usuario No encontrado");
}
} catch (error) {
console.log(error);
setCargando(false);
}
};
const cambiosUsuario = (e) => {
const { name, value } = e.target;
setDatosUsuario({
...datosUsuario,
[name]: value,
});
};
return (
<>
<body>
<header className="encabezado">
La universidad que esta para ti, ¡UNETE!
</header>
<div className="gridContainer">
<div className="imgColum">
<img src="imagen.jpg" alt="Imagen" />
</div>
<div className="loginColum">
<h1 className="bienvenida">Bienvenido</h1>
<form className="Formulario">
<input
type="text"
id="usuario"
onChange={cambiosUsuario}
value={datosUsuario.matricula}
name="matricula"
/>
<label>Contraseña:</label>
<input
type="password"
id="password"
onChange={cambiosUsuario}
value={datosUsuario.contrasena}
name="contrasena"
/>
<NavLink to="/registro">¿Aún no te has registrado?</NavLink>
<button
type="submit"
className="button"
disabled={cargando}
onClick={procesarFormulario}
>
Iniciar sesión
</button>
</form>
</div>
</div>
<footer>
<div id="footerId">
<a id="pie" href="">
uniregistro@outlook.com
</a>
</div>
<div id="footerId">
<a id="pie" href="">
uniBandeVer
</a>
</div>
<div id="footerId">
<a id="pie" href="">
4582349234
</a>
</div>
</footer>
</body>
</>
);
}
export default Login;

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,54 @@
import Swal from "sweetalert2";
import storage from "./Storage/storage";
import axios from "axios";
export const show_alerta = (msj, icon) => {
Swal.fire({ title: msj, icon: icon, buttonsStyling: true });
};
export const sendRequest = async (metodo, params, url, redir = '', token = true) => {
if (token) {
const authToken = storage.get('authToken');
axios.defaults.headers.common['Authorization'] = 'Bearer ' + authToken;
}
let res;
try {
const response = await axios({ method: metodo, url: url, data: params });
res = response.data;
if (metodo !== 'GET') {
show_alerta(response.data.message, 'success');
}
if (redir !== '') {
setTimeout(() => {
window.location.href = redir;
}, 2000);
}
} catch (errors) {
let desc = '';
if (errors.response && errors.response.data && errors.response.data.errors) {
errors.response.data.errors.forEach((e) => {
desc = desc + ' ' + e;
});
}
res = errors.response ? errors.response.data : null;
console.error(desc);
}
return res;
};
export const confirmation = (name, url, redir) => {
const alert = Swal.mixin({ buttonsStyling: true });
alert.fire({
title: '¿Seguro de eliminar ' + name + '?',
icon: 'question',
showCancelButton: true,
confirmButtonText: '<i class="fa-solid fa-check"></i> Sí, eliminar',
cancelButtonText: '<i class="fa-solid fa-ban"></i> Cancelar',
}).then((result) => {
if (result.isConfirmed) {
sendRequest('DELETE', {}, url, redir);
}
});
};
export default show_alerta;

View File

@ -1,26 +1,21 @@
import React from "react";
import { createRoot } from "react-dom/client";
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
import Login from "./assets/login.jsx";
import Registro from "./assets/Registro.jsx";
import OfertaEducativa from "./assets/OfertaEducativa.jsx";
import ReactDOM from "react-dom/client";
import Licenciatura from "./assets/Licenciatura.jsx";
import Preinscripcion from "./assets/Preinscripcion.jsx";
createRoot(document.getElementById("root")).render(
import App from "./App.jsx";
import "@fortawesome/fontawesome-free/css/all.min.css";
import "bootstrap/dist/css/bootstrap.min.css";
import "bootstrap/dist/js/bootstrap.bundle.js";
import axios from "axios";
window.axios = axios;
window.axios.defaults.baseURL = "http://localhost:4567";
window.axios.defaults.headers.common["Accept"] = "application/json";
window.axios.defaults.headers.common["Content-Type"] = "application/json";
window.axios.defaults.headers.common["X-Requested-with"] = "XMLHttpRequest";
window.axios.defaults.withCredentials = true;
ReactDOM.createRoot(document.getElementById("root")).render(
<React.StrictMode>
<Router>
<Routes>
<Route path="/" element={<Login />} />
<Route path="/registro" element={<Registro />} />
<Route path="/home/:id/:nombre" element={<OfertaEducativa />} />
<Route path="/licenciatura/:id/:nombre" element={<Licenciatura />} />
<Route
path="/preinscripcion/:id/:nombre"
element={<Preinscripcion />}
/>
<Route path="/ajustes/:id/:nombre" element={<OfertaEducativa />} />
</Routes>
</Router>
<App />
</React.StrictMode>
);

View File

@ -1,41 +0,0 @@
header.headerOE{
display: inline;
width: 100%;
height: 18%;
text-align: center;
}
div.grupo1{
background-color: #444941;
}
#logo{
width: 70px;
height:min-content;
}
div.grupo2{
background-color: #444941;
margin-top: 20px;
margin-left: 30px;
padding: 15px;
text-align: left;
font-size: x-large;
}
li.tit{
background-color: #444941;
color: #ffffff;
font-size: xx-large;
font-weight: bold;
}
nav ul {
list-style-type: none;
background-color:#444941;
}
nav ul li {
display: inline;
margin-right: 80px;
}
li a{
background-color: #D5EEBB;
color:rgb(172, 104, 9);
}

View File

@ -1,65 +0,0 @@
#bodyLicenciatura{
margin-top: 11%;
}
#h1Programas{
margin-top: 0%;
padding-left: 0%;
text-align: center;
}
#opciones{
margin-left: 18%;
margin-top: 2%;
}
#informacion{
margin-left: 5%;
margin-right: 5%;
}
#labelSelect{
margin-right: 10px;
font-size: x-large;
color: #55574f;
font-weight: bold;
}
#area{
margin-right: 8%;
font-size: larger;
text-transform: capitalize;
}
#licenciaturas{
font-size: larger;
text-transform: capitalize;
}
#subtitulo{
font-size: x-large;
font-weight: bold;
}
#campusDisponibles{
font-weight: 100;
}
#campus1{
margin-right: 3%;
}
#grupoP{
margin-bottom: 2%;
}
#subtituloIngreso{
font-size: 20px;
}
#subtituloTexto{
font-size: large;
font-weight: 100;
}
.btnElegirCarrera{
display: flex;
justify-content: center;
font-family: Georgia, 'Times New Roman', Times, serif;
font-weight: bold;
font-size: x-large;
color: #D5EEBB;
background-color: #474941;
}
.btnElegirCarrera:hover{
background-color: #55574f;
}

View File

@ -1,43 +0,0 @@
h1.tituloOE{
color: #5F7A61;
text-transform: capitalize;
padding-inline:initial;
margin-top: 13%;
margin-bottom: 4%;
text-align: center;
font-size: 50px;
}
.container{
display: grid;
grid-template-columns: auto auto auto auto;
gap: 10%;
justify-content: center; /* Centra horizontalmente el contenedor */
align-items: center; /* Ajusta el ancho del contenedor según sea necesario */
}
div.area{
color: #b26705;
border: 2px solid rgba(36, 15, 103, 0.922);
font-size: x-large;
}
#areaTecnica{
margin-left: 10%;
}
#areaBiologica{
margin-right: 10%;
}
div.listaLic{
color: #474941;
}
.footerOE{
font-size:large;
padding: 20px 0; /* Espaciado interno del footer */
position:fixed; /* Hace que el footer sea fijo en la parte inferior */
width: 100%;
font-weight: bold;
}
footer.footerOE{
color: #fff;
}

View File

@ -1,18 +0,0 @@
#bodyPre{
width: 100%;
margin: 0 auto;
}
#h1Pre{
margin-top: 11%;
margin-left: 10%;
}
#p1Pre{
font-size: x-large;
}
#p2Pre{
font-size: x-large;
margin-top: 2%;
}
#labelPre{
text-transform: capitalize;
}

View File

@ -1,102 +0,0 @@
.bodyRegistro {
background-color: #e4e4df;
width: 100%;
margin: 0 auto;
}
h1.titRegistro {
text-align: center;
text-transform: capitalize;
font-size: 40px;
margin-top: 11%;
font-style: Jockey One;
color: #000000;
padding: 10px;
}
.bodyRegistro h4{
font-size: 20px;
margin-top: 1.5%;
font-style: Jockey One;
color: #000000;
padding: 10px;
}
.formRegistro {
margin-top: 20px;
padding: 10px;
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: space-evenly; /* Permite que los elementos se envuelvan si no caben en una sola línea */
}
.campo {
width: 28%; /* Ancho de cada campo (menos el espacio entre ellos) */
margin-left: 0%;
margin-right: 0%;
margin-top: 1.5%;
display: flex;
flex-direction: column; /* Cambiar la dirección del flujo a vertical */
overflow: hidden; /* Oculta cualquier contenido que se desborde del área del input */
}
.campo label {
padding-left: 2%;
font-size: 25px;
}
h2{
padding: 30%;
}
.h4{
padding: 30%;
align-items: center;
}
.campo input[type="text"],
.campo input[type="number"],
.campo select,
.campo input[type="password"],
.campo input[type="date"],
.campo input[type="email"] {
background-color: #D5EEBB;
width: 100%; /* Ocupar todo el ancho disponible */
padding: 5px;
border-radius: 5px;
border: 1px solid #ccc;
box-sizing: border-box;
font-size: 16px;
transition: border-color 0.3s ease;
margin-top: 0px; /* Espacio entre el label y el input */
}
.btnenviar{
text-align: center; /* Centra horizontalmente el contenido */
}
.boton {
text-align: center;
background-color: #474941;
color: #D5EEBB;
border: none;
font-size: larger;
padding: 15px 30px;
cursor: pointer;
border-radius: 20px;
margin-top: 1%;
font-weight: bold; /* Hace que el texto esté en negrita */
}
.boton:hover {
background-color: #55574f;
}
header{
text-align: center;
}
body{
margin: 0;
}

View File

@ -1,5 +0,0 @@
#inputPdf {
border: 1% solid #000;
padding: '20px';
text-align: center;
}

View File

@ -1,139 +0,0 @@
*{
background-color:#d8d8d8;
margin: auto;
box-sizing: border-box;
flex-direction: column;
}
.gridContainer {
display: grid;
grid-template-columns: 1fr 1fr; /* Dos columnas de ancho igual */
gap: 50px; /* Espacio entre las columnas */
}
.imgColum {
margin-left: 15%;
margin-top: 17%;
}
.Formulario {
font-size: 20px;
width:400px;
height: 315px;
padding: 25px;
border-radius: 5%;
}
input[type="text"], input[type="password"]{
background:#D5EEBB;
/* align-items: center; */
border-radius: 5px;
display: block;
height: 40px;
padding-left: 10px;
padding-right: 10px;
margin-left: auto;
margin-right: auto;
font-size: large;
}
header {
color: #ffffff;
background-color: #444941;
padding: 20px 0; /* Espaciado interno del encabezado */
position: fixed; /* Hace que el encabezado sea fijo */
width: 100%; /* Ancho completo del encabezado */
top: 0; /* Lo posiciona en la parte superior */
z-index: 1000; /* Asegura que esté por encima del contenido */
font-weight:bold;
font-size: x-large;
text-align: center;
margin-top: 0;
}
.encabezado{
text-align: center;
}
font{
background-color: transparent;
}
form{
margin-left: auto;
}
h1{
color: #5F7A61;
font-family: Jockey One;
text-transform: capitalize;
margin-top: 30%;
padding-left: 30%;
}
#bienvenida{
margin-top: 20%;
font-size: 40px;
}
.button{
background-color: #474941;
color:#D5EEBB;
margin-top: 30px;
margin-left: 24%;
stroke: none;
font-family: Georgia, 'Times New Roman', Times, serif;
font-weight: bold;
text-align: center;
padding: 5px 5px 5px 5px;
height: fit-content;
font-size: x-large;
}
.button:hover{
background-color: #55574f;
}
label{
color: #5F7A61;
font-family: JejuMyeongjo;
font-size: 40px;
font-weight: 400;
text-align: left;
}
#labelUsuario{
margin-left: 30%;
}
#labelContraseña{
margin-left: 24%;
}
footer{
background-color: #444941;
padding: 20px 0; /* Espaciado interno del footer */
position: absolute; /* Hace que el footer sea fijo en la parte inferior */
width: 100%; /* Ancho completo del footer */
bottom: 0; /* Lo posiciona en la parte inferior */
display: flex;
justify-content: center;
align-items: center;
flex-direction: row;
}
.footerId{
margin-left: 15px;
margin-right: 15px;
text-align: center;
font-size: large;
background-color: transparent;
font-weight: bold;
}
div a{
background-color: #444941;
color:#D5EEBB;
font-weight: bold;
}
#pie{
color: #ffffff;
}