jueves, 23 de abril de 2015

Jueves 23/04/2015 (Análisis de Resultados)

Información general, resultante del desarrollo del proyecto:
Con un total de 105 horas laboradas, aproximadamente, se logró resolver cada problema encontrado durante la abstracción de todos los puntos sobresaliente de la tarea programada. Se consiguió elaborar la estructura, procedimientos y funciones necesarios.

Organización del proyecto y resultados de los módulos:

En el transcurso de los días, se trató de trabajar de manera eficiente, logrando alcanzar una buena cifra para las horas invertidas y los resultados deseados, los cuales fueron propuestos a inicio del proyecto. Gracias a la organización del proyecto y el uso de las tecnologías implementadas, se obtuvieron soluciones inteligentes además de que se facilitó el manejo de Bases de Datos. 
  • Mantenimiento de tablas.
    • Se implementó satisfactoriamente en la página web, haciendo uso de nuevas tecnologías como NodeJS, Express, y el Framework: AngularJS, proveyendo de gran capacidad para un desarrollo completo y eficiente. 
    • La búsqueda de soluciones resultó en la elaboración de los Store Procedures esenciales para este módulo.
    • Se presentaron una serie de problemas, los cuales dificultaron la solución, pero a su vez nos ayudaron a pensar desde otra perspectiva y realizar investigaciones exhaustivas para entrar las soluciones. Problemas como: conexión con MSSQL, manejo de datos y tratamiento de resultados.
  • Diseño de notas.
    • Desarrollado en la aplicación de escritorio. se concluyó con una solución elegante y eficiente, con la cual se mejoraron nuestras capacidades para trabajar en equipo, además de desarrollar habilidades en Base de Datos principalmente.
    • Se logró obtener los resultados esperados, la posibilidad de ofrecerle al usuario (profesor), la posibilidad de crear la evaluación a su gusto, y además poder editar los valores antes de finalizar el diseño.
  • Registro de notas.
    • También en la aplicación de escritorio, logramos quedar satisfechos con las soluciones implementadas, de manera que se pudo conseguir resultados coherentes y relacionados con el manejo efectivo de Base de Datos.
    • Se logró desarrollar el reporte de notas, mediante el envío del correo electrónico, con un desglose de las notas obtenidas por el Estudiante.
En este proyecto se hizo uso de nuestras capacidades para implementar soluciones alternativas para cada uno de los problemas encontrados, de manera que se consiguieran los resultados necesarios, los cuales permitieron alcanzar la satisfacción durante este análisis previo.

miércoles, 22 de abril de 2015

Miércoles 22/04/2015 (Registro de Notas)

Tiempo invertido: 6 horas aproximadamente

12:00-18:00
Como parte del desarrollo del Registro de las Notas, se realizó el siguiente análisis:
Solución de Problema: Registro de Notas para un Miembro.
Premisas:
+ Evaluaciones asociadas a un Grupo (Accedido con el código).
+ Ítems de Evaluaciones únicos (Accedido con el nombre del Tipo de Evaluación).
+ Evaluaciones con Instancias Variables o Fijas.
Fijas: Las Instancias están asociadas a la Evaluación.
+ Se les agrega la nota de la Instancia para un Estudiante específico.

Variables: Se asocia una nueva Instancia a la Evaluación.
+ Con toda la información requerida y se registra la nota.

+ Las notas de los Miembro se asocian a una Instancia que a su vez se asocian a una Evaluación.

Solución:
+ Se tiene el Grupo (Por el código).
+ Se tiene el Miembro (Por el nombre).

Cargar todas las Evaluaciones por el nombre del Tipo.
Registrar nota por nota.
Fijas: Desplegar las instancias por descripción y disponer el ingreso de la nota obtenida.

Variables: Descripción, fecha y nota obtenida.

Registro de la Nota:
+ Se tiene el Grupo (Por el código).
+ Se tiene el Miembro (Por el nombre).
+ Se tiene la Evaluación (Por el Nombre del Tipo).
+ Se tiene la Instancia (Por la Descripción : Fijas).
(Se puede llegar a la nota del Miembro para una Instancia específica).

* Cálculo de la nota acumulada con cada registro de nota.
* Inicializar las notas por Miembro en 0, para todas las instancias.
* Validar el estado de las Evaluaciones Varibles, si tiene o no instancias para 
         realizar el cálculo y afectar la nota acumulada.

Notas para cada Instancia fija : Inicializadas en cero para proceder con el cálculo.
- Cálculo de Notas -
Sumatoria 
(
Sumatoria 
(
Si la Evaluación es fija:
notas de las instancias * el promedio ponderado de la Instancia

Si no (variable):
Si la cantidad de Instancias es > 0:
Sumatoria (notas de las instancias) / cantidad de Instancias
Si no:
Resultado 0 para la Evaluación

) * el promedio ponderado de la Evaluación
)


promedio ponderado: valor porcentual / 100 (Para las Evaluaciones e Instancias Fijas)

Se implementó el Store Procedure correspondiente, el cual actualiza toda la nota acumulada de un Estudiante, de manera que se analizar cada Evaluación del Grupo al cual este se asocia. Utilizamos tablas temporales para manejar los datos de las Evaluaciones e Instancias. 
Mediante un par ciclos WHILE, se desarrolló la solución correspondiente, rescatando las notas de las Evaluaciones por Miembros, de una manera exclusiva para cada tipo de Evaluación, fijas y variables


martes, 21 de abril de 2015

Martes 21/04/2015 (Registro de notas)

Tiempo invertido:  3 horas aproximadamente


