Está en la página 1de 5

#include #include #include #include #include

<stdio.h> <string.h> <conio.h> <ctype.h> <stdlib.h>

struct empresa { char codigo[6]; char nombre[20]; char f_venc[8]; long precio; int stock; }; struct transac { char codigot[6]; char nombret[20]; long precioiva; }; Crearproducto(FILE **p); Consultanombre(FILE *p); Modificarprecio(FILE **p); Eliminaproducto(FILE **p); Precioconiva(FILE **q, FILE *w); Muestraprecios(FILE *q); main() { FILE *w,*y; int op = 0; while(op!=7) { printf("\n 1) Crear"); printf("\n 2) Consultar"); printf("\n 3) Modificar"); printf("\n 4) Eliminar"); printf("\n 5) Generar precio"); printf("\n 6) Mostrar precio"); printf("\n 7) Salir"); printf("\n Ingresar una opcion [1-7]: "); fflush(stdin); scanf("%d",&op); switch(op) { case case case case case case } } }

1: 2: 3: 4: 5: 6:

Crearproducto(&w); break; Consultanombre(w); break; Modificarprecio(&w); break; Eliminarproducto(&w); break; Precioconiva(&y,w); break; Muestraprecios(y); break;

Crearproducto(FILE **p) { struct empresa a; char resp; (*p)=fopen("C:/empresa.dat","ab+"); if((*p)==NULL) exit(0); do { clrscr(); printf("\n codigo -----> "); fflush(stdin); gets(a.codigo); printf("\n nombre -----> "); fflush(stdin); gets(a.nombre); printf("\n Fecha de vencimiento --> "); fflush(stdin); gets(a.f_ venc); printf("\n precio -----> "); fflush(stdin); scanf("%ld",&a.preci o); printf("\n stock ------> "); fflush(stdin); scanf("d", &a.stock) ; fwrite(&a,sizeof(a),1,(*p); printf("\n Desea agregar otro registro [s/n]"); fflush stdin; scanf("%c",&resp); resp =toupper(resp); }while(resp=='S'); fclose((*p)); return(0); }

Consultarproducto(FILE *p) { struct empresa a; char nomaux[20]; char resp; int sw=0; do { p=fopen("C:/empresa.dat","rb"); printf("\n Ingresar nombre: "); fflush(stdin); gets(nomaux); strupr(nomaux); while(!feof(p)) { fread(&a,sizeof(a),1,p); if(feof(p)&&(sw==0)) break; if(strcmp(a.nombre,nomaux)==0) { printf("\n codigo: %s",a.codigo); printf("\n nombre: %s",nomaux); printf("\n f. vencimiento: %s",a.f_venc); printf("\n precio: %ld",a.precio); printf("\n stock: %d",a.stock); sw=1; getch(); } } if(sw==0)

{ printf("\n el nombre %s no existe", nomaux); getch(); } printf("\n desea consultar por otro [s/n]"); fflush(stdin); scanf("&c",resp); resp=toupper(resp); }while(resp=='S'); return(0); }

Modificarprecio(FILE **p); { struct empresa a; char nomaux [20]; int sw = 0, pos; print("\n Ingresar nombre: "); fflush(stdin); gets(nomaux); (*p)=fopen ("C:/empresa.dat","rb"); if((*p) == NULL) exit(0); while(!feof((*p)) && (sw==0)) { if(feof((*p))) breaK; fread(&a,sizeof(a),1,(*p); if(strcmp(a.nombre,nomaux)==0) sw=1; } fclose((*p)); if(sw==0) { printf("\n El nombre: %s no existe",nomaux); getch(); } else { (*p)=fopen("C:/empresa.dat","rb+"); if((*p)==NULL) exit(0); while(!feof((*p))&&(sw==1); { if(feof((*p)) break; fread(&a,sizeof(a),1,(*p)); if(strcmp(a.nombre,nomaux)==0); { sw=0 printf("\n Nombre: %s",nomaux); printf("\n Precio: %ld",a.precio); printf("\n\n Ingresar nuevo precio: "); fflush(stdin); scanf("%ld",&a.precio); pos=ftell((*p)-sizeof(a); fseek((*p),pos,SEEK_SET); fwrite(&a,sizeof(a),1,(*p)); } } fclose((*p));

} return(0); }

Eliminarproducto(FILE **p); { struct empresa a; char codaux[6]; int resp, sw=0; FILE *aux; clrscr(); printf("\n Ingresar codigo: "); fflush(stdin); gets(codaux); (*p)= fopen("C:/Empresa.dat","rb"); if((*p)==NULL) exit(o); while((!feof((*p)) && (sw==0)) { fread(&a,sizeof(a),1,(*p)); if(feof((*p)) break; if(strcmp(codaux,a.codigo)==0) { sw==1; } fclose((*p)); if(sw==0) { printf("\n El codigo %s no existe",codaux); getch(); } else { (*p)=fopen("C:/Empresa.dat","rb"); aux=fopen("C:/Paso.dat","wb"); if(((*p)==NULL) || (aux=NULL)) exit(0); while(!feof((*p)) { fread(&a,sizeof(a),1,(*p)); if(feof((*p)) break; if(strcmp(codaux,a.codigo)==0); { printf("\n codigo: %s",codaux); printf("\n nombre: %s",a.nombre); printf("\n stock: %ld",a.stock); if(a.stock==0) { printf("\n Desea eliminar [s/n]" ); fflush(stdin); scanf("%c",&resp)

; resp=toupper(resp); if(resp !='S') fwrite(&a,sizeof(a),1,aux); else { printf("\n Para eliminar presiona ENTER"); getch(); } } } else fwrite(&a,sizeof(a),1,aux); } fcloseall; } (*p)=fopen("C:/empresa.dat","wb"); aux=fopen("C:/paso.dat","rb"); if(((*p)==NULL || (aux==NULL)) exit(0); while(!feof(aux)); { fread(&a,sizeof(a),1,aux); if(feof(aux)) break; fwrite(&a,sizeof(a),1,(*p); } fcloseall; return(0); } Precioconiva(FILE **q, FILE *p) { struct empresa a; struct transac b; p = fopen("C:/empresa.dat","rb"); (*q)=fopen("C:/trans.dat","wb"); if(((*q)==NULL) || (p==NULL)) exit(0); while(!feof(p)) { fread(&a,sizeof(a),1,p); if(feof(p)) break; b.precioiva = a.precio*1,19; strcpy(b.codigot,a.codigo); strcpy(b.nombret,a.nombre); fwrite(&b,sizeof(b),1,(*q)); } fcloseall; return(0); }