在头文件中定义一个数据结构Book,成员包含书名价格等,在源文件中调用,定义三种书籍的名称与价格,生成50本书销售记录(string数组存储销售书名),分别计算各书销售数量及总价
时间: 2024-09-06 11:03:19 浏览: 60
C语言在头文件中定义const变量详解
在C++中,你可以按照以下步骤来完成这个需求:
首先,在头文件`book.h`中定义一个`Book`结构体:
```cpp
// book.h
#ifndef BOOK_H
#define BOOK_H
#include <string>
struct Book {
public:
std::string title;
double price;
// 构造函数和析构函数
Book(const std::string& title, double price);
~Book();
private:
};
#endif // BOOK_H
```
然后,在源文件`main.cpp`或`book.cpp`中定义构造函数、计算销售数量和总价的方法,并实现具体的书籍实例:
```cpp
// main.cpp 或 book.cpp
#include "book.h"
// 构造函数和析构函数实现
Book::Book(const std::string& title, double price) : title(title), price(price) {}
Book::~Book() {}
// 定义三种书籍
Book books[] = {
{"《编程珠玑》", 49.99},
{"《算法导论》", 69.99},
{"《深入浅出计算机组成原理》", 79.99}
};
// 销售记录的string数组
std::vector<std::string> salesNames(50); // 初始化一个空的销售书名向量
for (int i = 0; i < 3; ++i) { // 遍历前3种书籍
int numCopies = 5; // 每种书假设都卖5本
for (int j = 0; j < numCopies; ++j) {
salesNames.push_back(books[i].title);
}
}
// 计算各书销售数量和总价
std::map<std::string, int> saleCounts;
double totalPrice = 0.0;
for (const auto& name : salesNames) {
saleCounts[name]++;
totalPrice += books[salesNames.back()].price * saleCounts[name];
}
// 输出结果
for (const auto& pair : saleCounts) {
std::cout << "书名:" << pair.first << ", 销售数量:" << pair.second << "\n";
}
std::cout << "总价:" << totalPrice << "\n";
```
阅读全文