17:00-20:00
Para la realización de ingreso de notas con éxito se debe tomar en cuenta que internamente se realizan varios procedimientos los cuales son encargados de buscar las instancias de evaluación, los tipos de evaluación que se encuentran registrados en la base de datos, estos procedimientos se encargar de realizar todos los cálculos para la obtención de las notas parciales y también para la obtención de la nota acumulada de cada miembro del grupo. Sin estos procedimientos seria imposible realizar los cálculos para la obtención exitosa de una nota parcial y acumulada de cada miembro del grupo.

Estos procedimientos son de suma importancia, ya que cumplen una de las funciones mas importantes de  todo el proyecto, ya que son los encargados de realizar todos los cálculos pertenecientes a la obtención de la nota acumulada para cada estudiante, por lo tanto estos procedimientos son de suma importancia para el proyecto, ya que son los que realizan los cálculos de mayor cuidado para la obtención de la nota final de cada estudiante.

lunes, 20 de abril de 2015

Lunes 20/04/2015 (Registro de Notas)

Tiempo invertido:  5 horas aproximadamente


13:00-18:00
Para poder realizar el registro de notas de un estudiante, se debe tomar en cuenta que el estudiante puede tener diferente tipo de evaluación, como lo son exámenes, proyectos, tareas, quices, y estos a su vez pueden ser de dos tipos diferentes, los cuales son evaluaciones fijas, las cuales tienen un porcentaje determinado para cada una de las evaluaciones existentes, por otra lado se encuentran las evaluaciones variables, que estas evaluaciones no tiene un porcentaje definido para cada una, sino solo se tiene el porcentaje total de la evaluación. A la hora de realizar el registro de notas de una evaluación fija, se requiere introducir el nombre de la evaluación, y la nota obtenida por el estudiante, esta información a la hora de registrarse y enviarse a la base de datos pasa por diferentes procedimientos que son los encargados de realizar los cálculos específicos para poder así saber que nota acumulada tiene hasta el momento dicho estudiante.

Para la parte de las evaluaciones variables, se deben ingresar la cantidad que sea necesaria de instancias de evaluación para cumplir con el porcentaje total de la evaluación, este procedimiento cambian con respecto al de las evaluaciones fijas, ya que se debe ingresar la descripción, la nota obtenida por el estudiante y la fecha en la que se realizo, al igual que con las evaluaciones fijas, estas evaluación deben pasar un una serie de procedimientos, en los cuales se realizan los cálculos para poder tener la nota acumulada total de un estudiante con todas las notas registradas hasta el momento.





viernes, 17 de abril de 2015

Viernes 17/04/2015 (Aplicación Escritorio)

Tiempo invertido: 5 horas aproximadamente


13:00- 18:00
Luego de realizar el registro de notas, se debe realizar el reporte de notas por email, para poder realizar esta acción se debe hacer uso de la clase email, antes de poder realizar con éxito el envió de correos tuvimos varios problemas a la hora de implementar esta acción, en un principio tuvimos varios problemas con el firewall ya que no nos dejaba enviar correos, para poder resolver este problema implementamos diferentes estructuras para poder enviar correos, pero el problema seguía siendo el mismo. Por lo tanto procedimos a realizar un poco mas de investigaciones para poder llegar a la conclusión de que el problema que nos daba no era del firewall, sino de los permisos y condiciones que impone gmail para poder enviar correos a diferentes plataformas, para poder resolver este problema se tuvo que cambiar las condiciones de envió en gmail para de esta manera poder enviar correos. Luego de solucionar este problema se pudo continuar con el envió de correos de una forma exitosa.

En la parte gráfica tenemos un jDialog en el cual podemos agregar texto extra al cuerpo del correo, en este jDialog se escoge mediante un ComboBox el estudiante al cual se le enviara el correo con su nota acumulada, en el cual se vera el desglose de la nota, este desglose mostrara el valor porcentual de cada evaluación seguido por la nota obtenida por el estudiante.

jueves, 16 de abril de 2015

Jueves 16/04/2015 (Aplicación Escritorio)

Tiempo invertido: 4 horas aproximadamente

18:00-22:00
Una vez que se registran todas las evaluaciones que se pueden realizar a un grupo, se debe hacer el debido registro de las notas correspondiente a cada tipo de evaluación registrado, para poder realizar esto, se debe crear un nuevo JDialog en el cual se podrá escoger, el estudiante y el tipo de evaluación que se le desea registrar una nota. Para poder escoger estos dos datos se hace el uso de dos comboBox en los cuales aparecerán todos los estudiantes miembros del curso, y todos los tipos de evaluaciones registrados en el grupo, una vez que se escogen los datos se debe oprimir el botón registrar, el cual nos redirecciona a otro JDialog, en este nuevo jDialog nos aparecerán las opciones para registrar la nota de la instancia, en el cual se deberá escoger entre las diferentes opciones de las instancias de evaluación que se hayan registrado.

Una observación que se debe tener muy en cuenta es que cuando se registra una nota de un estudiante, esta se debe registrar de una por una para cada tipo de evaluación y sus respectivas instancias, ya que las notas van a variar con respecto a cada tipo que se haya registrado.

Los Diferentes jDialog que se han creado todos tienen una conexión con la base de datos, esto para poder corroborar que la información que se presenta es verdadera y esta guardada en la base de datos, de esta forma todo lo que se realice dentro de esta interfaz quedara guardado en la base de datos.

En la parte de funcionalidad interna se debe hacer el uso de diferentes Procedimientos, uno de ellos el el insertarEvaluacion, el cual se encarga de realizar y verificar que la evaluación se puede insertar a la base de datos, para poder realizar una inserción de una evaluación se necesita tener el grupo en el cual se va a realizar la evaluación, el tipo de evaluación, el porcentaje, tipo de instancia, y la cantidad de instancias, estos datos son muy importantes para poder hacer una inserción correcta, si alguno de todos estos datos no es correcto no se podrá insertar la evaluación.

