C++在头文件中定义一个数据结构Book,成员包含书名,价格等,在源文件中调用,定义三种书籍的名称与价格,生成50本书销售记录(用一个string数组存储销售书名),分别计算各书销售数量及总价,最后输出储存销售书名的string数组,销售书籍书名,数量,单价和总价
时间: 2024-09-09 13:03:48 浏览: 45
在C++中,首先我们需要在头文件(`Book.h`)中定义一个名为`Book`的数据结构:
```cpp
// Book.h
#ifndef BOOK_H
#define BOOK_H
#include <string>
using namespace std;
class Book {
public:
string title;
double price;
// 构造函数和默认构造函数
Book(string title = "", double price = 0.0);
};
#endif // BOOK_H
```
接下来在源文件(如`main.cpp`)中,我们编写具体的实现,包括创建三种类型的书籍实例、生成销售记录、计算统计信息,并输出结果:
```cpp
// main.cpp
#include "Book.h"
#include <iostream>
#include <vector>
// 定义三种书籍的名称与价格
Book books[3] = {
{"《计算机编程入门》", 39.99},
{"《算法导论》", 59.99},
{"《数据结构与算法分析》", 49.99}
};
int main() {
const int num_books = 50; // 总书籍数
vector<string> sales_record(num_books); // 存储销售书名的string数组
// 随机填充销售记录(这里仅示例,实际应用应替换为随机生成)
for (int i = 0; i < num_books; ++i) {
int random_index = rand() % 3; // 选择一个书籍索引
sales_record[i] = books[random_index].title;
}
// 计算每种书籍的数量和总价
int book_counts[3] = {0};
double total_prices[3] = {0.0};
for (auto& record : sales_record) {
if (record == books[0].title) {
book_counts[0]++;
total_prices[0] += books[0].price;
} else if (record == books[1].title) {
book_counts[1]++;
total_prices[1] += books[1].price;
} else if (record == books[2].title) {
book_counts[2]++;
total_prices[2] += books[2].price;
}
}
// 输出相关信息
cout << "Sales Record:\n";
for (size_t i = 0; i < sales_record.size(); ++i) {
cout << "Title: " << sales_record[i] << ", Quantity: " << book_counts[(i + books_index_to_count[i]) % 3] << ", Price: " << books[(i + books_index_to_count[i]) % 3].price << ", Total Price: " << total_prices[(i + books_index_to_count[i]) % 3] << endl;
}
return 0;
}
// 假设我们有个辅助函数用于从销售记录中获取对应的书籍索引
int books_index_to_count(const string& record, const Book books[], int size) {
for (int i = 0; i < size; ++i) {
if (books[i].title == record) {
return i;
}
}
return -1; // 如果未找到则返回错误
}
```
运行这个程序,它会生成并输出销售记录、各书销售数量、单价和总价。
阅读全文