当前位置:首页 C++ > 正文

C++图书馆管理系统

作者:野牛程序员:2024-10-30 10:12:31 C++阅读 2044
C++图书馆管理系统

C++图书馆管理系统

以下是一个更完整的 C++ 图书馆管理系统示例,包括用户管理、书籍分类、借阅和归还功能。该系统使用了基本的面向对象编程方法,可以作为进一步开发的基础。

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

class Book {
public:
    std::string title;
    std::string author;
    std::string category;
    bool isBorrowed;

    Book(std::string t, std::string a, std::string c)
        : title(t), author(a), category(c), isBorrowed(false) {}
};

class User {
public:
    std::string name;
    std::string userId;

    User(std::string n, std::string id) : name(n), userId(id) {}
};

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

public:
    void addBook(const std::string& title, const std::string& author, const std::string& category) {
        books.emplace_back(title, author, category);
        std::cout << "Book added: " << title << " by " << author << " in category " << category << std::endl;
    }

    void viewBooks() const {
        if (books.empty()) {
            std::cout << "No books in the library." << std::endl;
            return;
        }
        std::cout << "Books in the library:" << std::endl;
        for (const auto& book : books) {
            std::cout << "Title: " << book.title 
                      << ", Author: " << book.author 
                      << ", Category: " << book.category 
                      << ", Status: " << (book.isBorrowed ? "Borrowed" : "Available") 
                      << std::endl;
        }
    }

    void deleteBook(const std::string& title) {
        auto it = std::remove_if(books.begin(), books.end(), [&title](const Book& book) {
            return book.title == title;
        });
        if (it != books.end()) {
            books.erase(it, books.end());
            std::cout << "Book deleted: " << title << std::endl;
        } else {
            std::cout << "Book not found: " << title << std::endl;
        }
    }

    void borrowBook(const std::string& title, const std::string& userId) {
        for (auto& book : books) {
            if (book.title == title && !book.isBorrowed) {
                book.isBorrowed = true;
                std::cout << userId << " borrowed: " << title << std::endl;
                return;
            }
        }
        std::cout << "Book not available or does not exist." << std::endl;
    }

    void returnBook(const std::string& title) {
        for (auto& book : books) {
            if (book.title == title && book.isBorrowed) {
                book.isBorrowed = false;
                std::cout << title << " has been returned." << std::endl;
                return;
            }
        }
        std::cout << "Book not found or was not borrowed." << std::endl;
    }

    void addUser(const std::string& name, const std::string& userId) {
        users.emplace_back(name, userId);
        std::cout << "User added: " << name << " with ID " << userId << std::endl;
    }
};

int main() {
    Library library;
    int choice;
    std::string title, author, category, userId;

    while (true) {
        std::cout << "\nLibrary Management System" << std::endl;
        std::cout << "1. Add Book" << std::endl;
        std::cout << "2. View Books" << std::endl;
        std::cout << "3. Delete Book" << std::endl;
        std::cout << "4. Borrow Book" << std::endl;
        std::cout << "5. Return Book" << std::endl;
        std::cout << "6. Add User" << std::endl;
        std::cout << "7. Exit" << std::endl;
        std::cout << "Enter your choice: ";
        std::cin >> choice;

        switch (choice) {
            case 1:
                std::cout << "Enter book title: ";
                std::cin.ignore();
                std::getline(std::cin, title);
                std::cout << "Enter author name: ";
                std::getline(std::cin, author);
                std::cout << "Enter category: ";
                std::getline(std::cin, category);
                library.addBook(title, author, category);
                break;
            case 2:
                library.viewBooks();
                break;
            case 3:
                std::cout << "Enter book title to delete: ";
                std::cin.ignore();
                std::getline(std::cin, title);
                library.deleteBook(title);
                break;
            case 4:
                std::cout << "Enter book title to borrow: ";
                std::cin.ignore();
                std::getline(std::cin, title);
                std::cout << "Enter user ID: ";
                std::getline(std::cin, userId);
                library.borrowBook(title, userId);
                break;
            case 5:
                std::cout << "Enter book title to return: ";
                std::cin.ignore();
                std::getline(std::cin, title);
                library.returnBook(title);
                break;
            case 6:
                std::cout << "Enter user name: ";
                std::cin.ignore();
                std::getline(std::cin, title);
                std::cout << "Enter user ID: ";
                std::getline(std::cin, userId);
                library.addUser(title, userId);
                break;
            case 7:
                std::cout << "Exiting..." << std::endl;
                return 0;
            default:
                std::cout << "Invalid choice, please try again." << std::endl;
        }
    }
    return 0;
}

功能说明:

  1. 添加书籍:输入书名、作者和分类。

  2. 查看书籍:显示当前所有书籍及其状态。

  3. 删除书籍:输入书名进行删除。

  4. 借阅书籍:输入书名和用户 ID。

  5. 归还书籍:输入书名进行归还。

  6. 添加用户:输入用户姓名和 ID。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • C++
  • 最新推荐

    热门点击