miércoles, 15 de abril de 2015

Miercoles 15/04/2015 (Manejo de errores)

Tiempo invertido: 4 horas aproximadamente.

13:00-17:00
Una parte primordial y muy importante de este proyecto es la ejecución de un buen manejo de errores, ya que si tenemos un buen manejo de errores nos sera de gran ayuda a la hora de hacer dicho proyecto.

Por lo tanto para cada store procedure y cada función se le implemento un manejo de errores, el manejo de errores que utilizamos, es el manejo de errores que nos explico el profesor Franco Quiros, el cual consiste en realizar un begin catch y al posible error multiplicarlo por -1, y así si de alguna u otra forma el proyecto nos tira un error lo reconoceremos, ya que este error se representara con un numero negativo.

Además de utilizar el manejo de errores con números negativos, también implementamos en gran parte de las funciones y Store procedure el uso de una booleano, el cual nos informara si la función o el procedimiento en sus respectivos usos funciono de la mejor forma. Y como nos damos cuenta si esta funcionando de la mejor forma, para eso es el booleano, si la función o procedimiento retornan un 1, esto significa que se realizo de la forma correcta. Caso contrario sucede si el numero retornado es un 0, esto nos avisa que existe un error en el procedimiento o función que debe ser arreglado. 

Martes 14/04/2015 (Página web)

Tiempo invertido: 8 horas aproximadamente

12:00-15:00
Dentro de la página web se pueden encontrar varias vistas en las cuales cada una pertenece a una tabla distinta cada uno, se encuentra una para el periodo, otra vista para el profesor, otra para los estudiantes, otra para los cursos, y por ultimo una para miembros. En cada una de estas diferentes vistas se pueden realizar diferentes acciones, como lo son ingresar nuevos datos, editarlos, eliminarlos, ademas se pueden visualizar todos los datos que se encuentran guardados en la base de datos. Cada vista tiene su propio controlador y sus propios funciones para validar que la información ingresada este correcta y no coincida con ninguna información de la base de datos.

Estas son las diferentes opciones:

  • Periodo: la parte del Periodo tiene varias opciones para trabajar, en esta vista se pueden ingresar nuevos periodos, con el formato aaaa-mm-dd (año-mes-dia), lo que se ingresa es la fecha de inicio y la fecha fin de cada periodo, una vez que esta información es ingresada se valida por medio de una función la cual verifica que la fecha de inicio no sea mayor a la fecha de fin. También se encuentra la opción de volver un Periodo activo a un periodo anulado.
  • Profesores: en la parte de los profesores, se pueden ver los profesores que ya están en la base de datos y todos los datos de cada uno de ellos, esta la opción de registrar nuevos profesores, para realizar esto se debe ingresar los datos correspondientes en cada casilla, como lo es el usuario que debe ser único y no puede coincidir con alguno ya registrado, ademas de su clave y su nombre completo. Esta vista también tiene la opción de modificar un profesor ya existente, ademas de modificar e ingresar profesores se pueden también eliminar, solo que para poder hacer la eliminación de un profesor  este profesor no puede estar ligado o asociado a un grupo, si el profesor tiene un grupo es imposible eliminarlo.
  • Estudiantes: en la parte de los estudiantes, se pueden ver los estudiantes que ya están en la base de datos y todos los datos de cada uno de ellos, esta la opción de registrar nuevos estudiantes, para realizar esto se debe ingresar los datos correspondientes en cada casilla, como lo es el carne que debe ser único y no puede coincidir con alguno ya registrado, ademas su nombre completo de y su correo electrónico. Esta vista también tiene la opción de modificar un estudiante ya existente, ademas de modificar e ingresar estudiantes se pueden también eliminar, para hacer esto nada mas se presiona en el botón eliminar que se encuentra en la misma fila del estudiante a eliminar.
19:00-23:00
  • Cursos: en la parte de los cursos, se pueden ver los cursos que ya están en la base de datos y todos los datos de cada uno de ellos, esta la opción de registrar nuevos cursos, para realizar esto se debe ingresar los datos correspondientes en cada casilla, como lo es el código que debe ser único y no puede coincidir con alguno ya registrado, ademas del nombre del curso. Esta vista también tiene la opción de editar un curso ya existente, ademas de editar e ingresar cursos se pueden también eliminar, para hacer esto nada mas se presiona en el botón eliminar que se encuentra en la misma fila del curso a eliminar.
  • Grupo: en la parte de los grupos, se pueden ver los grupos que ya están en la base de datos y todos los datos de cada uno de ellos, esta la opción de registrar nuevos grupos, para poder realizar la inserción se hace el uso de combo box para elegir el periodo, el profesor y el curso, en estos combo box se encontraran las distintas opciones para escoger. Una vez terminado esto se deberá llenar los datos restantes que son el código del grupo y la cantidad de estudiantes. Esta vista también tiene la opción de editar un grupo ya existente.
  • Miembro: en la parte de los miembros, se pueden ver los miembros que ya están en la base de datos y todos los datos de cada uno de ellos, también tiene la opción de registrar nuevos miembros, para poder realizar la inserción se hace el uso de combo box para elegir el el grupo y el estudiante, en estos combo box se encontraran las distintas opciones para escoger. Esta vista también tiene la opción de hacer un retiro de un miembro ya sea de forma justifica o de forma injustificada.

lunes, 13 de abril de 2015

Lunes 13/04/2015 (Aplicación de Escritorio)

Tiempo invertido: 5 horas aproximadamente.

