#include <iostream>
#include <vector>
using namespace std;
class Productos{
public:
Productos();
Productos(int vId, string vNombre, double vPrecio);
void setId(int id);
void setNombre(string nom);
void setPrecio(double prec);
int getId();
string getNombre();
double getPrecio();
void muestraProductos();
private:
int id;
string nombre;
double precio;
};
class Tienda{
public:
Tienda();
Tienda(int vId, string vNombre, vector<Productos> vInventario);
void setId(int id);
void setNombre(string nom);
void setInventario(vector<Productos> inv);
int getId();
string getNombre();
vector<Productos> getInventario();
void muestraTienda();
void verProductos();
void agregarProductos();
void borrarProductos();
void modificarProductos();
Productos obtenerProducto(int idT);
private:
int id;
string nombre;
vector<Productos> inventario;
};
class Compra{
public:
Compra();
Compra(int vId, Tienda vTienda);
void setId(int id);
void setNumProd(int np);
void setProductos(vector<Productos> carr);
void setTotal(float tot);
int getId();
int getNumProd();
vector<Productos> getProductos();
float getTotal();
void verCarrito();
void comprarProductos();
void verProductos();
void agregarProductos();
void borrarProductos();
private:
int id;
int numProd;
vector<Productos> carrito;
float precioTotal;
Tienda tienda;
};
class Cliente{
public:
Cliente();
Cliente(int vId, string vNombre, int vNumTel, string vTipoTarj, int vNumTarj);
void setId(int id);
void setNombre(string nom);
void setNumTel(int nt);
void setTipoTarj(string tt);
void setNumTarj(int ntarj);
int getId();
string getNombre();
int getNumTel();
string getTipoTarj();
int getNumTarj();
void iniciarCompra(Tienda vTienda);
//void muestraCliente();
private:
int id;
string nombre;
int numTel;
string tipoTarj;
int numTarj;
};
void Productos::setId(int id){
id = id;
}
int Productos::getId(){
return id;
}
void Productos::setNombre(string nom){
nombre = nom;
}
string Productos::getNombre(){
return nombre;
}
void Productos::setPrecio(double prec){
precio=prec;
}
double Productos::getPrecio(){
return precio;
}
void Tienda::setId(int id){
id = id;
}
int Tienda::getId(){
return id;
}
void Tienda::setNombre(string nom){
nombre = nom;
}
string Tienda::getNombre(){
return nombre;
}
void Tienda::setInventario(vector<Productos> inv){
inventario = inv;
}
vector<Productos> Tienda::getInventario(){
return inventario;
}
void Compra::setId(int id){
id = id;
}
int Compra::getId(){
return id;
}
void Compra::setNumProd(int np){
numProd=np;
}
int Compra::getNumProd(){
return numProd;
}
void Compra::setProductos(vector<Productos> carr){
carrito = carr;
}
vector<Productos> Compra::getProductos(){
return carrito;
}
void Compra::setTotal(float tot){
precioTotal = tot;
}
float Compra::getTotal(){
return precioTotal;
}
void Cliente::setId(int id){
id = id;
}
int Cliente::getId(){
return id;
}
void Cliente::setNombre(string nom){
nombre = nom;
}
string Cliente::getNombre(){
return nombre;
}
void Cliente::setNumTel(int nt){
numTel = nt;
}
int Cliente::getNumTel(){
return numTel;
}
void Cliente::setTipoTarj(string tt){
tipoTarj = tt;
}
string Cliente::getTipoTarj(){
return tipoTarj;
}
void Cliente::setNumTarj(int ntarj){
numTarj = ntarj;
}
int Cliente::getNumTarj(){
return numTarj;
}
void Tienda::muestraTienda() {
cout<<" id ->"<<id<<endl;
cout<<", Nombre ->"<<nombre<<endl;
cout<<", Inventario ->"<<endl;
this->verProductos();
}
void Tienda::verProductos(){
for(int i=0; i<inventario.size();i++){
inventario[i].muestraProductos();
}
}
Productos Tienda::obtenerProducto(int idT){
return inventario[idT];
}
void Productos::muestraProductos(){
cout<<id<<" "<<nombre<<" "<<precio<<endl;
}
void Tienda::agregarProductos(){
int idTemp;
string nombreTemp;
double precioTemp;
cout<<"Escribe el nombre: "<<endl;
cin>>nombreTemp;
cout<<"Escribe el precio: "<<endl;
cin>>precioTemp;
Productos productoTemp(inventario.size(), nombreTemp, precioTemp);
inventario.push_back(productoTemp);
}
void Tienda::borrarProductos(){
this->verProductos();
int borrar;
cout<<"Escribe el id del producto que quieres eliminar: "<<endl;
cin>>borrar;
inventario.erase(inventario.begin()+borrar);
for(int i=borrar;i<inventario.size();i++){
inventario[i].setId(i);
}
}
void Tienda::modificarProductos(){
this->verProductos();
int idTemp;
string nombreTemp;
double precioTemp;
cout<<"Escribe el id del producto que quieres modificar: "<<endl;
cin>>idTemp;
cout<<"Escribe el nuevo nombre: "<<endl;
cin>>nombreTemp;
inventario[idTemp].setNombre(nombreTemp);
cout<<"Escribe el nuevo precio: "<<endl;
cin>>precioTemp;
inventario[idTemp].setPrecio(precioTemp);
cout<<"Ya está modificado."<<endl;
}
void Cliente::iniciarCompra(Tienda vTienda){
Compra compra(1, vTienda);
int opcion=0;
while(opcion!=6){
cout<<"Qué quieres hacer hoy? "<<endl;
cout<<"1. Ver Productos. "<<endl;
cout<<"2. Agregar Productos al carrito. "<<endl;
cout<<"3. Borrar Productos del carrito. "<<endl;
cout<<"4. Ver carrito. "<<endl;
cout<<"5. Comprar Productos. "<<endl;
cout<<"6. Salir. "<<endl;
switch(opcion){
case 1: compra.verProductos(); break;
case 2: compra.agregarProductos(); break;
case 3: compra.borrarProductos(); break;
case 4: compra.verCarrito(); break;
case 5: compra.comprarProductos(); break;
case 6: cout<<"Gracias. "<<endl; break;
default: cout<<"Favor de escribir un numero de las opciones. "; break;
}
}
}
Tienda::Tienda() {
id = 1;
nombre = "Default";
inventario = {};
}
Tienda::Tienda(int vId, string vNombre, vector<Productos> vInventario) {
id = vId;
nombre = vNombre;
inventario = vInventario;
}
Productos::Productos() {
id = 1;
nombre = "Default";
price: 1.11;
}
Productos::Productos(int vId, string vNombre, double vPrecio) {
id = vId;
nombre = vNombre;
precio = vPrecio;
}
Cliente::Cliente() {
id = 1;
nombre = "Default";
numTel = 1234567891;
tipoTarj = "Default";
numTarj = 1;
}
Cliente::Cliente(int vId, string vNombre, int vNumTel, string vTipoTarj, int vNumTarj) {
id = vId;
nombre = vNombre;
numTel = vNumTel;
tipoTarj = vTipoTarj;
numTarj = vNumTarj;
}
Compra::Compra() {
id = 1;
}
Compra::Compra(int vId, Tienda vTienda) {
id = vId;
tienda = vTienda;
}
void Compra::verProductos(){
tienda.verProductos();
}
void Compra::agregarProductos(){
int idT;
Productos prodCopia;
cout<<"Qué quieres agregar al carrito? Escribe su id: "<<endl;
cin>>idT;
prodCopia=tienda.obtenerProducto(idT);
carrito.push_back(prodCopia);
}
void Compra::borrarProductos(){
int idT;
cout<<"Qué quieres borrar del carrito? Escribe su id: "<<endl;
cin>>idT;
for(int i=0;i<carrito.size();i++){
if(carrito[i].getId()==idT){
carrito.erase(carrito.begin()+i);
break;
}
}
}
void Compra::verCarrito(){
double precioTot=0;
for(int i=0;i<carrito.size();i++){
carrito[i].muestraProductos();
precioTot+=carrito[i].getPrecio();
}
cout<<"El precio total es de: "<<endl;
cout<<precioTot<<endl;
}
void Compra::comprarProductos(){
double precioTot=0;
for(int i=0;i<carrito.size();i++){
precioTot+=carrito[i].getPrecio();
}
cout<<"El precio total es de: "<<endl;
cout<<precioTot<<endl;
cout<<"Gracias por su compra."<<endl;
}
int main() {
Tienda soriana(2, "Soriana", {});
soriana.agregarProductos();
soriana.verProductos();
return 0;
}