//Sales_item.h#ifndef SALESITEM_H #define SALESITEM_H #include <iostream> #include<string> class Sales_item { public: std::istream &input(std::istream & in); std::ostream & output(std::ostream & out)const; double avg_price() const; bool same_isbn(Sales_item& rhs)const; Sales_item add(Sales_item& other); Sales_item::Sales_item() :unit_sale(0), revenue(0){} private: std::string isbn;//isbn号 int unit_sale;//数量 double revenue;//总价 }; #endif
//Sales_item.cpp #include "Sales_item.h" std::istream& Sales_item::input(std::istream & in){ double price; in >> isbn >> unit_sale >> price; if (in) revenue = unit_sale*price; else { unit_sale = 0; revenue = 0.0; } return in; } std::ostream& Sales_item::output(std::ostream & out)const{ out << isbn << "\t" << unit_sale << "\t" << revenue << "\t" << avg_price(); return out; } double Sales_item::avg_price() const{ if (unit_sale) return revenue / unit_sale; else return 0.0; } bool Sales_item::same_isbn(Sales_item& rhs)const{ return isbn == rhs.isbn; } Sales_item Sales_item::add(Sales_item& other){ unit_sale += other.unit_sale; revenue += other.revenue; return *this; }
//main.cpp #include <iostream> //#include <string> //#include <vector> //#include <cctype> //#include <cstring> //#include <bitset> #include "Sales_item.h" using namespace std; int main(int argc, char **argv) { 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); total = trans; } } //输出最后一个交易 total.output(cout) << endl; } else { cout << "No data!" << endl; return -1; } cout << endl; system("pause"); return 0; }
时间: 2024-10-12 20:50:19