复制
收藏
提问
简洁
假设图书馆的图书包含书名、编号作者属性,读者应包含姓名和借书证属性;每位读者最多可借5本书,编写程序列出某读者的借书情况。用c++写出一个程序来
0秒前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
程序设计概述
编写一个C++程序,用于列出某位读者的借书情况,程序应包括图书和读者两个类。
基类设计
- 基类属性:设计一个基类
BClass
,包含共有属性name
和id
。
图书类设计
- 图书类属性:
Book
类继承自BClass
,增加属性author
。 - 图书类方法:实现图书信息的输入和输出。
读者类设计
- 读者类属性:
Reader
类继承自BClass
,增加属性borrowedBooks
,用以存储借阅的图书。 - 读者类方法:实现借书功能和列出借书情况。
程序流程
- 创建图书和读者对象。
- 为读者对象添加借书功能。
- 输出指定读者的借书情况。
示例代码
#include <iostream>
#include <vector>
using namespace std;
// 基类
class BClass {
protected:
string name;
int id;
public:
BClass(string n, int i) : name(n), id(i) {}
virtual void display() = 0; // 纯虚函数,用于显示信息
};
// 图书类
class Book : public BClass {
private:
string author;
public:
Book(string n, int i, string a) : BClass(n, i), author(a) {}
void display() override {
cout << "书名: " << name << ", 编号: " << id << ", 作者: " << author << endl;
}
};
// 读者类
class Reader : public BClass {
private:
vector<Book*> borrowedBooks;
public:
Reader(string n, int i) : BClass(n, i) {}
void borrowBook(Book* book) {
if (borrowedBooks.size() < 5) {
borrowedBooks.push_back(book);
}
}
void displayBorrowedBooks() {
cout << name << "的借书情况:" << endl;
for (auto book : borrowedBooks) {
book->display();
}
}
};
int main() {
// 创建图书和读者对象
Book book1("C++ Primer", 1, "Stanley B. Lippman");
Reader reader("张三", 1001);
// 读者借书
reader.borrowBook(&book1);
// 列出读者的借书情况
reader.displayBorrowedBooks();
return 0;
}
要点说明
你觉得结果怎么样?