新手练习项目 6:图书管理系统

news2024/11/24 13:27:31

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波·莫听穿林打叶声》
Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder)

目录

        • 一、项目描述
        • 二、项目结构
        • 三、项目步骤
          • 步骤1:定义Book类
          • 步骤2:实现主程序
        • 四、功能点总结
        • 五、项目扩展方向

更多项目内容,请关注我、订阅专栏《项目探索实验室》,内容持续更新中…

项目名称:简单的图书管理系统

一、项目描述

创建一个C++程序,用于管理图书馆的书籍信息。程序应支持以下功能:

  1. 添加图书信息(书名、作者、ISBN)。
  2. 更新图书信息。
  3. 删除图书。
  4. 查找并显示图书信息。
  5. 显示所有图书的信息。
二、项目结构
  1. Book类:用于存储图书的信息。
  2. 主程序:提供菜单选项供用户操作。
三、项目步骤
步骤1:定义Book类

定义一个Book类,包含书名、作者、ISBN。

#include <iostream>
#include <string>
using namespace std;

class Book {
private:
    string title;
    string author;
    string ISBN;

public:
    Book(string t, string a, string i) : title(t), author(a), ISBN(i) {}

    void update(string t, string a, string i) {
        title = t;
        author = a;
        ISBN = i;
    }

    void display() const {
        cout << "Title: " << title << ", Author: " << author << ", ISBN: " << ISBN << endl;
    }

    string getISBN() const {
        return ISBN;
    }
};
步骤2:实现主程序

在主程序中,提供一个菜单,允许用户添加图书、更新图书信息、删除图书、查找图书等。

#include "Book.h"
#include <iostream>
#include <vector>
using namespace std;

void displayMenu() {
    cout << "1. 添加图书" << endl;
    cout << "2. 更新图书信息" << endl;
    cout << "3. 删除图书" << endl;
    cout << "4. 查找图书" << endl;
    cout << "5. 显示所有图书信息" << endl;
    cout << "6. 退出" << endl;
}

void addBook(vector<Book> &books) {
    string title, author, ISBN;
    cout << "输入书名: ";
    cin.ignore();
    getline(cin, title);
    cout << "输入作者: ";
    getline(cin, author);
    cout << "输入ISBN: ";
    getline(cin, ISBN);
    books.push_back(Book(title, author, ISBN));
}

void updateBook(vector<Book> &books) {
    string ISBN, title, author, newISBN;
    cout << "输入要更新的图书的ISBN: ";
    cin.ignore();
    getline(cin, ISBN);
    
    for (Book &book : books) {
        if (book.getISBN() == ISBN) {
            cout << "输入新书名: ";
            getline(cin, title);
            cout << "输入新作者: ";
            getline(cin, author);
            cout << "输入新ISBN: ";
            getline(cin, newISBN);
            book.update(title, author, newISBN);
            return;
        }
    }
    cout << "未找到该ISBN的图书。" << endl;
}

void deleteBook(vector<Book> &books) {
    string ISBN;
    cout << "输入要删除的图书的ISBN: ";
    cin.ignore();
    getline(cin, ISBN);
    
    for (auto it = books.begin(); it != books.end(); ++it) {
        if (it->getISBN() == ISBN) {
            books.erase(it);
            return;
        }
    }
    cout << "未找到该ISBN的图书。" << endl;
}

void findBook(const vector<Book> &books) {
    string ISBN;
    cout << "输入要查找的图书的ISBN: ";
    cin.ignore();
    getline(cin, ISBN);
    
    for (const Book &book : books) {
        if (book.getISBN() == ISBN) {
            book.display();
            return;
        }
    }
    cout << "未找到该ISBN的图书。" << endl;
}

void displayAllBooks(const vector<Book> &books) {
    for (const Book &book : books) {
        book.display();
    }
}

int main() {
    vector<Book> books;
    int choice;

    while (true) {
        displayMenu();
        cin >> choice;

        switch (choice) {
            case 1:
                addBook(books);
                break;
            case 2:
                updateBook(books);
                break;
            case 3:
                deleteBook(books);
                break;
            case 4:
                findBook(books);
                break;
            case 5:
                displayAllBooks(books);
                break;
            case 6:
                return 0;
            default:
                cout << "无效选项,请重新选择。" << endl;
        }
    }

    return 0;
}

