Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Thesis / Thesis.docx
Скачиваний:
6
Добавлен:
20.12.2024
Размер:
998.96 Кб
Скачать

File Train.H

#pragma once

#include "TransportInfo.h"

class Train :

public TransportInfo

{

private:

double cars;

double passengersPerCar;

public:

Train() = default;

Train(const int ID, StationInfo const& departure, StationInfo const& destination, double fee,

double passengersPerCar, double cars);

// Inherited via TransportInfo

TransportTypes getType() const override;

void serialize(std::ofstream& out) const override;

void deserialize(std::stringstream& ss) override;

double calculateFuelConsumption(double distance) const override;

double calculateEmissions(double distance) const override;

TransportInfo* clone() const override;

friend std::istream& operator>>(std::istream& in, Train& other);

friend std::ostream& operator<<(std::ostream& out, Train const& other);

};

File Train.Cpp

#include "Train.h"

Train::Train(const int ID, StationInfo const& departure, StationInfo const& destination, double fee,

double cars, double passengersPerCar)

: TransportInfo(ID, departure, destination, fee),

cars(cars), passengersPerCar(passengersPerCar)

{

}

TransportTypes Train::getType() const

{

return E_Train;

}

void Train::serialize(std::ofstream& out) const

{

out << static_cast<TransportInfo const&>(*this) << ','

<< this->cars << ',' << this->passengersPerCar << '\n';

}

void Train::deserialize(std::stringstream& ss)

{

ss >> static_cast<TransportInfo&>(*this);

std::string item;

std::getline(ss, item, ',');

this->cars = std::stoi(item);

std::getline(ss, item, ',');

this->passengersPerCar = std::stoi(item);

}

double Train::calculateFuelConsumption(double distance) const

{

return 0;

}

double Train::calculateEmissions(double distance) const

{

return 0;

}

TransportInfo* Train::clone() const

{

return new Train(*this);

}

std::istream& operator>>(std::istream& in, Train& other)

{

in >> static_cast<TransportInfo&>(other);

std::cout << "Enter the train's number of cars: ";

validateInput(other.cars, in);

std::cout << "Enter the train's number of passengers for each car: ";

validateInput(other.passengersPerCar, in);

return in;

}

std::ostream& operator<<(std::ostream& out, Train const& other)

{

out << static_cast<TransportInfo const&>(other)

<< "\nCars: " << other.cars

<< "\nPassengers per car: " << other.passengersPerCar <<

"\n---------------------------------\n";

return out;

}

Appendix b

Figure B.1 – the program’s realization

Figure B.2 – Example of printing transports

Figure B.3 – The admin password menu

Figure B.4 – ‘Add transport’ option

Figure B.5 – Example of adding transport with incorrect input

Figure B.6 – ‘Remove transport’ option

Figure B.7 – The entered ID is found

Figure B.8 – Deleting transport

Figure B.9 – Sorting’s complete

Figure B.10 – ‘Load data’ option

Figure B.11 – The data was loaded

Figure B.12 – ‘Save’ option

Figure B.13 – The data was saved

Figure B.14 – The ‘newTransports.csv’ file view

Соседние файлы в папке Thesis