C++图书馆管理系统加统计图代码示例
时间: 2023-07-11 07:13:17 浏览: 53
以下是一个使用C++语言实现的简单图书馆管理系统和统计图的代码示例:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
// 图书类
class Book {
public:
Book(string _name, string _author, int _category, int _count) :
name(_name), author(_author), category(_category), count(_count) {}
string name; // 书名
string author; // 作者
int category; // 分类
int count; // 数量
};
// 图书馆类
class Library {
public:
void addBook(string name, string author, int category, int count); // 添加书籍
void removeBook(int index); // 删除书籍
void showBooks(); // 显示所有书籍
void showStatistics(); // 显示书籍分类统计图
private:
vector<Book> books; // 书籍列表
vector<string> categories = { "计算机科学", "历史", "小说", "科技", "哲学" }; // 分类列表
};
// 添加书籍
void Library::addBook(string name, string author, int category, int count) {
Book book(name, author, category, count);
books.push_back(book);
cout << "添加成功!" << endl;
}
// 删除书籍
void Library::removeBook(int index) {
if (index < 0 || index >= books.size()) {
cout << "索引无效!" << endl;
return;
}
books.erase(books.begin() + index);
cout << "删除成功!" << endl;
}
// 显示所有书籍
void Library::showBooks() {
cout << "书名\t\t作者\t\t分类\t数量" << endl;
for (int i = 0; i < books.size(); i++) {
cout << books[i].name << "\t" << books[i].author << "\t"
<< categories[books[i].category] << "\t" << books[i].count << endl;
}
}
// 显示书籍分类统计图
void Library::showStatistics() {
vector<int> counts(categories.size(), 0);
for (int i = 0; i < books.size(); i++) {
counts[books[i].category] += books[i].count;
}
int max_count = *max_element(counts.begin(), counts.end());
int width = 20;
cout << "书籍分类统计图:" << endl;
for (int i = 0; i < categories.size(); i++) {
int bar_width = (int)(counts[i] * width / max_count);
cout << categories[i] << ":\t|";
cout << string(bar_width, '=') << string(width - bar_width, ' ') << "|";
cout << " " << counts[i] << endl;
}
}
// 主函数
int main() {
Library library;
// 添加书籍
library.addBook("C++ Primer", "Lippman", 0, 10);
library.addBook("Java编程思想", "Eckel", 0, 8);
library.addBook("红楼梦", "曹雪芹", 2, 20);
library.addBook("三体", "刘慈欣", 3, 15);
library.addBook("论语", "孔子", 4, 5);
// 显示所有书籍
library.showBooks();
// 显示书籍分类统计图
library.showStatistics();
// 删除书籍
library.removeBook(1);
library.showBooks();
return 0;
}
```
这个示例代码实现了一个简单的图书馆管理系统,并且可以根据书籍分类绘制一个统计图。在`Library`类中,`addBook`方法用于添加书籍,`removeBook`方法用于删除书籍,`showBooks`方法用于显示所有书籍,`showStatistics`方法用于绘制书籍分类统计图。在`showStatistics`方法中,使用了C++的STL库中的`vector`和`algorithm`,用于计算每个分类的书籍数量,并且使用了字符串拼接和输出格式化等技巧来绘制统计图。