Buscar en este blog

lunes, 4 de diciembre de 2017

PROGRAMACIÓN EN C (FICHEROS)menu switch

/*
pagina web de ayuda:

https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Manejo_de_archivos

Ficheros.

El objetivo de esta práctica es profundizar en el manejo, lectura y escritura de ficheros en C.
Se posee un fichero que almacena los datos de un conjunto de libros que se encuentran en la
biblioteca municipal. Este fichero llamado Libros.dat y que se encuentra en el campus virtual
de la asignatura, organiza la información de tal forma que los datos de cada uno de los libros
existentes se representan en una línea con el siguiente formato:

ISBN Titulo Año Precio Edición

Los campos de cada línea del fichero se encuentran separados por un espacio, por lo que se
asume que dentro de cada campo no existe ningún espacio. Los campos representados son los
siguientes:


? ISBN: International Standard Book Number. Es el número de referencia
internacional para cada libro. En nuestro caso de ejemplo será un número entero de
5 dígitos.

? Título: Título del libro, donde se han sustituido los espacios internos por “_”, con el
fin de facilitar su lectura.

? Año: Año de publicación, en formato de 4 dígitos (2014, 2015…).

? Precio: Es el precio del libro en formato decimal (aa.bb).

? Edición: Número de ediciones que lleva el libro (1, 2, 3, … ).

Diseñar un programa en C que muestre el siguiente menú y que realice las siguientes acciones:

1. Cargar libros. Lee los libros del fichero Libros.dat y carga la información en
memoria.

2. Mostrar libros. Muestra la información de todos los libros cargados por pantalla.

3. Guardar libros. Guarda los datos de los libros contenidos en memoria interna en
un fichero de texto con el mismo formato.

4. Introducir libro. Pide a los usuarios los datos de un nuevo libro, el cual se añade
a la memoria interna.

5. Buscar libros por periodo de años. Muestra por pantalla todos aquellos libros
que se encuentren dentro de un periodo de años introducido por el usuario.

6. Buscar libro por ISBN. Muestra por pantalla los datos de un libro el cual se
puede encontrar a través de su ISBN.

7. Buscar libros por precio. Muestra todos aquellos libros cuyo precio sea inferior
al introducido por el usuario.

8. Salir. Sale del programa.

A tener en cuenta
Para poder almacenar los datos de los libros en memoria se requiere un buen manejo de
las estructuras de datos explicadas en clase. Se deja a criterio del alumno la elección de
las estructuras de datos adecuadas.



13659 Choque_de_reyes 2003 32.5 10
62354 Danza_de_dragones 2012 40.05 15
23069 Harry_Potter_y_la_piedra_filosofal 1997 15.00 32
48697 Harry_Potter_y_el_legado_maldito 2016 30.00 3
36954 Aprende_Calculo_Diferencial 1985 5.00 9
75986 Programar_en_C_es_divertido 2016 15.63 5
32632 Asterix_y_los_Pictor 2014 9.99 3
65569 Cocina_con_Chicote 2015 25.95 2


*/



#include <stdio.h>
#include <stdlib.h>
#include <windows.h>



typedef struct {

int ISBN;
char Titulo[50]; 
int Ano;
float Precio;
int Edicion;

}listado;

listado libros[8];


