Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Jean Pool en 12 Julio 2011, 07:37 am



Título: TIENDA VIRTUAL
Publicado por: Jean Pool en 12 Julio 2011, 07:37 am
Buenas estoy tratando de hacer un codigo fuente en c++ de una tienda virtual con sockt y control de invetario es decir tengo sierta cantidad de producto y compro tiene que bajar y cuando llegue a 0 que me salga un mensaje no hay mas productos esto es lo que logrado podrian ayudarme a concluirlo o que aumentar gracias

Código:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

struct datos_clientes
{
char clave[4];
char nombre[40];
char calle[50];
char colonia[40];
char telefono[11];
}clientes;

struct datos_productos
{
char clave[4];
char producto[20];
char descripcion[40];
char precio[10];
}productos;

struct datos_factura
{
char clave[4];
char fecha[15];
char clave_cliente[4];
char clave_producto[4];
char cantidad[5];
}facturas;




void main()
{
int opcion=9;
int cantidadprod;
char opcion_seg[2];
char clavebuscar[4];
FILE *archivo, *auxiliar;
float precioprod;
char variablecomp;
int cont;
float totalpagar;

if((archivo=fopen("c:datoscli.txt","a+b"))==NULL)
{
textattr(279);
cprintf("ntno se puede abrir el archivo");
getch();
exit(1);
}
if((auxiliar=fopen("c:borrador.txt","a+b"))==NULL)
{
textattr(279);
cprintf("ntno se puede abrir el archivo");
getch();
exit(1);
}
do
{
textcolor(MAGENTA);
textbackground(GREEN);
clrscr();
printf("n   Tienda eduardo y el guth             ");
printf("nt######################################");
printf("nn 1.- factura de venta");
printf("nn 2.- ingresar nuevo producto");
printf("nn 3.- ingresar nuevo cliente");
printf("nn 4.- buscar factura de una venta");
printf("nn 5.- Buscar producto");
printf("nn 6.- buscar cliente");
printf("nn 7.- Salir");
printf("n Opcion : ");
gets(opcion_seg);
opcion=atoi(opcion_seg);
switch(opcion)
{
case 1:
textattr(168);
clrscr();
freopen("c:datosfact.txt","a+b",archivo);
printf("ntclave de la factura:  ");fflush(stdin);
gets(facturas.clave);
printf("nt fecha: ");fflush(stdin);
gets(facturas.fecha);
printf("ntclave del cliente: ");fflush(stdin);
gets(facturas.clave_cliente);
freopen("c:datoscli.txt","a+b",archivo);
rewind(archivo);
variablecomp=fgetc(archivo);
fseek(archivo,0L,SEEK_SET);
while(variablecomp!=EOF)
{
if(fread(&clientes,sizeof(clientes),1,archivo)!=1)
{
printf("nt Errror al leer producto");
getch();
exit(3);
}

if(strcmp(facturas.clave_cliente,clientes.clave)==0)
{
cont=2;
printf("nnt Nombre:  %s",clientes.nombre);
}
variablecomp=fgetc(archivo);
fseek(archivo,0L,SEEK_SET);
}
if (cont!=2)
{
printf("nnt Clave del cliente no existe");
getch();
}
printf("ntclave del producto:   ");fflush(stdin);
gets(facturas.clave_producto);
freopen("c:datosprod.txt","a+b",archivo);
rewind(archivo);
variablecomp=fgetc(archivo);
fseek(archivo,0L,SEEK_SET);
while(variablecomp!=EOF)
{
if(fread(&productos,sizeof(productos),1,archivo)!=1)
{
printf("nt Errror al leer producto");
getch();
exit(3);
}

if(strcmp(facturas.clave_producto,productos.clave)==0)
{
cont=2;
precioprod=atof(productos.precio);
printf("nt %s",productos.producto);
printf("ntprecio :     %s",productos.precio);
printf("nt cantidad de productos:   ");
gets(facturas.cantidad);
cantidadprod=atoi(facturas.cantidad);
totalpagar=(precioprod)*(cantidadprod);
printf("nt total a pagar= %f ", totalpagar);
getch();
}
variablecomp=fgetc(archivo);
fseek(archivo,0L,SEEK_SET);
}
if (cont!=2)
{
printf("nt Clave ingresada no existe");
getch();
}

freopen("c:datosfact.txt","a+b",archivo);
if(fwrite(&facturas,sizeof(facturas),1,archivo)!=1)
{
printf("ntError al escribir sobre el archivo");
getch();
}

break;



case 2:
textattr(169);
clrscr();
freopen("c:datosprod.txt","a+b",archivo);
printf("ntingresa clave del producto:   ");fflush(stdin);
gets(productos.clave);
printf("ntingresa nombre del producto:   ");fflush(stdin);
gets(productos.producto);
printf("ntingresa descripcion del producto:   ");fflush(stdin);
gets(productos.descripcion);fflush(stdin);
printf("ntingresa precio:   ");fflush(stdin);
gets(productos.precio);
if(fwrite(&productos,sizeof(productos),1,archivo)!=1)
{
printf("Error al escribir sobre el archivo");
getch();
}
printf("nt %s",productos.precio);
getch();
break;

case 3:

textattr(169);
clrscr();
freopen("c:datoscli.txt","a+b",archivo);
printf("ntingresa clave del cliente:  ");fflush(stdin);
gets(clientes.clave);
printf("ntingresa nombre: ");fflush(stdin);
gets(clientes.nombre);
printf("ntingresa calle: ");fflush(stdin);
gets(clientes.calle);
printf("ntingresa colonia: ");fflush(stdin);
gets(clientes.colonia);
printf("ntingresa telefono: ");fflush(stdin);
gets(clientes.telefono);

if(fwrite(&clientes,sizeof(clientes),1,archivo)!=1)
{
printf("ntError al escribir sobre el archivo");
getch();
exit(2);
}
break;

case 4:
textattr(357);
clrscr();
freopen("c:datosfact.txt","a+b",archivo);
printf("nntIngresa la clave de la factura");fflush(stdin);
scanf("%s", & clavebuscar);
rewind(archivo);
variablecomp=fgetc(archivo);
fseek(archivo,0L,SEEK_SET);
while(variablecomp!=EOF)
{
if(fread(&facturas,sizeof(facturas),1,archivo)!=1)
{
printf("nt Falla al leer factura de venta");
getch();
exit(3);
}

if(strcmp(facturas.clave,clavebuscar)==0)
{
cont=2;
printf("nt clave: %s", facturas.clave);
printf("nt fecha: %s", facturas.fecha);
freopen("c:datoscli.txt","a+b",auxiliar);
rewind(auxiliar);
variablecomp=fgetc(auxiliar);
fseek(auxiliar,0L,SEEK_SET);
while(variablecomp!=EOF)
{
if(fread(&clientes,sizeof(clientes),1,auxiliar)!=1)
{
printf("nt Error al leer cliente");
getch();
exit(3);
}

if(strcmp(facturas.clave_cliente,clientes.clave)==0)
{
cont=2;
printf("n Nombre: %s",clientes.nombre);
}
;variablecomp=fgetc(auxiliar);
fseek(auxiliar,0L,SEEK_SET);
}
if (cont!=2)
{
printf("n Clave del cliente no existe");
getch();
}

freopen("c:datosprod.txt","a+b",auxiliar);
rewind(auxiliar);
variablecomp=fgetc(auxiliar);
fseek(auxiliar,0L,SEEK_SET);
while(variablecomp!=EOF)
{
if(fread(&productos,sizeof(productos),1,auxiliar)!=1)
{
printf("nt Falla al leer producto");
getch();
exit(3);
}

if(strcmp(facturas.clave_producto,productos.clave)==0)
{
cont=2;
printf("n Producto: %s",productos.producto);
printf("n Precio: %s", productos.precio);
precioprod=atof(productos.precio);
}
variablecomp=fgetc(auxiliar);
fseek(auxiliar,0L,SEEK_SET);
}
if (cont!=2)
{
printf("nnt Clave del cliente no existe");
getch();
}


printf("n cantidad: %s", facturas.cantidad);
cantidadprod=atoi(facturas.cantidad);
totalpagar=(precioprod)*(cantidadprod);
printf("n total: %f", totalpagar);
getch();
}
variablecomp=fgetc(archivo);
fseek(archivo,0L,SEEK_SET);
}
if (cont!=2)
{
printf("nt Clave ingresada no existe");
getch();
}
break;


case 5:
textattr(158);
clrscr();
freopen("c:datosprod.txt","a+b",archivo);
printf("nIngresa la clave del producto: ");fflush(stdin);
gets(clavebuscar);
rewind(archivo);
variablecomp=fgetc(archivo);
fseek(archivo,0L,SEEK_SET);
while(variablecomp!=EOF)
{
if(fread(&productos,sizeof(productos),1,archivo)!=1)
{
printf("nt Errror al leer producto");
getch();
exit(3);
}

if(strcmp(clavebuscar,productos.clave)==0)
{
cont=2;
printf("n clave: %s",productos.clave);
printf("n producto: %s",productos.producto);
printf("n Dedscripcion: %s",productos.descripcion);
printf("n precio : %s",productos.precio);
getch();
}
variablecomp=fgetc(archivo);
fseek(archivo,0L,SEEK_SET);
}

if (cont!=2)
{
printf("nt Clave ingresada no existe");
getch();
}
break;
case 6:
textcolor(BLACK);
textbackground(GREEN);
clrscr();
printf("ntclave de cliente a buscar: ");fflush(stdin);
gets(clavebuscar);
freopen("c:datoscli.txt","a+b",archivo);
rewind(archivo);
variablecomp=fgetc(archivo);
fseek(archivo,0L,SEEK_SET);
while(variablecomp!=EOF)
{
if(fread(&clientes,sizeof(clientes),1,archivo)!=1)
{
printf("nt Errror al leer producto");
getch();
exit(3);
}

if(strcmp(clavebuscar,clientes.clave)==0)
{
cont=2;
printf("nt Clave: %s",clientes.clave);
printf("nt Nombre:  %s",clientes.nombre);   fflush(stdin);
printf("nt Calle: %s", clientes.calle);
printf("nt Colonia: %s",clientes.colonia);
printf("nt Telefono: %s",clientes.telefono);
getch();
}
fflush(stdin);variablecomp=fgetc(archivo);
fseek(archivo,0L,SEEK_SET);
}
if (cont!=2)
{
printf("nnt Clave del cliente no existe");
getch();
}
break;

case 7:
textcolor(RED);
textbackground(YELLOW);
cprintf("n Para Salir presiones cualquier tecla");
getch();
break;

default:
textcolor(RED);
textbackground(BLUE);
cprintf("n esta opcon no es valida");
getch();
break;
}
}
while(opcion!=7);
if(fclose(archivo)!=0)
{
textcolor(159);
textbackground(YELLOW);
cprintf("nterror al abrir el archivo");
getch();
exit(4);
}
}


Título: Re: TIENDA VIRTUAL
Publicado por: PiroskY en 13 Julio 2011, 00:44 am
Yo creo que si vos hiciste ese código, deberías saber hacer lo que preguntas

Usa un acumulador donde vayas acumulando "total" cada vez que lo muestra

y al final, si ese acumulador es mayor a 300, aplicas el descuento