Mi filosofia en frases celebres

7 de diciembre de 2010

Proyecto en Borland C++

Hola!!! (: como ya saben estamos en los ultimos dias de clases y es el tiempo de dejar los proyectos finales que decidiran si aprovamos una materia o si nos vamos a globales y recursamientos D: asi que aqui les tengo un codigo para Borland C++, es un programa que crea un archivo de con extencion .txt en el que se graban los datos que ingreses, el programa tambien los elimina, los modifica y los enlista o muestra, solo tiene un pequeño error creo que con el fichero y es que se traba un poco n.n' pero en si realiza lo que le pides aqui se los dejo n.n .

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

typedef struct {
 char tit[30];
 int isbn;
 char autor[20];
 char tipo[25];
}Libro;

//Funciones de Archivo
void Crear(void);
void Listar(void);
void Agregar(void);
void Modificar(void);
void Borrar(void);
void Encontrar(void);

//NOMBRE DEL ARCHIVO
char nombre_fichero[] = "libros.txt";
FILE *abrir_fichero_b(char cadena[], int metodo);

void main(){
 FILE *fp;
 int opc;
 char cad[3];
 fp = abrir_fichero_b(nombre_fichero,0);
 if( fp ){
   fclose(fp);
 }
 else
 {
  printf( "Error (NO ABIERTO)\n" );
      gotoxy(7,6);
  cputs("Presiona cualquier tecla para continuar.... y Crear el Archivo");
  fp = abrir_fichero_b(nombre_fichero,1);
  fclose(fp);
  getch();
 }
 do{
  clrscr();
      textcolor(10);
      cprintf("\n                               ..:: Lista de libros ::..");
      textcolor(29);
      gotoxy(25,7);
      cputs("\n1. Agregar libro");
      gotoxy(25,9);
      cputs("\n2. Eliminar libro");
      gotoxy(25,11);
      cputs("\n3. Visualizar libros");
      gotoxy(25,13);
      cputs("\n4. Buscar titulo de libro");
      gotoxy(25,15);
      cputs("\n5. Modificar\n");
      gotoxy(25,17);
      cputs("\n6. Salir\n\n");
      textcolor(RED);
      gotoxy(57,24);
      cprintf("Gonzalez Corrales Lucia\n");
      gotoxy(57,25);
      cprintf("Gonzalez Laffagra Yulisa");
      textcolor(5);
      gotoxy(20,20);
  cputs("\n     Que opcion deseas elegir?   ");
  opc = atoi(gets(cad));
   while(opc<0 || opc>7)
      opc = atoi(gets(cad));
  clrscr();
  switch(opc)
  {
  case 0:
        Crear();
    break;
  case 1:
    Agregar();
    break;
  case 2:
    Borrar();
    break;
  case 3:
    Listar();
    break;
  case 4:
    Encontrar();
    break;
  case 5:
     Modificar();
    break;
  }

  if(opc<7){
   puts("\n\n... presiona cualquier tecla para regresar al Menu");
   getch();
  }
 }while(opc!=7);
}

//CREAR ARCHIVO
void Crear(void){
   FILE *fp;

   fp = abrir_fichero_b(nombre_fichero,0);
   if(fp)
   {
    textcolor(8);
      gotoxy(7,4);
  cprintf("\nError de apuertura del archivo agenda.dat\n");
        fclose(fp);
   }
}

//VISUALIZAR REGISTROS
void Listar(void){
   FILE *fp;
   int i=1;
   Libro aux;
 fp = abrir_fichero_b(nombre_fichero,0);
   if(!(fp))
    printf("\n Error de apuertura del archivo libros.txt\n");
   else{
    textcolor(10);
      cprintf("\n     .:: T i t u l o s   D e   L i b r o s   E n l i s t a d o s ::.\n\n");
      while ((fread(&aux, sizeof(aux), 1, fp))!=0){
  printf("\n -Datos de libro: %d\n\n",i);
  printf("     Titulo: %s\n",aux.tit);
      printf("     ISBN:   %d\n",aux.isbn);
      printf("     Autor:  %s\n",aux.autor);
  printf("     Tipo:   %s\n\n",aux.tipo);
  i++;
      }
      fclose(fp);
   }
}

//AGREGAR REGISTRO
void Agregar(void){
   FILE *fp;
   Libro aux;
   char cad[3];
   textcolor(14);
   cprintf("\n Agregando titulo de libro\n");
   fp=abrir_fichero_b(nombre_fichero,2);
   if(!(fp))
  printf("\n Error de apuertura del archivo libros.txt\n");
   else{
  /*Introduciendo los Datos del Amigo*/
      textcolor(12);
      gotoxy(5,4);
  cprintf("Ingresa el titulo: ");
  gets(aux.tit);
    gotoxy(5,6);
  cprintf("Ingresa el ISBN:   ");
  aux.isbn=atoi(gets(cad));
      gotoxy(5,8);
  cprintf("Ingresa el autor:  ");
  gets(aux.autor);
      gotoxy(5,10);
  cprintf("Ingresa el tipo:   ");
  gets(aux.tipo);
  fwrite(&aux, sizeof(aux), 1, fp);
  fclose(fp);
   }
}


//MODIFICAR
void Modificar(void){
   FILE *fp;
   Libro aux;
   int n;
   char cadena[25],cad[2];
 fp=abrir_fichero_b(nombre_fichero,3);
   if(!(fp))
    printf("\n Error de apuertura del archivo agenda.dat\n");
   else{
  printf("Cual es el titulo del libro que quieres Modificar?  ");
  gets(cadena);

  //MODIFICAR
      while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.tit,cadena)!=0);
      if (n==0)
         printf("No se encuentra el libro llamado: %s ",cadena);
      else{
         printf("\n Libro encontrado....!!!\n");
         printf("Titulo: %s ",aux.tit);
         printf("ISBN:   %d ",aux.isbn);
         printf("Autor:  %s ",aux.autor);
         printf("Tipo:   %s\n",aux.tipo);
         printf("\n CAMBIANDO VALORES \n");
      printf("Ingresa el nuevo titulo: ");
  gets(aux.tit);
  printf("Ingresa el nuevo ISBN:   ");
  aux.isbn=atoi(gets(cad));
  printf("Ingresa el nuevo autor:  ");
  gets(aux.autor);
  printf("Ingresa el nuevo tipo:   ");
  gets(aux.tipo);

         printf("\n GRABANDO Y CERRANDO ARCHIVO \n");
         fseek(fp,-1*sizeof(aux),SEEK_CUR);
         fwrite(&aux, sizeof(aux), 1, fp);
      }
      fclose(fp);   //Cerramos el archivo
   }
}

