C++实现小型图书管理系统

C++实现小型图书管理系统攻略

1. 系统设计

图书管理系统主要包含以下功能:
- 添加书籍
- 删除书籍
- 查询书籍信息
- 修改书籍信息
- 显示所有书籍

因此,我们可以设计一个Book类来表示一本书籍,其中包含以下属性:
- 书名
- 作者
- 出版社
- ISBN编号
- 价格

下面是Book类的定义:

class Book {
public:
    string name; // 书名
    string author; // 作者
    string publisher; // 出版社
    string isbn; // ISBN编号
    double price; // 价格

    Book(string n, string a, string p, string i, double pr) {
        name = n;
        author = a;
        publisher = p;
        isbn = i;
        price = pr;
    }

    void print() { // 打印图书信息
        cout << "书名:" << name << endl;
        cout << "作者:" << author << endl;
        cout << "出版社:" << publisher << endl;
        cout << "ISBN编号:" << isbn << endl;
        cout << "价格:" << price << endl;
    }
};

接着,我们可以设计一个BookManager类来管理所有书籍,其中包含以下方法:
- 添加书籍
- 删除书籍
- 查询书籍信息
- 修改书籍信息
- 显示所有书籍

下面是BookManager类的定义:

class BookManager {
private:
    vector<Book> books; // 存储所有书籍

public:
    void addBook(Book book) { // 添加书籍
        books.push_back(book);
        cout << "添加成功!" << endl;
    }

    void removeBook(string isbn) { // 删除书籍
        for (int i = 0; i < books.size(); i++) {
            if (books[i].isbn == isbn) {
                books.erase(books.begin() + i);
                cout << "删除成功!" << endl;
                return;
            }
        }
        cout << "没有找到该书籍!" << endl;
    }

    void queryBook(string keyword) { // 查询书籍信息
        for (int i = 0; i < books.size(); i++) {
            if (books[i].name.find(keyword) != string::npos || books[i].author.find(keyword) != string::npos || books[i].publisher.find(keyword) != string::npos || books[i].isbn == keyword) {
                cout << "查找结果如下:" << endl;
                books[i].print();
                return;
            }
        }
        cout << "没有找到相关书籍!" << endl;
    }

    void modifyBook(string isbn, Book book) { // 修改书籍信息
        for (int i = 0; i < books.size(); i++) {
            if (books[i].isbn == isbn) {
                books[i] = book;
                cout << "修改成功!" << endl;
                return;
            }
        }
        cout << "没有找到该书籍!" << endl;
    }

    void printAllBooks() { // 显示所有书籍
        cout << "图书馆藏书如下:" << endl;
        for (int i = 0; i < books.size(); i++) {
            books[i].print();
            cout << endl;
        }
    }
};

2. 使用示例

下面以添加书籍和查询书籍信息为例展示系统的使用。

2.1 添加书籍

BookManager manager; // 创建图书管理器对象
Book book("C++程序设计", "张三", "清华大学出版社", "978-7-302-32692-7", 59.8); // 创建一本书籍
manager.addBook(book); // 添加书籍

输出为:

添加成功!

2.2 查询书籍信息

manager.queryBook("C++"); // 查询名字包含C++的书籍信息

输出为:

查找结果如下:
书名:C++程序设计
作者:张三
出版社:清华大学出版社
ISBN编号:978-7-302-32692-7
价格:59.8

以上就是C++实现小型图书管理系统的攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现小型图书管理系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • MySQL中多个left join on关联条件的顺序说明

    在 MySQL 的多个 LEFT JOIN 操作中,我们需要在 ON 子句中指定关联条件。正确顺序的设置可以有效优化查询性能,同时保证关联结果的正确性。 如何设置关联条件的顺序?我们可以遵循以下步骤: 从主表开始,其余表按照查询的依赖关系顺序连接。 对于非主表,保证其实际关联的表能够尽早地被筛选,有效缩小数据集的范围,减少查询所需的时间。 为了更好的理解这个…

    C 2023年5月22日
    00
  • C++STL之string类的使用

    下面就是针对“C++ STL之string类的使用”的详细攻略: 1. 什么是string类? string类是C++ STL的一个标准库,用于处理字符串类型的数据。它提供了一系列方便而易于使用的方法,例如添加,删除,查找,连接和截取字符串等。 2. 如何使用string类? 2.1 字符串的初始化 我们可以通过以下方法初始化string类: std::st…

    C 2023年5月22日
    00
  • 电脑开机黑屏错误提示0xc0000e9怎么办?

    电脑开机黑屏错误提示0xc0000e9的解决方法 问题描述 当你从电脑开机时,如果出现了“电脑开机黑屏错误提示0xc0000e9”的错误,那么说明电脑在启动过程中遇到了一些问题,无法正常启动。这时电脑会停在黑屏界面,无论你进行任何操作,都无法进入系统。此时应该如何处理呢? 解决方法 方法一:检查硬件连接 0xc0000e9错误通常是硬件损坏或者连接错误导致的…

    C 2023年5月23日
    00
  • Django 实现下载文件功能的示例

    实现 Django 下载文件功能需要以下几个步骤: 1. 定义 URL 和视图函数 在 urls.py 中定义 URL,将其映射到相应的视图函数上。如下所示: from django.urls import path from myapp.views import download_file urlpatterns = [ path(‘download/&l…

    C 2023年5月23日
    00
  • C++14新特性的所有知识点全在这

    C++14新特性的所有知识点全在这 1. 简介 C++14是C++11的后继版本,引入了许多新的特性和性能改进。这些新特性使得C++14更容易使用和更加安全。本文将会介绍C++14的所有知识点。 2. C++14的新特性 2.1 通用表达式 通用表达式是C++14的一个重要特性,它提供了一种新的语法来实现编译时计算。通用表达式使得编程人员可以在编译时期计算变…

    C 2023年5月23日
    00
  • Android json解析及简单例子

    好的。首先需要了解什么是JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于在不同的平台之间传输数据,常用于Web API的数据交换。在Android开发中,我们经常会用到JSON格式的数据,因此,掌握Android JSON解析技术是至关重要的。 JSON解析的基本方法 Android中常用的JSON解…

    C 2023年5月23日
    00
  • C++中新手容易犯的十种编程错误汇总

    C++中新手容易犯的十种编程错误汇总 作为一种流行的编程语言,C++在实际应用中被广泛使用,然而,对于初学者来说,C++的语法结构、编程范式以及一些细节问题容易让他们犯错。 下面列出了C++中新手容易犯的十种编程错误并提供了攻略,供初学者参考: 1. 没有包含必要的头文件 C++中有大量的头文件,而这些头文件中定义了许多有用的函数和变量。如果没有包含必要的头…

    C 2023年5月22日
    00
  • 详解C语言处理算经中著名问题百钱百鸡

    关于“详解C语言处理算经中著名问题百钱百鸡”的完整攻略,我将从以下三个方面进行说明:问题描述、思路分析以及具体实现。 问题描述 “百钱百鸡”问题是中国古代数学题之一,它的具体描述为: 一只鸡值五钱,一只公鸡值十钱,三只小鸡值一钱,现在有一百钱要买一百只鸡,问如何买? 思路分析 这个问题可以使用穷举法进行解决,具体思路如下: 1.使用三重循环分别遍历鸡、公鸡和…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部