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++课程设计:图书管理系统【附源码】

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

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

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

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

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

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

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

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

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

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

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

    2024年03月26日
    浏览(85)
  • 图书管理系统 (javaweb)

    声明一下 这个图书馆管理系统为我 自己 研究制作 而且我本人的英语不好 ,在一些类的命名可能很怪所以请大佬们请勿嘲笑 而且我本人是一位大一学生,代码说不上有多精明 ,我本人在前端的制作方面可能不是很熟练QAQ 用户的登录以及注册 对书籍的增删查以及分页 maven

    2024年02月05日
    浏览(67)
  • javaWeb图书管理系统

    a.项目用到的技术 IDE: Intellij IDEA 语言:java,html + ajax,js 数据库:Mysql 数据库可视化: navicat web服务器:Tomcat 框架:(mybatis,jquery,bootstrap) 项目用到maven 设计模式:MVC b.该项目的主要功能 管理员与普通用户分为不同界面 管理员和普通用户可修改个人信息 管理员和普通用

    2024年02月06日
    浏览(60)
  • 【Java】图书管理系统

    书写一个图书管理系统,其中要包含以下功能:借阅书籍、浏览书籍、查找书籍、添加书籍、删除书籍、修改书籍 (书写这个程序主要是为了巩固我们之前学习的基础语法,因此在这个程序书写的过程中我们将尽量运用我们之前学的大部分知识。同时值得一提的是,这篇文章

    2024年02月05日
    浏览(38)
  • 图书管理系统的搭建

    流程图 页面跳转: 代码整体布局: 导入框架和包: 实现效果: 在innodb存储引擎下,会到自增断层,如下(pid=4): 不适用拼接,正常插入: 代码部分: 创建数据库: 创建表: BaseDAO: Books: IBooksDAO: BooksDAOImpl: IBooksService: BooksServiceImpl: bookList.jsp: add.jsp: update.jsp: Bo

    2024年02月09日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包