#include <iostream>
#include <string>
#include <vector>
using namespace std;
class CO_chitietmay{
private:
string O_ma;
public:
CO_chitietmay(){
O_ma = "";
}
friend istream& operator >> (istream &is, CO_chitietmay &x){
cout << "Nhap ma chi tiet may: ";
is >> x.O_ma;
fflush(stdin);
return is;
}
friend ostream& operator << (ostream &os, CO_chitietmay x){
os << "Ma chi tiet may la: " << x.O_ma << endl;
return os;
}
};
class C_chitietnho : public CO_chitietmay {
private:
float trongluong;
float giathanh;
public:
C_chitietnho() : CO_chitietmay() {
trongluong = 0;
giathanh = 0;
}
float Getter_trongluong(){
return this->trongluong;
}
float Getter_giathanh(){
return this->giathanh;
}
friend istream& operator >> (istream &is, C_chitietnho &x){
CO_chitietmay *cha = static_cast<CO_chitietmay *>(&x);
is >> *cha;
cout << "Nhap trong luong: ";
is >> x.trongluong;
cout << "Nhap gia thanh : ";
is >> x.giathanh;
return is;
}
friend ostream& operator << (ostream &os, C_chitietnho x){
CO_chitietmay cha = static_cast<CO_chitietmay>(x);
os << cha;
os << "Trong luong: " << x.trongluong << endl;
os << "Gia thanh : " << x.giathanh << endl;
return os;
}
};
class C_chitietphuc{
private:
vector<C_chitietnho> chitietphuc;
public:
friend istream& operator >> (istream &is, C_chitietphuc &x){
bool check = false;
int i = 0 , choose;
do
{
C_chitietnho a;
cout << "Nhap Chi tiet don thu " << i + 1 << endl;
is >> a;
x.chitietphuc.push_back(a);
cout << "Ban muon nhap tiep ko?: ";
is >> choose;
i++;
} while (choose);
return is;
}
friend ostream& operator << (ostream &os, C_chitietphuc x){
for(int i = 0 ; i < x.chitietphuc.size() ; i++){
os << "Chi tiet don thu "<< i + 1 << endl;
os << x.chitietphuc[i] << endl;
}
return os;
}
};
class Machines{
private:
vector <C_chitietnho> danhsachnho; // chi tiet don
vector <C_chitietphuc> danhsachphuc;
float trongluong, giathanh;
public:
Machines(){
trongluong = 0;
giathanh = 0;
}
void Nhap(){
int choose;
int i = 0, j = 0;
do
{
system("cls");
cout << "Cac bo phan che tac ra 1 co may" << endl;
cout << "+1. Nhap chi tiet don. " << endl;
cout << "+2. Nhap chi tiet phuc. "<< endl;
cout << "+3. Thoat" << endl;
cout << "Ban chon: ";
cin >> choose;
switch(choose){
case 1 :
{
cout << "Nhap chi tiet don thu " << i + 1 << endl;
C_chitietnho x;
cin >> x;
danhsachnho.push_back(x);
i++;
break;
}
case 2 :
{
cout << "Nhap chi tiet phuc thu " << j + 1 << endl;
C_chitietphuc x;
cin >> x;
danhsachphuc.push_back(x);
j++;
break;
}
}
} while (choose != 3);
}
void Xuat()
{
cout << "Cau tao cua 1 co may gom: " << danhsachnho.size() << " Chi tiet nho vs : " << danhsachphuc.size() << " Chi tiet phuc"<< endl;
for(int k = 0 ; k < danhsachnho.size() ; k++ ){
cout <<"+Chi tiet don thu "<< k + 1 << endl << danhsachnho[k];
}
cout << "\n---------------------------------------------------------\n";
for(int h = 0 ; h < danhsachphuc.size() ; h++){
cout << "+Chi tiet phuc thu " << h + 1 << endl << danhsachphuc[h];
}
cout << "------------------Ket Thuc------------------------" << endl;
}
float trongluong_comay(){
float Sum_trongluong = 0;
float thietbinoi;
// chi tiet don truoc;
for(int i = 0 ; i < danhsachnho.size() ; i++){
Sum_trongluong += danhsachnho[i].Getter_trongluong();
}
cout << "Thiet bi noi: ";
cin >> thietbinoi;
return Sum_trongluong + 0.1 * thietbinoi;
}
float giathanh_comay(){
float conglaprap;
float Sum_giathanh = 0;
// chi tiet don truoc;
for(int i = 0 ; i < danhsachnho.size() ; i++){
Sum_giathanh += danhsachnho[i].Getter_giathanh();
}
cout << "Cong lap rap: ";
cin >> conglaprap;
return Sum_giathanh + 0.2 * conglaprap;
}
};
int main()
{
Machines a;
a.Nhap();
a.Xuat();
cout << "\nTrong luong cua Machine(Co may): "<< a.trongluong_comay() << endl;
cout << "\nGia thanh cua Machine(Co may) : " << a.giathanh_comay() << endl;
cout << endl;
system("pause");
return 0;
}