Productos
Factura
Reporte
Salir
entonces será que me podrían ayudar con lo siguiente: que en la primera opción esta producto entonces cuando se ingrese los productos entonces se crea un registro, ese registro lo mostramos como un reporte y queda guardado entonces cuando ingresemos los datos dentro de la factura que nos reste los productos vendidos al reporte ya que no se como restar lo que vendo en la factura con mi reporte… Desde ya muchas gracias… Para llegar a registrar productos se entra por la opción 1 del menu principal, despues en la opción Crear archivo, despues de registrar los productos se le da que ya no se quiere registrar más productos y luego se va en la opción que dice: Reporte ahí se mira todo los productos registrado.. despues en la opción Salir.... despues en el menú principal se le da en la opción 2 que es Factura, luego en Facturación y se rellena los datos que se requieren...
PD: en sí el problema es el siguiente: no puedo restar lo que se facturo al Reporte que esta hecho, si me dicen como hacerlo les agradeceré mucho.
Código
#include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> # include <iostream> # include <dos> # include <ctype> # include <windows> #include <time> #include <fstream> FILE *fp; FILE *fp1; struct inven{ char codigo[10]; char descrip[30]; char exist[15]; char preuni[5]; }inventario; // === funciones === void crear(); void salir(); void menu(); void producto(); void anexar(); void modificar(); void eliminar(); void reporte(); // === funciones factura === void registrar_productos(int nv, int np); // ---44444444444444444444444444 PROGRAMA factura 444444444444444444444444---------------------------- #define MAXCAD 50 #define MAX_V 1000 #define MAX_PV 100 // maximo de productos vendidos time_t t = time(0); // get time now struct tm * now = localtime( & t ); void unidades_en_letra(unsigned long cantidad); void millares_en_letra(unsigned long cantidad); void millones_en_letra(unsigned long cantidad); const char *unidades[] = {NULL,"Uno","Dos", "Tres", "Cuatro","Cinco","Seis","Siete","Ocho","Nueve"}; const char *decimas[] = {NULL,"Dies","Veinte","Treinta","Cuarenta","Cincuenta","Sesenta","Setenta","Ochenta","Noventa"}; const char *diez_y[] = {NULL,"Once","Doce","Trece","Tatorce","Quience"}; const char *centenas[] = {NULL,"Ciento",NULL,NULL,NULL,"Quinientos",NULL,"Setecientos",NULL,"Novecientos"}; struct unProducto { char name_prod[MAXCAD]; // nombre del producto int cantidad; int precio ; int subtotal; }; struct variosProductos { int numProd ; // numero de productos unProducto vp[MAX_PV]; //varios productos cada uno en una posicion del vector int precioTotal ; }; struct Vendedor { char nombre[MAXCAD] ; char apellido[MAXCAD] ; char direccion[MAXCAD]; int DNI ; variosProductos P ; }; struct Vendedor lista[MAX_V]; // creamos un array de struct Vendedor aux; void registrar_productos(int nv, int np){ { // nv -> numero unsigned long cantidad; int ti,tt,iva; gotoxy(4,6); cout<<"Cantidad"; gotoxy(18,6);cout<<"Descripcion" ; gotoxy(66,6);cout<<"Precio"; for(int i=0; i<np; i++) { gotoxy(4,8+i);cin>> lista[nv].P.vp[i].cantidad ; cin.ignore(); gotoxy(18,8+i);cin.getline( lista[nv].P.vp[i].name_prod, MAXCAD ); gotoxy(66,8+i);cin>> lista[nv].P.vp[i].precio ; lista[nv].P.vp[i].subtotal = lista[nv].P.vp[i].cantidad * lista[nv].P.vp[i].precio ; // subtotal if(lista[nv].P.vp[i].subtotal==0) lista[nv].P.precioTotal = lista[nv].P.precioTotal + lista[nv].P.vp[i].subtotal ; } ti=0; tt=0; iva=0; for(int i=0; i<np; i++){ ti=(ti+(lista[nv].P.vp[i].cantidad*lista[nv].P.vp[i].precio)); } iva=(ti*0.12); tt=(ti - iva); cantidad=ti; gotoxy(30,18);cout<<"Total Sin Impuesto"; gotoxy(66,18);cout<<tt; gotoxy(30,19);cout<<"Impuesto 12%"; gotoxy(66,19);cout<<iva; gotoxy(36,21);cout<<"Total"; gotoxy(66,21);cout<<ti; gotoxy(5,23);cout<<"En Letreas:"; gotoxy(18,23);millones_en_letra(cantidad); cout<<" Quetzales"; getch(); } } void registrar_vendedores(int n) { for(int i=0; i<n; i++) { clrscr(); cout<<" ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" ÌÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍ͹"<<endl; cout<<" º º º º"<<endl; cout<<" ÌÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍ͹"<<endl; cout<<" º º º º"<<endl; cout<<" º º º º"<<endl; cout<<" º º º º"<<endl; cout<<" º º º º"<<endl; cout<<" º º º º"<<endl; cout<<" º º º º"<<endl; cout<<" º º º º"<<endl; cout<<" º º º º"<<endl; cout<<" º º º º"<<endl; cout<<" ÌÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍ͹"<<endl; cout<<" º º º º"<<endl; cout<<" º º º º"<<endl; cout<<" ÌÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍ͹"<<endl; cout<<" º º º º"<<endl; cout<<" ÌÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍ͹"<<endl; cout<<" º º"<<endl; cout<<" ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"<<endl; cin.ignore(); gotoxy(4,2);cout << " Nombres : "; cin.getline( lista[i].nombre, MAXCAD ); gotoxy(25,2);cout << " Apellidos : "; cin.getline( lista[i].apellido, MAXCAD ); gotoxy(4,3); cout << " N I T : "; cin>>lista[i].DNI; gotoxy(25,3); cout<<"> Numero de productos: "; cin>> lista[i].P.numProd ; cin.ignore(); gotoxy(4,4); cout << " Dir : "; cin.getline( lista[i].direccion, MAXCAD); gotoxy (27,4);cout << "Fecha: " <<(now->tm_mday ) << '/' << (now->tm_mon +1) << '/' << (now->tm_year +1900); registrar_productos( i ,lista[i].P.numProd ); } } void datosVendedor(int x) { ifstream salida; salida.open("empleados.txt",ios::in); if(salida.fail()) { cout<<"ocurrio un error al abrir el archivo"; getch(); } else { salida>>lista[x].nombre; } { cout<<endl<<endl; cout <<" Nombre : " << lista[x].nombre <<' '<< lista[x].apellido << endl; cout<< " Productos vendidos:"<<lista[x].P.numProd<< endl; cout << " N I T : "<< lista[x].DNI << endl; cout << " Direccion: "<< lista[x].direccion << endl; cout << " fecha: "<<(now->tm_mday ) << '/' << (now->tm_mon +1)<< '/' << (now->tm_year +1900)<<endl; } } void prodVendedor(int x, int num) { int ti; if(num>0) { cout<<endl<<endl; cout << " Productos de " << lista[x].nombre <<' '<< lista[x].apellido << endl<<endl; for(int i=0; i<lista[x].P.numProd; i++) { cout<<"\n Producto "<< (i+1) <<endl; cout<<"\tNombre : " << lista[x].P.vp[i].name_prod <<endl; cout<<"\tCantidad: " << lista[x].P.vp[i].cantidad <<endl; cout<<"\tPrecio : " << lista[x].P.vp[i].precio <<endl; cout<<"\tSubtotal: " << lista[x].P.vp[i].subtotal <<endl ; ti=(ti+(lista[x].P.vp[i].cantidad*lista[x].P.vp[i].precio)); } cout<<endl; cout<<" ---------------------------"<<endl; cout<<" PRECIO TOTAL: "<< (ti-1); } else cout<<"\n\tRegistro vacio..!"; } void mostrar_productos(int nv) { cout<<" Productos: \n\n"; cout<<"\t"; cout<<"Cantidad"; cout<<"\t"; cout<<"Descripcion"; cout<<"\t\t\t\t"; cout<<"Precio"; cout<<endl; for(int i=0; i<lista[nv].P.numProd; i++) { cout<<"\t"; cout<<lista[nv].P.vp[i].cantidad; cout<<"\t\t"; cout<<lista[nv].P.vp[i].name_prod; cout<<"\t\t\t\t"; cout<<lista[nv].P.vp[i].precio<<endl; } } void mostrar_vendedores(int num) { for(int i=0; i<num; i++) if( num>0) { cout<<"\n\nMostrando lista de Clientes\n"; { cout<<endl<<endl; cout <<" Nombre : " << lista[i].nombre <<' '<< lista[i].apellido << endl; cout<< " Productos vendidos:"<<lista[i].P.numProd<< endl; cout << " N I T : "<< lista[i].DNI << endl; cout << " Direccion: "<< lista[i].direccion << endl; cout << " fecha: "<<(now->tm_mday ) << '/' << (now->tm_mon +1)<< '/' << (now->tm_year +1900)<<endl; cout<<endl; } } else cout<<"\n\tRegistro vacio..!"; } void eliminar_vendedor( int x, int &num) { if(num>0) { for(int i=x; i<num-1; i++) lista[i] = lista[i+1]; num--; } else cout<<"\n\tRegistro vacio..!"; } void buscar_vendedor( int num) { int band = 0; if(num>0) { for(int i=0; i<num; i++) { if(lista[i].DNI==aux.DNI) { cout<<"\n\n La direccion de "<<lista[i].nombre<<" " <<lista[i].apellido<<" es : " <<lista[i].direccion <<endl ; band = 1 ; break; } } } else cout<<"\n\tRegistro vacio..!"; if(band==0) cout<<"\n\n\tEl cliente no fue encontrado..! :S"<<endl; } void menu1() { clrscr(); cout<<"\n\t\tFacturacion de Clientes\n\n"; cout<<" 1. Facturacion "<<endl; cout<<" 2. Mostrar registro de clientes y productos "<<endl; cout<<" 3. Mostrar datos de un cliente "<<endl; cout<<" 4. Mostrar productos vendidos al cliente "<<endl; cout<<" 5. Eliminar cliente del registro "<<endl; cout<<" 6. Buscar direccion de cliente por N I T "<<endl; cout<<" 7. Salir "<<endl; cout<<"\n Ingrese opcion : "; } /* funcion principal ------------------------------------------------------------------------------*/ void factura() { int num=0; // numero int op; // opcion del menu int num_vendedor ; system("color 0b"); do { menu1(); cin>> op; switch(op) { case 1: cout<<"\n Numero de clientes: "; cin>> num; clrscr(); registrar_vendedores(num); cout<<endl; break; case 2: clrscr(); mostrar_vendedores(num); break; case 3: cout<<"\n Ingrese numero de cliente: "; cin>> num_vendedor ; datosVendedor( num_vendedor-1); break; case 4: cout<<"\n Ingrese numero de cliente: "; cin>> num_vendedor ; prodVendedor( num_vendedor-1, num); break; case 5: cout<<"\n Ingrese numero de cliente: "; cin>> num_vendedor ; eliminar_vendedor( num_vendedor-1, num); cout<<"\n\n\t\tCliente eliminado ..!"<<endl; break; case 6: cout<<"\n Ingrese numero de N I T: "; cin>> aux.DNI; buscar_vendedor(num); break; case 7: menu(); } cout<<endl<<endl; getch(); }while(op!=7); } void unidades_en_letra(unsigned long cantidad) { unsigned char unidad = cantidad % 10; unsigned char decima = (cantidad/10)% 10; unsigned char centena = (cantidad/100)% 10; if(centena!=0) if(centenas[centena]==0) cout<<unidades[centena]<<"Cientos"; else if (centena!=1 || unidad!=0 || decima!=0) cout<<centenas[centena]; else cout<<"Cien"; if(unidad!=0 || decima!=0) { if (centena!=0) cout<<" "; if (decima==0) cout<<unidades[unidad]; else if ( unidad==0) cout<<decimas[decima]; else if (decima==1 && unidad>=1 && unidad<=5) cout<<diez_y[unidad]; else if (decima==1) cout<<"Dieci"<<unidades[unidad]; else if (decima==2) cout<<"Veinti"<<unidades[unidad]; else cout<<decimas[decima]<<" y "<<unidades[unidad]; } } void millares_en_letra(unsigned long cantidad) { unsigned long unidades = cantidad % 1000; unsigned long miles = (cantidad / 1000) % 1000; if(miles>1) unidades_en_letra(miles); if(miles!=0) cout<<"Mil"; if(unidades!=0 && miles!=0) cout<<" "; unidades_en_letra(unidades); } void millones_en_letra(unsigned long cantidad) { unsigned long unidades = cantidad % 1000000; unsigned long millares = (cantidad / 1000000)% 1000000; if(millares>1) { millares_en_letra(millares); cout<<"Millones"; } else if(millares!=0) cout<<"Un Mill\242n"; if(unidades!=0 && millares!=0) cout<<" "; millares_en_letra(unidades); } // ---44444444444444444444444444 PROGRAMA factura 444444444444444444444444---------------------------- // ---44444444444444444444444444 PROGRAMA producto 444444444444444444444444---------------------------- void producto() { char resp; do { clrscr(); printf("\n\n\t\t\t* * * * * MENU DE OPCIONES * * * * *"); printf("\n\t\t---------------------------------------------------"); printf("\n\t\t\t ALTA Y CONTROL DE PRODUCTOS "); printf("\n\t\t-------------------------------------------------\n\n\n\n"); printf("\t\t\t\t (1) Crear Archivo \n"); printf("\t\t\t\t (2) Reporte \n"); printf("\t\t\t\t (3) Salir ........ "); printf("\n\n\t\t\t\tSelecciona: "); resp=getchar(); switch(resp) { case '1': crear(); break; case '2': reporte(); break; case '3' : menu(); } } while(resp!='3'); getch(); } // === Funcion de crear un archivo ==== void crear() { clrscr(); char opcion = 's'; if ((fp=fopen("inventario.dat","ab"))==NULL) printf("\n\n\n\n\t\t< < < Error de apertura de archivo inventario.dat > > >"); else { while(opcion == 's'){ printf("\n\n Escribe la Clave del Producto (No exceder de 16 digitos):\t "); scanf("%s",&inventario.codigo); printf("\n\n Escribe el Nombre del Producto\t "); scanf("%s", &inventario.descrip); printf("\n\n Escribe la Existencia del Producto:\t "); scanf("%s", &inventario.exist); printf("\n\n Escribe el Precio Unitario del Producto:\t "); scanf("%s",&inventario.preuni); fwrite(&inventario, sizeof(inventario), 1, fp); printf("\n\n\n\t\t Desea Capturar Otro Producto [s/n] : "); opcion = getchar(); getch(); } } fclose(fp); } //////////////////anexar///////////////////////////// //// ====================================reporte de productos////////// void reporte (){ int i; clrscr(); // limpia la pantalla FILE *invent; //Asigna un apuntador de tipo archivo invent = fopen("inventario.dat", "r"); //verifica la apertura en modo lectura del archivo en donde se almacena la informacion if(invent == NULL) // si el valor del apuntador es iguala NULO { printf("\nNo existe archivo"); // manda un mensaje de que no existe el archivo } fread(&inventario, sizeof(struct inven), 1, invent); printf("------------------------------------------------------------------\n"); printf("CODIGO DESCRIPCION\t\tEXISTENCIA\tPRECIO UNITARIO \n"); printf("------------------------------------------------------------------\n"); while(!feof(invent)) //mientras no sea fin de archivo { gotoxy(2,i); printf(" %s %s\t\t %s\t\t %s \n",inventario.codigo,inventario.descrip,inventario.exist,inventario.preuni); gotoxy(9,i); fread(&inventario, sizeof(struct inven), 1, invent); } fclose(invent); // cierra el archivo getch(); menu(); } // ---44444444444444444444444444 PROGRAMA PRINCIPAL 444444444444444444444444---------------------------- void caratula() { } void menu() { int opcion; clrscr() ; caratula(); clrscr() ; int op; cout<<endl<<endl<<" ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"<<endl; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹"<<endl; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" º º"<<endl; cout<<" ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"<<endl; gotoxy(30,5);cout<<"HOLA A TODOS SOY UNA PRUEBA"; gotoxy(36,6);cout<<"PROGRAMACION"; gotoxy(25,10);cout<<"1) Producto"; gotoxy(25,12);cout<<"2) Factura"; gotoxy(25,13);cout<<"3) Reporte"; gotoxy(25,14);cout<<"4) Salir"; gotoxy(25,16);cout<<"Su opci\242n es: "; gotoxy(40,16);cin>>opcion; clrscr(); switch(opcion) { case 1: producto(); system("CLS"); break; break; case 2: factura(); system("CLS"); break; case 3: reporte (); system("CLS"); break; case 4: salir(); system("CLS"); break; default: cout<< "La opción ingresada no es valida, seleccione de nuevo. \n"; break; } } int main(){ menu(); return 0; } void salir() { clrscr();cout<<"Vale, Adi\242s"; getch(); }
PD: El programa aun no esta completo, por eso lleva librerias, codigo extras