Vous êtes sur la page 1sur 23

PONTIFICIA UNIVERSIDAD CATÓLICA DE

VALPARAÍSO
FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA INFORMÁTICA

Proyecto

Schedule Shock Management Tool (SSMT)

Diego Aguirre García


Christopher Vargas Leyton
Nicolás Bobadilla Sánchez

Avance A abril 2019


Índice

1. Introducción……………………………………………………………………………….4
2. Parte I : Dominio del problema…………………………………………………………..5
3. ParteII: Análisis………………………………………………………………………..….6
3.1 Requerimientos generales……………………………………………………….........6
3.3 Clases creadas……………………………………………………………………..6
3.2.1 Clase alumno……………………………………………………………...……..6
3.2.2 Clase ListaAlumno……………………………………………………………....7
3.2.3 Clase Profesor…………………………………………………………………...8
3.2.4 Clase ListaProfesor……………………………………………………………..9
3.2.5 Clase Ramo……………………………………………………………………..10
3.2.6 Clase ListaRamo……………………………………………………………….11
3.2.7 Clase Bloque……………………………………………………………………12
3.2.8 Clase Dia………………………………………………………………………..12
3.2.9 Clase Horario…………………………………………………………………..13
3.2.10 Clase SalaClases………………………………………………………………13
3.2.11 Clase ConexionBd……………………………………………………………14
3.2.12 Clase MetodosSql………………………………………………………..……14

4. Parte III :Diseño…………………………………………………………………………16


4.1. Características Generales…………………………………………………….….…16
4.1.1. Desarrollo en java…………………………………………………………16
4.2. Implementación de la base de datos……………………………………………..…17
4.3. Diseño de la interfaz gráfica…………………………………………………..……18
4.3.1. Usuarios……………………………………………………………………19
4.3.1.1. Estudiantes………………………………………………….…….…19
4.3.1.2. Profesores……………………………………………………………20
4.3.1.3. Administrador………………………………………………………21
5. Planificación………………………………………………………………….…………..22
6. Conclusión……………………………………………………………………………….23
6.1. Sobre la solución propuesta………………………………………………….…….23
6.2. Experiencias adquiridas……………………………………………………………23

2
Lista de figuras
 Figura 3.1 Tabla de datos necesario de alumnos y profesores.
 Figura 3.2. Atributos clase Alumno.
 Figura 3.3 Atributos clase ListaAlumno.
 Figura 3.4 Constructor clase ListaAlumno
 Figura 3.5 Atributos Clase Profesor.
 Figura 3.6 Atributos Clase ListaProfesor.
 Figura 3.7 Constructor clase ListaProfesor.
 Figura 3.8 Atributos Clase Ramo.
 Figura 3.9 Atributos Clase ListaRamo.
 Figura 3.10 Constructor clase ListaRamo.
 Figura 3.11Atributos Clase Bloque.
 Figura 3.12 Atributos Clase Dia.
 Figura 3.14 Constructor clase Dia
 Figura 3.15 Atributos Clase Horario.
 Figura 3.16 Atributos Clase SalaClases.
 Figura 3.17 Atributos Clase ConexionBd.
 Figura 3.18 Atributos Clase MetodosSql.
 Figura 4.1 Bibliotecas utilizadas.
 Figura 4.2 Uml de la base de datos.
 Figura 4.3 Pantalla de inicio.
 Figura 4.4 Pantalla en común.
 Figura 4.5 Pantalla de opciones del usuario estudiantes.
 Figura 4.6 Pantalla de opciones del usuario profesor
 Figura 4.7 Pantalla de opciones del usuario administrador
 Figura 5.1 Planificación avance A.

3
1. Introducción

