- •Coursework thesis
- •Task for coursework
- •Abstract
- •List of abbreviations
- •Introduction
- •Domain analysis
- •Designing the system
- •Interface classes iSerializible, iEmissionable and iCloneable
- •Class for transport information
- •Bus, Plane, Train classes
- •Data storing. Transport schedule class
- •Array of pointers. Container class.
- •User Interface Design
- •Software implementation
- •Clock and Time classes.
- •Coordinates structure implementation
- •StationInfo structure implementation
- •IEmissionable, iSerializable and iCloneable implementation
- •TransportInfo class implementation
- •Bus, Plane, Train class implementation
- •TransportSchedule class implementation
- •Conclusions
- •References
- •Appendix a File Time.H
- •File Time.Cpp
- •File Clocks.H
- •File Clocks.Cpp
- •File iSerializable.H
- •File iEmissionable.H
- •File iCloneable.H
- •File stdafx.H
- •File stdafx.Cpp
- •CoordinatesData.Json
- •File transports.Csv
- •File Coordinates.Cpp
- •File main.Cpp
- •File Route.Cpp
- •File Route.H
- •File StationInfo. Cpp
- •File StationInfo.H
- •File TransportSchedule.H
- •File TransportSchedule.Cpp
- •File PtrArray.Cpp
- •File TransportInfo.Cpp
- •File TransportInfo.H
- •File Bus.H
- •File Bus.Cpp
- •File Plane.H
- •File Plane.Cpp
- •File Train.H
- •File Train.Cpp
- •Appendix b
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
