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

yizhihongxing

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日

相关文章

  • 知识蒸馏联邦学习的个性化技术综述

    知识蒸馏联邦学习的个性化技术综述 本篇文章主要介绍了知识蒸馏联邦学习的个性化技术。首先,对知识蒸馏技术和联邦学习技术进行了简要的介绍,然后通过分析后不同的组合方式,提出了三种个性化联邦学习方法,分别是FEDKD、FEMKD和FedMD等。 知识蒸馏技术 知识蒸馏技术是一种将一个深度神经网络的知识传递到另一个网络上的方法。也就是说,利用一个较大而准确的模型来对…

    C 2023年5月23日
    00
  • 使用VSCode和VS2017编译调试STM32程序的实现

    使用VSCode和VS2017编译调试STM32程序的实现 本文将介绍如何使用Visual Studio Code和Visual Studio 2017编译和调试STM32程序的实现。 一、开发环境搭建 在开始之前,需要确认电脑上是否已安装以下必要的软件: Visual Studio Code (简称VSCode) Visual Studio 2017 (简…

    C 2023年5月23日
    00
  • C语言 数组

    C语言数组的使用攻略 数组的概念 在C语言中,数组(Array)是一种可存储多个相同类型数据的结构。数组中的每个元素可以通过下标(int)来唯一确定。数组下标从0开始,最大下标为数组长度-1。 数组的声明 在C语言中,声明数组需要指定数组的类型和长度。以下是一个数组的声明示例: int array[5]; // 声明一个长度为5的int类型数组 数组的初始化…

    C 2023年5月9日
    00
  • C语言 实现输入任意多个整数

    要实现输入任意多个整数,可以使用C语言中的循环和数组来完成。以下是具体实现的步骤: 步骤一:定义变量和数组 首先要定义一个整型数组,用来存储输入的整数。同时还要定义一个变量来记录输入的整数个数,以此方便后续的循环。 int nums[100]; // 定义一个数组,用来存储输入的整数 int count = 0; // 定义一个变量,用来记录输入的整数个数 …

    C 2023年5月23日
    00
  • C++获取MD5算法实现代码

    获取MD5算法实现代码的完整攻略可以分为以下几步: 步骤一:了解MD5算法 MD5算法是一种哈希算法,它将任意长度的数据(字节序列)映射为固定长度(128位)的数据,通常表示为32位16进制数。在C++中,可以使用第三方库或自己编写代码来实现MD5算法。 步骤二:选择MD5库 有很多开源的MD5库可供选择,常用的有: OpenSSL:一个通用的加密库,包含各…

    C 2023年5月24日
    00
  • 详解C#byte数组怎么传入C

    要将C#编写的byte数组传入C语言程序中,需要进行一定的处理和转换。下面是具体的步骤: 1. 编写C语言函数 首先,我们需要在C文件中编写对应的函数,接收C#传入的byte数组,并进行适当的处理。下面是一个简单的示例: // 这里是C语言的函数定义,名字可以自取 void processByteArray(unsigned char *byte_array…

    C 2023年5月23日
    00
  • qq2440启动linux后插入u盘出现usb 1-1: device descriptor read/64, error -110,usb 1

    针对“qq2440启动linux后插入u盘出现usb 1-1: device descriptor read/64, error -110,usb 1”的问题,我们可以尝试以下几个步骤进行排查和解决: 1. 检查硬件连接 首先,我们需要确定u盘插入是否有松动或接触不良等硬件问题。可以将u盘重新插拔几次并检查连接是否紧密。如果问题仍然存在,可以考虑更换其他的u…

    C 2023年5月24日
    00
  • vs怎么做C窗体应用程序启动界面? vs2010窗体应用教程

    要在VS中制作C窗体应用程序的启动界面,可以按照以下步骤进行操作: 步骤一:创建新的窗体应用程序项目 在VS中选择 文件 -> 新建 -> 项目,在弹出的窗口中选择 Visual C++ -> Windows桌面 -> 窗体应用程序。命名新项目并选择已存在的文件夹,然后点击“确定”按钮确认创建。 步骤二:添加源码文件 在 VS 窗体应…

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