My Code:
//Sales_item.h
#include<iostream>
#include<string>
using namespace std;
class Sales_item
{
public:
Sales_item(); //构造函数
//或者
//Sales_item():units_sold("0-201-70535-x"), units_sold(0.0){};
~Sales_item();
void cin(); //输入函数
void cout() const; //输出函数
Sales_item &sum(const Sales_item &item); //求和操作,定义为const值可以避免复制、改变原来的值
double avg_price(); //求平均
private:
string isbn; //国际标准书号
unsigned units_sold; //销售的数量
double revenue; //收入
};
//Sales_item.cpp
#include"Sales_item.h"
#ifndef SALES_ITEM_H_H
#define SALES_ITEM_H_H
#include<iostream>
#include<string>
Sales_item::Sales_item() //构造函数
{
isbn = "0-201-70353-x";
units_sold = 0;
revenue = 0.0;
}
//或者
//Sales_item::Sales_item():units_sold("0-201-70535-x"), units_sold(0.0){};
Sales_item::~Sales_item()
{
}
void Sales_item::cin()
{
std::cin >> isbn;
std::cin >> units_sold;
std::cin >> revenue;
}
void Sales_item::cout () const
{
std::cout << isbn << "\t";
std::cout << units_sold << "\t";
std::cout << revenue << endl;
}
Sales_item temporary;
Sales_item &Sales_item::sum(const Sales_item &item) //定义为const型引用可以避免复制。改变原来的值
{
if(isbn == item.isbn)
{
temporary.isbn = isbn;
temporary.units_sold = units_sold + item.units_sold;
temporary.revenue = revenue + item.revenue;
return temporary;
}
std::cout << "Wrong ISBN ???" << endl;
return temporary;
}
double Sales_item::avg_price()
{
if(units_sold)
return revenue/units_sold;
else
return 0;
}
#endif
//main.cpp
#include<iostream>
#include"Sales_item.h"
using namespace std;
void main()
{
Sales_item book;
cout << "Enter a Sales_item:" << endl;
book.cin();
book.cout();
Sales_item book2;
cout << "Enter another Sales_item:" << endl;
book2.cin();
cout << "The sum of the same book is:\t";
book.sum(book2).cout();
cout << "The average price of the same book is:\t";
cout << book.sum(book2).avg_price();
cout << endl;
}
Identifying Code:
//Sales_item.h
#ifndef SALESITEM_H
#define SALESITEM_H
#include<iostream>
#include<string>
class Sales_item
{
public:
//Sales_item对象的操作
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) { };
private:
std::string isbn;
unsigned units_sold;
double revenue;
};
#endif
//Sales_item.cpp
//自定义的Sales_item类的实现文件(源文件)
#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;
}
//main.cpp
#include "Sales_item.h"
#include <iostream>
using namespace std;
void main()
{
Sales_item item;
//读入并输出一组交易
cout << "Enter some transactions(Ctr+Z to end):" << endl;
while(item.input(cin))
{
cout << "The transaction readed is:" << endl;
item.output(cout);
cout << endl;
}
}
运行实例:
0-201-78345-x 3 20.00
0-201-78345-x 2 25.00
终于接触到真正的内容了,开头第一章那个Sales_item.h文件
现在终于开始能够编写了……虽然有点瑕疵,考虑不是很全面,但是终究是开始整体了,加油!!!