cpp primer书店程序初探

在cpp primer(5th)中贯穿始终的是一个书店程序,先写一下最初的书店程序!

  1. Sales_data.h文件,定义最初的Sales_data类型
     1 #include <iostream>
     2 #include <string>
     3 
     4 struct Sales_data
     5 {
     6     std::string bookNo;
     7     unsigned units_sold = 0;
     8     double revenue = 0.0;
     9 
    10     void CalcRevenue(double price);
    11     double CalcAveragePrice();
    12     void SetData(Sales_data data);
    13     void AddData(Sales_data data);
    14     void Print();
    15 };
    16 
    17 void Sales_data::CalcRevenue(double price)
    18 {
    19     revenue = units_sold * price;
    20 }
    21 
    22 void Sales_data::SetData(Sales_data data)
    23 {
    24     bookNo = data.bookNo;
    25     units_sold = data.units_sold;
    26     revenue = data.revenue;
    27 }
    28 
    29 void Sales_data::AddData(Sales_data data)
    30 {
    31     if (bookNo != data.bookNo) return;
    32     units_sold += data.units_sold;
    33     revenue += data.revenue;
    34 }
    35 
    36 double Sales_data::CalcAveragePrice()
    37 {
    38     if (units_sold != 0)
    39         return revenue / units_sold;
    40     else
    41         return 0.0;
    42 }
    43 
    44 void Sales_data::Print()
    45 {
    46     std::cout << bookNo << " " << units_sold << " " revenue << " ";
    47     double averagePrice = CalcAveragePrice();
    48     if (averagePrice != 0.0)
    49         std::cout << averagePrice << std::endl;
    50     else
    51         std::cout << "(no seles)" << std::endl;
    52 }

     

  2. 读入图书编号,数量,价格,输出平均售价
     1 #include <iostream>
     2 
     3 #include "sales_data.h"
     4 
     5 int main()
     6 {
     7     Sales_data book;
     8     double price;
     9     std::cin >> book.bookNo >> book.units_sold >> price;
    10     book.CalcRevenue(price);
    11     book.Print();
    12 
    13     return 0;
    14 }

     

  3. 读取多个具有相同ISBN的销售记录,输出所有记录的和
     1 #include <iostream>
     2 
     3 #include "sales_data.h"
     4 
     5 int main()
     6 {
     7     Sales_data book1, book2;
     8     double price1, price2;
     9     std::cin >> book1.bookNo >> book1.units_sold >> price1;
    10     std::cin >> book2.bookNo >> book2.units_sold >> price2;
    11     book1.CalcRevenue(price1);
    12     book2.CalcRevenue(price2);
    13 
    14     if (book1.bookNo == book2.bookNo) {
    15         book1.AddData(book2);
    16         book1.Print();
    17 
    18         return 0;
    19     }
    20     else {
    21         std::cerr << "Data must refer to same ISBN" << std::endl;
    22         return -1; // indicate failure
    23     }
    24 }

     

  4. 每本书的销售报告,显示售出册数、总销售额和平均售价
     1 #include <iostream>
     2 
     3 #include "sales_data.h"
     4 
     5 int main()
     6 {
     7     Sales_data total;
     8     double totalPrice;
     9     if (std::cin >> total.bookNo >> total.units_sold >> totalPrice) {
    10         total.CalcRevenue(totalPrice);
    11 
    12         Sales_data trans;
    13         double transPrice;
    14         while (std::cin >> trans.bookNo >> trans.units_sold >> transPrice) {
    15             trans.CalcRevenue(transPrice);
    16 
    17             if (total.bookNo == trans.bookNo) {
    18                 total.AddData(trans);
    19             }
    20             else {
    21                 total.Print();
    22                 total.SetData(trans);
    23             }
    24         }
    25 
    26         total.Print();
    27 
    28         return 0;
    29     }
    30     else {
    31         std::cerr << "No data?!" << std::endl;
    32         return -1; // indicate failure
    33     }
    34 }

     

 

转载于:https://www.cnblogs.com/liuz4i/p/9645322.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值