Práctica 3 - Archivos no ordenados - Bajas y mas

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

​ Introducción a las Bases de Datos

​ Fundamentos de Organización de Datos

​ Práctica 3

​ Parte 1: Bajas en archivos secuenciales

1. Modificar el ejercicio 4 de la práctica 1 (programa de gestión de empleados),


agregándole una opción para realizar bajas copiando el último registro del archivo en
la posición del registro a borrar y luego truncando el archivo en la posición del último
registro de forma tal de evitar duplicados.

2. Definir un programa que genere un archivo con registros de longitud fija conteniendo
información de asistentes a un congreso a partir de la información obtenida por
teclado. Se deberá almacenar la siguiente información: nro de asistente, apellido y
nombre, email, teléfono y D.N.I. Implementar un procedimiento que, a partir del
archivo de datos generado, elimine de forma lógica todos los asistentes con nro de
asistente inferior a 1000.

Para ello se podrá utilizar algún carácter especial situándolo delante de algún campo
String a su elección. Ejemplo: ‘@Saldaño’.

3. Realizar un programa que genere un archivo de novelas filmadas durante el presente


año. De cada novela se registra: código, género, nombre, duración, director y precio.
El programa debe presentar un menú con las siguientes opciones:
a. Crear el archivo y cargarlo a partir de datos ingresados por teclado. Se
utiliza la técnica de lista invertida para recuperar espacio libre en el
archivo. Para ello, durante la creación del archivo, en el primer registro del
mismo se debe almacenar la cabecera de la lista. Es decir un registro
ficticio, inicializando con el valor cero (0) el campo correspondiente al
código de novela, el cual indica que no hay espacio libre dentro del
archivo.

b. Abrir el archivo existente y permitir su mantenimiento teniendo en cuenta el


inciso a., se utiliza lista invertida para recuperación de espacio. En
particular, para el campo de ´enlace´ de la lista, se debe especificar los
números de registro referenciados con signo negativo, (utilice el código de
novela como enlace).Una vez abierto el archivo, brindar operaciones para:

i. Dar de alta una novela leyendo la información desde teclado. Para


esta operación, en caso de ser posible, deberá recuperarse el
espacio libre. Es decir, si en el campo correspondiente al código de
novela del registro cabecera hay un valor negativo, por ejemplo -5,
se debe leer el registro en la posición 5, copiarlo en la posición 0
(actualizar la lista de espacio libre) y grabar el nuevo registro en la
posición 5. Con el valor 0 (cero) en el registro cabecera se indica
que no hay espacio libre.

ii. Modificar los datos de una novela leyendo la información desde


teclado. El código de novela no puede ser modificado.

iii. Eliminar una novela cuyo código es ingresado por teclado. Por
ejemplo, si se da de baja un registro en la posición 8, en el campo
código de novela del registro cabecera deberá figurar -8, y en el
registro en la posición 8 debe copiarse el antiguo registro cabecera.

c. Listar en un archivo de texto todas las novelas, incluyendo las borradas, que
representan la lista de espacio libre. El archivo debe llamarse “novelas.txt”.

NOTA: Tanto en la creación como en la apertura el nombre del archivo debe ser
proporcionado por el usuario.
4. Dada la siguiente estructura:

type

reg_flor = record

nombre: String[45];
codigo:integer;
end;

tArchFlores = file of reg_flor;

Las bajas se realizan apilando registros borrados y las altas reutilizando registros
borrados. El registro 0 se usa como cabecera de la pila de registros borrados: el
número 0 en el campo código implica que no hay registros borrados y -N indica que el
próximo registro a reutilizar es el N, siendo éste un número relativo de registro válido.

a. Implemente el siguiente módulo:

{Abre el archivo y agrega una flor, recibida como parámetro


manteniendo la política descrita anteriormente}

procedure agregarFlor (var a: tArchFlores ; nombre: string;


codigo:integer);

b. Liste el contenido del archivo omitiendo las flores eliminadas. Modifique lo que
considere necesario para obtener el listado.

5. Dada la estructura planteada en el ejercicio anterior, implemente el siguiente módulo:

{Abre el archivo y elimina la flor recibida como parámetro manteniendo


la política descripta anteriormente}

procedure eliminarFlor (var a: tArchFlores; flor:reg_flor);

6. Una cadena de tiendas de indumentaria posee un archivo maestro no ordenado con

la información correspondiente a las prendas que se encuentran a la venta. De cada

prenda se registra: cod_prenda, descripción, colores, tipo_prenda, stock y

precio_unitario. Ante un eventual cambio de temporada, se deben actualizar las

prendas a la venta. Para ello reciben un archivo conteniendo: cod_prenda de las

prendas que quedarán obsoletas. Deberá implementar un procedimiento que reciba


ambos archivos y realice la baja lógica de las prendas, para ello deberá modificar el

stock de la prenda correspondiente a valor negativo.

Adicionalmente, deberá implementar otro procedimiento que se encargue de

efectivizar las bajas lógicas que se realizaron sobre el archivo maestro con la

información de las prendas a la venta. Para ello se deberá utilizar una estructura

auxiliar (esto es, un archivo nuevo), en el cual se copien únicamente aquellas prendas

que no están marcadas como borradas. Al finalizar este proceso de compactación

