1.6 书店程序

本节是第一章的 “综合案例”—— 结合前面学的输入输出、ifforSales_item类,编写一个 “处理多本图书销售记录的程序”,功能是:读取多本图书的销售记录,累加相同 ISBN 的销售数据,最终输出每本图书的总销售记录。

完整代码

#include<iostream>#include"Sales_item.h"usingnamespace std;intmain(){    Sales_item total;  // 存储第一本图书的销售记录(作为初始总记录)    // 先读取第一本图书的记录    if (cin >> total) {        Sales_item trans;  // 存储后续读取的每本图书的记录        // 循环读取后续记录,直到输入结束(Ctrl+Z在Windows,Ctrl+D在Linux)        while (cin >> trans) {            // 若当前记录与总记录的ISBN相同,累加            if (total.isbn() == trans.isbn()) {                total += trans;  // 等价于total = total + trans            } else {                // 若ISBN不同,先输出之前的总记录,再更新total为当前记录                cout << total << endl;                total = trans;            }        }        // 输出最后一本图书的总记录(循环结束后,最后一个total未输出)        cout << total << endl;    } else {        // 若未读取到任何记录,输出错误信息        cerr << "没有输入任何销售记录!" << endl;        return-1;    }    return0;}

程序逻辑解析

  1. 初始读取

    :先用if (cin >> total)读取第一本图书的记录 —— 若读取失败(如用户直接输入结束符),则输出错误信息并退出。

  2. 循环读取后续记录

    :用while (cin >> trans)循环读取后续记录 ——cin >> trans的返回值是cin本身,当cin遇到 “输入结束符”(Windows 下按Ctrl+Z,Linux 下按Ctrl+D)或 “输入错误” 时,会返回false,循环结束。

  3. 累加或输出

    • transtotal的 ISBN 相同:用total += trans累加销售数据。

    • 若 ISBN 不同:先输出total(之前累加好的某本图书的总记录),再将total更新为trans(开始处理下一本图书)。

  4. 输出最后一条记录

    :循环结束后,最后一本图书的总记录还未输出,需单独cout << total

第一章核心总结

  1. 程序结构

    C++ 程序必须有且仅有一个main()函数,程序从main()开始执行,main()的返回值用于告知操作系统程序的执行状态(0 为成功,非 0 为失败)。

  2. 输入输出

    • std::cout

      (搭配<<)用于输出,std::cin(搭配>>)用于输入。

    • using namespace std;

      可简化标准库组件的使用,但大型项目需谨慎。

  3. 基础语法

    • 语句必须以;结尾。

    • 注释用//(单行)或/* ... */(多行)。

    • 控制流:if(分支)、for(循环)是最基础的控制语句。

  4. 类的初步认知

    类是自定义类型,封装了数据和方法;使用类时,需包含对应的头文件,并通过对象调用类的方法或运算符。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