• 大小: 3KB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-01
  • 语言: C/C++
  • 标签: primer  书店项目  

资源简介

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

评论

共有 条评论