Durante miles de años nuestros antepasados lucharon para poder sobrevivir ante este
inclemente mundo a base de inteligencia y trabajo en equipo, creando diferentes tipos de
tecnologías que les ayudaron en su lucha, como fueron las herramientas básicas, como el
martillo, la lanza, los cuchillos, arcos, etc., Esto de una forma u otra ayudo en gran medida a
aligerar el esfuerzo requerido para completar ciertas tareas, acortando los tiempos necesarios y
aumentado la eficiencia de estos. Y así en los siguientes cientos de años se fueron creando
nuevas tecnologías que terminaron por reemplazar completamente al ser humano en ciertas
tareas, como fue el arado tirado por animales, o como también las maquinas reemplazaron a
ciertos trabajadores en las industrias, en la actualidad la inteligencia artificial reemplazando en
tareas con diferentes tipos de complejidades. Gracias a al reemplazo del ser humano en ciertos
procesos se aumentó la eficiencia y optimalización, logrando así, un aumentando en la calidad
de servicios y productos.
En este informe se hablara acerca de nuestro proyecto tecnológico, el propósito de este
es el de mejorar un proceso presente en nuestra escuela de ingeniería informática, más
adelante en este informe se explicara el problema en cuestión, la solución y el como la
implementamos.

4
2. Parte I Dominio del problema

En nuestra escuela de ingeniería informática hay algunos procesos académicos que en


los cuales todavía se requieren de un trabajador humano para completar la tarea, aunque
algunas de estas tarea se podrían reemplazar con agregar un programa en nuestros navegador
académico para que lo realice.
En el proceso en el que nosotros nos vamos a centrar es el de resolución de los choques
horarios, los pasos que requiere en estos momentos son los siguientes:

 Es necesario de un trabajador que realice este proceso.


 hay que ir de manera presencial a solucionarlo, necesitando de tener que
organizarse de tiempo libre para ir, siendo que hay momentos en el que se es
imposible el poder hacerse un tiempo libre que contemple el horario de atención
ya definido.
 La atención se realiza por orden de llegada.

2.1 Solución propuesta

Crear una aplicación que permita solucionar los choques horarios de tal manera que se
utilicen los menos recursos posibles y principalmente que se aumente la accebilidad y
eficiencia de este proceso. La aplicación será una herramienta para nuestro navegador
académico, por lo tanto, podrá de tener acceso a información correspondiente que se necesite
para solucionar el choque horario, aunque durante su desarrollo esta operara como una
aplicación independiente con su propia base de datos en la cual se guardaran los datos
requeridos para un funcionamiento óptimo.

5
3. Parte II Análisis

Como nuestra aplicación durante su desarrollo estará funcionando como una aplicación
en solitario, se explicara sus requerimientos funcionales:

3.1Requerimiento general
Para la que funcione la aplicación se necesitara tener con anterioridad las mallas
curriculares de las carreras impartidas en la escuela de ingeniería informática además de los
horarios de sus salas de clases, profesores y alumnos, además de tener acceso a ciertos datos
específicos de profesores y alumnos mostrados a continuación.

Estudiantes Profesores
Nombre Nombre
Rut Rut
Cantidad de terceras Ramos impartidos
Carga académica Contraseña de la
aplicación
Año(cuántos años lleva en la carrera)
Contraseña de la aplicación
Figura 3.1 Tabla de datos necesario de alumnos y profesores.

3.2 Clases creadas


3.2.1 Clase Alumno
Clase principal de la aplicación, aquí se guarda el horario del estudiante, que es cual tiene el
problema a solucionar por nuestra aplicación. Además de los ciertos datos correspondientes al
estudiante.

Atributos:

Figura 3.2. Atributos clase Alumno.

6
Métodos:
1) setContraseña: Recibe un string y lo agrega como la contraseña del usuario.
2) getContraseña: Retorna un string con la clave del usuario.
3) setNombre: Recibe un string y lo agrega como el nombre del usuario.
4) getNombre: Retorna un string con el nombre del usuario
5) setRut: Recibe un entero y lo agrega como el rut al usuario
6) getRut: Retorna un string con el rut del usuario
7) getHorario: Retorna un arraylist con el horario del alumno
8) setHorario: Recibe un arraylist y lo agrega como con el horario del usuario.
9) getCantidadTercera: Retorna un entero con el números de terceras que tiene en cada
uno de los ramos cursados
10) setCantidadTercera: Recibe un entero y lo agrega como la cantidad de terceras que
tiene el usuario
11) getCarga: Retorna la carga académica que tiene el usuario.
12) setCarga: Recibe un entero y lo agrega como la carga académica del usuario, esta se
conoce al sumar la cantidad de créditos que tiene cada ramo cursado.
13) getAño: Retorna el año de ingreso del usuario.
14) setAño: Recibe un entero y lo agrega como año, este es el año en el que ingreso a la
universidad.
15) getReprobados: Retorna un arraylist con los ramos reprobados del usuario.
16) setReprobados: Recibe un arraylist con los ramos reprobados del usuario y lo guarda
en reprobados.

