Sales_item例子

简介: Sales_item.h #ifndef SALES_ITEM_H #define SALES_ITEM_H #include #include using namespace std; class Sales_item { friend ostream& opera...

Sales_item.h

#ifndef SALES_ITEM_H
#define SALES_ITEM_H
#include<iostream>
#include<string>
using namespace std;

class Sales_item
{
    friend ostream& operator<<(ostream &os,const Sales_item &);
    friend istream& operator>>(istream &is,Sales_item &);

   private:
        string bookno;
        unsigned units_sold=0;
        double revenue=0.0;
   public:
    string isbn()const
    {
        return this->bookno;
    }
    double avg_price() const;
    Sales_item& operator=(const Sales_item &);
    Sales_item& operator+(const Sales_item &);
    Sales_item& operator+=(const Sales_item &);
};
#endif // SALES_ITEM_H

Sales_item.cpp

#include "Sales_item.h"

istream& operator>>(istream &in,Sales_item &s)
{
    double price;
    in>>s.bookno>>s.units_sold>>price;
    if(in)
        s.revenue=s.units_sold*price;
    else
        s=Sales_item();
    return in;
}

ostream& operator<<(ostream &out,const Sales_item &s)
{
    out<<s.isbn()<<" "<<s.units_sold<<" "<<s.revenue<<" "<<s.avg_price()<<endl;
    return out;
}

double Sales_item::avg_price() const
{
    if(units_sold)
        return revenue/units_sold;
    else
        return 0;
}

Sales_item& Sales_item::operator=(const Sales_item &s)
{
    units_sold=s.units_sold;
    revenue=s.revenue;
    isbn()=s.isbn();
    return *this;
}
Sales_item& Sales_item::operator+(const Sales_item &s)
{
    if(this->isbn()==s.isbn())
    {
        units_sold+=s.units_sold;
        revenue+=s.revenue;
    }
    return *this;
}

Sales_item& Sales_item::operator+=(const Sales_item &s)
{
    units_sold+=s.units_sold;
    revenue+=s.revenue;
    return *this;
}

useSales_item.cpp

#include"Sales_item.h"

int main()
{
    Sales_item book;
    cin>>book;
    cout<<book<<endl;
    Sales_item item1,item2;
    cin>>item1>>item2;
    cout<<item1+item2<<endl;
    return 0;
}

运行结果如下:

 

相关文章
|
4月前
ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
40 0
|
10月前
|
SQL 关系型数据库 MySQL
GROUP BY和ORDER BY的区别
GROUP BY和ORDER BY的区别
239 0
|
10月前
|
SQL 关系型数据库 MySQL
near ‘order values(‘1‘,‘1‘,‘100‘,‘10.25‘)‘ at line 1
near ‘order values(‘1‘,‘1‘,‘100‘,‘10.25‘)‘ at line 1
60 0
|
Python
data.values.tolist()的用法
data是一个数据集, columns = data.columns wind = data[columns[2]] wind = wind.tolist() data = data.values.tolist(), 介绍这个python代码
1353 0
|
关系型数据库 MySQL
十一、GROUP_CONCAT的使用
十一、GROUP_CONCAT的使用
399 0
|
数据挖掘
SAP MM PO Item Category 内部code的用处?
SAP MM PO Item Category 内部code的用处?
SAP MM PO Item Category 内部code的用处?
SAP SD 基础知识之Cash Sales和Rush Order的区别
SAP SD 基础知识之Cash Sales和Rush Order的区别
SAP SD 基础知识之Cash Sales和Rush Order的区别
|
存储
One Order行项目里Item Category是怎么计算出来的
One Order的行项目里有个字段叫Item Category,我们在行项目里加入一个product后,就会自动带出Item Category来。这个值是怎么计算出来的?
113 0
One Order行项目里Item Category是怎么计算出来的
when click one item in table Select at least one column to perform the search
when click one item in table Select at least one column to perform the search
when click one item in table Select at least one column to perform the search
如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的字段
假设我想修改S/4HANA里Sales Order抬头的Service Date字段SERV_DATE: 首先从数据库表VBKD里查找到SERV_DATE修改之前的值为2020年1月1日