#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Movie
{
public:
enum MOVETYPE
{
REGULAR,
NEW_RELEASE,
CHILDRENS
};
Movie() = default;
Movie(string title, int priceCode)
{
_title = title;
_priceCode = priceCode;
}
Movie(const Movie &other) = default;
int getPriceCode()
{
return _priceCode;
}
void setPriceCode(int arg)
{
_priceCode = arg;
}
string getTitle()
{
return _title;
};
private:
string _title;
int _priceCode;
};
class Rental
{
public:
Rental() = default;
Rental(Movie movie, int daysRented)
{
_movie = movie;
_daysRented = daysRented;
}
Rental(const Rental &other) = default;
int getDaysRented()
{
return _daysRented;
}
Movie getMovie()
{
return _movie;
}
private:
Movie _movie;
int _daysRented;
};
class Customer
{
private:
string _name;
std::vector<Rental> _rentals;
public:
Customer(string name)
{
_name = name;
};
void addRental(Rental arg)
{
_rentals.push_back(arg);
};
string getName()
{
return _name;
};
string statement()
{
double totalAmount = 0;
int frequentRenterPoints = 0;
string result = "Rental Record for " + getName() + "\n";
for (Rental each : _rentals)
{
double thisAmount = 0;
switch (each.getMovie().getPriceCode())
{
case Movie::REGULAR:
thisAmount += 2;
if (each.getDaysRented() > 2)
{
thisAmount += (each.getDaysRented() - 2) * 1.5;
}
break;
case Movie::NEW_RELEASE:
thisAmount += each.getDaysRented() * 3;
break;
case Movie::CHILDRENS:
thisAmount += 1.5;
if (each.getDaysRented() > 3)
{
thisAmount += (each.getDaysRented() - 3) * 1.5;
}
break;
}
// add frequent renter points
frequentRenterPoints ++;
// add bonus for a two day new release rental
if ((each.getMovie().getPriceCode() == Movie::NEW_RELEASE) && each.getDaysRented() > 1)
{
frequentRenterPoints++;
}
//show figures for this rental
result += "\t" + each.getMovie().getTitle()+ "\t" + std::to_string(thisAmount)+ "\n";
totalAmount += thisAmount;
//add footer lines
result += "Amount owed is " + std::to_string(totalAmount)+ "\n";
result += "You earned " + std::to_string(frequentRenterPoints) + " frequent renter points";
return result;
}
};
};
int main()
{
}