效果如图:

image-20240630162206000

四、功能点总结
  1. Book类:管理图书的书名、作者、ISBN及更新信息的方法。
  2. 菜单系统:提供用户交互界面,实现添加图书、更新信息、删除图书、查找图书、显示所有图书信息等功能。
五、项目扩展方向
  1. 添加借阅和归还图书的功能。
  2. 添加图书分类管理功能。
  3. 保存图书信息到文件并从文件读取,以便下次程序启动时恢复数据。

Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder)
点赞加关注,收藏不迷路!本篇文章对你有帮助的话,还请多多点赞支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1879654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FHE全同态加密介绍——小白版

1. 何为FHE&#xff1f; FHE中的evluation key p k e v a l pk_{eval} pkeval​是public的&#xff0c;用于密文计算逻辑 f ( ⋅ ) f(\cdot) f(⋅)的evalute circuit中&#xff0c;但根据所处理数据加解密密钥的不同&#xff0c;可将FHE分为&#xff1a; 1&#xff09;对称F…

Web后端开发概述环境搭建项目创建servlet生命周期

Web开发概述 web开发指的就是网页向后再让发送请求,与后端程序进行交互 web后端(javaEE)程序需要运行在服务器中 这样前端才可以对其进行进行访问 什么是服务器? 解释1: 服务器就是一款软件,可以向其发送请求,服务器会做出一个响应.可以在服务器中部署文件&#xff0c;让…

【ai】trition:tritonclient.utils.shared_memory 仅支持linux

Can’t find tritonclient.utils.shared_memory on WIN10 #4149yolov4的python客户端 导入以后,windows 的pycharm 就是看不到折腾了很久:SaviorEnv 环境下安装tritonclient[all]也会失败 (base) C:\Users\zhangbin>conda create -n SaviorEnv python=3.8 Collecting pack…

计算机体系结构和指令系统

1.计算机体系结构 - 五大部件 - 冯 诺依曼 计算机的特点 1.计算机有五大部件组成 2.指令和数据以同等地位存储于存储器&#xff0c;可按照地址访问 3.指令和数据用二进制表示 4.指令由操作码和地址码组成 5。存储程序 6.以计算器为中心&#xff08;输入、输出设备与存储器…

成都市水资源公报(2000-2022年)

数据年限&#xff1a;2000-2022年&#xff0c;无2009年 数据格式&#xff1a;pdf、word、jpg 数据内容&#xff1a;降水量、地表水资源量、地下水资源量、水资源总量、蓄水状况、平原区浅层地下水动态、水资源情况分析、供水量、用水量、污水处理、洪涝干旱等

[XYCTF新生赛]-PWN:EZ1.0?(mips,mips的shellcode利用)

查看保护 查看ida 这里用的是retdec&#xff0c;没安装的可以看这个[CTF]-PWN:mips反汇编工具&#xff0c;ida插件retdec的安装-CSDN博客 这里直接看反汇编貌似看不出什么&#xff0c;所以直接从汇编找 完整exp&#xff1a; from pwn import* context(log_leveldebug,archmip…

【机器学习】在【Pycharm】中的应用:【线性回归模型】进行【房价预测】

专栏&#xff1a;机器学习笔记 pycharm专业版免费激活教程见资源&#xff0c;私信我给你发 python相关库的安装&#xff1a;pandas,numpy,matplotlib&#xff0c;statsmodels 1. 引言 线性回归&#xff08;Linear Regression&#xff09;是一种常见的统计方法和机器学习算法&a…

Nature Climate Change | 中国科学院地理资源所吴朝阳课题组发表生物多样性调控植被物候的研究成果!

本文首发于“生态学者”微信公众号&#xff01; 植被春季物候对气候变化的响应通常是通过测量其温度敏感性&#xff08;ST&#xff0c;温度每升高1度&#xff0c;植被提前展叶的天数&#xff09;来量化。ST是植被在当地历史气候环境的选择压力下演化形成的最优策略&#xff0c;…