del archivo, se deberá renombrar el archivo nuevo con el nombre del archivo maestro

original.

7. Se cuenta con un archivo que almacena información sobre especies de aves en vía

de extinción, para ello se almacena: código, nombre de la especie, familia de ave,

descripción y zona geográfica. El archivo no está ordenado por ningún criterio. Realice

un programa que elimine especies de aves, para ello se recibe por teclado las

especies a eliminar. Deberá realizar todas las declaraciones necesarias, implementar

todos los procedimientos que requiera y una alternativa para borrar los registros. Para

ello deberá implementar dos procedimientos, uno que marque los registros a borrar y

posteriormente otro procedimiento que compacte el archivo, quitando los registros

marcados. Para quitar los registros se deberá copiar el último registro del archivo en la

posición del registro a borrar y luego eliminar del archivo el último registro de forma tal

de evitar registros duplicados.

Nota: Las bajas deben finalizar al recibir el código 500000

8. Se cuenta con un archivo con información de las diferentes distribuciones de linux

existentes. De cada distribución se conoce: nombre, año de lanzamiento, número de

versión del kernel, cantidad de desarrolladores y descripción. El nombre de las

distribuciones no puede repetirse. Este archivo debe ser mantenido realizando bajas

lógicas y utilizando la técnica de reutilización de espacio libre llamada lista invertida.


Escriba la definición de las estructuras de datos necesarias y los siguientes

procedimientos:

a. ExisteDistribucion: módulo que recibe por parámetro un nombre y devuelve

verdadero si la distribución existe en el archivo o falso en caso contrario.

b. AltaDistribución: módulo que lee por teclado los datos de una nueva

distribución y la agrega al archivo reutilizando espacio disponible en caso

de que exista. (El control de unicidad lo debe realizar utilizando el módulo

anterior). En caso de que la distribución que se quiere agregar ya exista se

debe informar “ya existe la distribución”.

c. BajaDistribución: módulo que da de baja lógicamente una distribución

cuyo nombre se lee por teclado. Para marcar una distribución como

borrada se debe utilizar el campo cantidad de desarrolladores para

mantener actualizada la lista invertida. Para verificar que la distribución a

borrar exista debe utilizar el módulo ExisteDistribucion. En caso de no existir

se debe informar “Distribución no existente”.

Parte 2: Actualización maestro/detalle, reportes y merge con archivos no ordenados

Para los ejercicios de esta parte de la práctica, teniendo en cuenta que los archivos no
están ordenados por ningún criterio, puede resultar necesario recorrer los archivos más
de una vez. La idea es resolver los ejercicios sin ordenar los archivos dados, y comparar
la eficiencia (en cuanto al número de lecturas/escrituras) de la solución brindada en esta
práctica respecto a la solución para el mismo problema considerando los archivos
ordenados.

1. El encargado de ventas de un negocio de productos de limpieza desea administrar el


stock de los productos que vende. Para ello, genera un archivo maestro donde figuran
todos los productos que comercializa. De cada producto se maneja la siguiente
información: código de producto, nombre comercial, precio de venta, stock actual y
stock mínimo. Diariamente se genera un archivo detalle donde se registran todas las
ventas de productos realizadas. De cada venta se registran: código de producto y
cantidad de unidades vendidas. Resuelve los siguientes puntos:
a. Se pide realizar un procedimiento que actualice el archivo maestro con el
archivo detalle, teniendo en cuenta que:

i. Los archivos no están ordenados por ningún criterio.


ii. Cada registro del maestro puede ser actualizado por 0, 1 ó más registros
del archivo detalle.

b. ¿Qué cambios realizaría en el procedimiento del punto anterior si se sabe que


cada registro del archivo maestro puede ser actualizado por 0 o 1 registro del
archivo detalle?

2. Se necesita contabilizar los votos de las diferentes mesas electorales registradas por
localidad en la provincia de Buenos Aires. Para ello, se posee un archivo con la
siguiente información: código de localidad, número de mesa y cantidad de votos en
dicha mesa. Presentar en pantalla un listado como se muestra a continuación:

Código de Localidad Total de Votos

................................ ......................

................................ ......................

Total General de Votos: ………………

NOTAS:

● La información en el archivo no está ordenada por ningún criterio.


● Trate de resolver el problema sin modificar el contenido del archivo dado.
● Puede utilizar una estructura auxiliar, como por ejemplo otro archivo, para
llevar el control de las localidades que han sido procesadas.

3. Suponga que trabaja en una oficina donde está montada una LAN (red local). La

misma fue construida sobre una topología de red que conecta 5 máquinas entre sí y

todas las máquinas se conectan con un servidor central. Semanalmente cada

máquina genera un archivo de logs informando las sesiones abiertas por cada usuario

en cada terminal y por cuánto tiempo estuvo abierta. Cada archivo detalle contiene

los siguientes campos: cod_usuario, fecha, tiempo_sesion. Debe realizar un


procedimiento que reciba los archivos detalle y genere un archivo maestro con los

siguientes datos: cod_usuario, fecha, tiempo_total_de_sesiones_abiertas.

Notas:

● Los archivos detalle no están ordenados por ningún criterio.


● Un usuario puede iniciar más de una sesión el mismo día en la misma máquina,
o inclusive, en diferentes máquinas.

También podría gustarte