Zad 2
#include <iostream> #include <string> #include <vector> #include <fstream> using namespace std; // Клас Vehicle class Vehicle { private: int MaxSpeed; double Acceleration; public: Vehicle() : MaxSpeed(0), Acceleration(0.0) {} Vehicle(int ms, double accel) : MaxSpeed(ms), Acceleration(accel) {} void setMaxSpeed(int ms) { MaxSpeed = ms; } int getMaxSpeed() const { return MaxSpeed; } void setAcceleration(double accel) { Acceleration = accel; } double getAcceleration() const { return Acceleration; } }; // Клас Car, наследява от Vehicle class Car : public Vehicle { private: int Doors; int WheelSize; int EnginePower; public: Car() : Doors(0), WheelSize(0), EnginePower(0) {} Car(int doors, int ws, int ep) : Doors(doors), WheelSize(ws), EnginePower(ep) {} Car(int doors, int ws, int ep, int ms, double accel) : Vehicle(ms, accel), Doors(doors), WheelSize(ws), EnginePower(ep) {} void setDoors(int doors) { Doors = doors; } int getDoors() const { return Doors; } void setWheelSize(int ws) { WheelSize = ws; } int getWheelSize() const { return WheelSize; } void setEnginePower(int ep) { EnginePower = ep; } int getEnginePower() const { return EnginePower; } }; // Клас BodyWork class BodyWork { private: string Colour; bool WindowsTint; bool Metallic; int PaintPerls; public: BodyWork() : Colour("Unknown"), WindowsTint(false), Metallic(false), PaintPerls(0) {} BodyWork(string c, bool wt, bool m, int pp) : Colour(c), WindowsTint(wt), Metallic(m), PaintPerls(pp) {} void setColour(string c) { Colour = c; } string getColour() const { return Colour; } void setWindowsTint(bool wt) { WindowsTint = wt; } bool getWindowsTint() const { return WindowsTint; } void setMetallic(bool m) { Metallic = m; } bool getMetallic() const { return Metallic; } void setPaintPerls(int pp) { PaintPerls = pp; } int getPaintPerls() const { return PaintPerls; } }; // Клас CarBrand, наследява от Car и BodyWork class CarBrand : public Car, public BodyWork { private: string Brand; string Model; double price; public: CarBrand() : Car(), BodyWork(), Brand("Unknown"), Model("Unknown"), price(0.0) {} CarBrand(string b, string m, double p) : Brand(b), Model(m), price(p) {} CarBrand(string b, string m, double p, int doors, int ws, int ep, int ms, double accel, string c, bool wt, bool mtl, int pp) : Car(doors, ws, ep, ms, accel), BodyWork(c, wt, mtl, pp), Brand(b), Model(m), price(p) {} void setBrand(string b) { Brand = b; } string getBrand() const { return Brand; } void setModel(string m) { Model = m; } string getModel() const { return Model; } void setPrice(double p) { price = p; } double getPrice() const { return price; } }; // Функция за показване на менюто void displayMenu() { cout << "\nМеню:\n"; cout << "1. Добавяне на записи от тип CarBrand.\n"; cout << "2. Съхрани във файл.\n"; cout << "3. Прочети от файл.\n"; cout << "4. Търси по марка на кола.\n"; cout << "5. Изход.\n"; } // Функция за добавяне на нов запис от тип CarBrand void addCarBrand(vector<CarBrand>& carBrands) { string brand, model, colour; double price; int doors, ws, ep, ms, pp; bool wt, metallic; double accel; cout << "Въведете марка на кола: "; cin >> brand; cout << "Въведете модел на кола: "; cin >> model; cout << "Въведете цена: "; cin >> price; cout << "Въведете брой врати: "; cin >> doors; cout << "Въведете размер на джанти в инчове: "; cin >> ws; cout << "Въведете мощност на двигателя: "; cin >> ep; cout << "Въведете максимална скорост: "; cin >> ms; cout << "Въведете ускорение: "; cin >> accel; cout << "Въведете цвят на колата: "; cin >> colour; cout << "Затъмняване на прозорците (1 за да, 0 за не): "; cin >> wt; cout << "Металик (1 за да, 0 за не): "; cin >> metallic; cout << "Брой перли в боята: "; cin >> pp; carBrands.push_back(CarBrand(brand, model, price, doors, ws, ep, ms, accel, colour, wt, metallic, pp)); } // Функция за запис в файл void saveToFile(const vector<CarBrand>& carBrands) { ofstream outFile("cars.txt"); for (const auto& car : carBrands) { outFile << car.getBrand() << " " << car.getModel() << " " << car.getPrice() << "\n"; outFile << car.getDoors() << " " << car.getWheelSize() << " " << car.getEnginePower() << " " << car.getMaxSpeed() << " " << car.getAcceleration() << "\n"; outFile << car.getColour() << " " << car.getWindowsTint() << " " << car.getMetallic() << " " << car.getPaintPerls() << "\n"; } outFile.close(); } // Функция за четене от файл void loadFromFile(vector<CarBrand>& carBrands) { ifstream inFile("cars.txt"); string brand, model, colour; double price; int doors, ws, ep, ms, pp; bool wt, metallic; double accel; while (inFile >> brand >> model >> price) { inFile >> doors >> ws >> ep >> ms >> accel; inFile >> colour >> wt >> metallic >> pp; carBrands.push_back(CarBrand(brand, model, price, doors, ws, ep, ms, accel, colour, wt, metallic, pp)); } inFile.close(); } // Функция за търсене на кола по марка void searchByBrand(const vector<CarBrand>& carBrands) { string searchBrand; cout << "Въведете марка за търсене: "; cin >> searchBrand; bool found = false; for (const auto& car : carBrands) { if (car.getBrand() == searchBrand) { cout << "Намерена кола: " << car.getBrand() << " " << car.getModel() << " Цена: " << car.getPrice() << "\n"; found = true; } } if (!found) { cout << "Няма намерени коли с тази марка.\n"; } } // Основна функция int main() { vector<CarBrand> carBrands; int choice; while (true) { displayMenu(); cout << "Изберете опция: "; cin >> choice; switch (choice) { case 1: addCarBrand(carBrands); break; case 2: saveToFile(carBrands); break; case 3: loadFromFile(carBrands); break; case 4: searchByBrand(carBrands); break; case 5: return 0; default: cout << "Невалиден избор! Моля, опитайте отново.\n"; } } return 0; }
Leave a Comment