void show_books() { if (num_books == 0) { printf("暂无图书信息\n"); return; } printf("编号\t名称\t作者\t出版社\t价格\t类别\n"); for (int i = 0; i < num_books; i++) { printf("%s\t%s\t%s\t%s\t%.2f\t%s\n", books[i].id, books[i].name, books[i].author, books[i].publisher, books[i].price, books[i].category); } } // 新增图书信息 void add_book() { if (num_books >= MAX_BOOKS) { printf("已达到最大支持图书数量\n"); return; } Book book; //声明book变量 printf("请输入图书编号:"); scanf("%s", book.id); printf("请输入图书名称:"); scanf("%s", book.name); printf("请输入主编作者:"); scanf("%s", book.author); printf("请输入出版社:"); scanf("%s", book.publisher); printf("请输入价格:"); scanf("%f", &book.price); printf("请输入类别:"); scanf("%s", book.category); books[num_books++] = book;//先把book变量中的值赋值到books中 后num—books+1 图书数量增加1 printf("图书添加成功\n"); } // 删除图书信息 void delete_book() { if (num_books == 0) { printf("暂无图书信息\n"); return; } char id[10]; printf("请输入要删除的图书编号:"); scanf("%s", id); for (int i = 0; i < num_books; i++) { if (strcmp(books[i].id, id) == 0) { //strcmp比较 输入的id和books中存放的id是否一致 for (int j = i + 1; j < num_books; j++) { //如果查到 则所被删除书的后面全部书 下标前移 books[j - 1] = books[j]; } num_books--; printf("图书删除成功\n"); return; } } printf("未找到该图书信息\n"); }

时间: 2024-01-13 19:02:48 浏览: 19
这段代码看起来是一个基本的图书管理系统,包括展示图书信息、新增图书信息和删除图书信息三个功能。其中展示图书信息的函数是 `show_books()`,新增图书信息的函数是 `add_book()`,删除图书信息的函数是 `delete_book()`。 在 `show_books()` 函数中,如果当前没有图书信息,则输出“暂无图书信息”,否则依次输出每本图书的编号、名称、作者、出版社、价格和类别。 在 `add_book()` 函数中,先判断是否已经达到最大支持图书数量,如果是则输出“已达到最大支持图书数量”,否则依次输入图书编号、名称、作者、出版社、价格和类别,并将这些信息封装到 `Book` 结构体变量中,最后将该变量添加到 `books` 数组中,并将图书数量 `num_books` 加 1。 在 `delete_book()` 函数中,先判断当前是否有图书信息,如果没有则输出“暂无图书信息”,否则输入要删除的图书编号。然后依次遍历 `books` 数组,查找是否有与输入编号相同的图书信息。如果有,则将该图书信息及其后面的所有图书信息依次向前移动一位。最后将图书数量 `num_books` 减 1,并输出“图书删除成功”。如果没有找到相应的图书信息,则输出“未找到该图书信息”。
相关问题

按照图书名查询图书借阅信息(某一图书借阅记录的显示)C语言

以下是C语言代码示例,假设图书借阅信息存储在一个结构体数组中: ```c #include <stdio.h> #include <string.h> #define MAX_BOOKS 100 // 最大图书数目 struct book { char title[50]; char author[50]; int year; int borrowed; }; struct book books[MAX_BOOKS]; // 存储图书信息的数组 int num_books = 0; // 当前已有的图书数目 void add_book(char title[], char author[], int year) { if (num_books < MAX_BOOKS) { strcpy(books[num_books].title, title); strcpy(books[num_books].author, author); books[num_books].year = year; books[num_books].borrowed = 0; // 初始时未借出 num_books++; printf("添加成功!\n"); } else { printf("添加失败,已达到最大图书数目!\n"); } } void borrow_book(char title[]) { int i; for (i = 0; i < num_books; i++) { if (strcmp(books[i].title, title) == 0) { if (books[i].borrowed == 0) { books[i].borrowed = 1; printf("借阅成功!\n"); } else { printf("借阅失败,该图书已被借出!\n"); } return; } } printf("借阅失败,未找到该图书!\n"); } void return_book(char title[]) { int i; for (i = 0; i < num_books; i++) { if (strcmp(books[i].title, title) == 0) { if (books[i].borrowed == 1) { books[i].borrowed = 0; printf("归还成功!\n"); } else { printf("归还失败,该图书未被借出!\n"); } return; } } printf("归还失败,未找到该图书!\n"); } void show_book(char title[]) { int i; for (i = 0; i < num_books; i++) { if (strcmp(books[i].title, title) == 0) { printf("图书名称:%s\n", books[i].title); printf("作者:%s\n", books[i].author); printf("出版年份:%d\n", books[i].year); if (books[i].borrowed == 0) { printf("该图书未被借出\n"); } else { printf("该图书已被借出\n"); } return; } } printf("未找到该图书!\n"); } int main() { add_book("C语言程序设计", "谭浩强", 2014); add_book("C++程序设计", "杨洪涛", 2015); borrow_book("C语言程序设计"); show_book("C语言程序设计"); return_book("C语言程序设计"); show_book("C语言程序设计"); return 0; } ``` 在上面的代码中,`add_book` 函数用于添加新的图书,`borrow_book` 函数用于借阅图书,`return_book` 函数用于归还图书,`show_book` 函数用于显示某一图书借阅记录的信息。在 `show_book` 函数中,首先根据输入的图书名称查找对应的图书,然后输出该图书的名称、作者、出版年份以及是否被借出。