3.2.2 Clase Lista Alumno


Atributos:

Figura 3.3 Atributos clase ListaAlumno.

Constructores:

Figura 3.4 Constructor clase ListaAlumno

7
Métodos:
1) agregarAlumno: Recibe un objeto tipo Alumno y revisa si existe, si este no existe lo
guarda en alumnos y retorna true, en caso contrario retorna false.
2) eliminarAlumno: Recibe un string con el rut de un Alumno y revisa si existe el
Alumno en el arraylist alumnos, en caso de existir lo elimina y retorna true , en caso
contrario retorna false.
3) buscarAlumno: recibe un string con el rut y otro string con la contraseña del Alumno
revisa si exite el Alumno en el arraylist alumnos, retorna el objeto alumno
correspondiente y en caso contrario retorna null.
4) buscarAlumno: Recibe un string con rut del Alumno, revisa si existe el Alumno en el
arraylist alumnos, retorna el objeto alumno correspondiente, en caso contrario retorna
null.
5) modificarAlumno: Recibe un string con el rut de un Alumno si se encuentra se
modifica con el objeto alumno que se recibió y se retorna true, en caso de no
encontrarlo se retorna false.

3.2.3 Clase Profesor:

Atributos:

Figura 3.5 Atributos Clase Profesor.

Métodos:
1) setNombre: Recibe un string y lo agrega como el nombre del usuario.
2) getNombre: Retorna un string con el nombre del usuario.
3) setRut: Recibe un entero y lo agrega como el rut al usuario
4) getRut: Retorna un string con el rut del usuario.
5) setContraseña: Recibe un string y lo agrega como la contraseña del usuario.
6) getContraseña: Retorna un string con la clave del usuario.
7) getRamosImpartidos: Retorna un arraylist con los que imparte el profesor.
8) setRamosimpartidos: Recibe un arraylist con los ramos que imparte el profesor y lo agrega
como sus ramosimpartidos.

8
3.2.4 Clase ListaProfesor
Atributos:

Figura 3.6 Atributos Clase ListaProfesor.

Constructores:

Figura 3.7 Constructor clase ListaProfesor.

Métodos:
1) agregarProfesor: Recibe un objeto tipo Profesor y revisa si existe, si este no existe lo
guarda en profesores y retorna true, en caso contrario retorna false.
2) eliminarProfesor: Recibe un string con el rut de un Profesor y revisa si existe en el
arraylist profesores, en caso de existir lo elimina y retorna true , en caso contrario
retorna false.
3) buscarProfesor: recibe un string con el rut del Profesor y otro string con la contraseña y
revisa si exite en el arraylist profesores, retorna el objeto Profesor correspondiente y en
caso contrario retorna null.
4) buscarProfesor: Recibe un string con rut del Profesor revisa si existe en el arraylist
profesores, retorna el objeto Profesor correspondiente, en caso contrario retorna null.
5) modificarProfesor: Recibe un string con el rut de un Profesor si se encuentra se
modifica con el objeto Profesor que se recibió y se retorna true, en caso de no
encontrarlo se retorna false.

9
3.2.5 Clase Ramo
Atributos:

Figura 3.8 Atributos Clase Ramo.

