头文件 Sales_item.h
# ifndef SALESITEM_H
# define SALESITEM_H
# include <iostream>
# include <string>
class Sales_item {
public :
Sales_item ( const std:: string & book) : isbn ( book) , units_sold ( 0 ) , revenue ( 0.0 ) { }
Sales_item ( std:: istream & is) { is >> * this ; }
friend std:: istream& operator >> ( std:: istream & , Sales_item & ) ;
friend std:: ostream& operator << ( std:: ostream & , const Sales_item & ) ;
public :
Sales_item & operator += ( const Sales_item& ) ;
public :
double avg_price ( ) const ;
bool same_isbn ( const Sales_item & rhs) const {
return isbn == rhs. isbn;
}
Sales_item ( ) : units_sold ( 0 ) , revenue ( 0.0 ) { }
public :
std:: string isbn;
unsigned units_sold;
double revenue;
} ;
using std:: istream;
using std:: ostream;
Sales_item operator + ( const Sales_item & , const Sales_item & ) ;
inline bool operator == ( const Sales_item & lhs, const Sales_item & rhs) {
return lhs. units_sold == rhs. units_sold && lhs. revenue == rhs. revenue && lhs. same_isbn ( rhs) ;
}
inline bool operator != ( const Sales_item & lhs, const Sales_item & rhs) {
return ! ( lhs == rhs) ;
}
inline Sales_item & Sales_item:: operator += ( const Sales_item & rhs) {
units_sold += rhs. units_sold;
revenue += rhs. revenue;
return * this ;
}
inline Sales_item operator + ( const Sales_item & lhs, const Sales_item & rhs) {
Sales_item ret ( lhs) ;
ret += rhs;
return ret;
}
inline istream& operator >> ( istream & in, Sales_item & s) {
double price;
in >> s. isbn >> s. units_sold >> price;
if ( in)
s. revenue = s. units_sold * price;
else
s = Sales_item ( ) ;
return in;
}
inline ostream& operator << ( ostream & out, const Sales_item & s) {
out << s. isbn << "\t" << s. units_sold << "\t" << s. revenue << "\t" << s. avg_price ( ) ;
return out;
}
inline double Sales_item :: avg_price ( ) const {
if ( units_sold)
return revenue/ units_sold;
else
return 0 ;
}
# endif
1.20
# include <iostream>
# include "Sales_item.h"
using namespace std;
int main ( )
{
Sales_item book;
cout << "请输入销售记录:"
<< endl;
while ( cin >> book) {
cout << "ISBN、售出本数和平均售价为 "
<< book << endl;
}
return 0 ;
}
1.21
# include <iostream>
# include "Sales_item.h"
using namespace std;
int main ( )
{
Sales_item book1, book2;
cin >> book1 >> book2;
cout << book1 + book2 << endl;
return 0 ;
}
1.22
# include <iostream>
# include "Sales_item.h"
using namespace std;
int main ( )
{
Sales_item total;
if ( cin >> total) {
Sales_item trans;
while ( cin >> trans) {
total += trans;
}
cout << total << endl;
} else {
cout << "No data!" << endl;
return - 1 ;
}
return 0 ;
}
1.23 & 1.24
# include <iostream>
# include "Sales_item.h"
int main ( )
{
Sales_item total;
if ( std:: cin>> total)
{
Sales_item trans;
while ( std:: cin>> trans)
{
if ( total. isbn == trans. isbn)
total+= trans;
else
{
std:: cout<< total<< std:: endl;
total= trans;
}
}
std:: cout<< total<< std:: endl;
}
else
{
std:: cerr<< "No Data!" << std:: endl;
return - 1 ;
}
return 0 ;
}