La factura está validado todos los campos excepto el valor unitario que es un numero double.
El programa guarda en 2 archivos txt en el disco C. Puedes consultar por numero de factura y por apellido del comprador
fuente del código para guardar información en el txt
http://todocporelinv.blogspot.com/2011/04/clientes-facturas-detalles-en.html
puedes ver como se ejecuta el programa en el siguiente link:
https://www.youtube.com/watch?v=8KTTb_WkJj8
1. #include <ctype.h> // isdigit
#include <stdlib.h> // atoi
#include <string.h> // strlen
#include <stdio.h> // printf, fgets, stdin, BUFSIZ
#include<iostream> //cout, cin
#include<fstream>
#include<stdlib> //system()
#include<stdio>
#include<conio> //gotoxy
#include<cstring>
//funciones
int nuevaFactura();
void menu();
int BDFactura();
int Buscar_Factura();
int Buscar_Clientes();
int Ingreso_Menu(char buffer[BUFSIZ]);
int demeNumero(int y,int x);
bool ingreso_cadena_con_espacio(char letras2[]);
bool ingreso_cadena(char letras[]);
//Estructura para el detalle
struct
{
int nProducto[30];//es el numero de producto osea Num.
int numFactura; //numero de la factura
int cantidad[30];//se puede almacenar hasta 30 cantidades
char nomProducto[30][30]; //almaceno caracteres con espacio; es el nombre
del producto
char medida[10][30]; //almaceno caracteres con espacio; es la medida
del producto
int numProductos; //es cuantos productos voy a ingresar
double precioUnitario[30];
double precioTotal[30];
double SubTotal;
double IVA;
double Total;
} Detalle;
//Estructura para la factura
struct
{
int numFactura;
char nombre[30];
char apellido[30];
int cedula;
char direccion[70];
int telefono;
char fecha[12];
char vendedor[30];
double total;
} Facturas;
int main(void)
{
int opcion;
do //ciclo repetir asta que
{
system("cls");//borrar pantalla
menu();//menu de opciones
char buffer[BUFSIZ];//hacemos el nuevaFactura numerico con buffer
opcion=Ingreso_Menu(buffer);//en la funcion Ingreso_Menu(buffer) se hace
el nuevaFactura
2. system("cls");//borrar pantalla
switch(opcion)//seleccion de en caso que respuesta se
{
case 1:
nuevaFactura();
break;//sea uno llama al procedimiento nuevaFactura arriba
case 2:
Buscar_Factura();
system("pause");
break;//llama ala funcion ver datos
case 3:
Buscar_Clientes();
system("pause");
break;//llama ala funcion ver datos
case 4:
BDFactura();
system("pause");
break;//llama ala funcion ver datos
case 5:
system("cls");
cout<<"nnnntQue tenga buenos diasnnn";
system("pause");
exit(1);
break;//cierra el programa
default:
cout<<"nn numero incorrecto intente nuevamente!nn";
system("pause");
break;//lanza un mensaje y vuelve a mostrar los datos
}
}
while(opcion!=5);
system("pause");
return 0;
}
//Menu
void menu(){
//menu para que el usuario se guie.
gotoxy(19,19);printf("%c", 201);//esquina superior izquierda
gotoxy(61,19);printf("%c", 187);//esquina superior derecha
gotoxy(19,39);printf("%c", 200);//esquina inferior izquierda
gotoxy(61,39);printf("%c", 188);//esquina inferior derecha
for(int k=20; k<61; k++){//dibujamos las lineas horizontales
gotoxy(k,19);printf("%c", 205);
gotoxy(k,39);printf("%c", 205);
}
for(int k=20; k<39; k++){//dijumos las lineas verticales
gotoxy(19,k);printf("%c", 186);
gotoxy(61,k);printf("%c", 186);
}
gotoxy(22,22);cout<<" * La tienda xxxxxxxx S.A. * ";
for(int k=20; k<61; k++){//dibujamos linea horizontal
gotoxy(k,24);printf("%c", 205);
}
gotoxy(24,26);cout<<" FACTURACION ";
gotoxy(20,27);cout<<"_________________________________________";
gotoxy(26,30);cout<<"1 - Nueva Factura ";
gotoxy(26,31);cout<<"2 - Buscar numero de factura ";
gotoxy(26,32);cout<<"3 - Buscar apellido de Cliente";
gotoxy(26,33);cout<<"4 - Base de datos ";
gotoxy(26,34);cout<<"5 - Exit ";
gotoxy(27,36);printf("Ingrese opcion %c ", 175 );//solicitud de su
respuesta
}