int main(int argc, char *argv[]){

int j;
int a=1;
int b=2;
int c=3;
int d=4;
int e=5;
int f=6;
int g=7;
int h=8;

FILE *archivo;
FILE *archivo2;


printf("Introduce el numero 1 para: Cargar libros.\nIntroduce el numero 2 para: Mostrar libros.\nIntroduce el numero 3 para: Guardar libros.\nIntroduce el numero 4 para: Introducir libro.\nIntroduce el numero 5 para: Buscar libros por periodo de anos.\nIntroduce el numero 6 para: Buscar libro por ISBN.\nIntroduce el numero 7 para: Buscar libros por precio.\nIntroduce el numero 8 para: Salir del programa.\n ");
scanf("%d", &j);


switch (j){

case 1:{
printf("\n Introduce el numero 1 para: Cargar libros.\n");
scanf ("%d",&a);
while (a!=1){
printf("\n El numero introducido es incorrecto\n");
exit (-1);
}

archivo = fopen("Libros.dat","r");
if (archivo == NULL){
exit(1);
}
int i;
libros[i];
for(i=0;i<=7;i++){
fscanf(archivo,"%d",&libros[i].ISBN);
fscanf(archivo,"%s",&libros[i].Titulo);
fscanf(archivo,"%d",&libros[i].Ano);
fscanf(archivo,"%f",&libros[i].Precio);
fscanf(archivo,"%d",&libros[i].Edicion);
}
fclose(archivo);
}



case 2:{
printf("\n Introduce el numero 2 para: Mostrar libros.\n");
scanf ("%d",&b);
while (b!=2){
printf("\n El numero introducido es incorrecto\n");
exit (-1);
}
int i;
libros[i];
printf("EL CONTENIDO DEL ARCHIVO DE LOS LIBROS ES:\n\n");
for(i=0;i<=7;i++){
printf("%d ",libros[i].ISBN);
printf("%s ",libros[i].Titulo);
printf("%d ",libros[i].Ano);
printf("%.2f ",libros[i].Precio);
printf("%d \n",libros[i].Edicion);
}
}



case 3:{
printf("\n Introduce el numero 3 para: Guardar libros.\n");
scanf ("%d",&c);
while (c!=3){
printf("\n El numero introducido es incorrecto\n");
exit (-1);
}
int i;
libros[i];
archivo2 = fopen( "libros2.dat", "w");
for(i=0;i<=7;i++){
fscanf(archivo,"%d",&libros[i].ISBN);
fscanf(archivo,"%s",&libros[i].Titulo);
fscanf(archivo,"%d",&libros[i].Ano);
fscanf(archivo,"%f",&libros[i].Precio);
fscanf(archivo,"%d",&libros[i].Edicion);
}
for(i=0;i<=8;i++){
fprintf(archivo,"%d ",libros[i].ISBN);
fprintf(archivo,"%s ",libros[i].Titulo);
fprintf(archivo,"%d ",libros[i].Ano);
fprintf(archivo,"%.2f ",libros[i].Precio);
fprintf(archivo,"%d \n",libros[i].Edicion);
}
fclose(archivo2);
}



case 4:{
printf("\n Introduce el numero 4 para: Introducir libro.\n");
scanf ("%d",&d);
while (d!=4){
printf("\n El numero introducido es incorrecto\n");
exit (-1);
}
 int i;
libros[8];

printf("Introduzca el ISBN: ");
scanf("%d", &libros[8].ISBN);
fprintf(archivo2, "%d ", libros[8].ISBN);
   
printf("Introduzca el Titulo: ");
scanf("%s", &libros[8].Titulo);
fprintf(archivo2, "%s ", libros[8].Titulo);
 
printf("Introduzca el Ano: ");
scanf("%d", &libros[8].Ano);
fprintf(archivo2, "%d ", libros[8].Ano);

printf("Introduzca el Precio: ");
scanf("%f", &libros[8].Precio);
fprintf(archivo2, "%f ", libros[8].Precio);

printf("Introduzca la Edicion: ");
scanf("%d", &libros[8].Edicion);
fprintf(archivo2, "%d ", libros[8].Edicion);



archivo2 = fopen("libros2.dat", "w");

printf ("\nEl contenido del archivo junto con el nuevo libro es: \n\n");
for(i=0;i<=8;i++){
fscanf(archivo2,"%d",&libros[i].ISBN);
fscanf(archivo2,"%s",&libros[i].Titulo);
fscanf(archivo2,"%d",&libros[i].Ano);
fscanf(archivo2,"%f",&libros[i].Precio);
fscanf(archivo2,"%d",&libros[i].Edicion);
}

for(i=0;i<=8;i++){
printf("%d ",libros[i].ISBN);
printf("%s ",libros[i].Titulo);
printf("%d ",libros[i].Ano);
printf("%.2f ",libros[i].Precio);
printf("%d \n",libros[i].Edicion);

fclose(archivo2);

}




case 5:{
printf("\n Introduce el numero 5 para: Buscar libros por anos.\n");
scanf ("%d",&e);
while (e!=5){
printf("\n El numero introducido es incorrecto\n");
exit (-1);
}
 int i;
libros[i];
int Ano;

printf("Introduzca el ano que decea buscar: ");
scanf("%d", &Ano);

for(i=0;i<=8;i++){
if (libros[i].Ano==Ano){
Ano=libros[i].Ano;
printf("%d ",libros[i].ISBN);
printf("%s ",libros[i].Titulo);
printf("%d ",libros[i].Ano);
printf("%.2f ",libros[i].Precio);
printf("%d \n",libros[i].Edicion);
}
}



}



case 6:{
printf("\n Introduce el numero 6 para: Buscar libro por ISBN.\n");
scanf ("%d",&f);
while (f!=6){
printf("\n El numero introducido es incorrecto\n");
 exit (-1);
}

 int i;
libros[i];
int ISBN;

printf("Introduzca el ISBN que decea buscar: ");
scanf("%d", &ISBN);

for(i=0;i<=8;i++){
if (libros[i].ISBN==ISBN){
ISBN=libros[i].ISBN;
printf("%d ",libros[i].ISBN);
printf("%s ",libros[i].Titulo);
printf("%d ",libros[i].Ano);
printf("%.2f ",libros[i].Precio);
printf("%d \n",libros[i].Edicion);
}
}
}



case 7:{
printf("\n Introduce el numero 7 para: Buscar libros por precio.\n");
scanf ("%d",&g);
while (g!=7){
printf("\n El numero introducido es incorrecto\n");
 exit (-1);
}
 int i;
libros[i];
int Precio;

printf("Introduzca el precio que decea buscar: ");
scanf("%f", &Precio);

for(i=0;i<=8;i++){
if (libros[i].Precio==Precio){
Precio=libros[i].Precio;
printf("%d ",libros[i].ISBN);
printf("%s ",libros[i].Titulo);
printf("%d ",libros[i].Ano);
printf("%.2f ",libros[i].Precio);
printf("%d \n",libros[i].Edicion);
}
}




}



case 8:{
printf("\n Introduce el numero 8 para: Salir del programa.\n");
scanf ("%d",&h);
exit (-1);
while (h!=8){
printf("\n El numero introducido es incorrecto\n");
exit (-1);
}
}
}
}


















No hay comentarios:

Publicar un comentario