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);
}
}