C++图书管理系统

【欢迎关注编码小哥,学习更多实用的编程方法和技巧】

下面是一个简单的图书管理系统的C++实现示例。这个系统允许用户添加、删除和查看图书信息。为了简化示例,我们将使用控制台输入输出,并将图书信息存储在内存中。

图书管理系统设计

功能

  1. 添加图书
  2. 删除图书
  3. 查看所有图书
  4. 查找图书

数据结构

  • 使用一个结构体 Book 来存储图书信息。
  • 使用一个 std::vector<Book> 来存储图书列表。

C++代码实现

cpp 复制代码
#include <iostream>
#include <vector>
#include <string>

struct Book {
    std::string title;
    std::string author;
    std::string isbn;
};

class Library {
private:
    std::vector<Book> books;

public:
    void addBook(const Book& book) {
        books.push_back(book);
        std::cout << "图书 \"" << book.title << "\" 添加成功!\n";
    }

    void deleteBook(const std::string& isbn) {
        for (auto it = books.begin(); it != books.end(); ++it) {
            if (it->isbn == isbn) {
                std::cout << "图书 \"" << it->title << "\" 删除成功!\n";
                books.erase(it);
                return;
            }
        }
        std::cout << "未找到ISBN为 " << isbn << " 的图书。\n";
    }

    void viewBooks() const {
        if (books.empty()) {
            std::cout << "没有可用的图书。\n";
            return;
        }
        std::cout << "图书列表:\n";
        for (const auto& book : books) {
            std::cout << "标题: " << book.title << ", 作者: " << book.author << ", ISBN: " << book.isbn << "\n";
        }
    }

    void findBook(const std::string& isbn) const {
        for (const auto& book : books) {
            if (book.isbn == isbn) {
                std::cout << "找到图书:标题: " << book.title << ", 作者: " << book.author << ", ISBN: " << book.isbn << "\n";
                return;
            }
        }
        std::cout << "未找到ISBN为 " << isbn << " 的图书。\n";
    }
};

void displayMenu() {
    std::cout << "\n图书管理系统\n";
    std::cout << "1. 添加图书\n";
    std::cout << "2. 删除图书\n";
    std::cout << "3. 查看所有图书\n";
    std::cout << "4. 查找图书\n";
    std::cout << "5. 退出\n";
    std::cout << "请选择一个选项:";
}

int main() {
    Library library;
    int choice;

    do {
        displayMenu();
        std::cin >> choice;

        switch (choice) {
            case 1: {
                Book book;
                std::cout << "输入图书标题:";
                std::cin.ignore(); // 清除输入缓冲区
                std::getline(std::cin, book.title);
                std::cout << "输入作者:";
                std::getline(std::cin, book.author);
                std::cout << "输入ISBN:";
                std::getline(std::cin, book.isbn);
                library.addBook(book);
                break;
            }
            case 2: {
                std::string isbn;
                std::cout << "输入要删除的图书ISBN:";
                std::cin >> isbn;
                library.deleteBook(isbn);
                break;
            }
            case 3:
                library.viewBooks();
                break;
            case 4: {
                std::string isbn;
                std::cout << "输入要查找的图书ISBN:";
                std::cin >> isbn;
                library.findBook(isbn);
                break;
            }
            case 5:
                std::cout << "退出系统。\n";
                break;
            default:
                std::cout << "无效选项,请重试。\n";
        }
    } while (choice != 5);

    return 0;
}

代码说明

  1. 数据结构

    • Book 结构体用于存储图书的标题、作者和ISBN。
    • Library 类用于管理图书,包括添加、删除、查看和查找图书的功能。
  2. 功能实现

    • addBook:将新图书添加到列表中。
    • deleteBook:根据ISBN删除图书。
    • viewBooks:显示所有图书的信息。
    • findBook:根据ISBN查找 图书并显示其信息。
  3. 用户交互

    • displayMenu 函数用于显示系统菜单,用户可以选择不同的操作。
    • main 函数中,使用 do-while 循环来处理用户输入,直到用户选择退出。

扩展功能

可以考虑添加以下功能来增强图书管理系统:

  • 数据持久化:将图书信息保存到文件中,以便下次启动时加载。
  • 用户身份验证:添加用户登录功能,限制对图书管理的访问。
  • 分类管理:为图书添加分类标签,方便管理和查找。
  • 搜索功能:根据书名或作者进行模糊搜索。

这个简单的图书管理系统展示了如何使用C++进行基本的应用程序设计。通过不断扩展和改进,可以创建一个功能更强大且用户友好的图书管理系统。

相关推荐
anew___9 小时前
蜂鸣器播放音乐——让 Arduino 唱出旋律
c++·stm32·单片机·嵌入式硬件·c
stolentime10 小时前
洛谷P10515 转圈题解
c++·算法·数学建模·贪心算法
tdtsmt11 小时前
穿戴硬件量产工艺实录:天地通电子智能手表主板 SMT 贴片案
c++
m0_7345717614 小时前
深入理解C++ 析构函数<一>基本概念
开发语言·c++
t-think15 小时前
C++ string 类(上)—— string类初识与常用接口详解
开发语言·c++
cpp_learners15 小时前
C++ 实现责任链模式(Chain of Responsibility):从一堆 if-else 到可插拔的处理管道
开发语言·c++·责任链模式
郝学胜_神的一滴16 小时前
C++11 工程级应用 12:编译期类型魔法,干掉重复与臃肿的代码
c++·visual studio
David猪大卫17 小时前
【C++修炼】哈希表的实现
数据结构·c++·笔记·学习·算法·哈希算法·散列表
广州山泉婚姻17 小时前
列表初始化:C++11全新初始化体系
c++·人工智能
莫生灬灬17 小时前
灵码 LingBuilder:用中文写代码,确定性生成真实 C++ 工程(开源)
c++·开源·mfc