【c】简单的图书管理系统

news/2024/7/27 8:44:28/文章来源:https://blog.csdn.net/hdz_wiz_csdn/article/details/136612207
#include <stdio.h>
#include <string.h>struct Book {char title[100];char author[50];int year;
};void addBook(struct Book library[], int *count) {printf("请输入书名:\n");scanf("%s", library[*count].title);printf("请输入作者:\n");scanf("%s", library[*count].author);printf("请输入出版年份:\n");scanf("%d", &library[*count].year);(*count)++;printf("图书添加成功\n");
}void deleteBook(struct Book library[], int *count, char title[]) {int i, found = 0;for (i = 0; i < *count; i++) {if (strcmp(title, library[i].title) == 0) {found = 1;break;}}if (found) {for (; i < *count - 1; i++) {library[i] = library[i + 1];}(*count)--;printf("图书删除成功\n");} else {printf("未找到该图书\n");}
}void displayBooks(struct Book library[], int count) {if (count == 0) {printf("图书馆暂无图书\n");} else {printf("图书列表:\n");for (int i = 0; i < count; i++) {printf("%s  |  %s  |  %d\n", library[i].title, library[i].author, library[i].year);}}
}int main() {struct Book library[100];int count = 0, choice;char title[100];while (1) {printf("\n请选择操作:\n");printf("1. 增加图书\n");printf("2. 删除图书\n");printf("3. 显示图书\n");printf("4. 退出\n");scanf("%d", &choice);switch (choice) {case 1:addBook(library, &count);break;case 2:printf("请输入要删除的图书名:\n");scanf("%s", title);deleteBook(library, &count, title);break;case 3:displayBooks(library, count);break;case 4:printf("谢谢使用,再见!\n");return 0;default:printf("无效的操作\n");}}return 0;
}

这个 C 程序代表了一个简单的基于控制台的图书馆管理系统。用户可以添加图书、删除图书以及显示图书馆内的图书列表。该程序使用一个结构体**Book**来表示每一本书,并使用该结构体的一个数组来存储图书馆的书籍。

这是代码的细分:

  1. 结构定义:

    C复制代码
    struct Book {char title[100];char author[50];int year;
    };

    定义一个**Book由三个成员命名的结构体:title存储书名、author存储作者姓名、year**存储出版年份。

  2. 添加图书功能:

    C复制代码
    void addBook(struct Book library[], int *count) {// ...
    }

    允许用户输入有关新书的信息并将其添加到图书馆数组中。

  3. 删除图书功能:

    C复制代码
    void deleteBook(struct Book library[], int *count, char title[]) {// ...
    }

    允许用户输入要删除的书籍的标题并将其从图书馆数组中删除。

  4. 展示书籍的功能:

    void displayBooks(struct Book library[], int count) {// ...
    }

    显示图书馆中的图书列表。

  5. 主功能:

    int main() {// ...
    }

    主函数初始化图书馆数组、图书计数,并进入一个循环,用户可以在其中选择各种操作。

  6. 用户界面循环:

    while (1) {// ...
    }

    运行无限循环以保持程序运行,直到用户选择退出(选项 4)。

  7. 开关语句:

    switch (choice) {// ...
    }

    通过根据所选操作调用适当的函数来处理用户的选择。

  8. 菜单选项:

    printf("\n请选择操作:\n");
    printf("1. 增加图书\n");
    printf("2. 删除图书\n");
    printf("3. 显示图书\n");
    printf("4. 退出\n");

    显示菜单供用户选择操作。

  9. 输入操作:

    scanf("%d", &choice);
    

    接受用户输入以确定所选操作。

  10. 函数调用:

    addBook(library, &count);
    deleteBook(library, &count, title);
    displayBooks(library, count);
    

    根据用户的选择调用相应的功能。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

母婴类目电商平台数据分析

母婴产品涉及丰富&#xff0c;以前&#xff0c;奶粉、纸尿裤这类产品基本代表了整体母婴市场中的消费品&#xff0c;现如今&#xff0c;母婴产品还包含孕妇产品、待产护理等类型的产品&#xff0c;而如今&#xff0c;随着母婴行业的高速发展和消费升级&#xff0c;母婴商品的种…

Linux网络套接字之UDP网络程序

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 实现一个简单的对话发消息的功能&#xff01; 目录…

mybatis-编写mapper.xml SQL语句时无提示

你们好&#xff0c;我是金金金。 场景 可以看见sql颜色都是白色的&#xff0c;而且编写的时候没有提示&#xff0c;简直痛苦 排查 中途有设置过SQL方言等&#xff0c;都没有解决我的问题 解决 很简单&#xff0c;https 改成 http 就有提示了&#xff01;&#xff01;&#x…

Docker与Nacos的下载与安装配置

文章目录 docker作用docker的下载nacos 下载1. 首先搜索需要的下载2. 拉取stars最多的即可3. 启动nacos4. 打开防火墙8848端口5. 访问nacos docker 作用 Docker 是一种开源的容器化平台&#xff0c;它的作用主要包括以下几个方面&#xff1a; 应用程序的打包和分发&#xff1…

蓝牙系列十三:协议栈L2CAP层

L2CAP 全称为逻辑链路控制与适配协议(Logical Link Control and Adaptation Protocol)&#xff0c;位于基带层之上&#xff0c;将基带层的数据分组交换为便于高层应用的数据分组格式&#xff0c;并提供协议复用和服务质量交换等功能。 该层属于主机的内容&#xff0c;位于HCI层…

