资源简介
primer c++中的书店项目,根据自己的理解写的代码,供大家参考
代码片段和文件信息
#include “sale_item.h“
//静态成员 静态成员必须在类外定义,否则编译器会报错
vector Sale_item:: isbn_total;
vector Sale_item::isbn_name;
vector Sale_item::isbn_num;
vector Sale_item::isbn_ave_price;
//Sale_item的友员函数
ostream& operator<<(ostream &outconst Sale_item & d)
{
//return out <<“商品名 “<< d.name << “ 数量 “ << d.num << “ 价格 “ << d.price << “元“ << endl;
return out << d.name << “ “ << d.num << “ “ << d.price< }
istream& operator>>(istream &iSale_item & d)
{
//xcout << “请输入 商品名 售出数量 价格:“;
string line;
getline(i line);
istringstream iss(line);
iss >> d.name >> d.num >> d.price;
if (iss)
d.updata_staticmem();
else
d = Sale_item();
return i;
}
Sale_item operator+(const Sale_item& s1const Sale_item& s2)
{
Sale_item s3 = s1;
s3 += s2;
return s3;
}
Sale_item& operator+=(Sale_item& s1const Sale_item& s2)
{
if (s1.name==s2.name)
{
s1.num += s2.num;
s1.price = (s1.num*s1.price + s2.num*s2.price) / s1.num;
}
else
{
cerr << “名称不同,不能相加!“ << endl;
}
return s1;
}
Sale_item::Sale_item(string isbn int n double p) :name(isbn) num(n) price(p)
{
updata_staticmem();
}
Sale_item::Sale_item(istream &i)
{
i >> *this;
}
//当创建对象时,更新静态成员
void Sale_item::updata_staticmem()
{
if(!isvilid()) return;
auto stor = find(isbn_name.begin() isbn_name.end() name);
xiabiao = stor - isbn_name.begin();
if (stor == isbn_name.end())
{
isbn_name.push_back(name);
isbn_num.push_back(num);
isbn_total.push_back(num*price);
isbn_ave_price.push_back(price);
}
else
{
isbn_num[xiabiao] += num;
isbn_total[xiabiao] += num*price;
isbn_ave_price[xiabiao] = isbn_total[xiabiao] / isbn_num[xiabiao];
}
}
//由商品名检索 输出商品销售信息
void Sale_item::findname_display(string nameostream &out)
{
auto stor = find(isbn_name.begin() isbn_name.end() name);
int xb = stor - isbn_name.begin();
if (stor == isbn_name.end())
out << “没有此商品销售记录“ << endl;
else
{
out << setiosflags(ios::left) << setw(10) << “商品名“ << setw(10) << “售出数量“ << setw(8) << “平均价格“ << setw(4) << “ “ << setw(10) << “总计“ << “ “ << endl;
do_display(xb out);
}
}
void Sale_item::tofile(string filename)
{
ofstream fout(filename+“.saleresult“);
fout < vector::size_type size = isbn_name.size();
for (vector::size_type xb = 0; xb != size;xb++)
do_display(xb fout);
}
bool Sale_item::isvilid()
{
if (name == “商品名“) return false;
if (num == 0 || price == 0)
{
cerr << name << “的销售记录有误! 不统计该记录按 1 重新输入按 2 : “;
int i;
cin >> i;
switch (i)
{
case 1: return false;
case 2:
if (num == 0 && price == 0)
{
cout << “请重新输入“ << name << “的售出数量: “; cin >> num;
cout << “请重新输入“ << name << “的售出价格: “; cin >> price;
return true;
}
if (price == 0)
cout << “请重新输入“ << name
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3723 2017-09-11 09:59 sale_item.cpp
文件 1153 2017-09-11 09:59 sale_item.h
文件 637 2017-08-20 11:18 销售主函数.cpp
相关资源
- C++primer第四版清晰版电子书及全部答
- c++-primer-plus(第六版)-编程练习答案
- C++ Primer中文第五版.zip
- C++ Primer 第五版 中文版+英文版+习题集
- C++ primer 第三版习题答案
- C++ Primer习题集 第5版-Stanley B. Lippman
- C++ Primer 第五版 中文版+英文版 pdf
- C++ Primer(5th)2017Edition 无水印pdf
- C++ Primer 3rd 英文版
- [C语言] C Primer Plus 第6版 (英文版)
- C++ Primer139296
- C++ Primer Plus英文版第六版.pdf
- 免费:C++ Primer Plus 6th Edition英文版p
- C++ primer中文版
- C++Primer课后习题解答(第1~18章完整答
- c++ primer 4th answer完整版
- C++ Primer第四版中文高清非扫描版
- C++Primer中文版(第4版)
- C++Primer第四版书和代码(中文+英文双
- C++经典教材
- C++ Primer 中文完整PDF清晰非扫描(第四
- C++ Primer 第五版 课后习题答案高清无
- C++ Primer 第三版 Answer Book 題解
- C++Primer plus(第六版)中文版书后编程
- C++ Primer 5th edition PDF完美版
- C++ primer 英文版284248
- C++ Primer第5版顶级清晰文字版
- C++ Primer Plus中文版第六版 .azw3 格式
- C++ Primer fifth edition.epub
- C++ Primer Plus中文版第六版
评论
共有 条评论