//ELIMINAR REGISTRO
void Borrar(void){
   FILE *fp,*fd;
   Libro aux;
   int encontrado=0;
 char cadena[25];

   printf("Introduce el titulo a borrar: ");
   gets(cadena);

   printf("\n BORRANDO REGISTROS  \n");
   fp=abrir_fichero_b(nombre_fichero,0);
   if(!(fp))
    printf("\n Error de apuertura del archivo libros.txt\n");
   else{
  fd=abrir_fichero_b("paso.$$$",1);

   if(!(fd))
    printf("\n Error!!! Imposible crear archivo auxiliar\n");
   else{
    while ((fread(&aux, sizeof(aux), 1, fp))!=0)
      if(stricmp(aux.tit,cadena)!=0)
       fwrite(&aux, sizeof(aux), 1, fd);
      else
       encontrado=1;
      fclose(fd);
      }
      fclose(fp);
      if(encontrado){
         system("del libros.txt");
         system("ren paso.$$$ libros.txt");
         printf("\n Registro BORRADO con Exito!!!\n");
      }
      else{
         system("Del paso.$$$");
         printf("\n El Registro NO SE ENCONTRO, no fue borrado!!!");
      }
   }
}

//BUSCAR REGISTRO
void Encontrar(void){
 FILE *fp;
 Libro aux;
 int n;
 char cadena[25];

 printf("Introduce el titulo del libro que buscas: ");
 gets(cadena);

 printf("\n Buscando titulo...  \n");
 fp=abrir_fichero_b(nombre_fichero,0);
 if(!(fp))
  printf("\n Error de apuertura del archivo\n");
 else{
  while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.tit,cadena)!=0);
      if (n==0)
         printf("No existe el titulo:  %s ",cadena);
      else{
         printf("\n Titulo encontrado!!!\n");
         printf("Titulo: %s ",aux.tit);
         printf("ISBN:   %d ",aux.isbn);
         printf("Autor:  %s ",aux.autor);
         printf("Tipo:   %s\n",aux.tipo);
  }
 }
}

FILE *abrir_fichero_b(char cadena[], int metodo){
 FILE *x;
 switch(metodo){
  case 0:
   x = fopen(cadena,"rb");
   break;
  case 1:
   x = fopen(cadena,"wb");
   break;
  case 2:
   x = fopen(cadena,"ab");
   break;
  case 3:
   x = fopen(cadena,"r+b");
   break;
 }
 return x;
}

1 comentario:

  1. en que direccion se encuentran guarados los nombres de los libros?

    ResponderEliminar

Hola, deja tu comentario para saber que opinas (: