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` 函数来借用一本书。你可以根据需要修改这个示例,以满足你的实际需求。