C++图书管理系统

这篇具有很好参考价值的文章主要介绍了C++图书管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       设计一个图书信息管理系统,实现以下功能:系统以菜单方式工作,图书信息录入功能(图书信息用文件保存) ;图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等;图书信息浏览功能(输出所有图书信息);查询和排序功能:按书名查询(显示所有同名的书),按作者名查询(显示所有该作者的书); 图书信息的删除与修改。

       以下是完整代码,仅供大家参考:

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

using namespace std;

// 定义图书信息类
class BookInfo
{
public:
    int ID; // 登录号
    string name; // 书名
    string author; // 作者名
    int category; // 分类号
    string publisher; // 出版单位
    string publishDate; // 出版时间
    double price; // 价格

    // 构造函数
    BookInfo(int id, string n, string a, int c, string p, string pd, double pr)
    {
        ID = id;
        name = n;
        author = a;
        category = c;
        publisher = p;
        publishDate = pd;
        price = pr;
    }

    // 打印图书信息
    void print() {
        cout << "登录号:" << ID << endl;
        cout << "书名:" << name << endl;
        cout << "作者名:" << author << endl;
        cout << "分类号:" << category << endl;
        cout << "出版单位:" << publisher << endl;
        cout << "出版时间:" << publishDate << endl;
        cout << "价格:" << price << endl;
    }

    // 将图书信息转为字符串
    string toString()
    {
        string str = to_string(ID) + "," + name + "," + author + "," + to_string(category) + "," + publisher + "," + publishDate + "," + to_string(price);
        return str;
    }
};

// 定义图书信息管理
class BookManager
{
private:
    vector<BookInfo> books; // 图书信息数组
    string filename; // 保存图书信息的文件名

public:
    // 构造函数
    BookManager(string fn)
    {
        filename = fn;
        loadBooks();
    }

    // 添加图书信息
    void addBook()
    {
        int id, category;
        string name, author, publisher, publishDate;
        double price;
        cout << "请输入登录号:";
        cin >> id;
        cout << "请输入书名:";
        cin >> name;
        cout << "请输入作者名:";
        cin >> author;
        cout << "请输入分类号:";
        cin >> category;
        cout << "请输入出版单位:";
        cin >> publisher;
        cout << "请输入出版时间:";
        cin >> publishDate;
        cout << "请输入价格:";
        cin >> price;
        BookInfo book(id, name, author, category, publisher, publishDate, price);
        books.push_back(book);
        saveBooks();
        cout << "添加成功!" << endl;
    }

    // 查找图书信息
    void findBookByName()
    {
        string name;
        cout << "请输入要查找的书名:";
        cin >> name;
        vector<BookInfo> results;
        for (int i = 0; i < books.size(); i++)
        {
            if (books[i].name == name)
            {
                results.push_back(books[i]);
            }
        }
        if (results.size() == 0)
        {
            cout << "未找到该书名的图书信息!" << endl;
        }
        else
        {
            cout << "共找到" << results.size() << "本书:" << endl;
            for (int i = 0; i < results.size(); i++)
            {
                results[i].print();
                cout << endl;
            }
        }
    }

    // 查找图书信息
    void findBookByAuthor()
    {
        string author;
        cout << "请输入要查找的作者名:";
        cin >> author;
        vector<BookInfo> results;
        for (int i = 0; i < books.size(); i++)
        {
            if (books[i].author == author)
            {
                results.push_back(books[i]);
            }
        }
        if (results.size() == 0)
        {
            cout << "未找到该作者名的图书信息!" << endl;
        }
        else
        {
            cout << "共找到" << results.size() << "本书:" << endl;
            for (int i = 0; i < results.size(); i++)
            {
                results[i].print();
                cout << endl;
            }
        }
    }

    // 删除图书信息
    void deleteBook()
    {
        int id;
        cout << "请输入要删除的登录号:";
        cin >> id;
        for (int i = 0; i < books.size(); i++)
        {
            if (books[i].ID == id)
            {
                books.erase(books.begin() + i);
                saveBooks();
                cout << "删除成功!" << endl;
                return;
            }
        }
        cout << "未找到该图书信息!" << endl;
    }

    // 修改图书信息
    void modifyBook()
    {
        int id;
        cout << "请输入要修改的登录号:";
        cin >> id;
        for (int i = 0; i < books.size(); i++)
        {
            if (books[i].ID == id)
            {
                cout << "请输入新的书名:";
                cin >> books[i].name;
                cout << "请输入新的作者名:";
                cin >> books[i].author;
                cout << "请输入新的分类号:";
                cin >> books[i].category;
                cout << "请输入新的出版单位:";
                cin >> books[i].publisher;
                cout << "请输入新的出版时间:";
                cin >> books[i].publishDate;
                cout << "请输入新的价格:";
                cin >> books[i].price;
                saveBooks();
                cout << "修改成功!" << endl;
                return;
            }
        }
        cout << "未找到该图书信息!" << endl;
    }

