Hola....alguien me puede ayudar a modificar esto. para un control de libros.
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char nom[25];
int edad;
char tel[15];
char dir[35];
}Amigo;
/*Funciones de Archivo*/
void Crear(void);
void Listar(void);
void Agregar(void);
void Modificar(void);
void Borrar(void);
void Encontrar(void);
/*Nombre del Archivo a guardar*/
char nombre_fichero[] = "agenda.dat";
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" );
puts("Presiona cualquier tecla para continuar.... y Crear el Archivo");
fp = abrir_fichero_b(nombre_fichero,1);
fclose(fp);
getch();
}
do{
clrscr();
puts("1. Crear Archivo (Cuidado, elimina lo que ya se tiene en el Archivo)");
puts("2. Agregar\n3. Eliminar\n4. Listar\n5. Buscar\n6. Modificar\n7. Salir");
puts("?Introduce tu opcion y depues enter.");
opc = atoi(gets(cad));
while(opc<0 || opc>7) /*Limitando la entrada de las opciones*/
opc = atoi(gets(cad));
clrscr();
switch(opc)
{
case 1:
Crear();
break;
case 2:
Agregar();
break;
case 3:
Borrar();
break;
case 4:
Listar();
break;
case 5:
Encontrar();
break;
case 6:
Modificar();
break;
}
/*Solo parar cuando sea una de las opciones*/
if(opc<7){
puts("\n\nPresiona Cualquier Tecla para Regresar al Menu");
getch();
}
}while(opc!=7);
}
// FUNCION PARA CREAR UN ARCHIVO
/*****************************************************************
Funcion que sirve para borrar todo el Contenido del Archivo Binario*/
void Crear(void){
FILE *fp;
fp = abrir_fichero_b(nombre_fichero,0);
if(fp)
{
printf("\n Error de apuertura del archivo agenda.dat\n");
fclose(fp);
}
}
/********************************************************
Funcion que sirve para imprimir todos los un registros del Archivo Binario*/
void Listar(void){
FILE *fp;
int i=1;
Amigo aux;
fp = abrir_fichero_b(nombre_fichero,0);
if(!(fp))
printf("\n Error de apuertura del archivo agenda.dat\n");
else{
printf("\n U S U A R I O S E N L A A G E N D A\n");
printf("---------------------------------------------------------------\n");
while ((fread(&aux, sizeof(aux), 1, fp))!=0){
printf("=> Datos del Amigo %d\n",i);
printf("Nombre: %s | Edad: %d | Telefono: %s\n",aux.nom,aux.edad,aux.tel);
printf("Direccion: %s\n",aux.dir);
i++;
}
printf("---------------------------------------------------------------\n");
fclose(fp);
}
}
/********************************************************
Funcion que sirve para agregar un registro dentro del Archivo Binario*/
void Agregar(void){
FILE *fp;
Amigo aux;
char cad[3];
printf("\n Agregando un Amigo Nuevo al archivo binario agenda.dat\n");
fp=abrir_fichero_b(nombre_fichero,2);
if(!(fp))
printf("\n Error de apuertura del archivo agenda.dat\n");
else{
/*Introduciendo los Datos del Amigo*/
printf("Dame el nombre del Amigo: ");
gets(aux.nom);
printf("Dame la Edad del Amigo: ");
aux.edad=atoi(gets(cad));
printf("Dame el telefono del Amigo: ");
gets(aux.tel);
printf("Dame la direccion del Amigo: ");
gets(aux.dir);
fwrite(&aux, sizeof(aux), 1, fp);
fclose(fp);
}
}
/********************************************************
Funcion que sirve para Modificar un registro dentro del Archivo Binario*/
void Modificar(void){
FILE *fp;
Amigo 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("Como se llama al amigo que quieres Modificar: ");
gets(cadena);
/*Buscando el Amigo dentro del Archivo*/
while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.nom,cadena)!=0);
if (n==0)
printf("No existe el cuate llamado: %s ",cadena);
else{
printf("\n Amigo encontrado....!!!\n");
printf("Nombre: %s ",aux.nom);
printf("Edad: %d ",aux.edad);
printf("Telefono %s ",aux.tel);
printf("Direccion: %s\n",aux.dir);
printf("\n CAMBIANDO VALORES \n");
printf("Dame el nombre nuevo del Amigo: ");
gets(aux.nom);
printf("Dame la nueva Edad del Amigo: ");
aux.edad=atoi(gets(cad));
printf("Dame el nuevo telefono del Amigo: ");
gets(aux.tel);
printf("Dame la nueva direccion del Amigo: ");
gets(aux.dir);
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
}
}
/********************************************************
Funcion que sirve para borrar un registro dentro del Archivo Binario*/
void Borrar(void){
FILE *fp,*fd;
Amigo aux;
int encontrado=0;
char cadena[25];
printf("Introduce el nombre del Amigo 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 agenda.dat\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.nom,cadena)!=0)
fwrite(&aux, sizeof(aux), 1, fd);
else
encontrado=1;
fclose(fd);
}
fclose(fp);
if(encontrado){
system("del agenda.dat");
system("ren paso.$$$ agenda.dat");
printf("\n Registro BORRADO con Exito!!!\n");
}
else{
system("del paso.$$$");
printf("\n El Registro NO SE ENCONTRO, no fue borrado!!!");
}
}
}
/******************************************
Funcion para Encontrar un Amigo e imprimir sus datos*/
void Encontrar(void){
FILE *fp;
Amigo aux;
int n;
char cadena[25];
printf("Introduce el nomrbre del Amigo que buscas: ");
gets(cadena);
printf("\n Buscando a un Amigo \n");
fp=abrir_fichero_b(nombre_fichero,0);
if(!(fp))
printf("\n Error de apuertura del archivo agenda.dat\n");
else{
while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.nom,cadena)!=0);
if (n==0)
printf("No existe el cuate llamado: %s ",cadena);
else{
printf("\n Amigo encontrado....!!!\n");
printf("Nombre: %s | Edad: %d | Telefono: %s\n",aux.nom,aux.edad,aux.tel);
printf("Direccion: %s\n",aux.dir);
/* getch();*/
}
}
}
/*************************************************
Funcion que Carga el Archivo y regresa un apuntador con que se va ha manejar el Archivo
Recibe: El nombre del Archivo , Y el método con que se va abrir el Archivo
Un Apuntador tipo Archivo, 0 - Solo Lectura , 1 - Para crearlo de nuevo desde cero,
2 - Anhadir Informacion, 3 - para Lectura y Escritura.
Regresa: El apuntador de Tipo FILE, con el cual se abrio*/
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;
}
=========================================================================
#include "stdlib.h"
#include "conio.h"
#include "stdio.h"
#include "string.h"
void Agregar()
{
char libro [100];
char autor [100];
char lugar [100];
char dir [100];
int num;
int cod;
int opc;
clrscr();
while(opc!=0)
{
printf("\n\n\t\t\tIngrese el Codigo del libro: ");
scanf("%d", &cod);
printf("\n\n\n\t\t\tIngrese el nombre del libro: ");
scanf("%s", &libro);
printf("\n\n\n\t\t\tIngrese el autor del libro: ");
scanf("%s", &autor);
printf("\n\n\n\t\t\tIngrese el año de edicion: ");
scanf("%d", &num);
printf("\n\n\n\t\t\tIngrese el lugar: ");
scanf("%s", &lugar);
printf("\n\n\n\t\t\tIngrese la direccion: ");
scanf("%s", &dir);
printf("Desea ingresar otro 1 si 0 o no:");
scanf("%d", &opc);
clrscr();
}
getch();
}
void Modificar()
{
int cod;
clrscr();
printf("\n\n\t\tIngres el codigo del libro que desea modificar: ");
scanf("%d", &cod);
printf("\n\n\t\tEsta seguro que desea modificar la informacion de libro: ");
getch();
}
void Eliminar()
{
int cod;
clrscr();
printf("\n\n\t\tIngres el codigo del libro que desea eliminar: ");
scanf("%d", &cod);
printf("\n\n\t\tEsta seguro que desea eliminar el libro: ");
getch();
}
void Consultar()
{
int cod;
clrscr();
printf("\n\n\t\tIngres el codigo del libro que desea Consultar: ");
scanf("%d", &cod);
getch();
}
void Imprimir()
{
int cod;
clrscr();
printf("\n\n\t Ingres el codigo del libro que desea desea Imprimir: ");
scanf("%d", &cod);
getch();
}
void Integrantes()
{
clrscr();
printf("\n\n\n\n\n *************************************** ");
printf(" * INTEGRANTES DEL GRUPO 5 * ");
printf(" * * ");
printf(" * * ");
printf(" * Fernando Rafael Baldizon Estrada. * ");
printf(" * * ");
printf("\n * No. de Carne: 1690-06-10030. * ");
printf(" * * ");
printf(" * * ");
printf(" * Oscarito Israel Batun Espinoza. * ");
printf(" * * ");
printf("\n * No. de Carne: 1690-06-10035. *");
printf(" * * ");
printf("\n *************************************** ");
getch();
}
void main()
{
int opcion=0;
while (opcion!=7)
{
clrscr();
printf(" ********************************************* ");
printf("\n * BIENVENIDOS * ");
printf(" * * ");
printf("\n * UNIVERSIDAD MARIANO GALVEZ * ");
printf(" * * ");
printf("\n * CONTROL DE LIBRO EN UNA EDITORIAL *");
printf(" ********************************************* ");
printf("\n\n MENU ");
printf("\n\n Agregar [1] ");
printf( "\n\n Modificar [2] ");
printf( "\n\n Eliminar [3] ");
printf( "\n\n Consultar [4] ");
printf( "\n\n Imprimir [5] ");
printf( "\n\n Integrantes [6] ");
printf( "\n\n Salir [7] ");
printf("\n\n Seleccione una Opcion: ");
scanf("%d",&opcion);
switch(opcion)
{
case 1:
Agregar();
break;
case 2:
Modificar();
break;
case 3:
Eliminar();
break;
case 4:
Consultar();
break;
case 5:
Imprimir();
break;
case 6:
Integrantes();
break;
//case 7:
//Salir();
// break;
}
getch();
}
}