Sales_data.h
an anonymous user
·
C++
#ifndef SALES_DATA_H
#define SALES_DATA_H
#include <iostream>
#include <string>
class Sales_data
{
friend std::ostream& operator<<(std::ostream&, const Sales_data&);
friend std::istream& operator>>(std::istream&, Sales_data&);
friend Sales_data operator+(const Sales_data&, const Sales_data&);
friend bool operator==(const Sales_data&, const Sales_data&);
friend bool operator!=(const Sales_data&, const Sales_data&);
public:
Sales_data() : Sales_data("", 0, 0) {};
explicit Sales_data(const std::string& s) : Sales_data(s, 0, 0) {}
explicit Sales_data(std::istream& is) : Sales_data() { is >> *this; }
Sales_data(const std::string& s, unsigned n, double p) : book_no(s), units_sold(n), revenue(p*n) {}
std::string isbn() const { return book_no; }
Sales_data operator+=(const Sales_data&);
private:
inline double avg_price() const { return units_sold ? revenue / units_sold : 0; };
std::string book_no;
unsigned units_sold = 0;
double revenue = 0.0;
};
std::ostream& operator<<(std::ostream& os, const Sales_data& item)
{
os << item.isbn() << " " << item.units_sold << " " << item.revenue << " " << item.avg_price();
return os;
}
std::istream& operator>>(std::istream& is, Sales_data& item)
{
double price;
is >> item.book_no >> item.units_sold >> price;
if (is)
{
item.revenue = item.units_sold * price;
}
else
{
item = Sales_data();
}
return is;
}
Sales_data operator+(const Sales_data& lhs, const Sales_data& rhs)
{
Sales_data sum = lhs;
sum += rhs;
return sum;
}
Sales_data Sales_data::operator+=(const Sales_data& rhs)
{
units_sold += rhs.units_sold;
revenue += rhs.revenue;
return *this;
}
bool operator==(const Sales_data& lhs, const Sales_data& rhs)
{
return lhs.isbn() == rhs.isbn() && lhs.units_sold == rhs.units_sold && lhs.revenue == rhs.revenue;
}
bool operator!=(const Sales_data& lhs, const Sales_data& rhs)
{
return !(lhs == rhs);
}
#endif
Output
Embed on website
To embed this program on your website, copy the following code and paste it into your website's HTML:
Comments
This comment belongs to a banned user and is only visible to admins.
This comment belongs to a deleted user and is only visible to admins.