首页 > 编程语言 >C++基础编程部分知识总结应用--图书管理系统

C++基础编程部分知识总结应用--图书管理系统

时间:2024-05-31 23:58:47浏览次数:22  
标签:cout -- 编程 C++ name bookList book 图书 函数

C++基础编程部分知识总结应用–图书管理系统

文章目录

1. 代码结构和预处理命令

首先,代码中包含了必要的头文件iostream,它用于C++的标准输入输出流。

#include "iostream"
using namespace std;

2. 定义图书结构体

接下来,代码定义了一个名为book的结构体,用于存储图书的信息。这个结构体包含四个字段:name(图书名称)、author(图书作者)、publisher(图书出版社)和price(图书价格)。

struct book {
    string name;      // 图书名称
    string author;    // 图书作者
    string publisher; // 图书出版社
    int price{};      // 图书价格
};

3. 定义图书列表结构体

然后,代码定义了一个名为bookList的结构体,用于存储图书列表。这个结构体包含两个字段:一个book类型的数组book,用于存储多本书的信息;一个整数bookNum,用于记录图书的数量。

struct bookList {
    book book[100];   // 图书数组
    int bookNum{};    // 图书数量
};

4. 后台控制函数

backCtrl()函数是一个后台控制函数,用于在操作成功后返回菜单。它提示用户输入0返回菜单或1继续操作,并根据用户的输入返回相应的布尔值。

bool backCtrl() {
    cout << "操作成功,按0返回菜单,按1继续操作" << endl;
    int flag;
    cin >> flag;
    switch (flag) {
        case 0:
            return false;
        case 1:
            return true;
        default:
            cout << "输入错误,请重新输入" << endl;
            return backCtrl();
    }
}

5. 显示主菜单

showMenu()函数用于显示主菜单,列出了系统提供的所有功能,并提示用户输入相应的选择。

void showMenu() {
    cout << "欢迎使用图书管理系统" << endl;
    cout << "1.添加图书" << endl;
    cout << "2.查询图书" << endl;
    cout << "3.显示图书" << endl;
    cout << "4.修改图书" << endl;
    cout << "5.删除图书" << endl;
    cout << "0.退出系统" << endl;
}

6. 添加图书函数

addBook()函数用于添加一本新书到图书列表中。它首先提示用户输入图书的信息,然后将这些信息存储到bookList的相应字段中,并将图书数量加1。最后,它调用backCtrl()函数以确定是否继续添加图书。

void addBook(bookList *bookList) {
    // 输入图书信息
    do{
        cout << "请输入图书名称:";
        cin>>bookList->book[bookList->bookNum].name;
        cout << "请输入图书作者:";
        cin>>bookList->book[bookList->bookNum].author;
        cout << "请输入图书出版社:";
        cin>>bookList->book[bookList->bookNum].publisher;
        cout << "请输入图书价格:";
        cin>>bookList->book[bookList->bookNum].price;
        cout << "添加成功" << endl;
        bookList->bookNum++;
    } while (backCtrl());
}

7. 查询图书函数

searchBook()函数用于查询图书列表中指定的图书。它提示用户输入要查询的图书名称,然后在图书列表中遍历查找匹配的图书信息并输出。最后,它调用backCtrl()函数以确定是否继续查询其他图书。

oid  searchBook(bookList *bookList) {

    do {
        cout << "请输入图书名称:";
        string name;
        cin >> name;
        // 遍历查找并输出匹配的图书信息
        for ( int i = 0;i < bookList->bookNum; ++i) {
            if (bookList->book[i].name == name) {
                cout << "图书名称:" << bookList->book[i].name << '\t';
                cout << "图书作者:" << bookList->book[i].author << '\t';
                cout << "图书出版社:" << bookList->book[i].publisher << '\t';
                cout << "图书价格:" << bookList->book[i].price << endl;
            }
        }
    } while (backCtrl());
}

8. 显示所有图书函数

