#ifndef _SALES_ITEM_
#define _SALES_ITEM_
#include "iostream"
/*编写你自己的 Sales_item 类,添加两个公用(public)成员用于读和写 Sales_item 对象。这两个成员函数的功
能应类似于第一章介绍的输入输出操作符。交易也应类似于那一章所定义的。利用这个类读入并输出一组交易。
编写一个头文件,包含你自己的 Sales_item 类。使用通用的 C++ 规则给这个头文件以及任何相关的文件命名,
这些文件用于存储在类外定义的非内联函数。
在 Sales_item 类中加入一个成员,用于添加两个Sales_item 对象。使用修改后的类重新解决第一章给出的平均价格问题。
*/
#include "string" ----------------------------Sale_item.h
class Sales_item
{
private:
std::string isbn;
unsigned units_sold;
double revenue;
public:
std::istream & inPut(std::istream & in);//这个函数用来进行输入。
std::ostream & outPut(std::ostream & out)const;//这个函数用来进行输出。
double avg_price()const;//这个函数用来计算平均价格。
bool same_isbn(const Sales_item & rhs)const//这个函数用来判断两对象是否相等。
{
return isbn==rhs.isbn;
}
Sales_item::Sales_item():units_sold(0),revenue(0.0){}
};
#endif
#include "Sale_item.h"------------------------------------------------------Sale_item.cpp
std::istream & Sales_item::inPut(std::istream & in)//这个函数用来进行输入。
{
double price;
in>>isbn>>units_sold>>price;
//检查是否读入成功
if (in)
{
revenue = units_sold * price;
}
else
{
units_sold = 0;
revenue = 0.0;
}
return in;
}
std::ostream & Sales_item::outPut(std::ostream & out) const//这个函数用来进行输出。
{
out<<isbn<<"\t"<<units_sold<<"\t"<<revenue<<"\t"<<avg_price();
return out;
}
double Sales_item::avg_price()const//这个函数用来计算平均价格。
{
if(units_sold)
return revenue/units_sold;
else
return 0;
}
#include "Sale_item.h"-----------------------------main.cpp
#include "iostream"
using namespace std;
int main()
{
Sales_item item;
//读入并且输出一组交易
cout<<"Enter some transactions(Ctrl+z to end):"<<endl;
while (item.inPut(cin))
{
cout<<"The transaction readed is :"<<endl;
item.outPut(cout);
cout<<endl;
}
return 0;
}