C++图书管理系统设计 类与对象应用实例

图书管理系统通过Book、Reader和Library类实现,分别封装图书、读者及借阅行为,体现OOP数据封装与职责分离思想,支持图书增删查借还功能。

c++图书管理系统设计 类与对象应用实例

在C++中,图书管理系统是一个典型的面向对象编程(OOP)应用实例,能够很好地体现类与对象的设计思想。通过定义合适的类,我们可以对图书、读者、借阅记录等实体进行建模,实现数据封装、信息隐藏和行为抽象。

图书类(Book)设计

图书是系统的核心实体之一,应包含书名、作者、ISBN、出版年份和是否借出等属性。

定义一个Book类,封装图书的基本信息和操作:

私有成员变量:存储图书数据,如title、author、isbn、year、borrowed公有成员函数:构造函数、获取信息函数(getters)、借出和归还操作示例代码:

class Book {private:    std::string title;    std::string author;    std::string isbn;    int year;    bool borrowed;

public:Book(std::string t, std::string a, std::string i, int y): title(t), author(a), isbn(i), year(y), borrowed(false) {}

std::string getIsbn() const { return isbn; }std::string getTitle() const { return title; }std::string getAuthor() const { return author; }bool isBorrowed() const { return borrowed; }void borrow() { borrowed = true; }void ret() { borrowed = false; }void display() const {    std::cout << "书名: " << title << " | 作者: " << author              << " | ISBN: " << isbn << " | 年份: " << year              << " | 状态: " << (borrowed ? "已借出" : "可借阅") << std::endl;}

};

立即学习“C++免费学习笔记(深入)”;

读者类(Reader)设计

读者是图书系统的另一个重要对象,负责借阅和归还图书。

Reader类应包含读者姓名、ID以及当前借阅的图书列表。

使用std::vector存储借阅的图书指针提供借书和还书接口,与Book类交互示例代码:

class Reader {private:    std::string name;    std::string id;    std::vector borrowedBooks;

public:Reader(std::string n, std::string rid) : name(n), id(rid) {}

void borrowBook(Book& book) {    if (!book.isBorrowed()) {        book.borrow();        borrowedBooks.push_back(&book);        std::cout << name << " 借阅了: " << book.getTitle() << std::endl;    } else {        std::cout << "该书已被借阅!" << std::endl;    }}void returnBook(Book& book) {    auto it = std::find(borrowedBooks.begin(), borrowedBooks.end(), &book);    if (it != borrowedBooks.end()) {        book.ret();        borrowedBooks.erase(it);        std::cout << name << " 归还了: " << book.getTitle() << std::endl;    } else {        std::cout << "该读者未借此书!" << std::endl;    }}void showBorrowedBooks() const {    std::cout << name << " 当前借阅的图书:" <display();    }}

};

立即学习“C++免费学习笔记(深入)”;

图书管理类(Library)设计

为统一管理所有图书和读者,引入Library类作为容器和调度中心。

维护std::vector和std::vector提供添加图书、查找图书、显示所有图书等功能示例代码片段:

class Library {private:    std::vector books;    std::vector readers;

public:void addBook(const Book& book) {books.push_back(book);}

void addReader(const Reader& reader) {    readers.push_back(reader);}Book* findBookByIsbn(const std::string& isbn) {    for (auto& book : books) {        if (book.getIsbn() == isbn) {            return &book;        }    }    return nullptr;}void displayAllBooks() const {    std::cout << "馆藏图书列表:" << std::endl;    for (const auto& book : books) {        book.display();    }}

};

立即学习“C++免费学习笔记(深入)”;

主函数使用示例

在main()函数中创建对象并模拟借阅流程:

int main() {    Library lib;
Book b1("C++ Primer", "Lippman", "978-0131103627", 2012);Book b2("Effective C++", "Meyers", "978-0321334879", 2005);lib.addBook(b1);lib.addBook(b2);Reader r("张三", "R001");lib.addReader(r);Book* ptr = lib.findBookByIsbn("978-0131103627");if (ptr) {    r.borrowBook(*ptr);}lib.displayAllBooks();return 0;

}

基本上就这些。通过合理设计类与对象,C++图书管理系统能清晰地表达现实逻辑,便于维护和扩展。关键在于职责划分明确,数据安全,接口简洁。不复杂但容易忽略细节,比如指针管理与const正确使用。

以上就是C++图书管理系统设计 类与对象应用实例的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1472833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
C++接口如何模拟 抽象类实现多接口方案
上一篇 2025年12月18日 19:56:53
C++默认参数怎么设置 函数声明规则说明
下一篇 2025年12月18日 19:57:06

相关推荐

发表回复

登录后才能评论
关注微信