割点原理及封装好的割点类

作者推荐 视频算法专题 预备知识 本分析针对&#xff1a;连通无向图G。 搜索树 节点的父子关系&#xff1a;任意 节点的邻接 节点除了已处理 节点&#xff0c;都是它的子 节点。 以任意一点为根开始DFS&#xff0c;计算所有 节点的父子关系。只保留个子 节点到父 节点形成…

【实战项目】Boost搜索引擎项目

目录 1. 项目的相关背景 2. 搜索引擎的相关宏观原理 3. 搜索引擎技术栈和项目环境 4. 正排索引 vs 倒排索引 - 搜索引擎具体原理 4.1 正排索引 4.2 目标文档进行分词 4.3 倒排索引 4.4 模拟一次查找的过程&#xff1a; 5. 编写数据去标签与数据清洗的模块 Parser 5.1…

力扣串题:字符串中的第一个唯一字母

映射做法&#xff1a;将字母转为数字之类的转化必须在运算中实现如-a int firstUniqChar(char * s){int a[26] {0};int len strlen(s);int i;for (i 0; i < len; i)a[s[i] - a];for (i 0; i < len; i) {if (a[s[i] - a] 1)return i;}return -1; }

第42期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

Python学习笔记-Flask实现简单的投票程序

1.导入flask包 from flask import Flask,jsonify,abort,make_response,request,render_template 2.初始化 Flask 应用: app Flask(__name__) 3. 定义投票种类 data [{id:0,name:劳动节,num:0},{id:1,name:国庆节,num:0},{id:2,name:春节,num:0} ] 4.app.route(/index): …

FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+HLS图像缩放+多路视频拼接,提供4套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收发送本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收OSD动态字符叠加输出应用本方案的SDI接收HLS多路视频融合叠加应用本方案的SDI接收G…

全国降雨侵蚀力因子R值/土壤侵蚀模型RUSLE

降雨侵蚀力因子其实是反应降雨对土壤侵蚀的潜在能力&#xff0c;就是降雨的冲刷对土壤的侵蚀效应。 在过去几天查阅文献资料的过程中&#xff0c;本人亲眼看见过的关于因子R的计算方法就超过30种&#xff0c;着实大开了眼界。 不过总结这些计算方法&#xff0c;其实核心思路大…

【相关问题解答1】bert中文文本摘要代码:import时无法找到包时,几个潜在的原因和解决方法

【相关问题解答1】bert中文文本摘要代码 写在最前面问题1问题描述一些建议import时无法找到包时&#xff0c;几个潜在的原因和解决方法1. 模块或包的命名冲突解决方法&#xff1a; 2. 错误的导入路径解决方法&#xff1a; 3. 第三方库的使用错误解决方法&#xff1a; 4. 包未正…

最新CLion + STM32 + CubeMX 开发环境搭建

网上有不少相关教程&#xff0c;但都是基于老版本Clion&#xff0c;新版有一些改变&#xff0c;但整体是简单了。 PS&#xff1a;本教程基于CLion 2023.3.4 安装所需工具参考&#xff1a;Clion搭建stm32开发环境&#xff08;STM32F103C8T6&#xff09;&#xff0c;有这一篇就够…

Java Day9 Stream流

Stream流 1、认识2、Stream流使用步骤3、如何获取Stream流4.Stream流的中间方法5、 Stream流终结方法 1、认识 2、Stream流使用步骤 3、如何获取Stream流 //list获取stream流List<String> listnew ArrayList<>();Collections.addAll(list,"崔十一","…

【数据结构与算法】解题20240313

这里写目录标题 一、现场写一个代码&#xff0c;有两个字符串类型的数字&#xff0c;实现一个方法将它们进行相加&#xff0c;并返回相加后的数值。&#xff08;要考虑数据的长度问题&#xff09;一、287. 寻找重复数三、617. 合并二叉树 一、现场写一个代码&#xff0c;有两个…

第10集《天台教观纲宗》

请大家打开讲义第十七页。我们讲到己二、结申正义。 己二、结申正义 《法华经》把我们修行人修行的相貌&#xff0c;比喻作一个车乘。车乘就是一种交通工具&#xff0c;它能够让我们从此岸超越到彼岸去。所以修行它是可以超越的&#xff0c;你今天比昨天超越了&#xff0c;就好…

【C++从练气到飞升】03---构造函数和析构函数

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 ⛳️推荐 一、类的6个默认成员函数 二、构造函数 1. 构造函数的概念 2. 构造函数的定义 3. 构造函数的特性 三、析构函…

opencv-python连通域分割connectedComponents

文章目录 连通域简介绘图代码函数说明 连通域简介 所谓连通域&#xff0c;即Connected Component&#xff0c;是一组彼此相连的像素点的集合&#xff0c;这些像素点彼此之间可以假设一条互相链接的路径&#xff0c;路径上所有像素的灰度一致&#xff0c;或者符合某个特定的条件…

Hackthebox - Scrambled- linux

Recon Port Scan HTTP 80 根据在 support 页面得到的信息&#xff1a; 邮箱 supportscramblecorp.com用户名 ksimpson一个用于连接 4411 端口的软件密码 ksimpson SMB 445 这里连接 SMB 服务是连不上的&#xff0c;因为禁用了 NTLM MSSQL 1443 SQL 服务也同样 Unkn…