8:00-10:30
Luego de diseñar el jFrame principal el cual es el login a la aplicación, pasamos a diseñar la siguiente ventana la cual sera un jDialog, la diferencia entre un jFrame y un jDialog es que el jFrame se puede considerar como el padre, y el jDialog es un hijo de dicho jFrame.
El diseño de este jDialog es muy simple a simple vista, ya que lo que contiene es una panel donde se mostraran las diferentes evaluaciones que el grupo insertado tiene (si es que ya en la base de datos existe alguna), de otra forma permanecerá vacía hasta que se inserte un evaluación. Ademas de este panel, tiene tres botones, uno es el encargado para agregar una evaluación nueva, su función es redireccionar a una nueva ventana donde se podrá insertar una nueva evaluación, el segundo boton es el modificar evaluacion, este boton lo que realizar es modificar la evaluacion que se escoja, y el otro botón es para terminar con el registro de evaluaciones.


12:00-14:30
Para poder agregar una evaluación nueva se debe oprimir el botón llamado Agregar Evaluación, este botón lo que hace es enviarnos a una nueva ventana en la cual nos saldrán las opciones de evaluaciones, el porcentaje y el tipo de instancia. Una vez agregada la evaluación, dicha evaluación aparecerá en el panel de la ventana con los datos ingresados.

Interna mente este jDialog tiene una serie de validaciones, las cuales hacen que el profesor no pueda terminar de realizar el registro de evaluaciones hasta haber completado con la distribución del 100% en las diferentes opciones de evaluaciones existentes. Esta validación se realiza a la hora de oprimir el botón llamada Finalizar diseño, este se encargar de verificar que todas las evaluaciones agregadas al sumar el porcentaje de cada una sea un total de 100%, sino este no lo cumple mostrara un mensaje pidiéndole al profesor que el porcentaje total debe ser de 100%.

Para poder realizar todo las esta validaciones y comprobar que todo se realice de forma exitosa se deben utilizar una serie de procedimientos creados en SQL SERVER en los cuales se pueden realizar diferentes acciones para el diseño de las evaluaciones. Algunos de los diferentes procedimientos utilizados son InsertaEvaluacion, la cual realiza la inserción de una nueva evaluación a un grupo especifico, esto gracias a que por la conexión que se tiene con la base se obtiene el ID del grupo y de esta manera se pueden insertar evaluaciones a dicho grupo. Otro de los procedimientos es muy parecido al anterior, solo que este en vez de insertar evaluaciones lo que inserta con instancias de las diferentes evaluaciones que ya se encuentran registradas en el grupo, este tipo de instancias pueden ser ya sea fijas o variables, cada una de estas opciones tiene sus diferentes atributos. Para poder agregar todas las distintas evaluaciones y sus instancias a todos los miembros del grupo, se necesita de la ayuda de otro procedimiento, el cual se encarga de tomar estas evaluaciones y sus respectivas instancias y darles un valor de cero para que después a la hora de ir registrando las notas de cada estudiante no se tenga ningún conflicto con la nota acumulada de cada uno de ellos.


viernes, 10 de abril de 2015

Viernes 10/04/2015 (Página Web)

Tiempo invertido: 5 horas aproximadamente.

13:00-18:00
Luego de poder resolver con éxito el problema de la complementación de varias vistas para la página web, procedimos a con el diseño de la vista principal de de la pagina, en esta vista lo que se podrá apreciar es el login para poder acceder a las diferentes opciones de trabajo que se encuentran en la pagina web, este login contendrá un espacio para poder ingresar el nombre de usuario y la contraseña, estos datos ingresados se verificaran en la base de datos por medio de una conexión entre la pagina web y la base de datos. Si los datos ingresado se encuentran en la base de datos, se le permitirá al profesor ingresar a la pagina web, donde podrá tener varias opciones de lo que es mantenimiento de las diferentes tablas, como lo son Periodo, Estudiantes, Profesores, Cursos, Miembros.

Luego de que se verifica que el profesor si existe y accede a la pagina web, aparecerá otra vista o pantalla en la cual se le dará la bienvenida al profesor, en esta vista se podrán apreciar todas las opciones que el profesor tiene dentro de esta pagina web, dichas opciones se podrán apreciar en la parte superior de la pantalla ordenados en una fila de derecha a izquierda. al presionar encima de cada una de estas opciones, aparecerá una nieva vista en la cual podrán realizar diferentes cambios en el contenido de cada tabla.


jueves, 9 de abril de 2015

Jueves 09/04/2015 (Store Procedure)

Tiempo invertido 5 horas aproximadamente.

11:00-16:00

Para poder insertar ya sea Estudiantes, Profesores, Grupos, Cursos, Periodos, Instancias, Miembros, se necesitan una serie de procedimientos, los cuales son los encargados de realizar dicha inserción.
Se explicaran muy breve mente la funcionalidad de estos procedimientos.
  • InsertarCurso: este procedimiento recibe como parámetro un código de tipo varchar y un nombre del mismo tipo, luego de verificar que el código no exista, se inserta a una tabla llamada Curso.
  • InsertarEstudiante: este procedimiento es muy similar al anterior, la única diferencia es que recibe tres paramentos, de los cuales el mas importante es el carne, ya que este parámetro debe ser único para cada estudiante que se inserte, antes de que el procedimiento realice la inserción de un nuevo estudiante verifica que el carne no se encuentre en la base de datos, de lo contrario no se puede realizar a inserción.
  • InsertarProfesor: este procedimiento es muy similar al anterior, la única diferencia es que recibe tres paramentos, de los cuales el mas importante es el usuario ya que este parámetro es único para cada profesor, antes de realizar una inserción a la base de datos, se verifica que el usuario no coincida o sea igual a uno que ya se encuentre registrado en la base.