showBook()函数用于显示图书列表中的所有图书信息。它首先检查图书列表是否为空,如果不为空,则遍历输出所有图书的信息。最后,它调用backCtrl()函数以确定是否继续显示其他图书。

void showBook(bookList *bookList) {
    // 遍历输出所有图书信息
    do {
        if (bookList->bookNum == 0){
            cout << "图书列表为空" << endl;
        } else {
            cout << "图书列表" << endl;
            for (int i = 0; i < bookList->bookNum; ++i) {
                cout << "图书名称:";
                cout << bookList->book[i].name << '\t';
                cout << "图书作者:";
                cout <<  bookList->book[i].author << '\t';
                cout << "图书出版社:";
                cout << bookList->book[i].publisher << '\t';
                cout << "图书价格:";
                cout << bookList->book[i].price << endl;
            }
        }
    } while (backCtrl());
    // 调用后台控制函数
}

9. 修改图书信息函数

modifyBook()函数用于修改图书列表中指定图书的信息。它首先提示用户输入要修改的图书名称,然后在图书列表中遍历查找匹配的图书信息并进行修改。最后,它调用backCtrl()函数以确定是否继续修改其他图书的信息。

void modifyBook(bookList *bookList) {
    do {
        cout << "请输入要修改的图书名称:";
        string name;
        cin >> name;
        // 遍历查找并修改匹配的图书信息
        for ( int i = 0;i < bookList->bookNum; ++i) {
            if (bookList->book[i].name == name) {
                int select;
                cout << "修改的图书项目" << endl;
                cout << "1.修改图书名称" << endl;
                cout << "2.修改图书作者" << endl;
                cout << "3.修改图书出版社" << endl;
                cout << "4.修改图书价格" << endl;
                cin >> select;
                switch (select) {
                    case 1: {
                        cout << "图书名称:" ;
                        cin >> bookList->book[i].name;
                        break;
                    }
                    case 2: {
                        cout << "图书作者:" ;
                        cin >> bookList->book[i].author;
                        break;
                    }
                    case 3: {
                        cout << "图书出版社:" ;
                        cin >> bookList->book[i].publisher;
                        break;
                    }
                    case 4: {
                        cout << "图书价格:" ;
                        cin >> bookList->book[i].price;
                        break;
                    }
                    default: {
                        cout << "输入错误" << endl;
                        break;
                    }
                }
            }
        }
    } while (backCtrl());
    // 调用后台控制函数
}

10. 删除图书函数

deleteBook()函数用于删除图书列表中指定的图书。它首先提示用户输入要删除的图书名称,然后在图书列表中遍历查找匹配的图书信息并删除。最后,它调用backCtrl()函数以确定是否继续删除其他图书。

void deleteBook(bookList *bookList) {
    do {
        cout << "请输入要删除的图书名称:";
        string name;
        cin >> name;
        // 遍历查找并删除匹配的图书信息
        for (int i = 0; i < bookList->bookNum; ++i) {
            if (bookList->book[i].name == name){
                for (int j = i; j < bookList->bookNum; ++j) {
                    bookList->book[j] = bookList->book[j + 1];
                }
            }
        }
        bookList->bookNum--;
    } while (backCtrl());
    // 调用后台控制函数
}

11. 主函数

最后,代码定义了主函数main(),它是程序的入口点。在这个函数中,首先创建了一个bookList对象,然后进入一个无限循环,不断显示主菜单并获取用户的选择。根据用户的选择,执行相应的功能函数。如果用户选择退出系统(输入0),则跳出循环并结束程序。

int main() {
    bookList bookList;
    while(true){
        showMenu(); // 显示主菜单
        int choice;
        cout << "请输入你的选择:";
        cin >> choice;
        switch (choice) {
            case 1:
                addBook(&bookList);
                break;
            case 2:
                searchBook(&bookList);
                break;
            case 3:
                showBook(&bookList);
                break;
            case 4:
                modifyBook(&bookList);
                break;
            case 5:
                deleteBook(&bookList);
                break;
            case 0:
                cout << "欢迎下次使用" << endl;
                break;
            default:
                cout << "输入错误,请重新输入" << endl;
                break;
        }
        if(choice == 0){
            break; // 选择退出系统时结束程序
        }
    }
    return 0;
}

