C++实现简单版图书管理系统

C++实现简单版图书管理系统攻略

本文将介绍如何使用C++语言实现简单版图书管理系统。本系统主要包含以下功能:添加图书信息、删除图书信息、查看图书信息、修改图书信息、退出系统。

设计思路

在开始实现之前,我们需要先确定程序的设计思路。将所有的操作封装成一个类,来实现图书的添加、删除、修改、查询等操作。同时,我们需要设计出一个图书类,包含图书的基本信息。

代码实现

Book类

我们定义了一个Book类,包含以下属性:

  • 书名
  • 作者
  • 出版社
  • ISBN号
  • 价格

同时,我们也定义了一些public的方法,用于获取属性和设置属性。

#include <iostream>
#include <string>

class Book {
    private:
        std::string name;
        std::string author;
        std::string publisher;
        std::string isbn;
        double price;
    public:
        Book(std::string name, std::string author, std::string publisher, std::string isbn, double price) {
            this->name = name;
            this->author = author;
            this->publisher = publisher;
            this->isbn = isbn;
            this->price = price;
        }

        std::string get_name() {
            return name;
        }

        std::string get_author() {
            return author;
        }

        std::string get_publisher() {
            return publisher;
        }

        std::string get_isbn() {
            return isbn;
        }

        double get_price() {
            return price;
        }

        void set_name(std::string name) {
            this->name = name;
        }

        void set_author(std::string author) {
            this->author = author;
        }

        void set_publisher(std::string publisher) {
            this->publisher = publisher;
        }

        void set_isbn(std::string isbn) {
            this->isbn = isbn;
        }

        void set_price(double price) {
            this->price = price;
        }

        void print_info() {
            std::cout << "Book Name: " << name << std::endl;
            std::cout << "Author: " << author << std::endl;
            std::cout << "Publisher: " << publisher << std::endl;
            std::cout << "ISBN: " << isbn << std::endl;
            std::cout << "Price: " << price << std::endl;
        }
};

Library类

然后我们定义了一个Library类,包含以下方法:

  • add_book: 添加一本新书
  • remove_book: 删除一本图书
  • search_book: 按照名称或ISBN查找图书
  • modify_price: 修改图书价格
  • print_all_books: 打印所有图书信息
#include <vector>
#include <algorithm>

class Library {
    private:
        std::vector<Book> books;
    public:
        void add_book(Book book) {
            books.push_back(book);
        }

        void remove_book(std::string key) {
            auto it = std::remove_if(books.begin(), books.end(), [&](Book book){
                return book.get_name() == key || book.get_isbn() == key;
            });

            books.erase(it, books.end());
        }

        Book search_book(std::string key) {
            for (auto book: books) {
                if (book.get_name() == key || book.get_isbn() == key) {
                    return book;
                }
            }
            return nullptr;
        }

        void modify_price(std::string key, double price) {
            Book book = search_book(key);
            if (book != nullptr) {
                book.set_price(price);
            }
        }

        void print_all_books() {
            for (auto book: books) {
                book.print_info();
            }
        }
};

main函数

最后,我们使用main函数实现整个程序的流程。

int main() {
    Library library;
    while(true) {
        std::cout << "Please select operation: " << std::endl;
        std::cout << "1. Add book" << std::endl;
        std::cout << "2. Remove book" << std::endl;
        std::cout << "3. Search book" << std::endl;
        std::cout << "4. Modify price" << std::endl;
        std::cout << "5. Print all books" << std::endl;
        std::cout << "6. Quit" << std::endl;

        int choice;
        std::cin >> choice;

        if (choice == 1) {
            std::string name, author, publisher, isbn;
            double price;
            std::cout << "Please input book name:" << std::endl;
            std::cin >> name;
            std::cout << "Please input author name:" << std::endl;
            std::cin >> author;
            std::cout << "Please input publisher name:" << std::endl;
            std::cin >> publisher;
            std::cout << "Please input ISBN:" << std::endl;
            std::cin >> isbn;
            std::cout << "Please input price:" << std::endl;
            std::cin >> price;

            Book book(name, author, publisher, isbn, price);
            library.add_book(book);
        } else if (choice == 2) {
            std::string key;
            std::cout << "Please input name or ISBN of book to remove:" << std::endl;
            std::cin >> key;
            library.remove_book(key);
        } else if (choice == 3) {
            std::string key;
            std::cout << "Please input name or ISBN of book to search:" << std::endl;
            std::cin >> key;

            Book book = library.search_book(key);
            if (book == nullptr) {
                std::cout << "No book found." << std::endl;
            } else {
                book.print_info();
            }
        } else if (choice == 4) {
            std::string key;
            double price;
            std::cout << "Please input name or ISBN of book to modify:" << std::endl;
            std::cin >> key;
            std::cout << "Please input new price:" << std::endl;
            std::cin >> price;

            library.modify_price(key, price);
        } else if (choice == 5) {
            library.print_all_books();
        } else if (choice == 6) {
            break;
        } else {
            std::cout << "Invalid choice." << std::endl;
        }
    }
    return 0;
}