Estos procedimientos de insertar, son muy parecidos, ya que lo que realiza es una comparación de los parámetros que se quieren insertar con los datos que se encuentran en la base de datos, si tienen alguna coincidencia o son iguales, la inserción no se va realizar, si no existe ningún problema de coincidencias la inserción se realiza con éxito.

El caso contrario a las inserciones, son los procedimientos de eliminar ya sea curso, Profesor, Estudiante, Periodo... etc, para poder realizar estos procedimientos no importa cual de todos los procedimientos sea, ya sea que se quiere eliminar un Estudiante, lo que se debe verificar es que este este estudiante exista en la base, si existe se puede borrar de lo contrario no se realizar el procedimiento.

Para el caso de querer eliminar un profesor, este debe existir y ademas no debe estar asociado con ningún grupo, ya que si se encuentra asociado con un grupo no se podrá eliminar.


miércoles, 8 de abril de 2015

Miercoles 08/04/2015 (Store Procedure y Funciones)

Tiempo invertido: 6 horas y media aproximadamente.

14:00-17:30
Para poder agregar diferentes evaluaciones a la base de datos, es necesario la creación de una procedimiento por medio del cual obteniendo todos los parámetros que este requiere se pueda realizar de forma exitosa la inserción.
Para poder realizar este procedimiento se necesitaran diferentes parámetros los cuales son: 

  • Grupo: este parámetro lo que tiene es el código del grupo en el cual se va a insertar la evaluación este parámetro lo que recibe es un varchar.
  • TipoEvaluacion: esta parámetro lo que recibe es el tipo de evaluación que se puede realizar las cuales pueden ser: Tareas, Exámenes, Quices, Proyectos y Asistencia.
  • Porcentajes: este parámetro recibe el porcentaje total de la evaluación que se va agregar, este parámetro inicialmente es de tipo varchar, pero en el interior de la función se convierte y pasa hacer un parámetro de tipo float.
  • CantidadInstancias: este parámetro va depender del tipo de instancia que sea, ya que si la instancia es fija la cantidad va ser 0, pero si la instancia es variable la cantidad va ser como su nombre lo dice variable. Este parámetro es de tipo Integer.
  • TipoInstancias: este parámetro nos da a conocer que tipo de instancia es la evaluación, si es fija o si es variable. Este parámetro es de tipo varchar.

Luego que se obtienen todos los parámetros se hace una validación para que estos parámetros sean correctos, lo que se prueba es que el porcentaje no sea menor que 0 ni mayor que 100, y que la cantidad de instancias sean mayores o iguales a 0.
Luego de realizar esta validación correctamente se puede insertar la evaluación en una tabla determinada para las evaluaciones de cada grupo.

20:00-23:00
Para poder saber que tipo de evaluación se esta creando y se esta insertando a la base de datos se creo una función en la cual se averigua cual es el tipo de instancia, como podemos recordar hay dos tipos de instancia las Fijas y las Variables, con estas dos palabras trabaja este procedimiento. Ya que lo que se recibe en el parámetro es un nombre, este nombre puede ser Fija o Variable, lo que se hace es verificar que si el nombre es igual a Fija se agrega un 1 en la base de datos en la columna que identifica el tipo de instancia y si es una variable se agrega un 0.

martes, 7 de abril de 2015

Martes 07/04/2015 (Aplicación de Escritorio)

Tiempo invertido: 5 horas aproximadamente.

10:00-12:00
Luego de crear con éxito la conexión entre la base de datos con la aplicación escritorio, empezamos a realizar la primera vista de la aplicación de escritorio, la cual consiste en un JFrame que contiene el login para que el profesor pueda acceder a la aplicación.
Este Frame contiene dos entradas de texto, una para el nombre de usuario del profesor, y la otra es para ingresar la clave del profesor, también contiene un botón para poder acceder los datos, ademas de esto contiene un combo box con los grupos del profesor, y un botón para poder ingresar a la aplicación.

16:00-19:00
Luego de crear el JFrame de login, se necesita crear diferentes funciones para poder obtener todos los datos ingresados en los espacios correspondientes, tales como el usuario y la clave del profesor, ya que estos datos los debemos comparar con los datos que están en la base de datos para así poder permitir que un profesor registrado pueda hacer uso de la aplicación.
Esta comparación se puede lograr haciendo una función que se relación una función de la base de datos que tenga como parámetros de entrada los datos administrados por el usuario de la aplicación.
En esta función se debe hacer uso de la clase conexión para que de esta forma se puedan enviar los datos a la función de la base de datos y poder validar que el usuario y clave si existan en la base.

Después de que se realiza la verificación de que el usuario existe se van habilitar el combo box, dentro de este combo box se van a encontrar almacenados todos los grupos que estén vinculados con el profesor y el botón de Diseñar Evaluación que nos permite poder ingresar a la aplicación con un grupo asignado y diseñar distintos tipos de evaluaciones. Tambien se podra ingresar a las opciones de Registrar Notas y Enviar reportes, los cuales tienen un boton asignado cada uno.

El botón registrar notas nos re direcciona  a un nuevo JDialog, donde se podrá realizar la acción del registro de notas para cada estudiante. Mientras tanto el botón de enviar reportes nos redirecciona a un nuevo JDialog en el cual podremos escribir un mensaje para algún estudiante y posteriormente realizar el envío del correo con la nota.


lunes, 6 de abril de 2015

Lunes 06/04/2015 (Aplicación de Escritorio)

Tiempo invertido: 5 horas aproximadamente.

