题目中所要求的所有类的要求如下:
Person.h
#ifndef _PERSON_H
#define _PERSON_H
#include <iostream>
#include <string>
class Person
{
public:
Person(std::string name, std::string address) : name(name), address(address) {};
~Person() {};
std::string nameInfo() { return name; }
std::string addressInfo() { return address; }
public:
std::string name;
std::string address;
};
std::istream &recordInfno(std::istream&, Person&);
std::ostream &outputInfno(std::ostream&,const Person&);
#endif
Person.c
#include "Person.h"
using namespace std;
std::istream &recordInfno(std::istream& is, Person& personInfo)
{
is >> personInfo.name >> personInfo.address;
return is;
}
std::ostream &outputInfno(std::ostream& os,const Person& personInfo)
{
os << personInfo.name << " " << personInfo.address << endl;
return os;
}
Sales_data.h
#ifndef _SALES_DATA_H
#define _SALES_DATA_H
#include <string>
/*
定义一个实现书店交易的类
它要实现表示一本书的总销售额、售出册数、平均售价
那么要是实现这个类,得先定义其数据成员,然后是类所能提供得接口(实现类所需要的操作)
然后开始实现接口
*/
class Sales_data
{
public:
Sales_data(std::string number) :bookNo(number), units_sold(0), revenue(0.0){};
Sales_data(std::istream &is) { read(is, *this); };
Sales_data() {};
~Sales_data() {};
std::string isbn() const { return bookNo; }//返回ISBN编号
Sales_data& combine(const Sales_data &); //将一个Sales_date对象加到另一个对象上去
double avg_price() const; //计算均价
private:
std::string bookNo; //ISBN编号
unsigned units_sold ;//销售数量
double revenue ; //销售总额
friend Sales_data add(const Sales_data&, const Sales_data&); //执行两个Sales_date对象的加法
friend std::ostream &print(std::ostream&, const Sales_data&);//将Sales_date对象输出到ostream上
friend std::istream &read(std::istream&, Sales_data&); //从ostream上读入到Sales_date对象
};
//Sale_date 的非成员接口函数
Sales_data add(const Sales_data&, const Sales_data&); //执行两个Sales_date对象的加法
std::ostream &print(std::ostream&, const Sales_data&);//将Sales_date对象输出到ostream上
std::istream &read(std::istream&, Sales_data&); //从ostream上读入到Sales_date对象
#endif
Sales_data.c
#include "Sales_data.h"
#inclu