用c++编写一个带统计图的图书管理系统
时间: 2023-09-04 08:08:38 浏览: 48
好的,下面是一个使用C++和Qt库编写的带统计图的图书管理系统的示例代码。这个程序使用了Qt Charts库来绘制统计图表。
```c++
#include <QApplication>
#include <QtWidgets>
#include <QtCharts>
using namespace QtCharts;
// 图书类
class Book {
public:
QString name;
QString author;
QString publisher;
int year;
int num; // 馆藏数量
Book(QString name, QString author, QString publisher, int year, int num) {
this->name = name;
this->author = author;
this->publisher = publisher;
this->year = year;
this->num = num;
}
};
// 图书管理类
class Library {
public:
QVector<Book> books;
// 添加图书
void addBook(Book book) {
books.push_back(book);
}
// 删除图书
void removeBook(QString name) {
for (int i = 0; i < books.size(); i++) {
if (books[i].name == name) {
books.erase(books.begin() + i);
break;
}
}
}
// 查找图书
QVector<Book> findBook(QString name) {
QVector<Book> result;
for (int i = 0; i < books.size(); i++) {
if (books[i].name == name) {
result.push_back(books[i]);
}
}
return result;
}
// 统计图书数量
QChartView* countBooks() {
QPieSeries *series = new QPieSeries();
for (int i = 0; i < books.size(); i++) {
series->append(books[i].name, books[i].num);
}
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Books in Library");
chart->legend()->hide();
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
return chartView;
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
Library library;
// 添加图书
Book book1("C++ Primer", "Stanley B. Lippman", "Addison-Wesley Professional", 2012, 5);
Book book2("Effective C++", "Scott Meyers", "Addison-Wesley Professional", 2014, 3);
library.addBook(book1);
library.addBook(book2);
// 删除图书
library.removeBook("Effective C++");
// 查找图书
QVector<Book> result = library.findBook("C++ Primer");
for (int i = 0; i < result.size(); i++) {
qDebug() << result[i].name << " by " << result[i].author;
}
// 统计图书数量
QChartView *chartView = library.countBooks();
chartView->show();
return app.exec();
}
```
这个程序使用了Qt库来实现图形化界面和统计图表的功能,可以在Qt Creator中打开并编译。它定义了一个Book类和一个Library类,其中Library类包含了一个QVector来存储图书信息,实现了添加、删除、查找和统计图书数量的功能,并使用Qt Charts库来绘制饼图。你可以根据自己的需求进行修改和扩展。