0% encontró este documento útil (0 votos)
83 vistas7 páginas

Variantes Programación I - 2° Parcial

El programa crea un menú con 5 opciones: 1) Ingreso de libros, 2) Modificación de libros, 3) Eliminación de libros, 4) Búsqueda por código de libro y 5) Salir. Al seleccionar cada opción, el programa realiza las correspondientes funciones de ingresar, modificar, eliminar o buscar datos de libros almacenados en un archivo directo, mostrando mensajes de resultado.

Cargado por

Edgar Perez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
83 vistas7 páginas

Variantes Programación I - 2° Parcial

El programa crea un menú con 5 opciones: 1) Ingreso de libros, 2) Modificación de libros, 3) Eliminación de libros, 4) Búsqueda por código de libro y 5) Salir. Al seleccionar cada opción, el programa realiza las correspondientes funciones de ingresar, modificar, eliminar o buscar datos de libros almacenados en un archivo directo, mostrando mensajes de resultado.

Cargado por

Edgar Perez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Universidad Mariano Gálvez de Guatemala

Facultad de Ingeniería en Sistemas de Información


1.
Asignatura: Programación I
Jornada Vespertina
Código: 0910-012
2. VARIANTE
A
Ciclo: 3o Fecha: 29 de abril de 2020
Absoluta: 20 %

Catedrático: Inga. María Amelia Batres Gramajo


Relativa: 100 %

Semestre: 1o Sección: B Duración en Minutos: 6780


VoBo:

Observaciones: Horario Sábado 25 de abril 07:00 AM a miércoles 29 de abril 23:59 PM

0 min
3. EXAMEN PRIMER PARCIAL SEGUNDO PARCIAL FINAL RECUPERACIÓN EXTRAORDINARIO

4. INSTRUCCIONES 5. PUNTUACIÓN

Generales: Resuelva lo mejor posible cada uno de los temas que se le Se indica en cada serie.
presentan. Sea claro y ordenado.

6. TEMARIO

Nombre: Carlos David Pérez Marroquín Carnet: 0910-19-7000 Sección: B Fecha: 29-4-2020

Primera Serie: (2 puntos por cada pregunta)


Instrucciones: Responda las siguientes preguntas, sea claro y ordenado

1. Explique qué es un archivo, y dé 3 ejemplos


Un archivo también es conocido como fichero y es un conjunto organizado de unidades de información (bits)
almacenados en un dispositivo, es una secuencia de datos que están disponibles para ser utilizados por un
programa, todos los archivos tienen un nombre y una ubicación dentro del sistema que se pueden manejar en
cualquier momento.

Ejemplos:
Archivos de texto
Archivos binarios
Archivos lógicos

2. Cuál es la diferencia entre un archivo secuencial, uno secuencial indexado y uno directo
Los archivos secuenciales constan en una serie de líneas, en la que cada línea está formada por una serie de
caracteres separados por una marca de fin de línea la cual es posible detectar. En cambio los archivos
secuenciales indexados tiene tres aéreas que son: los índices, área primaria y área de excedentes, este tipo
de archivos tiene un rápido acceso y además el sistema se encarga de relacionar la posición de cada registro
con su contenido por medio del área de índices. Y en los archivos directos, los datos se colocan y acceden de
forma aleatoria mediante su posición, este tipo de archivos puede leer y escribir registros, en cualquier orden
y cualquier lugar.
3. Qué es una dirección física
La dirección física es una dirección de memoria que permite acceder a una celda de almacenamiento en
específico, es un identificador único del registro.

4. Explique qué es un buffer y cuál es el objetivo de su uso


Un buffer es un área de almacenamiento temporal en memoria para el conjunto de datos leídos o escritos en
el archivo.
El objetivo de uso de un buffer es que retiene los datos en tránsito desde y hacia el archivo y tienen como
finalidad hacer más eficiente las operaciones de entrada y salida en los archivos del disco, y esto provoca
menor cantidad de accesos, los cuales son más lentos que la memoria.

5. Explique por qué es necesario cerrar los archivos o conexiones abiertas cuando estas ya no se
utilizan.
Cuando los archivos o conexiones ya no se utilizan son necesarios cerrarlos ya que al terminar la ejecución
del programa podría ocurrir que hayan datos en el buffer, y si no se vacían en el archivo estos quedarían sin
las ultimas actualizaciones, siempre que se termina de procesar un archivo y termina la ejecución del
programa los archivos abiertos hay que cerrarlos para que se vacié el buffer.
Segunda Serie:
Instrucciones: Cree un programa en C que cree un archivo directo y que almacene datos de libros, autor, título del
libro, editorial, año y signatura. El programa debe de mostrar un menú con las siguientes opciones:
 Ingreso de libros (2 puntos)
 Modificación de libros (2 puntos)
 Eliminación de libros(2 puntos)
 Búsqueda por código de libro (2 puntos)
 Menú con las opciones anteriores (2 puntos)