基于GRU自回归解码模拟人类股票交易实现高胜率

这里是基于encoder-decoder和注意力机制 模型代码,sigmoid对资产进行调仓。训练直接使用收益作为优化函数 import torch import torch.nn as nn from dataloader import create_dataloadersclass Attention(nn.Module):def __init__(self, hidden_dim):super(Attention, self…

C++集中营笔记(1)第一节课和第二节课

第一节课linux的使用 1.Linux 常用命令 [chenbogon ~]$ cd ~ [chenbogon ~]$ cd /home [chenbogon home]$ mkdir cpp-test mkdir: cannot create directory ‘cpp-test’: Permission denied [chenbogon home]$ sudo mkdir cpp-testWe trust you have received the usual lec…

Leetcode 78 数组子集

题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的 子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1…

pyqt 文件浏览列表视图和图标视图

pyqt 文件浏览列表视图和图标视图 目的效果代码 目的 使用pyqt实现文件浏览列表视图和图标视图&#xff0c;像电脑文件浏览一样。如下图所示。 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QToolBar, QAction, Q…

商城自动化测试实战 —— 登录+滑块验证

hello大家好&#xff0c;我是你们的小编&#xff01; 本商城测试项目采取PO模型和数据分离式架构&#xff0c;采用pytestseleniumjenkins结合的方式进行脚本编写与运行&#xff0c;项目架构如下&#xff1a; 1、创建项目名称&#xff1a;code_shopping&#xff0c;创建所需项目…

基于单片机光纤测距系统的设计与实现

摘要 &#xff1a; 光纤由于其频带宽 、 损耗低及抗干扰能力强等优点已被广泛地应用在通信 、 电子及电力方面 &#xff0c; 是我们生产生活中必不可少的媒介。 在实际的光纤实验 、 安装 、 运营和维护工作中 &#xff0c; 一种精准 、 轻便和易操作的光纤测距系统显得尤为重…

粉色专业月子会所服务网站源码pbootcms模板

模板介绍 随着时代的发展&#xff0c;月子中心这个产业已越来越盛行&#xff0c;小编挣了一款粉色专业月子会所服务网站源码pbootcms模板供大家下载&#xff0c;适合家政、月嫂服务、母婴护理、月子会所、保姆服务等相关业务&#xff0c;响应式自适应的源码下载设计让您快速编…

百度网盘下载速度慢的解决办法

目录 一、背景 二、解决办法 1、点击三个竖点&#xff0c;再点设置 2、点击传输&#xff0c;再点击去开启该功能 3、点击同意&#xff0c;开启优化速率 三、结果 四、备注 一、背景 当你不是百度网盘会员时&#xff0c;你在使用百度网盘下载时&#xff0c;是否下载速度太…

B站CEO陈睿:超8000万用户在看AI内容

AI圈最近又发生了啥新鲜事&#xff1f; 该栏目以周更频率总结国内外前沿AI动态&#xff0c;感兴趣的可以点击订阅合集以及时收到最新推送 B站CEO陈睿&#xff1a;每月超过8000万用户在平台看AI内容 B站15周年庆上B站董事长兼CEO陈睿发表演讲&#xff0c;公布了B站上AI的内容…

【自然语言处理】预训练语言模型实现与应用

预训练语言模型实现与应用 1 任务目标 1.1 案例简介 ​ 2018年&#xff0c;Google提出了预训练语言模型BERT&#xff0c;该模型在各种NLP任务上都取得了很好的效果。与此同时&#xff0c;它的使用十分方便&#xff0c;可以快速地对于各种NLP任务进行适配。因此&#xff0c;B…

GraalVM windows系统初体验

传统的jvm需要 经历 java ->class ->装载、链接、初始化、使用、卸载等步骤&#xff0c;启动非常慢且费内存&#xff0c; graalvm则是AOT编译器把字节码直接翻译成机器识别的二进制编码的本地镜像&#xff0c;大大提高了启动速度和减少内存消耗 官网&#xff1a;https:…