c语言:编写代码输出借用图书信息

以下是一个简单的 C 语言代码示例,用于输出借用图书信息: ```c #include <stdio.h> #include <string.h> #define MAX_BOOKS 100 struct Book { char title[50]; char author[50]; int year; int quantity; }; struct Book library[MAX_BOOKS]; int num_books = 0; void add_book(char* title, char* author, int year, int quantity) { strcpy(library[num_books].title, title); strcpy(library[num_books].author, author); library[num_books].year = year; library[num_books].quantity = quantity; num_books++; } void show_books() { int i; printf("Title\t\tAuthor\t\tYear\tQuantity\n"); printf("----------------------------------------------------\n"); for (i = 0; i < num_books; i++) { printf("%s\t%s\t%d\t%d\n", library[i].title, library[i].author, library[i].year, library[i].quantity); } } void borrow_book(char* title) { int i, found = 0; printf("所有图书信息如下:\n"); show_books(); if (num_books == 0) { printf("\n"); } else { printf("请输入你借用的图书名称:\n"); scanf("%s", title); for (i = 0; i < num_books; i++) { if (strcmp(library[i].title, title) == 0) { found = 1; if (library[i].quantity > 0) { library[i].quantity--; printf("成功借用《%s》!\n", title); } else { printf("《%s》已经被借完了!\n", title); } break; } } if (!found) { printf("没有找到该书!\n"); } } } int main() { add_book("The Catcher in the Rye", "J.D. Salinger", 1951, 3); add_book("To Kill a Mockingbird", "Harper Lee", 1960, 2); add_book("1984", "George Orwell", 1949, 5); borrow_book(" "); return 0; } ``` 在这个示例中,我们定义了一个 `Book` 结构体来存储图书信息,包括书名、作者、出版年份和库存数量。我们还定义了一个 `library` 数组来存储所有图书的信息,并使用 `num_books` 变量来跟踪库存中有多少本书。 我们实现了三个函数:`add_book` 用于添加新书到库存中,`show_books` 用于显示所有库存中的图书信息,以及 `borrow_book` 用于借用图书。在 `borrow_book` 函数中,我们首先打印出所有图书的信息,然后要求用户输入他们要借用的图书名称。我们使用 `strcmp` 函数比较输入的图书名称和库存中每本书的名称,以确定用户是否输入了正确的书名。如果找到了匹配项,我们检查图书的库存数量是否大于0。如果是,则减少库存数量并输出成功的借书信息。否则,我们将输出一条消息告诉用户该书已经被借完了。如果没有找到匹配项,则输出一条消息告诉用户没有找到该书。 在 `main` 函数中,我们添加了三本书,并调用 `borrow_book` 函数来借用一本书。你可以根据需要修改这个示例,以满足你的实际需求。

相关推荐

最新推荐

recommend-type

Java开发案例-springboot-66-自定义starter-源代码+文档.rar

Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar
recommend-type

单家独院式别墅图纸D027-三层-12.80&10.50米-施工图.dwg

单家独院式别墅图纸D027-三层-12.80&10.50米-施工图.dwg
recommend-type

啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦

啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

HSV转为RGB的计算公式

HSV (Hue, Saturation, Value) 和 RGB (Red, Green, Blue) 是两种表示颜色的方式。下面是将 HSV 转换为 RGB 的计算公式: 1. 将 HSV 中的 S 和 V 值除以 100,得到范围在 0~1 之间的值。 2. 计算色相 H 在 RGB 中的值。如果 H 的范围在 0~60 或者 300~360 之间,则 R = V,G = (H/60)×V,B = 0。如果 H 的范围在 60~120 之间,则 R = ((120-H)/60)×V,G = V,B = 0。如果 H 的范围在 120~180 之间,则 R = 0,G = V,B =
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

MATLAB柱状图在数据分析中的作用:从可视化到洞察

![MATLAB柱状图在数据分析中的作用:从可视化到洞察](https://img-blog.csdnimg.cn/img_convert/1a36558cefc0339f7836cca7680c0aef.png) # 1. MATLAB柱状图概述** 柱状图是一种广泛用于数据可视化的图表类型,它使用垂直条形来表示数据中不同类别或组别的值。在MATLAB中,柱状图通过`bar`函数创建,该函数接受数据向量或矩阵作为输入,并生成相应的高度条形。 柱状图的优点在于其简单性和易于理解性。它们可以快速有效地传达数据分布和组别之间的比较。此外,MATLAB提供了广泛的定制选项,允许用户调整条形颜色、