Métodos:
1) getnombreRamo: Retorna un string que corresponde al nombre del ramo.
2) setnombreRamo: Recibe un string con el nombre del ramo y lo guarda nombreRamo.
3) getclaveRamo: Retorna un string que corresponde con la clave del ramo.
4) setclaveRamo: Recibe un string con el clave del ramo y lo guarda claveRamo.
5) getImpartido: Retorna un objeto Profesor.
6) setImpartido : Recibe un objeto Profesor y lo guarda en impartido, corresponde al
profesor que imparte el ramo en específico.
7) getCreditos: Retorna un entero que corresponde a la cantidad de créditos que vale el
ramo.
8) setCreditos: Recibe un entero con los créditos que corresponde el ramo y lo guarda en
créditos.
9) getSemestre : Retorna un string que corresponde a que semestre corresponde este
ramo.
10) setSemestre : Recibe un strimg que corresponde al semestre que corresponde el ramo y
lo guarda en semestre
11) getTotalReprobaciones: Retorna entero que corresponde a la cantidad de alumno que
reprobaron el ramo.
12) setTotalReprobaciones:Recibe un entero con la cantidad de alumno reprobado y lo
guarda en totalReprobados.
13) getCupo: Retorna un entero que corresponde al cupo máximo del ramo.
14) setCupo: Recibe un entero con el cupo máximo de alumno en el ramo y los guarda en
cupo.
15) getInscritos: Retorna un entero con la cantidad de alumno cursando el ramo.
16) setIncritos, Recibe un entero con la cantidad de alumno inscritos y lo guarda en
inscritos.
17) getPrerequisitos: Retorna un arraylist con los prerrequisitos del ramo.
18) setPrerequisitos : Recibe un arraylist con los prerrequisitos del ramo y los guarda en
prerrequisitos.

10
3.2.6 Clase ListaRamo
Atributos:

Figura 3.9 Atributos Clase ListaRamo.

Constructores:

Figura 3.10 Constructor clase ListaRamo.

Métodos:
1) agregar Ramo: Recibe un objeto tipo Ramo y revisa si existe, si este no existe lo
guarda en ramos y retorna true, en caso contrario retorna false.
2) eliminar Ramo: Recibe un string con la clave de un Ramo y revisa si existe en el
arraylist ramos, en caso de existir lo elimina y retorna true , en caso contrario retorna
false.
3) buscar Ramo: Recibe un string con la clave de un Ramo revisa si en el arraylist ramos,
retorna el objeto Ramo correspondiente, en caso contrario retorna null.
4) modificarRamo: Ramo si se encuentra se modifica con el objeto Ramo que se recibió y
se retorna true, en caso de no encontrarlo se retorna false.

11
3.2.7 Clase Bloque
Atributos:

Figura 3.11Atributos Clase Bloque

Métodos:
1) setHora: Recibe un string que corresponde al bloque (1-2;3-4……) y lo guarda en
hora.
2) getHora: Retorna un string correspondiente al bloque.
3) setDisponibilidad: Recibe un boolean correspondiendo a si el bloque está disponible o
no., y lo guarda en disponibilidad (true si está disponible y false en caso contrario).
4) isDisponibilidad: Retorna un boolean correspondiendo a la disponibilidad del bloque.
5) setAsignado: Recibe un objeto tipo Ramo que corresponde al ramo que se está
cursando en ese bloque y lo guarda en asignado.
6) getAsignado: Retorna un objeto tipo Ramo correspondiente al ramo que se está
impartiendo en el bloque.

3.2.8 Clase Dia


Atributos:

Figura 3.12 Atributos Clase Dia.

Constructor:

Figura 3.13 Constructor clase Dia

Métodos:
1) getNombreDia: Retorna un string con el nombre del dia :
2) getHorarioDiario: Retorna un arraylist correspondiendo a los bloques horarios de
un día.

12
3.2.9 Clase Horario
Atributos:

Figura 3.15 Atributos Clase Horario.

Métodos:
1) setHorarioSemanal: Recibe un arraylist con correspondiendo al horario semanal
y lo guarda en horarioSemanal.
2) getHorarioSemanal: Retorna un arraylist correspondiente al horario semanal.

3.2.10 clase SalaClases


Atributos:

Figura 3.16 Atributos Clase SalaClases.

