Tengo una mega dudota, necesito en el registro de inventario poner las opciones de dar de baja, modificar y dar un reporte de productos que existen ingresados en el programa, podrían ayudarme?
Les dejo el código que llevo:
Código
#include<stdio.h> #include<stdlib.h> #include<conio.h> void menu(); void invtrain(); void invtranw(); void invtranl(); int opcion; struct datosInven{ int codigo; char descripcion[15]; char fechault[6]; char unidad[10]; int existencia; float precio; char estatus; }; struct datosTran{ int ntran; int codigo; char fechamovto[6]; int tipomovto; //1=entrada, 2=venta o salida, 3=devolucion int cantidad; char estatus; }; int main() { while(opcion<3) { menu(); printf("\n\t\t Selecciona una opcion:"); scanf("%d",&opcion); switch(opcion) { case 1: system("cls"); invtrain(); break; case 2: system("cls"); invtranw(); break; case 3: system("cls"); invtranl(); break; } } } void menu() { system("cls"); printf("\n\t\tMenu de inventarios"); printf("\n1.-Inicializar el archivo."); printf("\n2.-Captura de inventario."); printf("\n3.-Existencias de inventarios."); printf("\n4.-Modificar inventario."); } void invtrain() { int i; struct datosInven productos={0,"","","",0,0.0,'n'}; struct datosTran movtos={0,0,"",0,0,'n'}; FILE*fptrl,*fptrM; if((fptrl=fopen("inv.dat","wb"))==NULL) printf("\n\aNo se pudo abrir el archivo."); else { for(i=1;i<=100;i++) { fwrite(&productos, sizeof(struct datosInven),1,fptrl); } printf("\n\aINICIALIZACION SATISFACTORIA PARA EL INVENTARIO"); fclose(fptrl); } if ((fptrM=fopen("mov.dat","wb"))==NULL) printf("\n\aNo se pudo abrir el archivo."); else { for(i=1;i<=100;i++) { fwrite(&movtos,sizeof(struct datosTran),1,fptrM); } printf("\n\aINICIALIZACION SATISFACTORIA PARA TRANSACCIONES"); fclose(fptrM); } } void invtranw() { struct datosInven Inventario={0,"","","",0,0.0,'n'}; FILE*fptrC; if((fptrC=fopen("inv.dat","rb+"))==NULL) printf("\n\aNo se pudo abrir el archivo"); else { printf("\nIntroduzca el CODIGO CONSECUTIVO entre [1,100],0 para terminar:>"); scanf("%d",&Inventario.codigo); while(Inventario.codigo!=0) { printf("\nIntroduce Codigo de producto:>"); fscanf(stdin,"%d",&Inventario.codigo); printf("\nIntroduce descripcion:>"); fscanf(stdin,"%s",Inventario.descripcion); printf("\nIntroduce Unidad:>"); fscanf(stdin,"%s",Inventario.unidad); printf("\nIntroduce fecha ultima:>"); fscanf(stdin,"%s",Inventario.fechault); printf("\nIntroduce existencia:>"); fscanf(stdin,"%d",&Inventario.existencia); printf("\nIntroduce precio:>"); fscanf(stdin,"%f",&Inventario.precio); Inventario.estatus='a'; fseek(fptrC,(Inventario.codigo-1)*sizeof(struct datosInven),SEEK_SET); fwrite(&Inventario,sizeof(struct datosInven),1,fptrC); printf("\nIntroduzca el numero CONSECUTIVO:>"); scanf("%d",&Inventario.codigo); } printf("\n\t\t\a*******FIN DE CAPTURA******"); fclose(fptrC); } } void invtranl() { struct datosInven Inv={0,"","","",0,0.0,'n'}; FILE*fptrC; if((fptrC=fopen("inv.dat","rb"))==NULL) printf("\n\aNo se pudo abrir el archivo."); else { printf("\n\t\t\tEXISTENCIAS EN INVENTARIOS"); printf("\n\t\t**********************************\n"); printf("\nCOD DESCRIPCION UNIDAD FECHA EXIST PRECIO ESTATUS"); while(!feof(fptrC)) { fread(&Inv, sizeof(struct datosInven),1,fptrC); /*despliega el registro*/ if(Inv.codigo!=0) { printf("\n%-5d%-15s%-10s%-5s%-3d%5.2f%c",Inv.codigo,Inv.descripcion,Inv.unidad,Inv.fechault,Inv.existencia,Inv.precio,Inv.estatus); } }/*fin del while*/ printf("\n\t\t******FIN DE EJECUCION*******"); fclose(fptrC); } }
Mod: Al publicar código, deben usarse etiquetas GeSHi