Duda con registros (dar de baja productos, modificar productos...)

Iniciado por hectorssoria, 26 Mayo 2015, 00:48 AM

0 Miembros y 1 Visitante están viendo este tema.

hectorssoria

Hola! Buen día!
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 (cpp) [Seleccionar]
#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