Métodos:
1) setHorarioSala: Recibe un objeto Horario que corresponde al horario semanal de
la semana para esa sala y lo guarda en horarioSala.
2) getHorarioSala: Retorna un objeto Horario que corresponde al horario semanal
de la semana para esa sala.
3) setClaveSala: Recibe un string con la identificación del sala y lo guarda en
claveSala.
4) getClaveSala: Retorna un string con identificación del sala y lo guarda en
claveSala.
5) setCapacidad: Recibe un entero correspondiendo a la cantidad máxima de
persona sentadas en esa sala y lo guarda en capacidad.
6) getCapacidad: Retorna un entero correspondiendo a la cantidad máxima de
persona sentadas en esa sala.

13
3.2.11 Clase ConexionBd
Atributos:

Figura 3.17 Atributos Clase ConexionBd.

Método:
1) Conectar: Metodo para conectar la aplicación a la base de datos.

3.3.12 Clase MetodosSql


Atributos:

Figura 3.18 Atributos Clase MetodosSql.

Metodos:
1) guardarAlumno: Recibe un string correspondiente al paralelo del alumno, además de
recibir todos los atributos de la clase Alumno (todos con sus tipos de datos
correspondientes) menos ramosReprobados. Durante el funcionamiento del método se
hace conexión con la base de datos para guarda ahí los datos recibidos, en caso de
completarse exitosamente el guardado se retornara con un entero mayor a cero y en
caso contrario se retornara un cero.
2) buscarAlumno: Recibe un string con el rut del alumno. Durante el funcionamiento del
método se hace conexión con la base de datos para buscar los siguientes datos:
a. nombre.
b. cantidadTerceras.
c. carga.
d. año.
e. Paralelo.

14
Al ya haber pedido cada dato, estos se guardaron en un unico string aunque
separados entre sí por un espacio, luego de esto se retorna el string.
3) buscarNombreAlumno: Recibe un string con el rut del alumno. Durante el
funcionamiento del método se hace conexión con la base de datos para buscar el
nombre del alumno y retornarlo en un string .
4) buscarAlumnoInscrito:Recibe dos string uno el rut del alumno y el otro con su
contraseña. Durante el funcionamiento del método se hace conexión con la base de
datos para buscar al alumno y retornar un string con la sentencia “Alumno encontrado”
en caso de éxito y en caso contrario “alumno no encontrado”.
5) eliminarDato: Recibe tres string, uno con el nombre de la tabla, otro con la clave
principal (pk) y el ultimo con la id. Durante el funcionamiento del método se hace
conexión con la base de datos, si se encuentra se elimina y retorna un entero mayor a
cero y en caso contrario un cero.
6) ModificarDato: Recibe cuatro string, uno con el nombre de la tabla, otro con la clave
principal (pk) , otro con la id y el ultimo con lo que se quiere modificar el dato.
Durante el funcionamiento del método se hace conexión con la base de datos, si se
encuentra se modifica y retorna un entero mayor a cero y en caso contrario un cero.

7) guardarProfesor: recibe tres string,uno con el nombre del profesor , otro con el rut y el
ultimo con su contraseña, Durante el funcionamiento del método se hace conexión con
la base de datos , si se guardaron correctamente se retornara un entero mayor a cero y
en caso contrario un cero.
8) buscarNombreProfesor: Recibe un string con el rut del profesor. Durante el
funcionamiento del método se hace conexión con la base de datos para buscar el
nombre del profesor y retornarlo en un string .
9) buscarProfesorInscrito:Recibe dos string uno el rut del profesor y el otro con su
contraseña. Durante el funcionamiento del método se hace conexión con la base de
datos para buscar al profesor y retornar un string con la sentencia “Profesor
encontrado” en caso de éxito y en caso contrario “Profesor no encontrado”.
10) guardarRamo: Recibe todos los atributos de la clase Ramo (todos con sus tipos de
datos correspondientes) menos inscritos y prerrequisitos. Durante el funcionamiento
del método se hace conexión con la base de datos para guarda ahí los datos recibidos,
en caso de completarse exitosamente el guardado se retornara con un entero mayor a
cero y en caso contrario se retornara un cero.

15
4. Parte III Diseño
En esta seccion se trara de explicar el funcionamiento interno de la aplicación ademas de
mostrar las ventana con las que el usuario va a interactuar.

4.1 Caracteristicas Generales


