Document

Anuncio
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
Descargar