Adjunte el código en C.

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <iostream.h>
#include <ctype.h>

void INGRESO();
void BUSCAR();
void MODIFICAR();
void ELIMINAR();

struct tipo_registro{
int cod_libro;
char autor[25];
char titulo[35];
char editorial[35];
int anio;
char signatura[25];
};
struct tipo_registro Registro;

FILE *alias;
void main(void){
int opcion = 0;

do{
clrscr();
cout<<" __________________________________________________________"<<endl;
cout<<" . ."<<endl;
cout<<" . <<< BIBLIOTECA MUNICIPAL DE SAN JUAN ALOTENANGO>>> ."<<endl;
cout<<" . ."<<endl;
cout<<" . <MENU> ."<<endl;
cout<<" . [1] Ingresar ."<<endl;
cout<<" . [2] Consultar ."<<endl;
cout<<" . [3] Modificar ."<<endl;
cout<<" . [4] Eliminar ."<<endl;
cout<<" . [5] Salir ."<<endl;
cout<<" . ."<<endl;
cout<<" __________________________________________________________"<<endl;

cout<<"\n Ingrese la Opcion a realizar: ";


cin>>opcion;

switch (opcion){
case 1: INGRESO();
break;
case 2: BUSCAR();
break;
case 3: MODIFICAR();
break;
case 4: ELIMINAR();
break;
case 5:
getch();
break;
default:
cout<<"La opcion que ingreso es incorrecta =( "<<endl;
getch();
}
}while (opcion !=5);
}