这段C++代码实现了一个简单的命令行界面的图书管理系统,具有添加、查询、显示、修改和删除图书的功能。虽然它的界面和功能都比较基础,但仍然是一个很好的学习示例,可以帮助初学者理解C++编程和面向对象编程的基本概念。

标签:cout,--,编程,C++,name,bookList,book,图书,函数
From: https://blog.csdn.net/weixin_73497355/article/details/139363525

相关文章

  • C语言练习题之——从简单到烧脑(12)(每日两道)
    题目1:找出1到99之间的全部同构数, 同构数:它出现在平方数的右边,例如:5是25右边的数,25是625右边的数,5和25都是同构数。#include<stdio.h>intmain(){ intsum=0,left=0,right=0; printf("1-99之间的同构数:\n"); for(inti=1;i<100;i++) { inta=i*i;......
  • C语言练习题之——从简单到烧脑(10)(每日两道)
    题目1:二位数组的应用:输入一个3X5的整数矩阵,输出其中的最大值,最小值,和他们的下标#include<stdio.h>intmain(){ inta[3][5],max,min,maxi,maxj,mini,minj; //最大值最小值,和下标分别定义变量存储 inti,j; for(i=0;i<3;i++) for(j=0;j<5;j++)......
  • 【数据结构】二叉树-堆(下)-链式二叉树
    个人主页~二叉树-堆(上)栈和队列二叉树四、堆的代码实现Heap.hHeap.ctest.c五、堆的应用堆排序思想进行排序六、二叉树链式结构的实现BTree.hBTree.ctest.c四、堆的代码实现Heap.h#pragmaonce#include<stdio.h>#include<stdlib.h>#include<assert.h>......
  • MES在数字化工厂中怎么落地?西门子,施耐德为例
    在当前制造业高度竞争的环境下,制造企业为了提高生产效率、降低成本以及优化资源利用,需要借助现代化的制造执行系统(MES)。MES,作为制造业中一种重要的管理信息系统,是数字化工厂中至关重要的一环,并在数字化转型和智能制造中发挥着关键作用。01.MES的发展MES的定义与功能:ME......
  • PHP历理 做一个计算24点的功能
    注意:有些计算24点的数字无法计算出来。不建议使用。<?phpfunctioncalculate24($nums){$operators=['+','-','*','/'];$combinations=[];foreach($numsas$num1){foreach($numsas$num2){if($n......
  • 排版幻灯片
    以下考虑完备匹配的必须边(非完备匹配要用到网络流)给定一张二分图,其最大匹配方案不一定是唯一的。若任何一个最大匹配方案的匹配边都包括\((x,y)\),则称\((x,y)\)为二分图匹配的必须边以下证明假设我们已经求出了一个最大匹配在完备匹配时,一条边\((x,y)\)是必须边,当且仅当满足以......
  • WSL error "it can't find the path specified"
    https://huaweicloud.csdn.net/6356079bd3efff3090b58e82.html用powershell输入以下命令检查是否有路径无效:·@($env:path-split";").ForEach({if($_){$result='MISSING|';if(Test-Path-path$_){$result='OK|'};-join($result,'......
  • zabbix4.0服务端 部署全流程
    zabbix服务端1.配置yum仓库#对应了nginx的location设置https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/#安装俩zabbix.repo仓库文件而已rpm-ivhhttps://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm#......
  • [设计模式]行为型模式-观察者模式
    前言观察者模式(ObserverPattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。在观察者模式中,有两种主要的角色:观察者(Observer):观察者是一个接口或抽象类,它定义了一个更新的接口,使得被观察者在状态发生变......
  • 状压DP
    状压DP[SCOI2005]互不侵犯点击查看题面题目描述在\(N\timesN\)的棋盘里面放\(K\)个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共\(8\)个格子。输入格式只有一行,包含两个数\(N,K\)。输出格式......