4.4
来源:互联网 发布:sql去掉重复记录 编辑:程序博客网 时间:2024/06/13 00:48
//C++PRIMRR 7.32
//7-31.cpp
//利用自定义的Sales_item类读入并输出一组交易
#include "Sales_item.h"
#include <iostream>
using namespace std;
int main()
{
Sales_item total, trans;
cout << "Enter some transaction(Ctrl+Z to end):" << endl;
if(total.input(cin))
{
while (trans.input(cin))
{
if(total.same_isbn (trans))
{
total.add(trans);
}
else
{
total.output (cout) << endl; //输出相同的书目
total = trans;
}
}
total.output(cout) <<endl; //当读取失败时,输出最后一本不同的书目
}
else
{
cout << "No data?!" << endl;
return -1;
}
system("pause");
return 0;
}
//Sales_item.cpp
//自定义的Sales_item.cpp
#include "Sales_item.h"
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;
}
Sales_item Sales_item::add(Sales_item& other)
{
revenue += other.revenue;
units_sold += other.units_sold;
return *this;
}
//Sales_item.h
//自定义的Sales_item类的头文件
//定义Sales_item类
//添加两个public成员input和output用于读和写Sales_item对象
#ifndef SALESITEM_H
#define SALESITEM_H
#include <iostream>
#include <string>
class Sales_item
{
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 add(Sales_item& other);
Sales_item():units_sold(0),revenue(0.0){}
};
#endif