#include <fstream>
using namespace std;
#define max 1
typedef char cadena [20];
typedef struct
{
int dia,mes,anio;
}fecha;
typedef struct
{
int codigo_producto;
cadena producto;
char tipo_producto;
float precio;
fecha fechacaducidad;
int cantidadproductoin;
}producto;
typedef producto supermercado[max];
int menu();
void introducirdatos(supermercado s);
void visualizardatos(const supermercado s);
int cuantosprocaducados(int dia, int mes, int anio, supermercado s);
void cuantosprocomestibles(const supermercado s,int&sicomesti,int&nocomesti);
void ventadeproducto(int codigo, const supermercado s);
void almacenardatos(const supermercado s);
int main()
{ supermercado s;
int cuantos,cod;
int d,m,a;
bool salir;
salir=false;
bool introducidos;
introducidos=false;
int sicomesti,nocomesti;
sicomesti=0;
nocomesti=0;
while(salir==false)
{
switch(menu())
{
case 1: introducirdatos(s);
introducidos=true;
break;
case 2:
if (introducidos==true)
{
visualizardatos(s);
}
else
{
cout<<"Introducir los datos"<<endl;
}
break;
case 3: cout<<"Introduce la fecha a comparar "<<endl;
cout<<"dia:"<<endl;
cin>>d;
cout<<"mes:"<<endl;
cin>>m;
cout<<"anio:"<<endl;
cin>>a;
cuantos=cuantosprocaducados(d,m,a,s);
cout<<"Hay "<<cuantos<<" productos caducados"<<endl;
break;
case 4: cuantosprocomestibles(s,sicomesti,nocomesti);
cout<<"Hay "<<sicomesti<<" productos comestibles"<<endl;
cout<<"Hay "<<nocomesti<<" productos no comestibles"<<endl;
break;
case 5: cout<<"Introduce el codigo del producto a vender"<<endl;
cin>>cod;
ventadeproducto(cod,s);
break;
case 6: almacenardatos(s);
break;
case 7: cout<<"Gracias por usar este programa"<<endl;
salir=true;
break;
}
}
return 0;
}
int menu()
{ int opcion;
cout<<"Menu.Escribe el numero de la opcion que quieras"<<endl;
cout<<"1.Introducir los datos por teclado de los productos"<<endl;
cout<<"2.Visualizar los datos de los productos"<<endl;
cout<<"3.Cantidad de productos caducados"<<endl;
cout<<"4.Cantidad de productos comestibles y no comestibles"<<endl;
cout<<"5.Simulacion de venta de algun producto"<<endl;
cout<<"6.Almacenar los datos en el fichero de texto"<<endl;
cin>>opcion;
while(opcion<1||opcion>6)
{
cout<<"Error.Introduce una opcion que sea correcta"<<endl;
cin>>opcion;
}
return opcion;
}
void introducirdatos(supermercado s)
{
for(int i=0;i<max;i++)
{
cout<<"Introduce el codigo del producto"<<endl;
cin>>s[i].codigo_producto;
cout<<"Introduce nombre del producto"<<endl;
cin>>s[i].producto;
cout<<"Introduce tipo de producto(comestible :c y no comestible :n)"<<endl;
cin>>s[i].tipo_producto;
cout<<"Introduce precio del producto"<<endl;
cin>>s[i].precio;
while(s[i].precio<=0)
{
cout<<"Error, el precio debe ser >0"<<endl;
cin>>s[i].precio;
}
cout<<"Introduce fecha de caducidad del producto"<<endl;
cout<<"Introduce el dia:"<<endl;
cin>>s[i].fechacaducidad.dia;
while(s[i].fechacaducidad.dia<1||s[i].fechacaducidad.dia>31)
{
cout<<"Error mete dia correcto"<<endl;
cin>>s[i].fechacaducidad.dia;
}
cout<<"Introduce mes:"<<endl;
cin>>s[i].fechacaducidad.mes;
while(s[i].fechacaducidad.mes<1||s[i].fechacaducidad.mes>12)
{
cout<<"Error.Mete mes correcto"<<endl;
cin>>s[i].fechacaducidad.mes;
}
cout<<"Introduce anio:"<<endl;
cin>>s[i].fechacaducidad.anio;
while(s[i].fechacaducidad.anio<2014||s[i].fechacaducidad.anio>2025)
{
cout<<"Error.Introduce el año correcto"<<endl;
cin>>s[i].fechacaducidad.anio;
}
cout<<"Introduce la cantidad inicial al abrir la tienda"<<endl;
cin>>s[i].cantidadproductoin;
}
}
void visualizardatos(const supermercado s)
{
for(int i=0;i<max;i++)
{
cout<<"El codigo del producto es: "<<s[i].codigo_producto<<endl;
cout<<"El nombre del producto es: "<<s[i].producto<<endl;
cout<<"El tipo es: "<<s[i].tipo_producto<<endl;
cout<<"El precio es: "<<s[i].precio<<" euros"<<endl;
cout<<"La fecha de caducidad es: "<<s[i].fechacaducidad.dia<<"/"<<s[i].fechacaducidad.mes<<"/"<<s[i].fechacaducidad.anio<<endl;
cout<<"La cantidad de producto en la tienda es: "<<s[i].cantidadproductoin<<endl;
}
}
int cuantosprocaducados(int dia, int mes, int anio, supermercado s)
{
int contador =0;
for(int i=0;i<max;i++)
{
if (s[i].fechacaducidad.anio<anio)
{
contador++;
}
else
{
if ( s[i].fechacaducidad.mes<mes)
{
contador++;
}
else
{
if (s[i].fechacaducidad.dia<dia)
{
contador++;
}
}
}
}
return contador;
}
void cuantosprocomestibles(const supermercado s,int&sicomesti,int&nocomesti)
{
for(int i=0;i<max;i++)
{
if(s[i].tipo_producto=='c'||s[i].tipo_producto=='C')
{
sicomesti++;
}
else
{
nocomesti++;
}
}
}
void ventadeproducto(int codigo, const supermercado s)
{
int i=0;
while(i<max)
{
if (s[i].codigo_producto==codigo)
{
cout<<"el producto es: "<<s[i].producto<<endl;
cout<<"el precio del producto es: "<<s[i].precio<<" euros"<<endl;
}
i++;
}
}
void almacenardatos(const supermercado s)
{
ofstream salida;
salida.open("Super.txt");
if(salida.fail())
{
cout<<"Error.No se ha podido abrir el fichero"<<endl;
}
else
{
cout<<"El fichero se abrio correctamente"<<endl;
for(int i=0;i<max;i++)
{
salida<<s[i].codigo_producto<<" "<<s[i].producto<<" ";
salida<<s[i].tipo_producto<<" "<<s[i].precio<<" "<<s[i].fechacaducidad.dia<<"/"<<s[i].fechacaducidad.mes<<"/"<<s[i].fechacaducidad.anio<<" "<<s[i].cantidadproductoin<<endl;
}
}
salida.close();
}
// fin de programa