10:00-13:00
Luego de la investigación y practica del patrón de diseño singleton, decidimos realizar la conexión de la base de datos con la aplicación de escritorio por medio de este diseño, para poder realizar esto de la mejor forma, nos dispusimos a investigar acerca de como poder realizar una conexión eficiente de una base de batos de MS SQL SERVER 2012 con Netbeans, para poder encontrar la mejor forma de realizarlo observamos varios videos de tutorias de como realizarlo, al igual buscamos ejemplos de códigos para así poder entender de una forma mas clara y concisa como se debe realizar de la mejor manera la conexión.

17:00-19:00
Luego de tener una idea mucho mas clara de como realizar una conexión eficiente entre la base y la aplicación de escritorio, y poniendo en practica lo que se investigo acerca del patrón de diseño del singleton, procedimos a la creación de una clase llamada conexión en la cual el objeto creado en ella va ser una instancia única y así poner en practica el patrón singleton, lo cual nos ayudara a tener un mejor orden a la hora de realizar la conexión con la base, como en todo proceso tuvimos varias complicaciones con la creación de la conexión, como por ejemplo que no se dieron los datos requeridos, no se realizaba el acceso a la base, los cuales fueron resueltos de formar correcta, después de solucionar dichos problemas ejecutamos nuevamente la conexión y esta vez se realizo de una forma exitosa.


viernes, 3 de abril de 2015

Viernes 03/04/2015 (Aplicación de Escritorio)

Tiempo invertido: 5 horas aproximadamente


12:00-15:00
Se investigo a fondo un patrón de diseño llamado patrón singleton, (instancia única) esta diseñado para restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto. se observaron varios videos de tutoriales en youtube, se estudiaron varios códigos de ejemplos de clases con este patrón implementado, luego de entender mejor de que se trata el patrón de diseño singleton se realizaron varias pruebas para poder saber si nos era útil aplicar este diseño al proyecto.

20:00-22:00
Luego de probar con diferentes practicas el diseño singleton, decidimos que este patrón seria una buena opción para poder realizar la clase conexión en la aplicación de escritorio, ya que esta clase al ser una instancia unica, nunca va cambiar su forma de ser, por lo tanto decidimos que esta clase debe ser construida con el patrón de diseño singleton.

Se debe realizar el envió de la nota acumulada que tiene cada estudiante del grupo, para poder realizar esto se procedió a investigar cuales librerías que contiene Netbeans nos ayudaría a realizar de la mejor manera este proceso, al final de investigar decidimos que la biblioteca que se utilizaría es la java mail, ya que nos pareció que es la mas eficaz para realizar este proceso, para poder usarla de la mejor forma se creo una clase llamada email la cual es una clase objeto para ser nada mas instaciarla cuando se necesiten.

jueves, 2 de abril de 2015

Jueves 02/04/2015 (Aplicación de Escritorio)

Tiempo invertido: 4 horas y 30 minutos aproximadamente.

11:00-13:30
Para la parte de la aplicación de escritorio decidimos trabajar con el patrón de diseño MVC el cual es Mode View Controler, ya que nos pareció la forma ideal para realizar el proyecto, y ademas que es algo que hemos querido implementar para poder así tener buenas practicas a la hora de la programación.
Debido a esto empezamos a buscar e investigar como hacerlo de este modo de diseño para poder implementarlo de la mejor forma en nuestro proyecto, por este motivo procedimos a buscar diferentes tutoriales, vídeos , ejemplos, etc con los cuales nos pudimos dar una idea de como se trabaja y se implementa este tipo de patrón de diseño.

20:00-22:00
Luego de haber investigado un poco mas afondo el patron MVC, se empezo a practicar y tratar de buscar de que manera se podría acomodar muy bien este patrón con el proyecto, y así realizarlo de una forma mas ordenada y limpia.
Se realizaron varias practicas con ejemplos para así poder tener una idea mucho mas clara como se trabaja con este patrón.



miércoles, 1 de abril de 2015

Miércoles 01/04/2015 (Pagina Web)

Tiempo invertido: 2 horas, aproximadamente.

13:30-14:30
Como parte del desarrollo de la aplicación web, surgió el problema de la implementación de varias vistas con su respectivo controlador, además de la creación del servidor. Se empezó una investigación muy importante para evacuar las interrogantes e incrementar nuestro conocimiento en está área de computación.
La búsqueda de una solución, tanto eficiente como elegante, para el manejo de las vistas se complicó. No encontrábamos algo convincente, algo con lo que pudiéramos aligerar el desarrollo y a su vez hacerlo eficaz. En la investigación, gracias a la gran cantidad de información recopilada, conocimos el uso de plantillas para las vistas, específicamente con el uso del Framework Bootstrap.

martes, 31 de marzo de 2015

Martes 31/03/2015 (Base de Datos)

Tiempo invertido: 3 horas, aproximadamente.

13:00-14:00
Una vez que se logró instalar MSSQL SERVER 2012, continuamos con el desarrollo de la sección de Mantenimiento de Tablas. Gracias al análisis exhaustivo de los requerimientos del módulo, que se realizó en los días previos, se facilitó el proceso de desarrollo. Dando paso a la etapa de inmersión en la implementación de las funciones y procedimientos almacenados de la Base de Datos, y el diseño de la aplicación web.

21:00-23:00
Decidimos programar lo requerido en capa física mientras se implementa y es indespensable en la capa lógica, tratando de recurrir a distintos mecanismos para evitar insertar código SQL en esta considerando de los posibles errores que esto pudiera dar.

Ya que la aplicación es administrada por profesores, y estos cuentan con un usuario y contraseña, se procedió a crear un procedimiento para garantizar en acceso válido a una cuenta.

Lunes 30/03/2015 (Instalacion)

Tiempo invertido: 3 horas y 30 minutos, aproximadamente.

