L/ MARTNEZ ALUMNO : MIGUEL ASESOR ; PERIODO DE REALIZACI~N : DESCRIPCION GENERAL MEN c. LIDIA TREJO FLORE3 88-0 - 8 9 ~ : SISTEMADE TURBO C BASE VER. DE 2.0 DATOS IMPLEMENTADO Y CON EN BTRIEVE VER 4.1 a 3 Casa abierta al tiempo ’ UNIVERSIDAD AUTONOMA METROPOLITANA - I Z T A P A L A P A LICENCIATURA EN COMPUTACION ! CONTENIDO. IOBJETIVOS . IREQUERIMIENTOS DESARROLLO Y METODOLOGíA SEGUIDA JUSTIFICACI~N INUEVOS REQUERIMIENTOS RESULTADOS BIBLIOORAFíA MANUAL DE USUARIO OBJETIVO, El objetivo contribuya del es sistema de departamentos; a la tarea proporcionar administrar un una herramienta centro de que operaciones en cada uno de ellos tiene asignados ciertos proyectos o actividades. Esta contribución se logra mediante el control de inforrnacion que entra y sale a traves de las actividades y del tiempo de recursos asignados a cada una de ellas organizado El realiza el llevar un una recursos un cabo centro tener de planescion o de ,similar. mermen Asi mismo tiempo una para la ellas las desempeño centro de control [por de de el cualquier buen computo humanos ,recursos botella que asignar a de ejem,) que planeacion de capacitacion de al ayude a y evitar centro operaciones actividades permite maquinas del las administrador optimizar los cuellos de electronico lleve que las las de una tareas personas que computo organizacion diarias que permite laboran en el, el poder desarrollar nuevas actividades, nuevos sistemas, los Analizando de recursos, justificar humanos. la reportes y estadisticas sea en forma personal compra de equipo y/o ya la de o uso Y departamental contratación de utilización se puede recursos 091218 REQUERIMIENTOS Dentro DEPiNDEN de hay ciertas del conjunto de ACTlVlDAOES existen algunas la realización previa de una o más, esto significa actividades que no podrán realizarse mientras no que que se haya[n 1 concluido la[ s 1 actividad(es 1 de la cual depende[ n 1. Es clasificadas importante mencionar por DEPARTAMENTO I que Cada las actividades departamento tiene estan asignada una persona a su cargo, se puede Dado pues un departamento actividades que en este se realizan y la dependencia entre ellas. saber todas tiene un RESPONSABLE de ejecución de cada actividad, no siempre es este quien la realiza. El responsable de departamento tiene tambien sus propias actividades a ejecutar, Se las pero cada Un primer requerimiento es saber la fecha próxima de ejecución de cierta actividad [siendo dependiente o no) y para ello se tiene una cierta periodicidad o frecuencia de realización de cada una. La fecha de próximo proceso de una actividad base a su fecha establecida inicialmente mas validando los dias hábiles de un CALENDARIO que se haya fijado, se su requiere proporcionar dicho calendario en el cual hábiles y los que no lo sean, actualización dias que Se De alguna manera y sale de cada actividad, se un se debe Se debe reportar en una junto con su fecha planeada y modulo puedan para la indicar los especificar BITACORA su fecha la real la información calcula en periodicidad, que de sean entra actividad que se realiza de proceso as¡ como la duracion de la misma, Esto permite tener la contabilización del tiempo de máquina utilizado y /o subutilizado en periodos dados , ademas de los recursos humanos que efectivamente intervinieron en cada actividad realizada, - 091218 Se requiere de reportes para un cierto analisis , estos reportes se obtienen basicamente de las actividades registradas. Reportes por departamento, entre otras cosas para tener un control ellos Se requiere tambien de ciertas estadisticas que sobre indiquen las actividades que se deberán realizar durante diferentes rangos de fecha o periodos de tiempo. Por Ultimo informacián del trabajo reportes por responsable teniendo as¡ desempeñado por cada persona, I Actividades I un actividades que en cuenta que este rango de debe llevar a cabo una Planeación de calendario de actividades 1, es decir, analizar las se realizen en un cierto rango de fechas, Tomando una actividad puede aparecer mas de una vez en fechas Se Se requiere como un actividades, tambien catalogo de de un cada Se necesitan consultas consutas de actividad por actividad especificada,, Se debe llevar una catalogo de cada y actividad de Planeación de Información actividad as¡ como una Planeación que es generada en cada actividad, que información entra y sale de cada actividad. en forma resumida responsables de actividad Por responsable y dependencias en cada planeacián Dicho departamento se requiere que de esto almacenar asi de departamento , de una se requiere Producción O significa saber información cada actividad departamento, responsables as¡ como actualización de toda esta esta información para tener as¡ herramienta en la administración de un centro de operaciones. de la una DESARROUO Y METODOLOGIA SEGUIDA entonces un desarrollo Se necesiti cuál se implemento en una computadora (softwarel, I toda BASE de programacion el El la software que permite el manejo, actualizacion y control de información que este sistema requiere es un SISTEMA DE DE DATOS el cuál permite trabajar o tratar esta información terminos abstractos, sin la computadora lo almacena. en necesidad de atender la forma en que Para poder definir las estructuras de datos que constituyen un Sistema de Base de DatosISBDl tipico, as¡ como sus propiedades, primero se determinó la clase de información que el SBD almacena. Para justificar lo anterior se propone un Modelo de Entidades y Asociaciones (MEA1 con el que de manera intuitiva se tiene cierta madelaciún de situaciones del sistema requerido . Se propone un primer MEA, el cual una normalizado a travis del Modelo Relaciona1 tendrá los objetivos del sistema I MESA DE CONTROL. El Modelo Relacional correspondiente es el siguiente vez que que cumplir sea con I R( no -actividad ,cve -respons -real ,duracion ,mes -planeado , dia -planeado ,mes -real ,dia -real ,no -depto ,desc -depto , respons -depto ,desc -actividad ,tipo -actividad ,frecuencia , informacion -entra ,information-sale ,cvemrespons,nombre 1 I Dependencias Funcionales en el modelo : no -actividad no -depto cve mrespons no -actividad cve -repons -real ,duracion ,mes -planeado , dia -planeado ,mes -real ,dia -real, 1 desc -depto ,respans -depto, 1 nombre, 1 desc -actividad ,tipo -actividad , fecha -planeada ,frecuencia , informacion -enira ,information-sale , no -act -dependiente ,no -act -independient, mm-) -- -- - Normalización del modelo : Todos los dominios son simples No hay dependencias parciales +e No hay dependencias transitivas ic * - esta en IFN. está en ZFN, está en 3;N. El MEA Normalizado es el mismo que el propuesto inicialmente. Con lo anterior queda concluido de datos, (ver gráfica en la siguiente hoja1 el diseño lógico de la Para llevar a cabo la descripción de como se comunican si las distintas partes del sistema en terminos de flujos se auxilió de una herramienta de modelación que información, los Diagrarnas de Flujo de Datos [DFDI, Como parte del diseño lógico de procesos se tienen siguientes MODULOS A DESARROUAR : í I Alta-Actividad, í 1 Baja -Actiddad, í 1 Modifica -Actividad t 1 Actividad Registrada. í 1 Consulta por Departamento í 1 Consulta por Responsable, í 1 Consulta por Dependencias í I Alta =Departamento í I Baja -Departamento. í 1 Modifica -Depar tamento. t I Alta -Responsable, t I Baja -Responsable í I Modifica -Responsable. í 1 Reporte-Actividad* t 1 Reporte -Actividad por Dependencias í I Reporte Actividad por Rango, í 1 Reporte Departamento. í 1 Reporte Responsable. t I Reporte Bitacora. í I Estadisticas. t 1 Calendario. I I I I I base entre de son los M E M DE CONTROL mesglaneado diaglaneado mes ,re a 1 dia-real In O REIILI~L cue-respons nombre DiagrnMa no-depto desc-depto r e s po n s-de p to L RESponCLBLE de Entidades no-acti v i dad diaslaneado f reCuenc i a infomacion-entra inf o m a c i on-sal e Y nsociaciones La organización que guarde cada uno de estos mdduios dentro del sistema se le conoce como estructura, Es aqui donde se utilzan los Diagramas de Estructura [DEI para establecer los niveles en donde se ubican los módulos que componen un organizativos sistema, as¡ como las relaciones entre ellos. Por último se deben tomar en cuenta decisiones de programación que conciernen al contenido de la base de datos, accesos y organización de archivos lo anterior queda establecido al definir los tipos de archivo t tabla I y la descripción del contenido de los registros que lo forman, es decir, la descripciun de sus campos, la definicion de llaves de acceso a las tablas, Archivos tDfl Todo esto queda contemplado en el Diseño Físico de de la siguiente manera : tabla I DEPENDENCIA! tipo : de Trabajo contenido : ENTERO [llave 01 Num Actividad Dependiente Num , Actividad Independiente ENTERO (llave I 1 total de bytes : 4 [por cada registro1 I tabla : DEPARTAMENTOS contenido : Num Departamento Descripcion del Departamento Responsable del Departamento total de bytes I 62 tipo : Maestro tabla I CALENDARIO contenido : Mes Dia Indicador de Habilidad total de bytes I 5 tipo tabla iRESPONSARüS contenido : Clave del Responsable Nombre del Responsable total de bytes : 32 ENTERO (llave 01 CADENA (301 CADENA (301 I de Transacciones [llave 01 ENTERO (llave 11 CARACTER [llave 21 ENTERO tipo I Maestro [llave O1 CADENA t 30 I ENTERO tabla I BITACORA contenido : Num, Actividad Responsable Real Duración de Actividad Mes Planeado de Ejecución Dia Planeado Mes Real Dia Real total de bytes : I4 tipo I Maestro [llave 01 [llave 11 [llave 2) [llave 31 ENTERO ENTERO ENTERO ENTERO ENTERO ENTERO ENTERO [llave 41 tabla : AClivlDAD tipo I Maestro contenido : Num. Actividad ENTERO [llave 01 Descripcion Actividad CADENA (501 Tipo de Actividad CARACTER Mes Planeado ENTERO [llave 41 Dia Planeado ENTERO Frecuencia CARACTER [llave 31 lnformacion que Entra de ella CADENA (501 lnformacion que Sale CADENA 1501 Num , Departamento ENTERO [llave 11 Clave de Responsable ENTERO [llave 21 total de bytes I 162 La definición de estas tablas directamente en programaciun C ' con el que se hizo el sistema quedo como sigue /* ---------- typedef REGISTRO BUFFER ACTIVIDAD ---------- el lenguaje I */ struct 4 int no-act; /it key O ; unique */ char desc - a d long -dew -act I ; char tipo -act; int mes -plan ; /a key 4 ; modifable * / int dia -plan ; char frecuencia ; /* key 3 ; modifable w/ char inf -entra[ long -inf .entra 1; char inf -sale[ long -in f -sale 1; de int no-depto; int eve-resp; 1 ; modifable 4 2 ; modifable 4 st =actividadI ). /.rt /* key /* key 1 -1 1 11 REGISTRO BUFFER 11 typedef DEPENDENCIA! 11 11111 11 */ struct 4 int no-act-dep; int no-act mind; /* key o 4€/ key 1 /% */ st -depende ; )I /E - - = - - = = = = = REGISTRO typedef struct BUFFER DEPARTAMENTO -====-==== */ 4 int char desc =depto[long-desc -depto I ; char resp =depto[long m s p Odepto I ; I- /* /* key O num Odepto ; ; unique */ st -depto; 111 - 1 111 typedef - REGISTRO BUFFER n RESPONSABLE 1111111111 */ struct 4 int cve 1respons; /* key O char nom OresponsI long -nom wspons 1 ; I- /* ; unique */ st wspons; REGISTRO =-=-=----= typedef BUFFER BITACORA 11111111111 */ struct 4 int n-act; int resp =real; int duracion; /* key o /* key 1 /* key 2 int mes=pl; /w key 3 #/ */ /* key 4 */ int int int 11 typedef Jc/ dia -pi ; mes -real; dia -real ; I= /* */ st Obitacora; = 0 1 = 1 REGISTRO struct BUFFER CAiENDARIO 1111111111 */ h 4 /* key o /* key I /* key 2 int mes; int dia; char indicador ; I= 4t/ ; modifable -E/ st -calendario ; Cabe mencionar interno de las definicion real de XQL */ que esta Estructuras las tablas tablas es para uso de Datos del sistema, junto con sus indices P que hizo la definición de las se con I A se continuación muestra una copia del módulo principal del sistema codificado en C'. Desde genera que un se existe ambiente utilizan un contempla se Él agradable ello para manual en son donde una se el parte utilizacion uso de del lo ventanas sistema. de una utileria describen cada una Las para de las que funciones la cuál siguientes funciones utilizadas : VC -IniciaVentanas[ I ; VCCrearí ...I ; VC -Abrir[ ventana I ; VC =Borrar[ventana 1 ; W:=Cerrar[ventana 1 ; VC -Eliminar[ventana I ; vc -Titulo[ titulo I ; vc -TipoCursor[ tipo I ; VC -CursorEd posicion I ; VC =Escribecadena[cadena I ; VC -AtributoTexto[ atributo I ; -AlributoZona[ atributo I ; VC -LeeCar[ caracter I ; recomenienda leer el manejo interno de Se manual estas de ventanas solo funciones, As¡ el recomienda vBr el manual de BTRIEVE las llamadas a ETRIEVE junto con sus parameiros. version 4-1 para entender tambien se para entender - "MESA DE CONTROL" (Proyecto Terminal) por: MIGUEL A. CONTRERAS MARTINEZ *>>>>>>>> EL SISTEMA PARA SU EJECUCION REQUIERE BTRIEVE VER. 4.1 ' include "vc-inc.h" include "def-cec.h" * / * definiciones necesarias para las VENTANAS * / / * definiciones comhnes del sistema (como Est.Datos) * / variables globales i i a a m act-pos-blk [long-pos-blkl, dep-pos-blk [long-pos-blkl, a m i m a i i i i m char < < < < < < < < i < < * / i i i i i */ dpto-pos-blk[long-pos-blkl, resp~pos~blk[long~pos_blk3, bit-pos-blk [long-.pos-blkl. calendar~pos~blk[long_pos_blkl; VC-VENTANA / * posiciones de bloque BTRIEVE * / ventana0,ventanal,ventana2.~entma3, ventana4,ventana5,vent-err: / * algunas ventanas a utilizar * / / * modulo global que emite mensajes de error * / void e r r o r 0 ; 'aid protocolo(void) / * modulo que desplega el nombre del autor del sist. * / VC-Abrir(&ventanaO); VC-Abrir(&ventanal); VC-CursorEn(&ventanal.S.O); * VC-EscribeCadena(Bventana1, "POR : "1 : VC CursorEn(&ventanal.4,6); VCIEscribeCadena(&ventanal,"MIGUEL A . CONTRERAS MARTINEZ"): g e t c h o ; / * pausa * / VC-TipoCursor(&ventanal.l); VC-Cerrar(&ventanal); VC-Eliminar(&ventanal); / * se define ventanas a usar * / oid crear-ventanas(void1 c VC_Crear(&ventanaO,vc_ForAzul:vc_BakGris,vc-ForAzul~vc-BakGris, 1.1,24,79,2.2,"C. E. C. " 1 : / * inicio * / VC_Crear(&ventanal,vc_ForAmarillolvc_BakNegro,vc-ForGris~vc-BakNegro, 15,30,8,40,2, O, : / * mi nombre * / VC~Crear(&ventana2.vc_ForBlancolvc_BakAzul,vc~ForAzul~vc~BakGris, x - v ~y-v2, , no-renv2.no-colv2.2.O , "MENU PRINCIPAL" ) ; VC-Crear(&ventana3,vc~ForBlanco~vc-BakAzul,vc-ForAzul~vc-BakGris, x v3,y-v3,no-renv3,no-colv3.2,O , 1 ; / * submenu * / VC_Crear(&ventana4,vc_ForAmarillo~vc-BakNegro,vc-ForBlanco~vc-BakNegro, x - v ~ y-v4, , no-renv4,no-colv4,2.1," * ' ) ; / * captura 1 * / VC_Crear(&ventana5,vc_ForAmarillolvc_BakNegro,vc~ForGr~s~vc~BakNegro, x - v ~ y-v5, . no-renv5.no-colv5.2.1,'"' ; / * captura 2 * / VC_Crear(&vent_err,vc-ForBlanco~vc-BakR@j@,vc-ForBlanco~vc-BakRojo, I"') '"I x-verrly-verr,no-renverr,no_colverr,2,1," ERROR 1 * se eligen opci6nes Did elige-opcion(void) m a a m m a m m m m #define #define #define #define #define #define se ejecutan y ~ m m m m ~ * /~ a * ");/*errores*/ ~ activ O depto 1 respons 2 report 3 estadis 4 calendar 5 char car,opcion; short ind=O,ind-aux; void actividad(); void departamento( 1; void responsable(); void reporteso; void estadisticaso; void calendario(); VC_Abrir(&ventanaS); VC~AtributoTexto(&ventana2,vc~ForGr~s ! vc-BakAzul); VC_TipoCursor(&ventana2,0); esc-menulo; AtributoZona(vc-ForBlanco ! vc_BakGris,(2*ind) + x-v2+3.y-v2+2.1.16); do { do c ind-aux = ind; VC-LeeCar(&car,&opcion); switch (opcion) < case flecha-dn : case flecha--up : if } ( ind = (ind + 7 ) % 6: break ; ind = (ind + 5 ) % 6 ; break ; ind ? = ind-aux > { VC~AtributoTexto(&ventana2,vc~ForGris I vc-BakAzul); -AtributoZona(vc-ForBlancolvc_BakGris, (2*ind) + x-v2+3,y-v2+2,1,16); } 1 while ( (car ! = ENTER) && (car ! = ESC) 1; if (car ! = ESC) { switch (ind) case activ case depto : case respons : VC_Abrir(&ventana3); VC-Titulo (&ventana3,"ACTIVIDADES" ) ; actividad(); break ; VC_Abrir(&ventana3); VC-Titulo (&ventana3,"DEPARTAMENTOS") ; departamentoo; break: VC_Abrir(&ventana3); VC-Titulo (&ventana3,"RESPONSABLES" ) ; responsableo; break ; case report : VC_Abrir(&ventana3); VC-Titulo (&ventana3,"REPORTES" ; reporteso; break ; case estadis : VC Abrir(&ventana3); VCITitulo (8Lventana3."ESTADISTICAS" ) ; estadisticaso; break ; case calendar: VC~Titulo(&ventana3,''CALENDARIO"~: calendario( 1; break ; 1 / x switch * / VC_Borrar(&ventana3); VC_Cerrar(&ventana3); 1 1 while (car ! = ESC): Did esc-menul( / * despliegue de opciones del menu principal * / VC_CursorEn(&ventana2,3,4); VC-Escribecadena (&ventana2, ACTIVIDAD" 1 : VC_CursorEn(&ventana2,5,4); VC~EscribeCadena(&ventana2,''DEPARTAMENTO"~; VC-CursorEn(&ventana2,7.4); VC- Escribecadena (&ventana2 , "RESPONSABLE" ) ; VC-CursorEn(&ventana2.9,4); VC-Escribecadena (&ventanaS," REPORTES" 1 ; " VC~CursorEn(&ventana2,11,4); VC-EscribeCadena(&ventanaZ,"ESTADISTICAS"); VC-CursorEn(&ventana2,13.4); VC-Escribecadena (&ventana2,"CALENDARIO" 1; / * se cierran ventanas utilizadas * / Did terminar-ventanas(void1 VC-TipoCursor(&ventanaS,l); VC-TipoCursor(&ventanaO,l); VC_Borrar(&ventana2); VC-Borrar(&ventanaO); VC-Eliminar(&vent-err); VC_Eliminar(&ventana5); VC_Eliminar(&ventana4); VC_Eliminar(&ventana3); VC_Eliminar(&ventana2); VC-Eliminar(&ventanaO); modulo principal Did main (void) m m n a n m n m m a 1: { void void void void void protocolo0; crear-ventanaso; elige-opcion0: esc-menulo; terminar-ventanaso; m m m m m n e m m m */ clrscr(1,1,25,80,vc~Normal:vc_Normal); / * limpia la pantalla VC-Iniciaventanaso; / * se inicializa el uso de ventanas crear-ventanaso; / * se definen algunas ventanas a usar protocolo0: / * se despliega mi nombre y del sistema elige-opcion0: / * se eligen opciones y se ejecutan terminar-ventanaso; / * se cierran las primeras ventanas usadas */ */ */ */ */ */ Ahora se describir a brevemente las movimientos directamente estan relacionados con ACllVlDADES mostrando así respectivos diagramas y la codificacion en C ' , ve sus Alta de Actividad. Se verifica que la actividad no exista, y que tanto el departamento coma el responsable indicados si existan para lo anterior y el resto de campos a cubrir se hace su respectiva validación de acuerdo a parametros internamente establecidos como por ejemplo en mes y dia sólo se aceptan numeros no mayores a 12 y 31 respectivamente, o bien al especificar la frecuencia con que se realiza la actividad solo se acepta un rango de valores establecidos indicados en la pantalla, si se declara en forma dependiente, se requiere en ese instante una actividad capturar las actividades de las que ella depende, actualir andose así la tabla de Dependencias automaticamente I Baja Actividad, Se verifica que la actividad exista, y si as¡ es, entonces se trae el registro correspondiente y si se reafirma el movimiento entonces se procede a la baja, en caso de que la actividad sea una dependencia de otratsl se dara un aviso para poder reafirmar, o no, nuevamente la baja. Modiíicacitin de Actividades. Se verifica que la actividad exista y una vez que se sabe que existe se trae el registro correspondiente y se procede al cambio, no se permite modificar el número de actividad, sólo los demas campos, En caso de que una actividad pasa de tipo Independiente a tipo Dependiente, en ese instante se capturan las dependencias y en caso contrario se borran dada una confirmación, Como se puede ver este último proceso funciona a la de consulta, ya que en un momento dado se puede dar el actividad sólo para ver el contenido de dicho registro, modificación alguna, Ahora a estos muestra un procesos descritos, se refinamiento as¡ como de el los DE, DFD ver como número de sin hacer correspondientes - Consulta por Departamento. Dado un departamento se que exista, y si es as¡ se desplegaran todas aquellas que tengan asociado dicho departamento, Consulta por Responsable. Analog0 al dado un responsable verifica que exista, desplegarán todas aquellas actividades que responsable, anterior , Y si tenga verifica actividades este proceso es así se asignado ese se da una actividad y desplegaran todas aquellas Consulta por Dependencias, Una vez que se verifica que esta exista , se actividades de las que depende para su realización, Actividad Registrada, Cada vez que una actividad se concluya, se deberá indicar, dandola de alta en Bitacora para esto, se hace la verificacion y se actualiza este registro ahora indicando el responsable que realmente la realizo as¡ como el departamento, ademas de la fecha real de realization, De manera automatice se calcula la fecha de proximo proceso y se procede a la modificacidn ahora en la tabla de Actividades. Ahora se muestra un refinamiento a estos procesos descritos, as¡ como los DE. de los DFD correspondientes Por ultimo dentro de ACTlVlDADES se anexa en C ' correspondiente a los movimientos hasta ahora descritos. un listado el emirir los Despues se de error en C ' anexa modulo encargado de fuente mensajes A 1ta- Act i u i dad NO. ACT, VALIDO 3 NO. ACT. VALIDO DATOS 4CTm DATOS ACT. V A L I D O S 4 depmtuwnto c 5 act i u idades DInmm DE FLUJODE MTOS(D.P.D.) PROCESO I Baja-Rct iu i dad act i uidades I 2 ACTIVIDAD ACT, VALIDO II b 3 oJ I NO. DEPENDENC I A S I' RESPUESTA 1 RESPUESTI rmes tila act 1 v idad act i uidad 5 actividades Dinam DE FLUJO DE I rmros (D.F.D.) I DE ESTRüCiUM (D.E.) I 1 Modi f i ca-act i u i dad act i u i dades 1 ual ida no. act. DE?EHDLNCIAS 1 DITOS ueiri fi ca D1tOS VALIDOS nswnsable f actualiza act i u i dad I dependencias u 5 t I actiuidades --I act i u idades DIamm DE FLUJO DE míos (D.P.D.) PRILIPAL I 0 Drnmm DE ESTRUCTURA (D.E.) Consulta por DepartaMento dcapartuwn to NO. DE?TO. VALIDO encuentra 1 mes tra act i u i dades 3 ACTIVIDADES act i u idades Dinam DE FLUJO DE mros (D.P.D.) - - - w p Consulta por Responsable NO I RESP. NO. RESP. V A L I D O 1 mes tsa mr act i v i dades -J act i v i dades Dumm DE FLUJO DE mios (D.F.D.) . PRINcIPnL I Lr' snu m (D.E.) 3 Consulta por Dependencias act iu idader 1 t I dependent i as Drnumm DE SUJO DE mros + 1 (D.F.D.) o LCTIVIDLDES CIct i u i dad Regi s t r a d a FECHA ACT. VALIDA D4TOS VALIDOS VIL, EN B I T A C O R A t NOSACT. VALID4 6 4 cal cndario bi tacora bi tacora DIAORllCYl DE PWJO DE #TOS PRINCIPAL (D.F.D.) include "vc-inc.h" include "def-cec.h" / * definiciones necesarias para el uso de ventanas * / / * definiciones para uso interno del sistema * / - I: renombrado interno de archivos arch1 "activida.dta" arch2 "depende.dta" arch3 "depto.dta" arch4 "respons.dta" arch5 "bitacora.dta" arch6 "calendar.dta" amaamma iefine iefine iefine iefine iefine iefine m m 1 1 @ n B x / variables globales 1 1 ~ 1 ~ m* /m ctern VC-VENTANA vent_err,ventana5,ventana4,ventana3; / * Id. Ventanas * / ttern a c t ~ p o s ~ b l k E l o n g ~ p o s _ b l k 3 , / * posicion de bloque para BTRIEVE * / dep-pos-blkClong-pos-blkl , I: a a a m m m m dpto~pos~blk~long~pos_blkl. resp-pos-blk[long-pos_blkl, bit-pos-blk[long-pos-blkl, calendar-pos-blkilong_pos_blkl; )id actividad (void) -c / * modulo de control de los movimientos en ACTIVIDAD * / char car,opcion; short ind = 0,ind-aux; void esc-menu20; void alta-actividad( ) ; void baja-actividad(); void modifica-actividad(); void consulta-actividad(): void act-realizada(); void termina0; VC~AtributoTexto(&ventana3,vc~ForGris~vc~BakAzul); VC-TipoCursor(&ventana3,0); esc-menu20; AtributoZona(vc-ForBlancotvc_BakGris,(2*ind) + X_v3+2,(Y_V3+2),1,16); / * repite hasta elegir un movimiento o dar ESC * / do c do c ind-aux = ind; VC-LeeCar(&car,&opcion); switch (opcion) < if 1 ( c case flecha-dn : case flecha-up : ind = find + 6 ) % 5: break ; ind = (ind + 4) % 5; break ; ind ! = ind-aux 1 VC~AtributoTexto(&ventana3,vc_ForGris:vc~BakAzul~; -AtributoZona(vc-ForBlanco:vc_BakGris. (2*ind) + x_v3+2,(~_~3+2).1,16); 1 > while ( (car ! = ENTER) && (car ! = ESC) if (car ! = ESC) >; c 1 > > / * movimien-o elegido * / switch (ind) I case alta : case baja : case modifica : case consulta : case realizada : 1 VC-Titulo (&ventana4," " ) alta-actividad(): break ; baja-actividad(); break ; modifica-actividad(); break ; consulta-actividad0; break ; act-realizada(); break ; - ; while (car ! = ESC); lid esc-menu2 (void1 / * despliegue del menu : ACTIVIDAD * / VC-CursorEn(&ventana3,2.4): VC_EscribeCadena(&ventana3," ALTA" 1; VC-CursorEn(&ventana3.4,4); VC_EscribeCadena(&ventana3, BAJA" 1; VC_CursorEn(&ventana3,6,4); VC-Escribecadena(&ventana3,"MODIFICACION"1; VC_CursorEn(&ventana3,8,4); VC_EscribeCadena(&ventana3." CONSULTA"); VC-CursorEn(&ventana3.10,4~; VC-Escribecadena (&ventana3,'* BITACORA" 1 ; 'I )id alta-actividad(void) / * registra nuevas acti idades, I slidando *, ' { short res = ' * ; st-actividad reg-act; int status; int key-buff : short correcto[lOI; int buf-len; short captura-dependencia(); void abrir(); void cerrar(); buf-len = sizeof (reg-act1; VC-Abrir(Bventana4); VC_Titulo(&ventana4. ALTA ACTIVIDAD 'I) ; VC-CursorEn(&ventana4,19.39); printf ( un momento. . . '' 1 ; 'I abrir ( do ; c escr-reg-acto; / * da ALTAS hasta ESC * / VC_CursorEn(&ventana4,19,39); printf ("[ESCI = Regresar"); act-reg-inicializa(&reg-act,&correcto); captura-reg-act(&reg_act,&res,corres,correcto,alta); VC_CursorEn(&ventana4,19,39); printf ( " . if(reg-act.tipo-act == 'D' && res ! = ESC res = captura_dependencia(reg-act); / * captura con - validaciones * / 1 V ) if E ( / * de que actividades - depende? * / (reg-act.tipo-act == '1') / * dar de alta nuevo registro * / VC CursorEn(&ventana4,19,42): printf ("Insertando.. . ''1 ; status = BTRV(inserta,act-pos-blk,&reg-act,&buf-len, &key-buff,key-primaria); if ( status ! = ok ) error(2) ; / * Error al insertar el registro * / else{ VG-CursorEn(&ventana4,19,42); printf("Registr0 insertado con exito . . . " 1; delay(1000): (res == ok) :: 1 1 VC_Borrar(&ventana4); - 1 while ( res ! = ESC ; VC_TipoCursor(&ventana4,0); VG-CursorEn(&ventana4,19,39); printf ( " un momento. . . " ; VC_Borrar(&ventana4); VC-.Cerrar(&ventana4 ; cerrar ( ) ; Did abrir (void1 / * se abren tablas utilizadas * / st-actividad reg-act; st-depto reg-dpto; st-respons reg-resp; int b u f - l e n l . b u f - l e n 3 , b u f _ l e n 4 ; short status: buf-lenl = sizeof(reg-act); buf-len3 = sizeof(reg-dpto); buf-len4 = sizeof(reg-resp): status = BTRV(abre,act_pos_blk,&reg~act,~buf-lenl,archl,key-primaria): if(status ! = ok)C error(4): / * error al abrir la tabla * / termina(); 1 status = BTRV(abre.dpto_pos-blk,&reg-dpto,&buf-len3,arch3,ke~-~rimaria) ; if(status ! = ok)C error(4); / * error al abrir l a tabla * / termina(); 3 status = B T R V ( a b r e , r e s p ~ p o s ~ b l k , & r e g ~ r e s p , & b u f ~ l e n 4 , a r c h 4 ~ k e y ~ ~ r i m a r i a if(status ! = ok)C error(4): / * error al abrir la tabla * / termina(); Did cerrar(void1 ' / * se cierran tablas utilizadas * / st-actividad reg-act; st-depto reg-dpto; st-respons reg-resp; int buf-lenl,buf-len3.buf-len4; short status; buf-lenl = sizeof(reg-act); buf-len3 = sizeof(reg-dpto); buf-len4 = sizeof(reg-resp); status = B T R V ( c i e r r a , a c t _ p o s ~ b l k y & r e g ~ a c t , & b u f ~ l e n l y a r c h l y k e y ~ p r i m a r i a ) ; if(status ! = ok){ error(3) ; / * error al cerrar la tabla * / termina( 1; } status = B T R V ( c i e r r a , d p t o ~ p o s ~ b l k y & r e g ~ d p t o y & b u f ~ l e n 3 y a r c h 3 y k e y _ p r ~ m a r if(status ! = ok)C error(3) ; / * error al cerrar la tabla * / termina(); 1 status = BTRV(cierra,resp-pos_blk.&reg_resp,&reg-resp,&buf-len4,arch4,ke~-~rimaria); if(status ! = ok)C error (3): / * error al cerrar la tabla * / termina(); 1 =t-reg-inicializa(reg_act,correct,correcto) t-actividad *reg-act; mrt correctoC101; / * inicialización d e variables * / short ind; for(ind = O ; ind < 10; ind++) correctoCind1 = FALSE; reg-act->no-act = o; reg-act->desc-actCO] = NULL; reg-act->tipo-act = vacio; reg-act->mes-plan = o; reg-act->dia-plan = o; reg-act->frecuencia = vacio; reg-act->inf-entraCOI= NULL; reg-act->inf_sale[Ol = NULL; reg-act->no-depto = o; reg-act->cve-resp = o; ?art captura-dependencia(dependiente1 / * modulo encargado de dar de alta l a s dependencias de una actividad %/ it dependiente ; short correcto,status,res,caracter; st-depende reg-dep; int key-buff; int buf-len; char act-indepC41; int independiente; short tupla-valida(); short car,flag=l; IC-Abrir(Bventana5); /C-TipoCursor(&ventana5,1); IC-Titulo(&ventana5,'* DEPENDENCIAS " 1 ; nf-len = sizeof(reg-dep); status = BTRV(abre,dep_pos_blk,8reg_dep,&buf_len,arch2,key-primaria); if ( status == ok ) C / * repite hasta ESC */ c reg-dep.no-act-dep = O ; reg--dep. no-act-ind = O ; act-indep[ O 1 = NULL ; VC-CursorEn(&ventana5.2,2); VC_EscribeCadena(&ventana5,"Actividad Dependiente: "1; VC_CursorEn(&ventana5,2,25); e printf ( "%d",dependiente); VC-CursorEn(&ventana5.4,2); VC-Escribecadena (&ventana5,"Clave: " 1 ; VC-CursorEn(&ventana5,13,1); printf ("[ESCI = Regresar") ; do C edita(&correcto,&car,act_indep,4,4,4,8,t-clave,&ventana5); independiente = atoi(act-indep); res = tupla-valida(correcto,car,dependiente.independependiente); > while(res ! = TRUE); if(car ! = ESC1C reg-dep.no-act-ind = independiente; reg-dep.no-act-dep = dependiente; VC-CursorEn(&ventana5,13,1); Insertando.. . " 1 ; printf ( " status = BTRV(inserta,dep-pos-blk,&reg-de~,&buf-len,&key-buff, key-primaria); if ( status ! = ok 1 error ( 2 ); / * Error al insertar el registro * / else{ VC-CursorEn(&ventana5,13,1); printf("Registr0 insertado con exito . . . " 1; delay(1000); flag = ok; 1 3 VC-Borrar(&ventanaS); Jhile(car ! = ESC); ;tatus = BTRV(cierra,dep_pos_blk,&reg_dep,&buf_len,arch2,key~primaria~; .f ( status ! = ok ) / * error al cerrar la tabla * / error ( 31 ; 5 1 se error ( 41 ; rC-TipoCursor(&ventana5,0); /C_Cerrar(&ventana5); *eturn( flag 1 ; / * error al abrir la tabla * / / * regresa un estado * / iort tupla-valida(correcto,car,dependiente,act-indepj / * modulo que regresa si la tupla ya existe o es una tupla con igual no. act. * / iort correcto ; iort car; it dependiente; it act,-indep; st-depende reg-dep; int buf-len; short status; int key-buffer ; buf-len = sizeof(reg-dep); if(car ! = ESC)( if((correcto ! = TRUE); ;(dependiente == act-indep)) ' - / * si la captura fue - incorrecta * / return(FALSE); else{ key-buffer = dependiente; status = BTRV(menor,dep-pos-bIk,&reg_dep,&buf_len,&key-buffer, key-primaria); key-buffer = dependiente; status = B T R V ( i g u a l y d e p ~ p o s _ b l k y ~ r e ~ ~ d ~ ~ . ~ b u f _ l e n . ~ k ~ y ~ b u f f e r l key-primaria); if(status ! = ok) return(TRUE); else{ while((status ! = fin-arch) && (reg-dep.no-act-ind ! = act-indep) && (reg-dep.no-act-dep == dependiente)){ status = BTRV(siguiente,dep_pos_blk,&reg_dep,&reg-depy&buf-len,&key-buffery key-primaria); 1 if((reg-dep-no-act-ind == act-indep) && (reg-dep.no-act-dep == dependiente)){ error(l7); / * registro existente * / return(FALSE1; 1 else return(TRUE); 1 1 else return(TRUE1; / * modulo que da de baja una actividad, validando * / >id baja-actividad(void #define key-prim-sec 2 short res = ' ',ext.car = ' ' ; st-actividad reg-act; int status; int key-buff; short corrects; int buf-len; char actC41; short actividad; short tiene-dependenciaso; buf-len = sizeof(reg-act1; VC_Abrir(&ventana4); BAJA ACTIVIDAD VC-Titulo( &ventana4, I' " 1; VC-TipoCursor(&ventana4,1); status = B T R V ( a b r e , a c t - p o s - b l k , & r e g _ a c t , & b u f _ l e n , a r c h ~ , k e y - p r i m a r i a ) ; if(status ! = ok){ error(4) ; / * error al abrir la tabla * / termina(); 3 VC-CursorEn(&ventana4,1,1); V C _ E s c r i b e C a d e n a ( & v e n t a n a 4 , " N u m e r o de ActividadCdddl"); act[Ol = NULL; VC-CursorEn(&ventana4.19,39); printf ("[ESCI = Regresar") ; edita(&correcto,&res,act,4,1,26,t-~lave,&ventana4); if ( (res ! = ESC) && (correcto == TRUE) I { key-buff = atoi(act); actividad = atoi(act); status = BTRV(igual,act_pos_blk,&reg-act,&buf-len,&keY-buff, key-primaria 1; if (status ! = ok) / * actividad no dada de alta * / error ( 7 ) ; else{ if(tiene-dependencias(actividad1 / * si dependen de ella otras * / VC-CursorEn(&ventana4.7.30); printf("Avis0 : Otras Actividades dependen de E S T A ! ! " I ; delay(1000); > VC CursorEn(&ventana4.1,26); VCIEscribeCadena (&ventana4, escr-reg-acto; escr_campos-act(&reg-act); VC_CursorEn(&ventana4,19,39): printf ( " ") ; VC_CursorEn(&ventana4,9,56); printf ( " [ ESC] = Abortar" 1 ; " "1 ; VC-CursorEn(&ventana4,11.56): printf ( " [OTRA]= Continuar"); VC-LeeCar(&car.&ext); if (car ! = E X ) { VC-CursorEn(&ventana4,19,42); printf ("Dando de baja.. . " I ; borra-dependencias(actividad,key-prim-sec); / * de las que ella- depende * / status = BTRV(borra,act_pos_blk,&reg-act,&buf-len,&actividad, key-primaria); if (status ! = ok) error ( 8 ) ; / * no se proceso la baja * / else{ VC_CursorEn(&ventana4,19,42); printf ( "Registro dado de baja. . . " 1 ; delav(1000); 1 j 1 } VC_Borrar(&ventana4); status = BTRV(cierra,act_pos_blk,&reg-act,&buf-len,archl,ke~-primaria); if(status ! = ok)C error ( 3 ); / * error al cerrar la tabla * / termina(); 3 VC-TipoCursor(&ventana4,0); nort tiene-dependencias(no-act) ?ort no-act ; / * verifica si una act. tiene dependencias * / st-depende reg-dep; int buf-len; short status,respuesta; int key-buffer ; - buf-len = sizeof(reg-dep); status = BTRV(abre,dep_pos-blk,&reg-dep,&buf-len,arch2,key-primaria); if ( status ! = ok ) { error ( 4 ) ; / * error al abrir la tabla * / terminal 1; 3 key-buffer = no-act; status = BTRV(igual,dep_pos-bIk,&reg_dep,&buf_len,&key-buffer, key-secundaria); if(status ! = ok) respuesta = FALSE; else respuesta = TRUE; ; status = BTRV(cierra,dep_pos_blk,~reg-dep,&buf-len.arch~~key-primaria) if ( status ! = ok I C error(3); / * error al cerrar la tabla * / termina(): > return(respuesta1: rra-dependencias(no_act,llave) / * borra las dependencias de una actividad * / iort no-act ; iort llave; #define key-prim 1 #define key-prim-sec 2 st-depende reg-dep ; int buf-len: short status,respuesta: int key-buffer ; buf-len = sizeof(reg-dep); status = BTRV(abre,dep_pos_blk,&reg-dep,&buf-len,arch~,key-primaria); if ( status ! = ok ) { error ( 4 ) ; / * error al abrir la tabla * / termina0: > if(l1ave == key-prim-sec){ key-buffer = no-act; status = BTRV(menor.dep-pos_blk,&reg-dep,&buf-len,&key-buffer, key-secundaria 1 ; key-buffer = no-act; status = BTRV(igual,dep_pos_blk,&reg-dep,&buf-len,&key-buffer, key-secundaria); if(status == ok){ do < status = BTRV(borra,dep_pos_blk,&reg-dep,&buf-len,&key-buffer, key-secundaria); if(status ! = ok)C / * al actualizar dependencias * / error(l5); termina( 1 ; 3 3 status = BTRV(siguiente,dep-pos_blk,&reg_dep,&reg-dep,&buf-len,&key-buffer, key-secundaria); while( (status ! = fin-arch) && (no-act == reg-dep.no-act-ind1 1; 3 3 - key-buffer = no-act; status = BTRV(menor,dep-pos-blk,&reg-dep,&buf-len,&key-buffer,key-primaria); key-buffer = no-act; ; status = BTRV(igual,dep-pos-blk,&reg-dep,&buf-len,&key-buffer,key-primaria) if(status == ok)C do< status = BTRV(borra,dep-pos_blk,&reg-dep.&buf-len,&key-buffer. key-primaria ; if(status ! = ok){ / * al actualizar dependencias * / error(l5); termina( ) ; 3 3 status = BTRV(siguiente,dep_pos_blk,&reg_dep,&buf-len,&ke~-buffer, key-primaria); -while( (status ! = fin-arch) && (no-act == reg-dep.no_act-dep) 1 ; 3 status = BTRV(cierra.dep -pos-blk,&reg-dep,&buf-len,arch2.key-primaria); if ( status ! = ok I C error (31 ; / * error al cerrar la tabla * / termina(); } )id modifica-actividad(void1 #define key-prim / * actuliza actividades , validando * / 1 short res = ' ' ; st-actividad reg-act; int status; int key-buf f ; short correcto[lOI; int buf-len; char actl41,antes; short actividad; buf-len = sizeof(reg-act); VC_Abrir(&ventana4); VC_Titulo(&ventana4," MODIFICA ACTIVIDAD VC-TipoCursor(&ventana4,1); VC_CursorEn(&ventana4,19,39); printf ( un momento. . . 1; abrir( ; do " c " "1; ~ ~~ VC-CursorEn(&ventana4,1,1); VC-EscribeCadena(&ventana4,"Numero de Actividad[dddl"); act[Ol = '\O'; VC_CursorEn(&ventana4,19,39); printf ("[ESCI = Regresar") ; edita(&correcto,&res.act,4,1,S6,t_clave.&ventana4); if ( (res ! = ESC) && (correcto[Ol == TRUE) 1 < key-buff = atoi(act1; actividad = atoi(act1; status = BTRV(igual,act_pos_blk,&reg-act,&buf-lenl&key-buffl key-primaria 1 ; if (status ! = ok) error ( 7 ); / * actividad no dada de alta * / else{ VC-CursorEn(&ventana4.1,S6); VC_EscribeCadena(&ventana4,'' escr-reg-acto; escr-campos-act(&reg-act); antes = reg-act.tipo-act; captura-reg-act(&reg-act,&res,correcto,modifica); / * captura con validaciones * / VC-CursorEn(&ventana4,19,39); printf ; if(reg-act-tipo-act == ' D ' && res ! = ESC 1 res = captura-dependencia(reg_act.no_act.no-act);/* de que actividadesdepende? * / if( (reg-act.tipo-act == 'I' && antes == ID') && (res ! = ESC) ) { / * si era act. indep. y antes era depend. * / VC CursorEn(&ventana4,19,42); printf ("Borrando Dependencias.. . "1 : borra-dependencias(reg_act.no_act.no-act,key-prim); 1 , ) . (I' 'I) > if (res ! = ESC) { VC-CursorEn(&ventana4,19,42); Modificando.. . 1 ; printf etatue = BTHV { so tresi-ri be. a c t - poe- b l k ,&reg-act , &tuf - len , &actividad,key-primaria); if (status ! = ok) error(l0); / * no se proceso la modificacion * / else< VC-CursorEn(Bventana4.19,42); printf ( "Registro modificado. . . " ; delay(1000); 1 (I' > 1 > 'I VC-Borrar(Bventana4); 1 while(res ! = E S C ) ; VC_CursorEn(&ventana4,19,39): printf ( un momento. . . " ) ; " VC_Borrar(&ventana4); cerrar ( ) ; VC-TipoCursor(&ventana4,0); VC_Cerrar(&ventana4); )id act-realizada(void1 .-.. . . . .. i"*_I".I"l.. / * modulo encargado de actualizar actividades y a . ." .. . - realizadas, en la Bitacora * / short res = ' ',ext,car= ' ' ; st-actividad reg-act; st-bitacora reg-bit; st-respons reg-resp; int status; int key-buff,key-buff-bit; short correctoC4l.correct; int buf-len,buf-len-bit,buf-len-resp; char actE41; short registrada-en-bitacorao; int actividad,mes,dia,n-mes,n-dia; char frecuencia; buf-len = sizeof(reg-act); buf-len-bit = sizeof(reg-bit); buf-len-resp = sizeof(reg-resp1; VC_Abrir(&ventana4); VC_Titulo(&ventana4," ACTIVIDAD REALIZADA " 1 ; VC-TipoCursor(&ventana4,1); status = B T R V ( a b r e , a c t ~ p o s ~ b l k , & r e g _ a c t , & b u f _ l e n , a ~ ~ ~ ~ , ~ ~ ~ ~ if(status ! = ok)C error (4 ; / * error al abrir la tabla * / termina(); 3 status = B T R V ( a b r e . b i t _ p o s ~ b l k , & r e g ~ b i t , & b u f ~ l e n ~ b i t , a r c h S , k e y ~ p r i m a r i a ) ; if(status ! = ok)C - error(4); / * error al abrir la tabla * / termina0; 3 status = B T H V ( a b r e , r e s p _ p o s ~ b l k , & r e g ~ r e s p , & b u f ~ l e n ~ r ~ ~ P , a ~ ~ ~ ~ , ~ ~ ~ if(status ! = ok)C / * error al abrir la tabla * / error (4); termina(): 1 do c VC-CursorEn(&ventana4,1,1); VC-EscribeCadena(&ventana4."Numero d e ActividadEdddl"); act101 = '\O'; VC_CursorEn(&ventana4,19,32); printf ("[ESC] = Regresar") ; edita(&correct,&res,act.4,1.S6,t_clave,&ventana~); if ( (res ! = ESC) && (correct == TRUE) c key-buff = atoi(act); status = BTRV(igual,act_pos_blk,&reg-act,&buf-len,&key-buff. key-primaria): if (status ! = ok) / * actividad no dada de alta * / error ( 7 ; elsei actividad = reg-act.no-act; mes = reg-act.mes-plan; dia = reg-act.dia-plan; frecuencia = reg-act-frecuencia; if( !registrada-en-bitacora(actividad,mes,dia) ) C VC-CursorEn(&ventana4,1,26); VC_EscribeCadena(&ventana4," ") . escr-reg-act ( 1; 9 . " _ ... ... . . ." . ,- . . . . . .. - .. _._ escr-campos-act(&reg_act); VC-CursorEn(&ventana4*9,46); VC-CursorEn(&ventana4,19,32); printf .* printf ("Actividad realizada [S/Nl?") do( I * ) (I' ; VC-CursorEn(&ventana4,9.7S); VC-LeeCar(&car.&ext); car = toupper(car); if( (car ! = ' S ' ) && (car ! = 'NI) putchar(7); ) - j while( (car ! = ' S ' ) && (car ! = 'NI) 1; if(car == 'S'){ / * si ya se realizó la act. * / VC_Borrar(&ventana4); escr-reg-bit(); captura-reg-bit(&reg_bit,&res,corres,correcto,&reg -act); if(res ! = ESC)C VC-CursorEn(&ventana4.19,42); printf ("Insertando.. . ) : status = BTRV(inserta,bit-pos_blk,&reg_bit,&reg-bit,&buf-len-bit, &key - buff-bit,key-primaria); if ( status ! = ok error ( 21; / * Error al insertar el registro * / else< VC_CursorEn(&ventana4,19,42): printf("Registr0 insertado con exito . . . " ) : delay(1000); VC-CursorEn(&ventana4,19~42); printf(" Actualizando proxima fecha . . . " ) ; mes = reg-bit.mes-real; dia = reg-bit.dia-real; calcula_prox_proceso(mes,dia,frecuencia,&n-mes,&n-dia); key-buff = atoi(act); status = BTRV(igual.act-pos-blk,&reg-act,&buf -len, key-primaria); reg-act-mes-plan = n-mes; reg-act.dia-plan = n-dia; status = BTRV(sobrescribe,act-pos-bik,&reg-act, &buf-len.key-primaria); if (status ! = okj / * no se proceso la modificacion * / error(l0); else{ VC-CursorEn(&ventana4,19,42); printf Registro modificado delay(1000); ('I . . . ' I ) ; } > 1 VC CursorEn(&ventana4,19,42); printf ("La fecha ha sido actualizada . . . } j else{ VC-CursorEn(&ventana4.19,35~; printf("Actividad ya registrada en BITACORA , delay(1500); > 1 1 . 'I) ; vC_Borrar(&ventana4); 1 while(res ! = ESC); VC--CursorEn(&ventana4,19,35); printf Un momento. . . 1; status = BTRV(cierra,act_pos-blk,&reg_act,&buf_len,archl,key-primaria); if(status ! = ok)( / * error al cerrar la tabla * / error(3) ; termina(); 3 status = BTRV(cierra,bit_pos,_blk,&reg-bit,&buf_len_bit,arch5,kei/-primaria); if(status ! = ok)C / * error al cerrar la tabla * / error ( 31; termina(); 1 status =BTRV(cierra,resp_pos_blk,&reg_resp,&reg-resp,&buf-len-resp,arch4,key-primaria); if(status ! = ok)C / * error al cerrar la tabla * / error(3) ; termina( 1; (I' If 3 VC_TipoCursor(&ventana4,0); VC_Borrar(&ventana4); VC_Cerrar(&ventana4); iort r e g i s t r a d a - e n - b i t a c o r a ( a c t i v i d a d , m e s . d i a ) / * verifica si una actividadya se registro dos veces en forma ilegal en Bitacora * / it actividad,mes,dia; st-bitacora reg-bit; int buf-len; int key,-buf f; short status; buf-len = sizeof(reg-bit); key-buff = actividad; status = BTRV(igual,bit_pos_blk,&reg-bit,&buf-len,&ke~-buff,kei/-primaria): if (status ! = okj / * actividad no reportada en bitacora * / return(0); else( if { (reg-bit.mes-pl == mes) && (reg-bit-dia-pl == dial / * actividad ya reportada en bitacora * / return(1); else( do{ key-buff = actividad; status = BTRV(siguiente,bit_pos_blk,&reg_bit,&reg-bit,&buf-len,&ke~-buff, key-primaria); 1 while( (status ! = fin-arch) && ((reg-bit.mes-pl ! = mes) I I (reg-bit.dia-pl ! = dial;; (reg-bit.n-act ! = actividad)) ) ; if (status == fin-arch) / * actividad no reportada en bitacora * / return(0); else / * actividad ya reportada en bitacora * / return(1); 1 1 ilcula-prox-proceso(mes,dia,frec,n_mes,n-dia) / * se calcula la proxima fecha - en que una actividad se debera realizar * / it mes,dia ; lar frec ; it *n-mes,*n-dia; st-calendario reg-cal; int buf-len; short status; short ultima-diaO; short ultimo; int b-mes,b-dia ; short otro-a; / * otro año * / buf-len = sizeof(reg-ca1); status = BTRV(abre,calendar~pos_blk,&reg_cal,&buf~len~~arch6,key~primaria); if(status ! = ok){ / * error al abrir la tabla * / error(4) ; termina(); 1 / * se verifica cual es el ultimo dia del mes * / ultimo = ultimo-dia(mes); proxima_fecha(mes,dia,frec,ultimo,&b-mes,&b-dia,&otro-a); / * si no se paso a otro año * / if(otro-a == FALSE) rebisa-calendario(&b_mes,&b_dia); *n-mes = b-mes ; *n-dia = b-dia ; status = BTRV(cierra,calendar-pos-blk,&reg-cal,&buf-len,arch6,ke~-primaria); if(status ! = ok){ / * error al cerrar la tabla * / error ( 3 ) ; termina( 1; 'oxima- fecha(mes,dia,frecuencia,limite.b_mes,b_dia,otro-a) / * se hace el calculo de la proxima fecha * I it mes,dia; iar frecuencia ; iort limite; it *b-mes.*b-dia; iort *otro-a; int n-mes,n-dia; / * indica si se rebasa el año * / short flag; switch (frecuencia) C case 'D' : suma-dias(mes,dia,l,limite,&n-mes,&n-dia,&flag); break ; case 'W' : suma dias(mes,dia,7,limite,&n_mes,hn_dia,&flag); break: case ' Q ' : suma-dias(mes,dia,14,limite,&n-mes,&n-dia,&flag) ; break ; case ' M ' : suma-mes(mes,l,&n-mes,&flag); n-dia = dia; break: case 'T' : suma_mes(mes,3,&n_mes,&flagj; n-dia = dia; break ; case 'SI : suma_mes(mes,6,&n_mes,&flag); n-dia = dia; break ; case 'A' : suma-mes(mes.l2,&n-mes,&flag); n-dia = dia; break ; 3 *b-mes = n-mes; *b-dia = n-dia; *otro-a = flag; ~ma-dias(mes,dia,suma,limite,n-mes,n-dia,flag)/*se suman dias especificados It mes,dia,suma; iort limite; it *n-mes,*n-dia ; iort *flag; * *n-mes = mes; *n-dia = dia + suma; *flag = FALSE; if(*n-dia > limite)< *n-dia = *n-dia - limite; *n-mes = *n-mes + 1; if(*n-mes > 12){ *n-mes = 1 ; *flag = TRUE; > 3 ~ma-mes(mes,suma,n-mes,flag) it mes,suma ; IC *n-mes; iort *flag; / * se suman l o s meses especificados * / Kn-mes = mes + suma; "flag = FALSE; if(*n-mes > i2){ *n-mes = *n-mes-i2; *flag = TRUE; t zbisa-calendario(b-mes,b-dia) it * b-mes , * b-dia ; / * modulo que regresa el mes y dia en cuestionpara despues verificar si es ya otro año * / i int mes,dia; short status ; int buf-len,key-buff; st-calendario reg-cal; nes = *b-mes; iia = *b-dia; xf-len = sizeof(reg-cal); status = B T R V ( i g u a l , c a l e n d a r _ p o s _ b l k , & r e g _ c a l , & r e g ~ c ~ l , ~ b u f ~ l e ~ , ~ ~ e s , ~ e ~ ~ p ~ ~ ihile( (reg-cal.dia ! = dial && (status == ok) 1 status = BTRV(siguiente,calendar~pos-blk,&reg-cal,~buf-~en,~mes, key-primaria 1; dhile( (reg-cal.indicador ! = 'S') && (statup == ok) 1 status = BTRV(siguiente,calendar_pos_blk,&reg_cal.&buf-len,&key-buff, key-primaria); if(status == ok)( *b-mes = reg-cal.mes: 1 b-dia = reg-cal .d i a ; Elude "vc-inc .h" /I definiciones necesarias para el uso de Ventanas */ :ern VC-VENTANA vent-err; .d errorbhort indicacion) /I /* Ventana Global I/ de error I/ modulo que despliega -ajes { char car.ext; VC-Abrir i&vent-err ; VC-CursorEMventerr, 1,2); switch(indicacion) /I tipo de error */ { case 1 : case 2 : case 3 : case 4 : case 6 : case 7 : case 8 : case 9 : case 10 : case 11 : case 12 : case 13 : case 14 : case 15 : caw16 : c a e 17 : - VC-EscribeCadena(&vent-err," La Atividad ya existe.. .Y; b m k; VC-EscribeCadena(&v~t-err,"Al insertar el registro.. . " I ; break; VC-EscribeCadena(&vent-err," Al cerrar la tabla.. . " I ; break ; VC-EscribeCadena(&vent-err," Al abrir la tabla. .."I; break; VC-EscribeCadena(&vent-err," El ncuero de responsable no existe.. ."I ; break; VC-EscribeCadena(&vent-err," No existe actividad.. .":i break; VC-EscribeCadena(&vent-err," No se proceso la baja.. . " j ; break ; VC-EscribeCadena(&vent-err," Otras actividades dependen de esta.. ."I; break ; VC-EscribeCadenaIBvent-err," No se proceso la iodificacion.. ."I ; break ; VC_EscribeCadena(&vent_err," El Departamto no existe.. ."I; break : VC-EscribeCadena(&vent-err," El Departamto ya existe.. . " I ; break ; VC_EscribeCadena(&vent_err," El numero de responsable ya existe.. ."); break; VC-EscribeCadena(&vent-err, Al actualizar : Actividades..."I ; break ; VC-EscribeCadena(&vent-err ," Al actualizar : Dependencias..."I : break; VCEscribeCadena(&vent_err," Registro Inexistente.. ."1 ; break ; VC-EscribeCadena(&vent-err Registro Existente...") ; break ; 'I 1 VC-CursorEn(&vent-err, 1,421: VC-EscribeCadena(6vent-err "Icualquier teclal=continuar"1; VC-CursorEn ( &vent-err,1,69) ; VC-LeeCar(&car,hextl; VC-TipoCursor(&vent-err,O) ; VC-Borrar(&vent-err) ; VC-Cerrar(&vent-err) ; I 1 se a DEPARTAMENTO. Ahora describir4 brevemente los procesos correspondientes 9e verifica que Alta de Departamento el departamento procede a la especificado no exista, y una vez que esto ocurre se que el responsable asociado exista y validando que alta, validando la descripción respete los caracteres permitidos. que se indica el departamento Baja de Departamento. Una vez se verifica que este exista, y si es así 'se desplega el registro correspondiente y si se reafirma le ejecución, entonces se da de baja . Modificacion de Departamento. Se verifica que este exista, Y si es asi, entonces se desplega este, permitiendo sdo modificar la descripción y el responsable, el cuál debera existir. Este Último movimiento funciona tambien como consulta por numero de departamento si es que no se modifica ninguno de los campos, 1 d un los DFD correspondientes a estos procesos descritos, as¡ como los correspondientes a los procesos de RESPONSABiE, los cuales son exactamente analogos a los de Departamento. Tambien se muestran los DE correspondientes Ahora se muestra refinamiento de I - Apar tir de estos procesos o modulas desarrollados no se anexan los listados fuente, si se requieren se pueden obtener de los discos en que se encuentra el sistema. El listado fuente ACTiViDADES se anexo para mostrar le diseño correspondiente a lógico de procesos ya en la implementación, para los demas se sólo se muestra el diseño a que se llegó, 1 d -7 I i 1 d 1 -1 1 a a c i 1 Alta-Departarmto ! d 1 depwta w nte d 1 1 NO* DLFTO. VALIDO 2 NO, DEFTO, VALiDO DlftGRIIM DE IWJO DE MIOS (D.P.D.) i r l PRIMcIpllL d 1 i 1 ! --- BaJ a-De partame n t o 1 d 1 o 9 deppirturcnto 4 I 1 I I usupirio 1 NO, deppirturcnto i i 2 RESrUESTA J NO, DEOTO. VALIDO depaiiturcnto 4 D r n m m DE FLUJODE DMOS(D.F.D.) L? PRINCIPAL I I ~ ~ n ~ DE ~ lESIRUCTU~ l m (D.E.) act i v i da= Modifica-Departanenta r depart amen to depart uwn te 1 I usuario1 O actualiza departuwn to 1 2 NUEVOS DITOS DEPTO. NO. DIPTO. VALIDO ,,I a r Lusuario w e s tra datos de depart u wnG I O captwa datos departanento valida I 4 Drnmm DE FLUJO DE DMOS(D.F.D.) 57 PRI NCIPítL I 1 I tl departanento -- 7 Rlta-Responsable d 1 3 1 responsable 3 1 1 NO. RESP. VALIDO 1 2 RESC. VALIDO D I n m n m DE FLUJODE DMOS (D.F.D.) 3 1 Lrrl PRIWCIML i -? I I i -7 i I I 1 Baja-Responsable o T r 0 responsable 1 I usuaio I RESF. NO. valida no. 1 responsable 2 RESFUESTI NO. RESF. VILIDO responsable 4 D I l G W I l DE FLüJO DE MIOS (D.P.D.) 5J PRINCIML 1 1 1 ,-b actiuidades Modif ica-Responsable responsable O actual iza responsable NO. RESP. ualida no. 2 NUEVOS DATOS RESP. NO. RES?. VALIDO nsponsable responsable D b T O S RESP J 4 d 1 1 D u m a a n DE FLUJODE WTOS (D.F.D.) d 1 I I Y ultimo se describirán reportes y estadisticas por pantalla, Por Reporte de Actividad. los 9e puede proceso encargados emitir reportes de emitir de actividad actividad , Por departamento , Esta emisión puede en un ordenados por número de responsable o por frecuencias. dado ser interrumpida. En Reporte de Actividad por Dependencias. emiten todas las actividades y con ellas otras Esta emisión puede ser interrumpida. sus este Por momenta reporte dependencias se de I el se hayan interrumpir Reporte de Actividad por Rango. Dado un rango de cual es validado se emiten todas aquellas actividades que concluido en ese rango. En cualquier momento se puede la emisiona Reporte de Departamento Se emiten todos existentes, y tambien se puede interrumpir esta ejecución . I los fechas departamentos Reporte de Responsable, Análogo al de Departamento. Reporte de Bitacora , realizadas, es decir, todas se puede interrumpir esta emisión. Se emiten las actividades Estadisticas. Se emiten decir, todas las que estan interrumpir en un momento dado. todas en todas las en Bitacora, las actividades : Actividad, y y actividades tambien ha realizar , tambien se es puede Calendario. Dado el año especificado y posteriormente el mes se desplegan los dias correspondientes a ese mes junto con la indicación de que son hábiles o no, a partir de entonces, se puede especificar cada dia al que se quiera modificar su indicador. Ahora a estos muestra un refinamiento de procesos descritos así como sus se los DE DFD correspondientes correspondientes, Reporte-Act iu i dad I r verifica siguien te AC T I V 1DADIS b nporta act i uidades REPORTE ACTIVIDAD POR T I P O TIPO REPORTE elige OPC I O N -4 D I 4 G R M DE FLUJO DE MTOS (D.F.D.) I PRINCIPAL I ,-- ~ ~ Reporte-Actividad por Dependencias r c tn verilica siguiente A C T I V I DADES b reporta act i vi dades DEPENDENCIAS actividades b - l> -:c encuentra dependenci as dependencias + v REPORTE ACTIVIDAD POR DEPENDENCIA 3 encuen tra u I usuario I actividad Drnmmn DE FLUJODE #ros (D.F.D.) 9 PRINCIPAL c Reporte Actividad por Rango J-+(L I ACT, HES I N 1 VLC MES F I N U11 MENOR bitacom encucn tm Dinmm DE FLUJO DE mros (D.P.D.) 1 I + Reportelepartamen t o r tn repolita M E N O R DEFTO. dcpiiirtunnto , 7 depto. REIORTE DE DEPlRTAM, DInmm DE FLUJO DE MTOS(D.P.D.) ReporteJIesponsable r ueri f ica siguiente RESPONSABLES - nporta responsable Tn HENOR RESPt nswnsabie b [ encuentpa 1 REPOXTE DE RESPONSABLES I I J usu=io D I 4 G W M DE FLUJO DE DMOC (D.F.D.) U ReporteJi tacora r bitacora uerif ica siguiente ACTXVIDADES b - nposta actiuidades REPORTE DE 8 ITACORA elige opcion RESPUESTA DInmm DE FLUJO DE mTos (D.F.D.) rl Estadis t icas I usulrio1 - 1 actiuidad ( - ACT, 1 2 HES I N 1 V A L HES F I N V A L A C T - MENOR & L encucn tira mmnm DE FLUJODE DMOS(D.F.D.) CON HES Y D I A I I I ACTIVIDADES 3; t 1 act i ui dad+ Calendario aiio MES ELL6IDO -calcndiiilio MODIFIClDOS DInmm DE FLUJODE DMOS(D.F.D.) JUSWICACION Una vez I que se ha de justificaciones de este : el concluido 11 Carencia de un software posibilidades que este sistema logra 21 manera operaciones Oportunidad de expanción fácil a diferentes tipos proyecto en y de el se exponen mercado adaptación administración que del de una cubra sistema centros serie las de de I 31 Cubrir una primera etapa en el nuevo concepto de centros de este tipo, para obtener rendimientos mayores de íos diferentes recursos asignados a estos centros , planeación de producción, resultados obtenidos , etc , 41 Alta utilidad de sistema , planeación de información los resultados coiocacii,ii del soporta que el I 51 Alta antes mencionados, posibilidad 61 Desarrollo en materias como Avanzada, Estrucura Algoritmos I de sidema por de un sistema con fundamento de Análisis y Diseño, Base de Datos, de Datos y principios básicos de los puntos conocimientos Programación Análisis de NUEVOS REQUERIMIENTOS. En todo sistema por lo incluso cuando apenas se esta mensionan los hasta ahora propuestos. regular surgen implementando, una interpretacion mas Para tener informacion que hasta ahora se maneja se gráficas estadisticas , nuevos a requerimientos continuacion representativa pude hacer Un requerimiento muy loable es la emision impresora, lo que este sistema no es capaz por el momento. de se de uso la de reportes por posible requerimiento es ía implementaciún de un editor que permita actualizar directamente un registro desplegado digamos en un solo renglon, moviendonos con la flechas a la izquierda y derecha en el momento que a la vez se consulta dicho registro y otros mas que se encuentran alrededor' dentro de la tabla a los cuales se pueda accesar con las flechas verticales. Otro Otro requerimiento que este sistema a un ambiente ciertos casos indispensable, se puede multiusuarios, considerar ya que es esto la migracion puede ser de en RESULTADOS, Una herramienta el proyecto ahora en concluido vez de software se la ya tiene administracian una de nueva centros de construcción de operaciones como los es un centro de cálculo, Los problemas importantes sistemas que de el implica programación y diseño exigen la aplicación conceptos y tecnicas especiales , que involucran Software, lo cuál se llevri a la práctica en este sistema, Cabe recordar nuevos requerimientos esta tarea abierta. Una que Proyecto de estos justificaciones cubrir a el analizado vez verifica las fueron Investigacion, planteadas antes logro los y de objetivos se termino - enseñanza cubrir, para finalizar la Licenciatura en Universidad Autonoma Metropolitana [unidad iztapalapa 1 de lngenieria de como los asi especificados, de alcanzados, unidad la de quedando asi planteados, con se el aprendizaje a as¡ Computación la en I Queda pues este Reporte Total un Proyecto de Investigacion como logrado y la metodologia seguida en el sistema de Actividades documento I realizadas informativo MESA DE CONTROL, en de el lo BlBUOGRAFlA , 11 TURBO C REFERENCE GUIDE' Borland International , Inc , 21 TURBO C USERS GUIDE' Borland International , Inc I 31 ETRIEW REFERENCE MANUAL' SoftCraft, Inc, 41 XQL REFERENCE MANUAL' SoftCraft, Inc, 51 FUNDAMENTOS DE BASES DE DATOS' Henry F Korth; Abraham Silberschatz, Mc Graw Hill, 61 NOTAS DE CURSO de Analisis y Computación ' h i s F . Castro Careaga Universidad Autonoma Metropolitana =Iztapalapa, Departamento de Ingenieria Eléctrica, Diseño de 7 1 Manual de Administración de Centros de Computo' Instituto Tecnológico de Estudios Superiores de Monterrey I Sistemas de MANUAL DE USUARIO. Dado que ya se ha mensionado los objetivos y alcanzes de que es capaz este sistema : MESA DE CONTROL, en esta parte se describirá directamente la forma de manejarlo y poder ejecutar as¡ cada uno de los procesos desarrollados, para lo cuál se cuenta con un ambiente agradable para el usuario del sistema a base de menus y ventanas y el manejo mismo de colores. Antes de describir la ejecución se deberán seguir los siguientes pasos : de cada proceso en el sistema I 11 Instalar el sistema MESA DE CONTROL en su area de trabajo no importando el drive [A:,B:,C:,etc,I , ni tampoco en cual de los El sistema se encuentra en el archivo subdirectorios se instale, ejecutable llamado CEC .EXES [centro eíech cínico de cónipdo] Instalar en el mismo lugar que CEC.EM los siguientes archivos I FILE.mF FIEU) .DDF INDEX .DDF DEPENDE.DTA DEPTO .DTA CALENDAR,DTA BITACORA.DTA ACTlViOA .DTA RESPONS,CITA Sin importar el orden en que se instalen. Los archivos con extencion .DDf son para uso interno de BTRlEVE con los que controla de alguna manera la Base de Datos, los archivos con extención .DTA son precisamente las tablas que contendrán toda la información que el sistama maneja, 21 - 31Una vez que ya se haya instalado lo anterior y estando en esa misma area del disco se carga a la memoria btrieve indicando asi mismo :BTRIEVE Se sugiere que es te archivo ejecutabie BTREW,EXE tambien este instalado en esa area de trabajo, 41 Por Liltimo se invoca al sistema indicando I CEC Se sugiere tambien generar un archivo de tipo ejecute estos dos ultimos archivos. Por ejemplo archivo SISTEMABAT que contiene la siguientes lineas I echo o f f btrieve cec Y as¡ sólo indicar I SISTEMA para ejecutarlo. Una vez que ya estamos dentro del sistema, manejarlo, se describen a continuaciún cada uno de los procesos, batch el generar para cuál el poder Alta de Actiddad.. Una vez que en el menú principal aparecen las 6 distintas opciones, por default el cursor del menú aparece en la primer opción que es precisamente ACTIVIDAD, [ver pantalla 1) Una vez que se elige esta opción dando 9RETURNo en ACTíVlOAD aparecerá el siguiente menú, el cuál presenta las 5 distintas opciones dentro de ACTIMDAD tver pantalla 21, nuevamente se da 9RETlJRNo ahora en la opción :ALTA y aparecera as¡ la primer pantalla de captura [pantalla 31 donde podemos mover con flechas verticales, para captuar cierto campo, o bien cada que se llene correctamente un campo el cursor de captura pasa al siguiente hacia abajo en forma modular, La vaiidacion correspondiente a cada campo es como sigue I En el Número de Actividad sólo se pueden capturar digitos t0,091, de lo contrario suena la campana error, una vez que ya se indicó correctamente este campo verifica que esta actividad no este dada ya de alta, pues si ocurre aparecerá un mensaje de error en una ventana con fondo - de se esto rojo en la .parte inferior de la pantalla indicando dicho error encontrado en la tabla tver pantalla 151; para desactivar esta , basta con digitar cualquier tecla y el proceso reanuda pudiendo el usuario reintentar con otro Número de Actividad, Tanto en la Descripcion como en la InformaciOn de entrada y salida solo se valida que se digiten letras y algunos puntos como t 1, En Tipo se verifica que se digite : tD,d,i,i1 sdlamente, y en el caso que sea D 8 d posteriormente se capturaran las dependencias correspondientes [ver pantalla 171, En el mes y dia planeado se verifica que sean numeros menores 9 iguales a 12 y J respectivamente. La frecuencia se valida que este en el conjunto [ d ,w ,q ,m ,t ,s ,a I lo que indica , [ diaria , semanal, quincenal , mensual, trimestral , semestral , anual 1 Por último se verifica que una vez que se de correctamente ísólo digitosl tanto el Número de Departamento como la Clave del Responsable estos existan, de lo contrario aparecerá la ventana de error indicandolo I Baja de Actividad,= En la pantalla 2 movemos el cursor con las flechas hasta la opción BAJA de ah¡ se da [RETURN) y aparecerá una pantalla como la 3, sólo que de momento nada mas se pide el Número de Actividad, y si esta existe se desplega en esta pantalla 3 todos sus campos, posteriormente se pide confirmar la baja, y si es así se procede a este proceso el cuál tambien considera las posible dependencia de esta actividad con otras por io que se y pudiendo interrumpir si el mandan avisos advirtiendo esto usuario lo desea. Modificacion de Actividad.. Análogo a la Baja de Actividad , sólo que no se permite modificar el Número de Actividad, el resto de los campos si, incluso el de Tipo, pudiendo as¡ actualizar sus dependencias en la pantalla 17 que apareceria. Consulta de Actividad,= Una vez elegida esta opción en pantalla 2 , aparecerá ahora la pantalla 4 en donde si se elige opción de DEPARTAMENTO o la de RESPONSABLE aparecera la pantalla y se pedirá dicha clave o número con lo cual se desplegarán la la 3 las actividades correspondientes a dicho Departamento o Responsable si es que existen. Al elegir el ultimo tipo de consula en ACTiViDAO aparecerá la pantalla 5 donde se debe especificar la actividad de la cuál queremos sus dependencias, - es Actividad Realizada.. Es la ultima aqui donde se indica en BITACORA correspondiente de 16 de captura y se ha indicado, la se actividad hacen las opción en la pantalla la conclución por el 2 y período especificada. Aparece la pantalla validaciones correspondientes como ya Alta de Departamento,= En el menú principal siguiente opción : DEPARTAMENTO y aparecerá ahora Una vez que en este último menú se elige la opción se elige la la pantalla 7, ALTA, aparecerá 1 la pantalla de captura 71 (pantalla y procede se a la captura, haciendo las validaciones de manera análoga en Alta de Actividad. Baja de , y Numero Departamento,- si confirmarlo se existe procede actualizando sólo modificar pantalla se muestra el la baja, que el aparece campo se mismo que de de 7 nuevo especifica y registro al actividades lo por la a aquellas relaciona, poder este En despues de se van tiempo es te aqui la 8 Departamento el departamento 3 pantalla abortar el para proceso de la baja. Modificación la modificacion de Departamento, de actividad - Se (ahora reaiiza de manera la pantalla 71 en similar a no se y puede modificar el Numero de Oepartamento . Procesos exactamente de La ALTA,BAJA procesos de Responsable. analogos los a y MODlf /CONS Departamento, solo son que ahora en lugar de la pantalla 7 se tiene la pantalla 14. Reportes.pantalla pantalla quiera * 8, 9 esten Una si vez se elige que la donde simplemente ordenados, para elige se opcion esta ACTlVlDAD emiten cuatro se las opción aparecera aparecerá los reportes primeras la ahora la según se actividad, 8 y frecuencia se emitiran en la pantalla 3 dichos reportes , pudiendo en cualquier momento abortar la [EX). Para un reporte de actividad por dependencias emision con se maneja la pantalla 5 en la cual se emite dicho reporte y por Último para la emisión de actividades por rango de fecha aparecera la pantalla IO donde se especifica este rango, Los reportes de Departamento se desplegan sobre la pantalla 7 y los de Responsable departamento , responsable sobre la pantalla 14. El último reporte que se considera opciones (ver pantalla 111 y Bitacora el cuál tiene dos ~ al orden en que se quiera que se emitan es de en aparecerá ia el de acuerdo pantalla 16, principal Estadisticas.aparece la fechas, y en esa realizar en ese rango, Una yez elegida esta opción en 10 y se debe indicar el pantalla misma pantalla se desplegarán las el menú rango de actividades ha Calendario.. al elegir esta ultima opciún del menú principal se indica el año en cuestión y aparecen de fcorrespondientes a ese año], se selecciona uno ahora la pantalla 13 donde se puede actualizar especifique, para salir de esta captura se digita [ESCI. Nota I Se recuerda que para regresar a digita [ESC I . Para salir del sistema se estando en el menú principal. Para elegir cada y en las pantallas de captura se usan las moverse, un 12 meses ellos y aparece el dia que se los menu digita opcion flechas anterior tambien en cada verticales se i ESC 1 menú para E PANTALLA 2 . 11:, ' ~-. _ _ ~ -- -. PANTALLA PANTALLA 3 4 I . . PA.NTAL L A 6 - I [-# :E i-: . E. I:. F A R T AM EN'T1-1S HL'T'A CEPAFiT MENTO d I - PANTALLA 7 + E -:--.- +lE Ni-i F'R I N i-1 I F A L - PANTALLA 8 ::I a F OF; T E 5 E: . I::. 4 l E N I J PW ItJC: I F A L - [:E PA R TAMENT 13 DEPART AMEN 'T1-1 I J PANTALLA 10 . ,. .._. . .. . . .. -_l_._^l .. ,, . .. - . I i I L RESFiJNS&EL E PANTALLA I/ -. 1.". P A N T A L L A . 12 . t. I-: s ._ -____.I ~ PANTALLA PANTALLA 13 .-..."I 14 I PANTALLA 16 - iI:. - PANTALLA 17 E. .... L. J