Pagini recente » Cod sursa (job #69966) | Cod sursa (job #482289) | Cod sursa (job #3129942) | Cod sursa (job #2591351) | Cod sursa (job #2207582)
///Oanea Smit-Andrei, grupa 135
///am folosit codeblocks
#include <bits/stdc++.h>
//sa modific libraria
/**
Companie este o clasa pur virtuala, nu se poate declasa un obiect de tip companie.
Din Companie deriva clasele CompanieTip1, CompanieTip2, CompanieTip3
Din acestea 3 de mai sus, deriva clasa MegaCompanie, care are toate caracteristicile lor.
Am ilustrat astfel mostenira diamant
Exista si clasa Uber, separat
*/
using namespace std;
///tip1
class ComandaCost1
{
public:///trebuie sa schimb in protected si sa fac setere, daca am timp
string adresa_sursa, adresa_destinatie;
};
class ComandaDesignatedDriver
{
public:
string nume_sofer;
int nrLicentaTransport;
};
///tip2
class ComandaRentCar
{
public:
string nume;
string Data1,Ora1,Locatia1;
string Data2,Ora2,Locatia2;
};
class ComandaLeasing
{
public:
int NrZile;
};
///tip3
class ComandaTransportMarfa
{
public:
string Judet, Localitate;
};
void Meniu()
{
cout<<"Puteti alege una din urmatoarele optiuni:\n";
cout<<"1.Introduceti o noua comanda.\n";
cout<<"2. Afisati toate comenzile, grupate pe companii.\n";
cout<<"3. Afisati companiile(in ordinea descrescatoare a profitului)\n";
cout<<"4. Afisati numarul de utilizari ale functiilor existente\n";
cout<<"5. Afisati numarul de comenzi pentru destinatii din afara tarii\n";
cout<<"6. Iesire\n";
}
class Companie///clasa abstracta, nu pot declara o companie simpla
{
protected:
string denumire;
string cod_fiscal;//unic
bool accepta_precomanda;
public:
virtual void Afisare_Servicii()=0;///functie put virtuala, ceea ce face clasa sa fie put virtuala
/*Companie()
{
denumire = "";
cod_fiscal = "";
accepta_precomanda=false;
}*/
void set_denumire(string den)
{
denumire = den;
}
string get_denumire()
{
return denumire;
}
void set_cod_fiscal(string cod)
{
cod_fiscal = cod;
}
string get_cod_fiscal()
{
return cod_fiscal;
}
void set_accepta_precomanda(bool v)
{
accepta_precomanda = v;
}
bool get_accepta_precomanda()
{
return accepta_precomanda;
}
};
class CompanieTip1: virtual public Companie
{
protected:
vector<ComandaCost1>com_cost_control;///comenzi de tip CostControl
vector<ComandaDesignatedDriver>com_DesignatedDriver;///comenzi de tip DesignatedDriver
public:
double CostControl(ComandaCost1)
{
return 72;///de facut random
}
void Afisare_Servicii()
{
cout<<"-Cost Control;\n";
cout<<"-Designated driver;\n";
}
void Push_V1(ComandaCost1 cm)
{
com_cost_control.push_back(cm);
}
void Push_V2(ComandaDesignatedDriver cm)
{
com_DesignatedDriver.push_back(cm);
}
};
class CompanieTip2: virtual public Companie
{
protected:
public:
void Afisare_Servicii()
{
cout<<"-Rent a car;\n";
cout<<"-Leasing operational;\n";
}
};
class CompanieTip3: virtual public Companie
{
protected:
public:
void Afisare_Servicii()
{
cout<<"-Transport marfa de volum mic;\n";
}
};
class Megacompanie: public CompanieTip1, public CompanieTip2, public CompanieTip3
{
protected:
public:
void Afisare_Servicii()
{
cout<<"-Cost Control;\n";
cout<<"-Designated driver;\n";
cout<<"-Rent a car;\n";
cout<<"-Leasing operational;\n";
cout<<"-Transport marfa de volum mic;\n";
}
};
template<typename Tip>
class Uber
{
private:
Tip nrcomenzi;
};
int main()
{
int optiune;
vector<CompanieTip1>VC1;
vector<CompanieTip2>VC2;
vector<CompanieTip3>VC3;
vector<Megacompanie>MC;
cout<<"Bine ati venit!\n\n\n";
while(1)
{
Meniu();
cin>>optiune;
if(optiune==1)//o noua comanda
{
cout<<"Pentru ce tip companie este comanda?(1/2/3/4(Megacompanie)/5(Uber))\n";
int tipcomp;
cin>>tipcomp;
if(tipcomp==1)
{
CompanieTip1 comp;
int alegere;
cout<<"Aceasta companie ofera serviciile:\n";
comp.Afisare_Servicii();
cout<<"Pe care il alegeti? (intorduceti un numar)\n";
cin>>alegere;
if(alegere==1)///CostControl
{
ComandaCost1 comanda;
cin>>comanda.adresa_sursa;
cin>>comanda.adresa_destinatie;
comp.Push_V1(comanda);
cout<<comp.CostControl(comanda)<<"\n";
//VC1.push_back(comanda);
}
else///Designated
{
///...
}
}
}
if(optiune==2)
{
unsigned int i;
for(i=0;i<VC1.size();++i)
cout<<VC1[i].get_denumire()<<" ";
cout<<"\n";
}
if(optiune==6)
{
return 0;
}
}
return 0;
}