#include <fstream.h> #include <iomanip.h> #include <string.h> /*********************** Clase Dispositivo ******************/ class Dispositivo { char name[20]; double precio; public: char *GetName() { return name; } double GetPrecio( ) { return precio;} }; friend istream& operator>>(istream& ci, Dispositivo &dp){ cout << "Nombre:?"; cin>>dp.name; cout << "Precio:?"; cin>>dp.precio; return ci; } /*********************** Clase Almacen ******************/ class Almacen { public: Dispositivo lista[40]; int num; //numero de componentes en la lista public: Almacen() { num=0; } friend istream& operator>>(istream& ci, Almacen &al){ cin >> al.lista[al.num]; al.num++; return ci; } }; /*********************** Clase Compras ******************/ class Compras { int ind; //indice del dispositvo en la Lista de Almacen int cant; //numero de componentes que va compra del dispositivo dp; public: Compras(){;} void PonDatos(int i, int c){ ind=i; cant=c;} void GetDatos(int &i, int &c){ i=ind; c=cant; } }; /*********************** Programa Principal ******************/ void ImprimePantalla(int Num,Almacen &al,Compras ListaCp[]); void ImprimeFichero(int Num,Almacen &al,Compras ListaCp[]); void main() { Almacen al; //Objeto almacen Compras ListaCp[100]; //array de objetos Compras int Num=0; int opc=0; while(true){ cout << "\n** Menu **\n1.Introducir Componentes \n2.Comprar\n3.Reporte Pantalla \n4.Reporte Ficheros\n5.Salir\n\tOpc:?"; cin >> opc; if (opc==1){ cin >> al; }else if (opc==2){ } } int ind,cant; cout << "Los componentes disponibles son:\n"; for (int i=0;i<al.num;i++) cout << "\t"<<i+1 << ". " << al.lista[i].GetName() << endl; cout << "\nElija el componente:?"; cin >> ind; cout << "Cantidad:?"; cin >> cant; //guardar en la ListaCompra ind--; ListaCp[Num++].PonDatos(ind,cant); }else if (opc==3){ ImprimePantalla(Num,al,ListaCp); } else if (opc==4) ImprimeFichero(Num,al,ListaCp);// Imprime en fichero else if (opc==5) break; void ImprimePantalla(int Num,Almacen &al,Compras ListaCp[]) { int ind,cant; cout << setw(5)<<"Cant" << setw(20) << "Componente" << setw(10)<<"P.Unid" << setw(10) << "P.Total"<<endl; double Total=0; for (int i=0;i<Num;i++){ ListaCp[i].GetDatos(ind,cant); cout << setw(5)<<cant<< setw(20) << al.lista[ind].GetName(); cout << setw(10)<< al.lista[ind].GetPrecio()<< setw(10) <<al.lista[ind].GetPrecio() *cant <<endl; Total += al.lista[ind].GetPrecio()*cant; } cout << setw(35) << "Total" << setw(10) << Total << endl; } void ImprimeFichero(int Num,Almacen &al,Compras ListaCp[]) { int ind,cant; char file[40]; cout << "Dar Nombre de fichero:?"; cin >> file; ofstream fout(file); fout << setw(5)<<"Cant" << setw(20) << "Componente" << setw(10)<<"P.Unid" << setw(10) << "P.Total"<<endl; double Total=0; for (int i=0;i<Num;i++){ ListaCp[i].GetDatos(ind,cant); fout << setw(5)<<cant<< setw(20) << al.lista[ind].GetName(); fout << setw(10)<< al.lista[ind].GetPrecio()<< setw(10) <<al.lista[ind].GetPrecio() *cant <<endl; Total += al.lista[ind].GetPrecio()*cant; } fout << setw(35) << "Total" << setw(10) << Total << endl; } cout << "\nDatos escritos en Fichero:" << file << endl; fout.close();