    // 按价格排序
    void sortByPrice()
    {
        sort(books.begin(), books.end(), [](BookInfo a, BookInfo b) {
            return a.price < b.price;
            });
        cout << "按价格排序成功!" << endl;
    }

    // 显示所有图书信息
    void showAllBooks()
    {
        for (int i = 0; i < books.size(); i++)
        {
            books[i].print();
            cout << endl;
        }
    }

    // 显示菜单
    void showMenu()
    {
        cout << "|------------------------------------|" << endl;
        cout << "|||||||||欢迎使用图书管理系统|||||||||" << endl;
        cout << "|------------------------------------|" << endl;
        cout << "|____________________________________|" << endl;
        cout << "|***********1. 添加图书信息**********|" << endl;
        cout << "|***********2. 按书名查询************|" << endl;
        cout << "|***********3. 按作者名查询**********|" << endl;
        cout << "|***********4. 删除图书信息**********|" << endl;
        cout << "|***********5. 修改图书信息**********|" << endl;
        cout << "|***********6. 按价格排序************|" << endl;
        cout << "|***********7. 显示所有图书信息******|" << endl;
        cout << "|***********0. 退出******************|" << endl;
        cout << "|____________________________________|" << endl;
    }

    // 从文件中加载图书信息
    void loadBooks()
    {
        ifstream file(filename);
        if (file.is_open())
        {
            string line;
            while (getline(file, line))
            {
                int id = stoi(line.substr(0, line.find(",")));
                line = line.substr(line.find(",") + 1);
                string name = line.substr(0, line.find(","));
                line = line.substr(line.find(",") + 1);
                string author = line.substr(0, line.find(","));
                line = line.substr(line.find(",") + 1);
                int category = stoi(line.substr(0, line.find(",")));
                line = line.substr(line.find(",") + 1);
                string publisher = line.substr(0, line.find(","));
                line = line.substr(line.find(",") + 1);
                string publishDate = line.substr(0, line.find(","));
                line = line.substr(line.find(",") + 1);
                double price = stod(line);
                BookInfo book(id, name, author, category, publisher, publishDate, price);
                books.push_back(book);
            }
            file.close();
        }
    }

    // 将图书信息保存到文件
    void saveBooks()
    {
        ofstream file(filename);
        if (file.is_open())
        {
            for (int i = 0; i < books.size(); i++)
            {
                file << books[i].toString() << endl;
            }
            file.close();
        }
    }

    // 运行图书信息管理系统
    void run()
    {
        int choice;
        while (true)
        {
            showMenu();
            cout << "请输入选项:";
            cin >> choice;
            switch (choice)
            {
            case 1:
                addBook();
                break;
            case 2:
                findBookByName();
                break;
            case 3:
                findBookByAuthor();
                break;
            case 4:
                deleteBook();
                break;
            case 5:
                modifyBook();
                break;
            case 6:
                sortByPrice();
                break;
            case 7:
                showAllBooks();
                break;
            case 0:
                cout << "谢谢使用!" << endl;
                return;
            default:
                cout << "无效选项,请重新输入!" << endl;
            }
        }
    }
};

int main()
{
    BookManager manager("books.txt");
    manager.run();
    return 0;
}

       本程序的任务是实现一个图书信息管理系统,主要功能包括添加图书信息、按书名查询、按作者名查询、删除图书信息、修改图书信息、按价格排序和显示所有图书信息。输入形式为键盘输入,输入值的范围应符合实际情况。输出形式为控制台输出。程序所能达到的功能应能够满足用户的需求。测试数据应包括正确的输入及其输出结果和含有错误的输入及其输出结果。                             本程序的主程序流程为:显示菜单,根据用户输入的选项执行相应的操作,直到用户选择退出为止。各程序模块之间的层次关系为:主程序调用图书信息管理类中的各个方法。

详细设计包括以下程序模块:

- 图书信息类:定义图书信息的各个属性,包括登录号、书名、作者名、分类号、出版单位、出版时间、价格等,以及相应的构造函数、打印函数和转为字符串函数。