示例

添加图书

选择1,添加一本新书,输入以下信息:

Please input book name:
C++ Primer
Please input author name:
Stanley B. Lippman
Please input publisher name:
Pearson
Please input ISBN:
978-0-321-71411-4
Please input price:
100

添加成功后,可以在"Print all books"中查看是否添加成功。

删除图书

选择2,删除指定书籍,输入以下信息:

Please input name or ISBN of book to remove:
C++ Primer

选择3或者5可以查看是否已删除。

查看图书

选择3,查找指定图书,输入以下信息:

Please input name or ISBN of book to search:
The C Programming Language

可以查看该图书的详细信息。

修改图书价格

选择4,修改指定书籍价格,输入以下信息:

Please input name or ISBN of book to modify:
C++ Primer
Please input new price:
200

修改成功后,可以在"Print all books"中查看是否修改成功。

总结

本文介绍了C++实现简单版图书管理系统的方法和思路,详细介绍了Book类和Library类的实现方法,同时给出了一个相对完整的示例。

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

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

相关文章

  • FFmpeg开发笔记(一)搭建Linux系统的开发环境

    对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库。不过考虑到刚开始仅仅调用FFmpeg的API,不会马上去改FFmpeg的源码,因此只要给系统安装编译好的FFmpeg动态库,即可着手编写简单的FFmpeg程序。比如这个网站https:…

    C语言 2023年4月17日
    00
  • C语言实现通讯录管理系统

    C语言实现通讯录管理系统攻略 1. 确定功能及界面设计 在实现通讯录管理系统时,首先需要明确该系统需要具备哪些功能,例如添加联系人、删除联系人、查找联系人等。同时需要设计系统界面,包括菜单栏、数据显示表格等。在此基础上,采用C语言编写控制菜单栏及数据显示的代码。 以下是一个示例的菜单代码: ======= 通讯录管理系统 ======= ***** 1.添加…

    C 2023年5月30日
    00
  • Mysql基础之常见函数

    Mysql基础之常见函数 在Mysql中,除了基本的SQL语句外,还有很多内置函数可以方便我们进行数据操作。下面列举了一些常见的Mysql函数: 字符串函数 CONCAT(str1, str2, …) 将多个字符串拼接在一起,返回一个新的字符串。其参数可以是任意个字符串,拼接的顺序是按照参数顺序来的。 示例: SELECT CONCAT(‘Hello’,…

    C 2023年5月22日
    00
  • 03-变量\常量\进制

    变量和数据类型 所有定义的变量都存在内存中,定义变量需要内存空间,不同类型的变量需要的内存空间是不同的数据类型作用:告诉编译器,我这个数据在内存中需要多大的空间,编译器预算对象(变量)分配的内存空间大小。 1.常量与变量 1.1 常量 常量:程序运行中不能改变的量 整型常量:1 200 字符常量: ‘c’ 字符串常量:”hello” 实型常量(浮点型常量):…

    C语言 2023年4月18日
    00
  • C++中strstr函数的实现方法总结

    C++中strstr函数的实现方法总结 什么是strstr函数 strstr函数是C/C++中的字符串函数之一,用于在字符串中查找子串。其原型如下: char * strstr ( const char * str1, const char * str2 ); 它的功能是在 str1 字符串中查找第一次出现 str2 字符串的位置,如果未找到则返回null。…

    C 2023年5月24日
    00
  • CCleaner Pro怎么激活?CCleaner专业版注册破解激活教程(附下载)

    CCleaner Pro激活攻略 1. 下载CCleaner专业版安装文件 首先,你需要下载CCleaner专业版安装文件。你可以在官方网站上下载安装文件,也可以在其他下载站点上下载。注意,要下载专业版,而不是免费版。 下载完成后,双击安装文件并按照提示进行安装。 2. 获取CCleaner专业版注册码 在你安装CCleaner专业版后,你将需要注册码来激活…

    C 2023年5月23日
    00
  • C++实现完整功能的通讯录管理系统详解

    C++实现完整功能的通讯录管理系统详解 本文将详细讲解如何使用C++语言实现一个完整功能的通讯录管理系统,包含联系人的增、删、改、查等基础功能,以及文件读写、界面美化等高级功能,以及如何使用编程技巧提高代码的可读性和可维护性。 程序的需求分析 管理员:管理员需要进行登录和注销操作,并对通讯录进行增、删、改、查等管理操作; 通讯录:通讯录需要记录联系人的姓名、…

    C 2023年5月23日
    00
  • C程序 双指针技术

    C程序 双指针技术的完整使用攻略 双指针技术是C语言中常用的一种编程技巧,它通过利用两个指针的相对位置关系,实现快速查找、合并、移动等操作。下面详细讲解一下如何在C程序中使用双指针技术。 1. 双指针技术概述 双指针技术常用于数组操作、链表操作等场景。在使用双指针技术时,我们需要定义两个指针变量p和q,分别指向数组或链表中的元素。p和q可以指向同一个元素,也…

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