2.8 Ejercicios Prácticos
2.8.1 Ejercicio 1
Sean los hijos de la transacción 2, aplicando las técnicas del diseño estructurado, derivar un diagrama de estructura. Se supone que los datos de todos los alumnos se encuentran ya en el almacenamiento de datos ALUMNOS.
2.1 OBTENER NUMERO ALUMNO 2.2 OBTENER DATOS ALUMNO 2.3 VALIDAR NUMERO ALUMNO 2.4 HACER MATRICULA 2.6 VERIFICAR INCOMPATIB. 2.5 OBTENER ASIGNATURA 2.8 VALIDAR AIGNATURA 2.7 EDITAR DATOS MATRICULA 2.9 IMPRIMIR MATRICULA ALUMNOS ASIG-ALUMNO HISTORIAL NOTAS ALUMNO num_alu num_alu datos alumno datos matricula num_alu valido
asig-verif. datos matricula
linea_matricula asignaturas
asig.
2.8.2 Solución Ejercicio 1
Lo primero que debemos hacer es tomar la decisión entre alquilar un jefe o promover uno. En este caso optamos por promover uno que va a ser Hacer Matricula.
Con lo que nos queda el siguiente diagrama de estructura general:
2.4 HACER MATRICULA 2.3 VALIDAR NUMERO ALUMNO 2.2 OBTENER DATOS ALUMNO 2.6 VERIFICAR INCOMPATIB. 2.7 EDITAR DATOS MATRICULA ESCRIBIR EN ASIG_ALUM 2.1 OBTENER NUMERO ALUMNO LEER FICHERO ALUMNOS 2.8 VALIDAR ASIGNATURA LEER LISTA NOTAS 2.9 IMPRIMIR MATRICULA 2.5 OBTENER ASIGNATURA LEER PLAN ESTUDIOS ASIG NUM_ALU ASIG_VALIDA LINEA_MATRICULA NUM_ALU_V NUM_ALU_V ASIG_VERIF DATOS_MATRICULA
Podemos realizar una serie de refinamientos, como por ejemplo podemos poner un cluster en LEER FICHERO ALUMNOS para limitar el número de accesos a la base de datos.
Se podría refinar aún más algunos módulos como por ejemplo VERIFICAR INCOMPATIBILIDADES
2.8.3 Ejercicio 2
Dado el siguiente DFD, derivar un Diagrama de Estructura, aplicando las herramientas y criterios del diseño estructurado.
CLIENTE OBTENER CODIGO ARTICULO VALIDAR CODIGO ARTICULO EDITAR LINEA DETALLE CALCULAR TOTAL COMPRA EDITAR TOTAL COMPRA IMPRIMIR TICKET ARTICULOS COD_ART_E COD_ART_I COD_ART_V LINEA_DETALLE TOTAL LINEA_TOTAL TICKET COD_ART_V RECHAZO COD_ART_E = CODIGO_ARTICULO COD_ART_I = CODIGO_ARTICULO COD_ART_V = CODIGO_ARTICULO
ARTICULO = CODIGO_ARTICULO + DESCRIPCION + PVP ARTICULOS = {ARTICULOS}
LINEA_DETALLE = CODIGO_ARTICULO + DESCRIPCION + PVP TOTAL = NUM_ARTICULOS + TOTAL A PAGAR
LINEA_TOTAL = TOTAL
2.8.4 Solución Ejercicio 2
En este ejercicio vamos a alquilar un jefe , quedandonos el siguiente DE: Cada vez que se finaliza una compra hay que inicializar total compra.
También podemos observar como la rama de salida tal y como está no funciona, por lo que 3modificamos el DE.
2.8.5 Ejercicio 3
El diagrama de flujo de datos de la figura, muestra la parte aferente (entrada) de un sistema que se encarga de actualizar un fichero maestro de clientes. Cada registro del fichero contiene la siguiente información (campos):
Nº campo Información Longitud Caract. ¿Se actualiza?
1 Número Cuenta 6 Numérica NO
2 Nombre Cliente 20 Alfanumérica SI
3 Dirección 15 Alfanumérica SI
4 Teléfono 9 Numérica SI
5 Código Postal 5 Numérica SI
6 Límite Crédito 6 Numérica SI
7 Fecha última operación 8 Numérica SI
La información necesaria para hacer una actualización se le suministra al sistema en una línea introducida desde un terminal. Cada línea contendrá el número de cuenta del cliente cuyo registro va a actualizarse; esta línea deberá contener también el número de los campos que se van a actualizar (en nuestro caso sólo se pueden actualizar los campos 2..7).
El formato de la línea de entrada ha de ser el siguiente: numero_de_cuenta (nº de_campo nueva_información $) $
(deben haber blancos entre el número_de_cuenta, numero_de_campo y nueva_información).
Por tanto una línea de actualización puede ser: 3560 4 96370492$ 5 43005$ $
Esta línea actualiza los campos número 4 y número 5 del registro de cliente cuyo número de cuenta es 3560.
leer linea separar en campos validar campo # 1 validar campo # 2 validar campo # 7 formar transacc validar transacc transf. central line campo # campo # campo # campo # 2 campo # 1 campo # 7 transacció transacción linea I campo invalid # campo invalid # rechaz
Un AULA INFORMÁTICA tiene la siguiente política de reservas:
• Los alumnos de la Escuela en que se encuentra pueden reservar un máximo de 5 horas a la semana.
• Las reservas pueden realizarse hasta el día anterior al uso.
• A cada alumno, cuando hace la reserva, se le entrega un justificante de ésta. El formato del justificante es el siguiente:
Reserva Aula Informática Equipo:014 Día reservado:28-06-95 Hora reservada: 14:00 Número de Expediente: 54.321
Nombre: Pascual Martínez Juan.
• Cuando se abre el AULA hay un listado de las reservas realizadas sobre cada equipo, de modo que la gente puede usar los equipos no reservados.
El formato del listado de reservas es el siguiente:
Reservas de aula de informática Día: 28-06-95 EQUIPO HORA ALUMNO
001 10:00 Alicia Mas Pérez
014 10:00 Fernando Huerta del Pozo ... ... ...
014 14:00 Pascual Martínez Juan ... ... ...
• El horario del AULA DE INFORMÁTICA es de 10:00 a 18:00 todos los días lectivos, y las reservas comienzan siempre a una hora en punto.
Para llevar a cabo esta política se ha decidido implementar un sistema, del que nos dan un trozo del D.F.D. para que construyamos un Diagrama de Estructura, que usarán los programadores de un lenguaje procedural para su implementación.
RESERVAS AULA INFORMÁTICA
EXPEDIENTE: 54.321
NOMBRE: Pascual Martínez Juan
FECHA: 28-06-95 HORA: 14:00
EQUIPO: 014
El D.D: del D.F.D. adjunto es el siguiente:
ALMACENES
EXPEDIENTES = NUM_EXP + NOMBRE EQUIPOS = NUM_EQUIPO
CAL_LECTIVO = FECHA
USOS_ALUMNO = NUM_EXP + SEMANA + CANTIDAD
RESERVA_EQUIPOS = NUM_EQUIPO + FECHA_RESERVA + HORA RESERVA + NUM_EXP
FLUJOS
FECHA = DÍA + MES + AÑO
SEMANA = AÑO + NUM_SEMANA
DATOS_RESERVA = NUM_ESP + NOMBRE + FECHA_RESERVA + HORA RESERVA + NUM_EQUIPO
RESGUARDO = NUM_EQUIPO + FECHA_RESERVA + HORA_RESERVA + NUM_EXP + NOMBRE
LISTADO_RESERVAS = FECHA_RESERVA + {NUM_EQUIPO + HORA_RESERVA + NOMBRE}
Obtener el Diagrama(s) de Estructura(s) correspondiente al D.F.D. de la figura. Debe indicar todos los pasos intermedios.
2 VALIDAR ALUM. POR NOM. CORRECTO 3 VALIDAR FECHA RESERVA 4 VALIDAR HORA RESERVA 5 VALIDAR EQUIPO EXISTENTE 6 ACEPTAR DATOS RESERVA 1 VERIFICAR EQUIPO NO RESERVADO 9 OBTENER SEMANA RESERVA 8 OBTENER NOMBRE ALUMNO POR EXP. 7 VERIFICAR ALUMNO PUEDE RESERVAR 10 ACTUALIZAR RESERVA EQUIPOS 11 EDITAR RESGUARDO RESERVA 14 ACTULIZAR REGISTRO USOS ALUMNO 13 OBTENER RESERVA EQUIPO 16 OBTENER NOMBRE ALUMNO 17 EDITAR LINEA RESERVA DIA 18 IMPRIMIR LINEA RESERVA DIA 19 EDITAR CABECERA RESERVA DIA 20 OPERADOR ALUMNO CAL_LECTIVO RESER_EQUIPOS EQUIPOS RECALCULA USOS ALUMNO 12 IMPRIMIR RESGUARDO RESERVA 15 EXPEDIENTES DATOS RESERVA NUM_EXP NOMBRE FECHA HORA EQUIPO EQUIPO_E HORA_V FECHA_V NUM_EXP_E NOM_EXP + NUM_EXP FECHA_V SEM NUM_EXP_V NUM_EXP_RESERVABLE
NUM_EXP + FECHA_R + HORA_R + EQUIPO_R
CABECERA
LINEA LISTADO RESERVAS/DIA CUERPO NOMBRE
EQUIPO + HORA_R NUM_EXP
NUM_EXP + SEM
NUM_EXP + SEM + USOS
BLOQUE RESGUARDO EDITADO
RESGUARDO LISTADO RESERVAS/DIA FECHA_R + HORA_R + EQUIPO_R NOM. ERRONEO FECHA NO POSIBLE HORA NO POSIBLE EQUIPO RESERVADO EQUIPO INEXISTENTE FECHA FECHA A PRIMERA HORA
2.8.8 Solución Ejercicio 4
Nos queda desarrollar el módulo OBTENER DATOS RESERVA CORRECTOS, en este módulo se encuentra esa referencia que hemos etiquetado como “2”.
2.8.9 Ejercicio 5
Obtener los diagramas de estructuras correspondiente al siguiente problema: Imaginemos que queremos construir un gestor de correo electrónico sencillo, de tal forma que el usuario podrá realizar una de las siguientes funciones al utilizar nuestro programa:
• Leer cualquiera de los mensajes recibidos en su buzón a partir de un nombre de mensaje.
• Enviar un mensaje a una dirección determinada.
• Borrar mensajes según el nombre del mensaje.
Teniendo en cuenta que disponemos del siguiente DFD obtenido en la fase de análisis:
LEER CABECERAS 1 ESCOJER OPCION 2 VALIDAR NOMBRE MENSAJE 3 VISUALIZAR MENSAJE 4 VALIDAR DIRECCION 5 CREAR PAQUETE 7 ENVIAR DESTINO 8 EDITAR MENSAJE 6 VALIDAR NOMBRE MENSAJE 9 RELOJ RED TECLADO TECLADO ELIMINAR MENSAJE 10 PANTALLA BUZON PANTALLA LISTA CABECERAS OPCION A PANTALLA OPCION NOMBRE MENSAJE LISTA CABECERAS NOMBRE MENSAJE VALIDO LISTA CABECERAS NOMBRE MENSAJE NOMBRE MENSAJE VALIDO MENSAJE A PANTALLA DIRECCION VALIDA PAQUETE PAQUETE DATOS DIRECCION CARACTERES MENSAJE CARACTERES
2.8.10 Solución Ejercicio 5
CONTROL PRINCIPAL LEER CABECERAS SELECC. OPCION LEER MENSAJES TRANSMITIR MENSAJES BORRAR MENSAJES VISUALIZAR MSG VALIDAR NOMBRE MSG ENTRADA MSG CREAR PAQUETE ENVIAR VALIDAR NOMBRE MSG ELIMINAR MSG VALIDAR DIRECCION EDITAR MSG2.8.11 Ejercicio 6
Dado el diagrama de flujo de datos siguiente, derivar un diagrama de estructura utilizando el siguiente dicccionario de datos:
ORDEN_VENTA = VENDEDOR + [LINEA_VENTA]
LINEA_VENTA = COD_PRODUCTO + CANTIDAD_PEDIDA
ORDEN_VENTA_VALIDA = VENDEDOR + NUM_VENTA + FECHA + [LINEA_VENTA]
LINEA_DETALLE = COD_PRODUCTO + NOMBRE + CANTIDAD + DESCRIPCION + PRECIO_VENTA + TOTAL_LINEA
LINEA_TOTAL = TOTAL
TOTAL = NUM_ARTICULOS + TOTAL_A_PAGAR TICKET = [LINEA_DETALLE] + LINEA TOTAL
BAJO_STOCK = COD_PRODUCTO + CANTIDAD_EN_STOCK + CANTIDAD_MINIMA
LINEA_INFORME_VENTAS = NUMERO_VENTA + VENDEDOR + COD_PRODUCTO + NOMBRE + CANTIDAD_VENDIDA + IMPORTE_CARGADO
PRODUCTOS = [COD_PRODUCTO + NOMBRE + PRECIO_VENTA + CANTIDAD_EN_STOCK + CANTIDAD_MINIMA]
VENTAS = [NUMERO_DE_VENTA + FECHA_VENTA + VENDEDOR]
ITEM_VENTAS = [NUMERO_DE_VENTA + CODIGO_PRODUCTO + CANTIDAD_VENDIDA + IMPORTE_CARGADO]
VENDEDOR OBTENER ORDEN VENTA VALIDAR ORDEN VENTA PRODUCTOS SEPARAR ORDEN VENTA ALMAC. VENTA EDITAR LINEA DETALLE CALCULAR TOTAL COMPRA VERIF. INVENTARIO VENTAS ITEM-VENTAS EDITAR LINEA TOTAL IMPRIMIR TICKET GENERAR INFORME VENTAS DIRECCION CLIENTE PRODUCTOS ORDEN VENTA_E ORDEN VENTA ORDEN VENTA VALIDA VENDEDOR+NUM VENTA+FECHA+LINEA VENTA LINEA VENTA LINEA VENTA LINEA VENTA LINEA DETALLE TOTAL LINEA TOTAL TICKET INFORME VENTAS BAJO STOCK NUM VENTA FECHA RECHAZO