void INGRESO(){
long int dir_fisica=0;
int cod_libro;
clrscr();
cout<<"\n ALTAS DE REFGISTROS DE LIBROS";
alias=fopen("LIBRO.DIR","rb+");

if(alias==NULL)
alias=fopen("LIBRO.DIR","wb");

cout<<"\n\n\rCodigo del libro: ";


cin>>cod_libro;

dir_fisica=cod_libro*sizeof(Registro);
fseek(alias,dir_fisica,SEEK_SET);
fread(&Registro,sizeof(Registro),1,alias);

if(Registro.cod_libro==cod_libro){
cout<<"\n\nREGISTRO DUPLICADO!!! =(";
fclose(alias);
getch();
return;

cout<<"\n\rAutor: "; gets(Registro.autor);


cout<<"\n\rTitulo: "; gets(Registro.titulo);
cout<<"\n\rEditorial:"; gets(Registro.editorial);
cout<<"\n\rAnio: "; cin>>Registro.anio;
cout<<"\n\rSignature: "; gets(Registro.signatura);

Registro.cod_libro=cod_libro;
fseek(alias,dir_fisica,SEEK_SET);
fwrite(&Registro,sizeof(Registro),1,alias);
fclose(alias);
cout<<"\n\rLIBRO REGISTRADO!!!";
cout<<"\n\r<<< Oprima cualquier tecla para regresar al menu principal >>>";
getch();
return;
}

void BUSCAR(){
long int dir_fisica=0;
int cod_libro;
clrscr();
cout<<"\n\rCONSULTA DE REGISTROS DE LLIBROS INGRESADOS";
alias=fopen("LIBRO.DIR","rb");

if(alias==NULL){
cout<<"\n\n\rNO EXISTE EL ARCHIVO!!!";
cout<<"\n\r<<< Oprima cualquier tecla para regresar el menu principal >>>";
getch();
return;

}
cout<<"\n\n\rCodigo del libro: ";
cin>>cod_libro;

dir_fisica=cod_libro*sizeof(Registro);
fseek(alias,dir_fisica,SEEK_SET);
fread(&Registro,sizeof(Registro),1,alias);

if(Registro.cod_libro==cod_libro){
cout<<"______________________________________________________\n"<<endl;
cout<<" Codigo_libro: "<<Registro.cod_libro<<endl;
cout<<" Autor: "<<Registro.autor<<endl;
cout<<" Titulo del libro: "<<Registro.titulo<<endl;
cout<<" Editorial: "<<Registro.editorial<<endl;
cout<<" Anio: "<<Registro.anio<<endl;
cout<<" Signatura: "<<Registro.signatura<<endl;
cout<<"\n_____________________________________________________";
}else{
cout<<"\n\n\rNo existe este registro!!!";
}
fclose(alias);
cout<<"\n\n\r <<< Oprima cualquier tecla para regresar al menu principal >>>";
getch();
return;
}

void MODIFICAR(){
long int dir_fisica=0;
int cod_libro;
clrscr();
cout<<"\n\rMODIFICACION DE REGISTROS DE LIBROS";
alias=fopen("LIBRO.DIR","rb+");

if(alias==NULL){
cout<<"\n\rNO EXISTE EL ARCHIVO!!!";
cout<<"\n\r<<< OPRIMA CUALQUIER TECLA PARA REGRESAR AL MENU PRINCIPAL >>>";
getch();
return;
}

cout<<"\n\n\rCodigo de libro: ";


cin>>cod_libro;

dir_fisica=cod_libro*sizeof(Registro);
fseek(alias,dir_fisica,SEEK_SET);
fread(&Registro,sizeof(Registro),1,alias);

if(Registro.cod_libro==cod_libro){
cout<<"_____________________________________________________\n"<<endl;
cout<<" Codigo_libro: "<<Registro.cod_libro<<endl;
cout<<" Autor: "<<Registro.autor<<endl;
cout<<" Titulo del libro: "<<Registro.titulo<<endl;
cout<<" Editorial: "<<Registro.editorial<<endl;
cout<<" Anio: "<<Registro.anio<<endl;
cout<<" Signatura: "<<Registro.signatura<<endl;
cout<<"\n____________________________________________________";

cout<<"\n\n\rANOTE LOS NUEVOS DATOS SOBRE EL LIBRO...";


cout<<"\n\rAutor: "; gets(Registro.autor);
cout<<"\n\rTitulo del libro: "; gets(Registro.titulo);
cout<<"\n\rEditorial: "; gets(Registro.editorial);
cout<<"\n\rAnio: "; cin>>Registro.anio;
cout<<"\n\rSignatura: "; gets(Registro.signatura);

fseek(alias,ftell(alias)-sizeof(Registro),SEEK_SET);
fwrite(&Registro,sizeof(Registro),1,alias);
fclose(alias);

cout<<"\n\n\rRegistro modificado!!!";
cout<<"\n\r <<< Oprima cualquier tecla para regresar al menu principal >>>";
getch();
return;
}else{
cout<<"\n\n\rNo se encuentra este registro!!";
}
fclose(alias);
cout<<"\n\n\r <<< Oprima cualquier tecla para regresar al menu principal >>>";
getch();
return;
}

void ELIMINAR(){
long int dir_fisica=0;
int cod_libro;
char op;
clrscr();
cout<<"\n\rBAJA LOGICA DE REGISTRO DE LOS LIBROS";
alias=fopen("LIBRO.DIR","rb+");
if(alias==NULL){
cout<<"\n\n\rNo existe el archivo!!!";
cout<<"\n\r <<< Oprima cualqueir tecla para regresar al menu principal >>>";
getch();
return;
}
cout<<"\n\n\rCodido del libro: ";
cin>>cod_libro;
dir_fisica=cod_libro*sizeof(Registro);
fseek(alias,dir_fisica,SEEK_SET);
fread(&Registro,sizeof(Registro),1,alias);

if(Registro.cod_libro==cod_libro){
cout<<"_____________________________________________________\n"<<endl;
cout<<" Codigo_libro: "<<Registro.cod_libro<<endl;
cout<<" Autor: "<<Registro.autor<<endl;
cout<<" Titulo del libro: "<<Registro.titulo<<endl;
cout<<" Editorial: "<<Registro.editorial<<endl;
cout<<" Anio: "<<Registro.anio<<endl;
cout<<" Signatura: "<<Registro.signatura<<endl;
cout<<"\n____________________________________________________";

Registro.cod_libro=0;
strcpy(Registro.autor,"");
strcpy(Registro.titulo,"");
strcpy(Registro.editorial,"");
Registro.anio=0;
strcpy(Registro.signatura,"");

do{
cout<<"\n\rEsta seguro que desea eliminar este registro? [S=si / N=no] ---> ";
op=toupper(getche());
}while(op!='S' && op!='N');

if(op=='S'){
fseek(alias,dir_fisica,SEEK_SET);
fwrite(&Registro,sizeof(Registro),1,alias);
cout<<"\n\n\rRegistro eliminado logicamente!!!";
}else{
cout<<"\n\n\nRegistro No Eliminado!!!";
}
fclose(alias);
cout<<"\n\r <<< Oprima cualquier tecla para regresar al menu principal >>>";
getch();
return;
}else{
cout<<"\n\n\rNo se encuentra el registro!!!";
}
fclose(alias);
cout<<"\n\n\r <<< Oprima cualquier tecla para regresar al menu principal >>>";
getch();
return;
}

También podría gustarte