10:00-11:30
El equipo de trabajo con un total de dos miembros, decidimos instalar MS SQL SERVER 2012 en solo una de las computadoras, PC de escritorio, dicha instalación resulto efectiva a pesar de presentarse una serie de complicaciones.
Al experimentar cada vez mas con el motor recurrimos a instalarlo en la otra maquina.

21:00-24:00
Procedimos a instalar en la otra maquina dicho programa , para así poder trabajar de una forma mas efectiva, dicha instalación nos resulto un poco complicada, ya que tuvimos una gran serie de problemas, los cuales nos hicieron investigar acerca de ellos, ya que no encontrábamos una razón por la cual no se pudiera realizar la instalación de la forma correcta, uno de estos problemas era que la PC no tenia instalado el service pack 1, dicho problema se pudo resolver con éxito al investigar como hacer la instalación correcta del paquete faltante del windows. Luego de resolver este problema procedimos nuevamente con la instalación del programa, en este nuevo intento nos surgió otro pequeño inconveniente, el cual pudimos resolver sin ningún problema, logrando así que la instalación del MS SQL SERVER 2012 fuera todo un éxito.

viernes, 27 de marzo de 2015

Viernes 27/03/2015 (Organización del Proyecto)

Tiempo invertido: 3 horas y 30 minutos, aproximadamente.

11:00-13:00
Para facilitar la comunicación entre el equipo de trabajo y desempeñar los avances del proyecto de la manera más clara evitando ambigüedad, se decidió que cada actualización debía publicarse en la carpeta compartida en un .rar incluyendo el nombre de la sección desarrollada únicamente, nombrado de la siguiente manera: Actualización dd-mm-aaaa (Nombre de la sección).
Una vez solucionados los puntos anteriores, se comenzó con la abstracción e implementacióde los principales problemas del módulo (Mantenimiento de Tablas), iniciando con el desarrollo de los Períodos lectivos y lo que conllevan en el contexto.

21:00-22:30
En la subcarpeta del proyecto: SQL Scripts, se incluyeron las carpetas de funciones y procedimientos almacenados, para continuar con una organización clara y elegante de la solución computacional. Una vez definidos los criterios a resolver en Período, se realizó un breve investigación acerca de la estructura básica de las funciones o procedimientos almacenados, además de averiguar cuándo es mejor utilizar cada uno y que implica dicha decisión.

jueves, 26 de marzo de 2015

Jueves 26/03/2015 (Organizacion del Proyecto e instalaciones)

 Tiempo invertido: 3 horas y 30 minutos, aproximadamente.

12:30-14:30
Continuamos con el desarrollo de cada uno de los módulos de la tarea programada. Como se había decidido previamente, la sección de Mantenimiento de Tablas sería desarrollada en la aplicación web y las otras dos, Diseño de Evaluaciones y Registro de Notas, en la aplicación de escritorio. A partir de esto se comenzó con el análisis de los requerimientos para cada una de ellas.
Consideramos invertir más tiempo en la implementación de la aplicación web, pues se utilizó la plataforma de software Nodejs por primera vez, al igual que esta categoría de aplicaciones. Se escudriñó MEAN Stack para la creación de la sección, así que empezamos con una investigación exhaustiva a cerca de Angularjs como parte del desarrollo Front-en de la aplicación.

21:00-22:30
Ya instalado Nodejs, y el módulo Framework para el Back-en: Express, se comenzó a investigar la estructura que debíamos darle al proyecto. Se consideró completamente el énfasis del mismo, ya que se implementaría únicamente la sección de Mantenimiento de Tablas.
Organizamos la carpeta del proyecto antes de empezar a desarrollar, para así tener control del avance del mismo de manera más clara y eficiente. La estructura de la carpeta concluyó de la siguiente manera:
            + Aplicación de Escritorio
            + Aplicación Web
            + Especificación
            + Modelo Conceptual
            + SQL Scripts

Así mismo creamos una carpeta compartida en la plataforma Dropbox, para así llevar en conjunto las labores realizadas por el equipo de trabajo.

miércoles, 25 de marzo de 2015

Miércoles 25/03/2015 (Investigaciones Pagina Web)

Tiempo invertido: 3 horas y 30 minutos, aproximadamente.


18:00-21:30
Como parte de la investigación de Nodejs, descubrimos los Stack de desarrollo web, los cuales identificarían la estructuración e implementación de la aplicación. Se consideró MEAN Stack como parte de la elaboración del módulo, ya que este se "compone" por MongoDB (Como motor no SQL de base de datos), Express (Como el servidor), Angularjs (Como el Framework para front-ed) y Nodejs (Como plataforma de software para el back-end), y a simple vista nos pareció cómo lo que necesitábamos, desde luego, con las modificaciones del caso y la utilización de una Base de Datos SQL, específicamente, con el motor de MS SQL SERVER 2012.

Una de las principales características novedosas de Nodejs es que dispone de la creación de aplicaciones end-to-end desarrolladas en un solo lenguaje de programación: Javascript. Dicho lenguaje nos pareció muy poderoso y práctico para la elaboración de la aplicación, esto fue otro de los factores que consideramos en esta toma de decisión. 

Cuándo empezamos a estudiar Nodejs, procedimos a instalarlo. La instalación nos dio una serie de problemas, puesto que, no la realizábamos correctamente y no sabíamos que Nodejs se instala en el Roaming de Windows, y se ejecutaba desde el Command Prompt. Finalmente, nos dimos cuenta de cómo se implementaba. Descubrimos la utilidad para la instalación de módulos para la plataforma: NPM.

martes, 24 de marzo de 2015

Martes 24/03/2015 (Script de Llenado)

Tiempo invertido: 3 horas , aproximadamente.

