Documentación Organizer v1.0

 

 

PROYECTO:

Organizer v1.0

AUTOR:

Javier Enrique Rodríguez Albornoz.

ROL:

9721041-1

 


1. DESCRIPCION GENERAL DEL PROBLEMA:

Organizer es una simple agenda que despliega un calendario, configurado respecto a la hora del sistema, y permite almacenar compromisos u obligaciones futuras que una persona pueda tener en distintas fechas determinadas. Solo basta hacer click en la fecha determinada, y en la ventana que aparece puede almacenar sus compromisos. Una vez almacenado, se marca el dia, recordándole el evento.

 


2. ANALISIS DEL PROBLEMA:

El modelo del problema se basa inicialmente en adquirir la fecha del sistema. Una vez dibujada la hoja del calendario en la ventana, se desean los siguientes comportamientos:

HOJA DE CALENDARIO:

Indicación del día actual, mostrado de un color distinto a los demás días.

- Indicación de los días en que habrá un compromiso o evento. Esto se mostrará cambiando de color  el  número de  días correspondiente.

  (Ambos tópicos anteriores permiten una intuitiva visualización).

El programa permite además almacenar eventos futuros para meses posteriores. Para ello se dispone de botones de avance y retroceso. Cada click del botón avanza o retrocede un mes, según sea el caso.


- Al presionar y soltar el botón del mouse, se despliega una ventana que contiene un campo de texto. Esta ventana despliega la fecha del día clickeado, un campo de texto para almacenar los datos, y dos botones: uno para salvar el evento y otro que borra el evento para ese día.
 
- El almacenamiento y despliegue de eventos se lleva a cabo a través de un archivo, el que contendrá todos los compromisos en un año determinado. Al cambiar de año, se crea un nuevo archivo. El nombre de archivo creado lleva por nombre "numero de año.bd".


ETIQUETAS ANEXAS:

Además del despliegue de la hoja de calendario, se muestran además otras etiquetas:

  -  NOMBRE DE MES   NUMERO DE AÑO (4 cifras)
 
  -  NOMBRE DIA ACTUAL
    - *FECHA ACTUAL (Formato: Día.Mes.Año)
 
  -  HORA ACTUAL (Esta última se actualiza segundo a segundo)
  - *NUMERO DE DIA EN EL AÑO / NUMERO DE DIAS TOTALES DEL AÑO (365 ó 366, dependiendo si el año es bisiesto o no)
 
  - *NUMEROS DE DIAS QUE HAN PASADO / DIAS RESTANTES PARA QUE TERMINE EL AÑO
   
*: (En estas etiquetas, quizás no se entienda la forma en que se despliegan. Es por ello que se añaden textos de indicación para estas etiquetas. Tan sólo se debe dejar el puntero del mouse sobre alguna de ellas, y se mostrará el significado de los campos.
   
Tanto la hoja del calendario como las etiquetas mencionadas se actualizan cuando se presiona el botón de avance o retroceso.(Salvo HORA ACTUAL, obviamente por que se actualiza cada segundo).

Además al llegar las 12:00 AM, se debe desplegar en pantalla el cambio de día, mes o año. Por ende, se actualizan tanto la hoja de calendario como las etiquetas.

Los botones de avance y retroceso de mes, también contienen textos indicativos al colocar el mouse por alguno de los dos.

 

 

3. DIAGRAMA FUNCIONAL:

 

El programa se compone de dos clases principales. Organizer y APP. La primera esta encargada de dibujar la hoja de calendario y etiquetas, además de cargar el archivo numero_de_año.bd. La segunda clase es la encargada de mostrar una ventana secundaria, en la cual pueden escribirse los compromisos, y el posterior almacenamiento en el archivo.

 

El diagrama funcional general del software se muestra a continuación.


      


      Figura 3.1  Diagrama funcional general del software.

 

 

4. DIFICULTADES EN EL DESARROLLO DEL SISTEMA:

Un problema que se tenía en el desarrollo del software y que ya está resuelto, se producía en la implementación de los botones de avance y retroceso. Al presionar un botón, debe redibujarse todo el nuevo mes. Al hacer esto, se producía que al actualizar la ventana (que se produce cuando se tapa la ventana con otra, o se minimiza y luego se maximiza, etc), producía que se redibujara la posición de los números originalmente mostrados antes de avanzar o retroceder.

El problema es que cada vez que se invocaba a la función que redibujaba, se estaban creando nuevos objetos y se estaban dibujando encima de los objetos previos. Pudo verse de que el problema se debió a una implementación no muy buena.

La solución entonces, fue que previo a la llamada a la función que dibuja, se haga una limpieza de los objetos anteriores. De esta forma cada vez que se invoca a la función se puede decir que parte "desde cero" y por ende el problema de actualización de los objetos en la ventana principal se pudo resolver.

 

 

5. CONCLUSIONES GENERALES:

Nuevamente se puede corroborar lo poderoso del lenguaje JAVA y todas las herramientas que nos ofrece para la manipulación gráfica. El objetivo principal de este proyecto era conocer acerca de estas herramientas, de tal manera de llevar a cabo la solución de un problema específico.