首页 > 编程语言 >C++图书管理案例

C++图书管理案例

时间:2024-03-13 13:04:39浏览次数:27  
标签:cout bookId C++ 案例 Book books 图书 string

Book类存储一本图书信息。

class Book {
public:
    string bookId;
    string title;
    float price;
    //构造函数
    Book(string myBookId,string myTitle,float myPrice) {
        bookId = myBookId;
        title = myTitle;
        price = myPrice;
    }
    void printBook() {
        cout << bookId << "\t" << title << "\t" << price << endl;
    }
};

BookLibrary类代表图书馆,起管理图书的作用。

class BookLibrary {
public:
    vector<Book> books;
    //查找图书
    int findIndex(string myId) {
        for (int i = 0; i < books.size(); i++)
        {
            if (books[i].bookId == myId) {
                return i;
            }
        }
        return -1;
    }
    //删除图书
    void deleteBook(string myId) {
        for (int i = 0; i < books.size(); i++)
        {
            if (books[i].bookId == myId) {
                books.erase(books.begin() + i);
            }
        }
    }
    //插入图书
    void pushBook(Book myBook) {
        books.push_back(myBook);
    }
    //图书列表
    void listBook() {
        cout << "编号" << "\t" << "标题" << "\t" << "价格" << endl;
        for (int i = 0; i < books.size(); i++)
        {
            books[i].printBook();
        }
    }
};

主函数包含一个功能选择的界面,有3个功能:插入图书、删除图书、图书列表。
插入图书:用户输入编号、标题、价格,将此书存入图书馆。
删除图书:用户输入要删除图书的编号,从图书馆删除此书。
图书列表:打印图书馆所有图书。

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    BookLibrary library = BookLibrary();
    while (true)
    {
        cout << "1.插入图书" << endl;
        cout << "2.删除图书" << endl;
        cout << "3.图书列表" << endl;
        cout << "请输入1或2或3:" << endl;
        int select;
        cin >> select;
        if (select == 1) {
            cout << "请输入编号:" << endl;
            string bookId;
            cin >> bookId;
            //cout << bookId << endl;
            cout << "请输入标题:" << endl;
            string title;
            cin >> title;
            cout << "请输入价格:" << endl;
            float price;
            cin >> price;
            Book newBook = Book(bookId, title, price);
            library.pushBook(newBook);
            //library.books[0].printBook();
            cout << "插入成功" << endl;
        }
        else if(select == 2){
            cout << "请输入编号:" << endl;
            string deleteId;
            cin >> deleteId;
            library.deleteBook(deleteId);
            cout << "删除成功" << endl;
        }
        else {
            library.listBook();
        }
    }
    
}

标签:cout,bookId,C++,案例,Book,books,图书,string
From: https://blog.csdn.net/zhourongxiang1/article/details/136676764

相关文章

  • c++函数SetConsoleTextAttribute
    前言正文1.作用:2.函数格式(重点):3.参数(重点):前言实用(真的)正文1.作用:更改cmd的背景色与字体颜色2.函数格式(重点):SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10进制参数);3.参数(重点): ......
  • C++指针(五)完结篇
    个人主页:PingdiGuo_guo收录专栏:C++干货专栏前言相关文章:C++指针(一)、C++指针(二)、C++指针(三)、C++指针(四)万字图文详解!本篇博客是介绍const、野指针、双指针、assert断言、NULL指针的知识的。文章目录前言1.const与指针1.1修饰变量1.2修饰指针变量2.野指针2.1为......
  • 实验案例:使用Windows 10桌面系统
    1、实验环境      BDON公司刚刚招聘了一位新入职员工小张。部门经理要求系统管理员带小张快速地熟悉公司环境以尽快上手工作,系统管理员为小张的计算机安装了Windows1o操作系统以后,需要小张进一步熟悉公司的Windows10桌面环境及使用系统的基本操作,以便更好地实......
  • 第15届蓝桥杯青少组STEMA考试C++中高级真题试卷(2024年3月)编程题部分
    编程题第6题   问答题编程实现:寒假期间小明需要做完n张试卷,但他每天最多能做完m张,请计算出小明做完n张试卷最少需要多少天?输入描述一行输入两个整数n和m(1≤n≤100,1≤m≤10),分别表示要完成的试卷张数,及每天最多能做完的试卷张数,整数之间以一个空格隔开输出描述输出......
  • 8块硬盘故障的存储异常恢复案例一则
    关键词华为存储、硬盘域、LUN热备冗余、重构、预拷贝oraclerac、多路径    Thereare many thingsthatcannotbebroken!   如果觉得本文对你有帮助,欢迎点赞、收藏、评论!一、问题现象近期遇到的一个案例,现象是一套oraclerac数据库双节点全挂了,原因是后......
  • LeetCode每日一题[C++]-2864.最大二进制奇数(贪心)
    题目描述给你一个 二进制 字符串 s ,其中至少包含一个 '1' 。你必须按某种方式 重新排列 字符串中的位,使得到的二进制数字是可以由该组合生成的 最大二进制奇数 。以字符串形式,表示并返回可以由给定组合生成的最大二进制奇数。注意 返回的结果字符串 可以 含前......
  • c++基础语法
    文章目录前言命名空间命名空间的使用缺省参数缺省参数的使用函数重载函数重载的作用函数重载的使用函数重载原理引用引用的使用引用的使用场景引用和指针externCinlineauto范围fornullptr前言大家好我是jiantaoyab,这篇文章给大家带来的是c语言没有的一些特性之......
  • c++初阶------类和对象(下)
    作者前言......
  • Windows下使用winsock库实现tcp客户端通信,C/C++
    编程思路第一步创建一个WASDATA结构体变量,用于存储关于Winsock库的信息;初始化Winsock库。第二步创建TCP套接字。第三步创建sockaddr_in结构体变量,用于储存服务器地址信息。里面包括设置地址族、IP地址、端口号。第四步调用connect函数连接服务器。通信调send函数发送数......
  • 第十四届蓝桥杯C++B组编程题题目以及题解
    a.冶炼金属(二分)思路:设任意一条冶炼记录投入金属数量为a,产出金属为b.对于每一条冶炼记录我们都可以得到一个转换率V的范围:b<=a/v<b+1即a/b<=v<a/(b+1)为什么是b+1呢?因为既然能产出b个金属,也就意味着一定不能产出b+1个,所以a/v<b+1每一条记录都可以得到v的一个区间,我......