12:30-15:30
Se comenzó con la elaboración de un Script de llenado de datos básicos, ya que dicho Script cumplía como uno de los requisitos del proyecto programado, y además, lo consideramos muy importante para los resultados esperados del manejo de datos de la Base de Datos, para así comprobar la consistencia y eficacia de la misma.

Ya que se implementaría una aplicación web y ninguno de los miembros de trabajo tenía experiencia confiable para la elaboración de la misma, se comenzó con una ardua investigación en la tecnología ya considerada para la estructuración de la misma, Nodejs. Consideramos Nodejs como algo fresco para el desarrollo para la aplicación, ya que al ver la funcionalidad de esta plataforma de software y el poder que toma día con día Javascript, quedamos fascinados y dispuestos a invertir el tiempo necesario para cumplir con todos los requerimientos del proyecto como el aprendizaje del desarrollo web que promete un futuro novedoso y práctico.

lunes, 23 de marzo de 2015

Lunes 23/03/2015 (Organización del Proyecto)

Tiempo invertido: 3 horas, aproximadamente.

14:00-15:30
Como se decidió trabajar con el modelo conceptual del profesor, comenzamos con la creación del Script de la Base de Datos. Mientras se escribía el script, decidimos realizar unos cambios en los nombres de algunas tablas y los tipos de datos para los atributos de las mismas. En un principio consideramos que los atributos de Estado de algunas tablas sería un VARCHAR con la descripción de dicho Estado, pero finalmente se tomó en cuenta las opciones o posibilidades para cada uno y se concluyó en dejar una simple CHAR para describir uno u otro Estado, cuando los mismos fueran de dos simplemente.

21:00-22:30
Debido a que el proyecto se debía de realizar en tres módulos, mantenimiento de tablas, diseño de evaluaciones y registro de notas, con al menos una aplicación de escritorio y una web, se empezaron a considerar los factores más relevantes para tomar la mejor decisión con respecto a qué módulo implementar en cada una de las aplicaciones. Finalmente, concluimos que la sección de mantenimiento sería realizada en la aplicación web, pues se tomó en cuenta que esta se iba a realizar con Nodejs, tecnología la cuál estábamos por estudiar y empezar a desarrollar. Las otras dos secciones se realizarían en la aplicación de escritorio.

viernes, 20 de marzo de 2015

Viernes 20/03/2015 (Organización del Proyecto)

Tiempo invertido: 2 horas y 30 minutos, aproximadamente.

15:00-17:30
Con base en los resultado obtenidos el día Jueves 20/03/2015, procedimos a realizar un análisis exhaustivo de los mismos para concluir finalmente con los medios que se utilizarían para desarrollar la aplicación web y la aplicación de escritorio. 
La aplicación de escritorio sería realizada en Java, puesto que nos parece que dicho lenguaje de programación tiene muchísimas capacidades que podríamos aprovechar en la elaboración del proyecto. Utilizaríamos NetBeans IDE 8.0.2 como el IDE para el desarrollo de la aplicación. Concluimos proponiendo el uso de MVC como parte del diseño, junto con el patrón Singleton, los cuales nos parecen de mucha relevancia para una implementación eficiente y elegante.
Para la aplicación web se decidió investigar a cerca de la tecnología fresca y novedosa Node.js, la cual es una plataforma de software que se basa en Javascript.

jueves, 19 de marzo de 2015

Jueves 19/03/2015 (Organización del Proyecto)

Tiempo invertido: 2 horas, aproximadamente.

11:30-13:00
Análisis y desarrollo parcial de cada uno de los módulos de la aplicación, según la descripción dada por el profesor Franco Quirós, de manera que se tuvieran claro la prioridades y problemas a resolver durante el proyecto. Como resultado se obtuvo información suficiente, a partir de la abstracción realizada previamente, para distribuir las labores a realizar entre el equipo de trabajo y la organización del proyecto. 

18:00-19:00
Se empezó a discutir la manera de organizar la aplicación web y la aplicación de escritorio con respecto a los resultados obtenidos a partir del desglose de la especificación del problema, de manera que el trabajo por realizar empezara a tener la forma y estructura correspondiente para lograr todos los objetivos propuestos.

miércoles, 18 de marzo de 2015

Miércoles 18/03/2015 (Instalacion)

Tiempo invertido: 1 horas y 30 minutos, aproximadamente.

18:00-19:30
Procedimos a descargar la versión SQL Server 2012 Standard Edition with Service Pack 1 (x86), de la página de la alianza con Microsoft que nos ofrece la Escuela de Computación de nuestro prestigiado Instituto. 
Una vez completada la descarga, se continuó con la instalación de dicho programa. Se complicó la instalación por la gran variedad de contenido que se puede agregar, no se conocía con exactitud que características instalar y cómo configurarlas. Finalmente concluyó el proceso, resultando en un éxito gracias a una guía de instalación encontrada en YouTube (url: correspondiente: https://www.youtube.com/watch?v=udpvZv_C7js).




martes, 17 de marzo de 2015

Martes 17/03/2015 (Organización del Proyecto)

Tiempo invertido: 1 horas y 30 minutos, aproxidamente.

07:30-08:30
Desarrollo del modelo de la base de datos en clases, mientras se leía la especificación del proyecto, a manos del profesor Franco Quirós.  Comprendimos lo necesario de práctica exhaustiva de elaboración de modelos para concretarlos con naturalidad.

21:00-22:30
Análisis exhaustivo del problema y del modelo desarrollado por el profesor. Se decidió realizar el modelo físico de la base de datos, según el modelo conceptual que se confeccionó en clases y se procedió a buscar la versión del MS SQL SERVER correspondiente para trabajar durante el proyecto.