La aplicación fue desarrollada bajo el lenguaje java, ademas por tema de convenecia se
implemento con el motor de SGBD MySQL con el gestor de HeidiSQL(Versión 9.5.0.5196).

4.1.1 Desarrollo en java


Se nos dio el reto de desarrollar una aplicación utilizando java siendo este un lenguaje
orientado a objetos ,el cual tiene ventajas para la abstraccion en comparacion a lenguajes mas
estructurados como es el lenguaje C ,que es con el teniamos mas experiencia . esto nos trajo
una amplia gama oportunidades para dejarnos llevar por nuestra imaginacion.
Para el desarrollo de nuestro sofware se utilizaron las siguientes bibliotecas:

Figura 4.1 Bibliotecas utilizadas.

Se deja presente que se utilizo java Fx para el apartado grafico.

16
4.2 Implementacion de la base de datos
Se decidio por el uso de la base de datos por ser un metodo mas comodo para el manejo
de datos , ademas de que algunos de nuestros integrantes del grupo tienen experiencia
utilizando base de datos.

Figura 4.2 Uml de la base de datos.

17
4.3 Diseño de la interfaz grafica
Los menús a continuación son prototipos y están a bajo desarrollo, pueden terminar
cambiando por completo en las siguientes fases de desarrollo.
La pantalla inicial con la cualquier usuario se encontrara es elegir uno de los botones
que le sea correspondiente

Figura 4.3 Pantalla de inicio.

18
Después de haber elegido algunos de los botones, a todo usuario le aparecerá la siguiente
pantalla en la cual tendrán que poner su rut y su contraseña según corresponda.

Figura 4.4 Pantalla en común.

4.3.1Usuarios
4.3.1.1 Estudiantes
El menú de este usuario es el siguiente:

 Ver horario: Mostrara al usuario su horario con los ramos que está cursando en el
semestre.
 Gestionar ramos: Podrá administrar los ramos que está cursando.
 Solicitudes: Mostrara otro menú con distintas solicitudes académicas.
 Pedir reportes: Muestra un informe con ciertos datos correspondientes al usuario.

19
Figura 4.5 Pantalla de opciones del usuario estudiantes.

4.3.1.2Profesores
El menú de este usuario es el siguiente:

 Ver solicitudes: Muestra sus solicitudes académicas.


 Gestionar ramos: Muestra los ramos impartidos.
 Gestionar alumnos: Muestra los estudiantes tomando sus ramos impartidos.

Figura 4.6 Pantalla de opciones del usuario profesor

20
4.3.1.3Administrador

 Gestionar alumnos: Mostrara otra pantalla para agregar, eliminar o modificar alumnos.
 Gestionar Profesores: Mostrara otra pantalla para agregar, eliminar o modificar
Profesores.
 Gestionar Ramos: Mostrara otra pantalla para agregar, eliminar o modificar Ramos.

Figura 4.7 Pantalla de opciones del usuario administrador

21
5. Planificación

En esta sección mediante carta Gantt se mostrara las tareas repartidas y quienes las
realizaron

Figura 5.1 Planificación avance A.

22
6. Conclusión
En este último apartado se expresara nuestras conclusiones con respecto al estado actual
de nuestro proyecto.

6.1 Sobre la solución propuesta


Nuestra aplicación en su etapa actual permite conectarse a una base de datos y guardar la
gran mayoría de los datos que necesitemos, como por ejemplo datos de alumno, profesores y
ramos, aunque falta el pulir las pantallas con las que el usuario interactuara, nuestra idea es
que sean más accesibles e intuitivas, además aumentar las cantidad de horas al desarrollo de
las opciones de nuestro programa porque no todas funcionan.

6.2 Experiencia adquirida


Entendimos que un proyecto mal organizado va ir en dirección al fracaso, debido a que
la poca planificación de ciertas tarea nos llevó a un atraso bastante importante, ya que
esperábamos tener una aplicación más funcional de lo que esta en su estado actual, a pesar de
eso nos llevamos una grata experiencia con la programación del lenguaje java debido a que
nos fue bastante agradable el aprender un lenguaje orientado a objetos ya que solo habíamos
estado familiarizados con C y pascal.

23

Vous aimerez peut-être aussi