- 图书信息管理类:定义图书信息管理的各个方法,包括添加图书信息、按书名查询、按作者名查询、删除图书信息、修改图书信息、按价格排序和显示所有图书信息,以及从文件中加载图书信息和将图书信息保存到文件中的方法。

- 主程序:显示菜单,根据用户输入的选项执行相应的操作,直到用户选择退出为止。

       在调试过程中,遇到了一些问题,包括文件读写的问题、排序函数的使用问题等。通过仔细排查和查阅相关资料,最终解决了这些问题。在设计和实现过程中,需要注意细节,确保程序的正确性和稳定性。

       使用本程序,首先需要创建一个保存图书信息的文件,文件名可以自定义。然后,根据菜单提示进行操作,包括添加图书信息、按书名查询、按作者名查询、删除图书信息、修改图书信息、按价格排序和显示所有图书信息。文章来源地址https://www.toymoban.com/news/detail-756862.html

到了这里,关于C++图书管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用C++实现图书馆管理系统

    该程序包含一个 `Book` 类,代表图书馆中的书籍,具有标题、作者、出版商、出版年份和可用性属性。程序中还定义了一个 `bookList` 向量,用于存储图书馆中的所有书籍。 程序的 `main` 函数通过循环显示菜单,然后根据用户的选择调用相应的函数。用户可以选择添加新书籍、

    2024年02月12日
    浏览(51)
  • C++课程设计:图书管理系统【附源码】

    课程设计目的   作为软件工程和计算机科学与技术专业的基本课程,课程设计不仅涵盖了C++语言的知识体系,又与工程的实际需要切实相关。通过课程设计的综合性训练,对开发者解决实际问题能力,编程能力,动手能力有很大的提升,更有助于样成良好的编程习惯。 图

    2024年02月07日
    浏览(40)
  • 用C++实现一个图书馆管理系统

    下图为普通读者的功能 下图为图书馆管理员所拥有的功能 图中所示功能均已实现,不再一一展示,文末有项目源码 1 、 用户进入系统 用户进入系统的前提是必须先登录或者注册 2、 不同身份有不同功能的使用权 普通读者权限较小,图书管理者拥有较高权限,还设有高级管

    2023年04月13日
    浏览(46)
  • 期末大作业图书管理系统(c++)源代码

    功能展示 运行效果 : 主界面: 图书管理界面: 读者管理界面: 借还书管理界面:

    2024年02月11日
    浏览(62)
  • Java web图书管理系统、在线图书借阅管理系统(带文档)

     大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是初学者还是有一定经验的程序员,我都希望能够为你

    2024年01月23日
    浏览(50)
  • 图书管理系统|基于Springboot的图书管理系统设计与实现(源码+数据库+文档)

    图书管理系统目录 目录 基于Springboot的图书管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、个人中心 2、管理员管理 3、用户管理 4、图书出版社管理 四、数据库设计 1、实体ER图 五、核心代码  六、论文参考 七、最新计算机毕设选题推荐 八、源码获取:

    2024年03月26日
    浏览(90)
  • 图书管理系统(简易版)

    目录 一、该图书管理系统涉及Java的知识点 二、该图书管理系统包含的功能 数组的增删查 抽象类 接口 面向对象的封装、继承和多态 图书管理系统的使用人群分为两种:①管理人员,②普通用户 具体实现:抽象类的继承 User类(父类): AdminUser类(管理员)  NormalUser类(普通用

    2024年02月08日
    浏览(41)
  • 图书借阅管理系统

    1、系统概述 图书借阅管理系统由管理员系统和用户系统两个子系统构成。用户运行程序后可按程序说明进入子系统,输入“1”进入管理员系统,输入“2”进入用户系统。图书信息和读者信息均用文件存储。   管理员系统: 新增图书:管理员可输入图书的类别、书号、书名

    2024年02月05日
    浏览(41)
  • 云借阅-图书管理系统

    程序设计逻辑简单,适合观摩学习使用。 云借阅图书管理系统主要实现了两大功能模块:用户登录模块和图书管理模块,用户登录模块主要用于实现用户的登录与注销;图书管理模块主要用于管理图书,如新书推荐、图书借阅等。 1.开发技术: 后端:SSM(Spring、SpringMVC、Mybatis

    2024年02月13日
    浏览(52)
  • 图书管理系统概述

    自友图书馆管理系统解决方案适用于中小学、大中专院校以及企事业单位中小型图书馆的自动化管理需求,其功能覆盖了图书馆自动化集成管理业务流程所包括的所有环节。《图书馆管理系统》首先应该按照我国图书馆行业通用CNMARC格式及《中图法第四版》行业标准开发而成

    2024年04月25日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包