consolidate all repos to one for archive
This commit is contained in:
138
semester_2/programiranje_2/primeri/Example12/FlightTicket.cpp
Normal file
138
semester_2/programiranje_2/primeri/Example12/FlightTicket.cpp
Normal file
@@ -0,0 +1,138 @@
|
||||
#include <sstream>
|
||||
#include "FlightTicket.h"
|
||||
|
||||
int FlightTicket::numberOfFirstClass = 0;
|
||||
|
||||
FlightTicket::FlightTicket() :
|
||||
price(0.0), flightFrom("From?"), flightTo("To?"), addBaggage(false),
|
||||
ticketType(FlightTicketType::Economy) {
|
||||
ptrFlightDate = new Date(1, 1, 1971);
|
||||
}
|
||||
|
||||
FlightTicket::FlightTicket(const FlightTicket& t) :
|
||||
price(t.price), flightFrom(t.flightFrom), flightTo(t.flightTo),
|
||||
addBaggage(t.addBaggage), ticketType(t.ticketType), ptrFlightDate(t.ptrFlightDate) {
|
||||
if (ticketType == FlightTicketType::FirstClass)
|
||||
numberOfFirstClass++;
|
||||
}
|
||||
|
||||
FlightTicket::FlightTicket(double price, std::string ff, std::string ft,
|
||||
bool bag, FlightTicketType type, Date* date1) :
|
||||
price(price), flightFrom(ff), flightTo(ft), addBaggage(bag),
|
||||
ticketType(type), ptrFlightDate(date1) {
|
||||
if (ticketType == FlightTicketType::FirstClass)
|
||||
numberOfFirstClass++;
|
||||
}
|
||||
|
||||
FlightTicket::~FlightTicket() {
|
||||
}
|
||||
|
||||
double FlightTicket::getTotalPrice() const {
|
||||
double sum = price;
|
||||
|
||||
if (FlightTicketType::Business == ticketType)
|
||||
sum *= 1.20;
|
||||
else if (FlightTicketType::FirstClass == ticketType)
|
||||
sum *= 1.50;
|
||||
if (addBaggage == true)
|
||||
sum += 50;
|
||||
return sum;
|
||||
}
|
||||
|
||||
std::string FlightTicket::toString() const {
|
||||
std::stringstream ss;
|
||||
|
||||
ss << "Flight ticket details: " << "\n";
|
||||
ss << "\tPrice: " << price << "\n";
|
||||
ss << "\tAdditional baggage: " << (addBaggage ? "Yes" : "No") << "\n";
|
||||
ss << "\tFrom: " << flightFrom << "\n";
|
||||
ss << "\tTo: " << flightTo << "\n";
|
||||
ss << "\tTicket type: " << getTicketTypeString()
|
||||
<< "\n";
|
||||
ss << "\tDeparture: " << this->ptrFlightDate->toString() << "\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
double FlightTicket::getPrice() const {
|
||||
return price;
|
||||
}
|
||||
|
||||
void FlightTicket::setPrice(double price) {
|
||||
this->price = price;
|
||||
}
|
||||
bool FlightTicket::isAddBaggage() const {
|
||||
return addBaggage;
|
||||
}
|
||||
|
||||
void FlightTicket::setAddBaggage(bool addBaggage) {
|
||||
this->addBaggage = addBaggage;
|
||||
}
|
||||
|
||||
Date* FlightTicket::getFlightDate() const {
|
||||
return ptrFlightDate;
|
||||
}
|
||||
|
||||
void FlightTicket::setFlightDate(Date* flightDate) {
|
||||
this->ptrFlightDate = flightDate;
|
||||
}
|
||||
|
||||
const std::string& FlightTicket::getFlightFrom() const {
|
||||
return flightFrom;
|
||||
}
|
||||
|
||||
void FlightTicket::setFlightFrom(const std::string& flightFrom) {
|
||||
this->flightFrom = flightFrom;
|
||||
}
|
||||
|
||||
const std::string& FlightTicket::getFlightTo() const {
|
||||
return flightTo;
|
||||
}
|
||||
|
||||
void FlightTicket::setFlightTo(const std::string& flightTo) {
|
||||
this->flightTo = flightTo;
|
||||
}
|
||||
|
||||
FlightTicketType FlightTicket::getTicketType() const {
|
||||
return ticketType;
|
||||
}
|
||||
|
||||
void FlightTicket::setTicketType(FlightTicketType ticketType) {
|
||||
if (ticketType < FlightTicketType::Economy
|
||||
|| ticketType > FlightTicketType::FirstClass) {
|
||||
std::cout << "Wrong flight ticket type ";
|
||||
this->ticketType = FlightTicketType::Economy;
|
||||
} else
|
||||
this->ticketType = ticketType;
|
||||
if (ticketType == FlightTicketType::FirstClass)
|
||||
numberOfFirstClass++;
|
||||
}
|
||||
|
||||
std::string FlightTicket::getTicketTypeString() const {
|
||||
switch (ticketType) {
|
||||
case FlightTicketType::Economy:
|
||||
return "Economy";
|
||||
break;
|
||||
case FlightTicketType::Business:
|
||||
return "Business";
|
||||
break;
|
||||
case FlightTicketType::FirstClass:
|
||||
return "First Class";
|
||||
break;
|
||||
default:
|
||||
return "?";
|
||||
}
|
||||
}
|
||||
|
||||
int FlightTicket::GetNumberOfFirstClass() {
|
||||
return numberOfFirstClass;
|
||||
}
|
||||
|
||||
bool FlightTicket::isEqual(const FlightTicket& drugi) const {
|
||||
if (this->price == drugi.price && this->addBaggage == drugi.addBaggage
|
||||
&& this->getTicketType() == drugi.getTicketType()
|
||||
&& this->flightFrom == drugi.flightFrom
|
||||
&& this->flightTo == drugi.flightTo
|
||||
&& this->ptrFlightDate->isEqual(*drugi.ptrFlightDate))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user