archivos secuenciales-indexados c++

37
ARCHIVOS SECUENCIALES INDEXADOS

Upload: edsonrc

Post on 25-Jul-2015

371 views

Category:

Documents


18 download

TRANSCRIPT

ARCHIVOS SECUENCIALES INDEXADOS

ARCHIVOS SECUENCIALES INDEXADOS1Alguna vez has buscado el telfono de una persona en la gua telefnica?Cuando buscas un nmero telefnico no buscas secuencialmente desde los nombres cuya inicial es a hasta la z lo cual te llevara mucho tiempo, si no que abres la gua por la letra inicial del nombre.

Por ejemplo:Si desearas buscar Mario, abriras la gua por la letra m y buscaras la cabecera de pginas hasta encontrar la pgina ms prxima al nombre, buscando nombre a nombre hasta encontrar Mario.Como veras la gua es un ejemplo tpico de archivo secuencial indexado con dos niveles de ndices: El nivel superior, para las letras iniciales. El nivel menor, para las cabeceras de pginas.

Este mtodo contiene dos archivos para almacenar informacin relacionada.ndice: Contiene un dato que identifica a la informacin.

Archivo de datos: Contiene toda la informacin guardada.Descripcin: Un archivo de organizacin secuencial indexado consta de las siguientes partes las cuales son:

rea de ndicesrea principalArchivo de desbordamiento u Overflowrea de ndices:Los registros de esta rea estn formados por dos campos que permiten identificar cada registro de forma nica:El primero contiene una clave del ltimo registro de cada bloque.El segundo contiene el apuntador al archivo principal.

Por ejemplo, si se quieren grabar los estudiantes de cierta escuela en un archivo secuencial indexado, el campo ndice que se puede elegir es el nombre del estudiante (tambin se puede elegir el nmero de carnet del estudiante).

2. rea Principal: Es la parte del fichero donde se guardan los registros ordenados por el valor del campo clave. Contiene un campo que apunta al archivo de desbordamiento el cual sirve para insertar registros.Su acceso se realiza mediante dos operaciones:Primero, buscando en el bloque del registro.Luego analiza secuencialmente ese bloque hasta localizar el registro deseado.

3. rea de Desbordamiento u Overflow: Tras completar el rea primaria, los registros aadidos posteriormente que no pueden ser realizadas en el rea primaria, sern enviados al rea de overflow.En este los registros se presentan como una lista encadenada, en que el puntero al prximo registro est compuesto por la pista y el lugar que ocupa el registro dentro de la pista. Esta lista se mantiene ordenada por clave.

Archivo de Organizacin Secuencial Indexado

1)2)3)Ejemplo:

VentajasBsqueda mas rpidas gracias a la utilizacin de un ndice.Se pueden actualizar los registros en el mismo fichero nuevo para el proceso de actualizacin.InconvenientesOcupa ms espacio en el disco que los ficheros secuenciales, debido al uso del rea de ndices.Tiende tendencias a que aumente el tiempo medio de acceso a los registros, cuando se producen muchas altas nuevas con claves que hay que intercalar entre las existencias, ya que aumenta el rea de overflow.Proceso de un Archivo Secuencial IndexadoAl disear un archivo secuencial indexado, lo primero que hay que decidir es cul va a ser el campo clave. Los registros han de ser grabados en orden secuencial, y simultneamente a la grabacin de los registros, el sistema crea los ndices en orden secuencial ascendente del contenido del campo clave.Se desarrollan las operaciones (altas, bajas, consultas) para un archivo con esta organizacin. Tambin es necesario considerar el inicio y la salida de la aplicacin que procesa un archivo indexado, para cargar y descargar, respectivamente la tabla de ndices.

Tipos de datosSe declaran dos tipos de estructuras para representar el registro de datos y el ndice respectivamente:struct estudiante {int carnet; string nombre;};struct index{int carnet; int posicion;};Esta declaracin de la variable para switch contiene la variable para almacenar datos de la estructura estudiante y la variable para almacenar indice y almacenar temporalmente (aux), durante la busqueda.

int main(){

int opcion, bus;estudiante alumno, auxi;index indice, aux;CreacinA continuacin se abre un do while para repetir el men cada vez que sea necesario para realizar las distintas operaciones del programa.do{system("cls");

Declaramos el archivo para almacenar datos del rea principal. ofstream dat("datos.txt", ios::binary | ios::app);

Declaramos el archivo para almacenar datos y clave del rea de ndice.

ofstream ind("index.txt", ios::binary | ios::app);Declaramos el archivo para buscar datos .

ifstream indic("index.txt", ios::binary);

remove("datos.txt"); Se coloca un cout con la intencin de colocar un texto de bienvenida a todo usuario que ejecute el programa.

cout