// 归还图书 void returnBook() { char d[10]; printf("请输入要归还的图书编号:"); scanf("%s", d); int i; for(i = 0; i < num; i++) { if(strcmp(book[i].id, d) == 0) { if(book[i].state == 2) { printf("该图书未被借阅,无法归还!\n"); return; } int a = book[i].cl; book[i].cl++; if(book[i].cl == a) { printf("%d",book[i].cl ); book[i].state = 2; } printf("还书成功!\n"); return; } } printf("未找到该图书!\n"); }判断归还之后,图书库存量是否=未归还之后的库存量,用其判断图书状态,给出完整代码
时间: 2024-01-23 14:02:23 浏览: 76
完整代码如下:
```
#include <stdio.h>
#include <string.h>
struct Book {
char id[10]; // 图书编号
char name[20]; // 图书名称
char author[20]; // 作者
int cl; // 书架编号
int state; // 状态,0表示可借,1表示已借阅,2表示未借出
};
struct Book book[100]; // 图书列表
int num = 0; // 图书数量
// 初始化图书列表
void initBookList() {
printf("请输入图书数量:");
scanf("%d", &num);
int i;
for(i = 0; i < num; i++) {
printf("请输入第%d本书的编号、名称、作者和书架编号:", i + 1);
scanf("%s%s%s%d", book[i].id, book[i].name, book[i].author, &book[i].cl);
book[i].state = 0; // 初始状态为可借
}
}
// 显示图书列表
void showBookList() {
int i;
printf("图书编号\t图书名称\t作者\t\t书架编号\t状态\n");
for(i = 0; i < num; i++) {
printf("%s\t%s\t\t%s\t\t%d\t\t", book[i].id, book[i].name, book[i].author, book[i].cl);
if(book[i].state == 0)
printf("可借\n");
else if(book[i].state == 1)
printf("已借出\n");
else if(book[i].state == 2)
printf("未借出\n");
}
}
// 借阅图书
void borrowBook() {
char d[10];
printf("请输入要借阅的图书编号:");
scanf("%s", d);
int i;
for(i = 0; i < num; i++) {
if(strcmp(book[i].id, d) == 0) {
if(book[i].state != 0) {
printf("该图书不可借!\n");
return;
}
book[i].state = 1; // 修改状态为已借阅
printf("借书成功!\n");
return;
}
}
printf("未找到该图书!\n");
}
// 归还图书
void returnBook() {
char d[10];
printf("请输入要归还的图书编号:");
scanf("%s", d);
int i;
for(i = 0; i < num; i++) {
if(strcmp(book[i].id, d) == 0) {
if(book[i].state == 2) {
printf("该图书未被借阅,无法归还!\n");
return;
}
int a = book[i].cl;
book[i].cl++;
if(book[i].cl == a) {
book[i].state = 2;
}
printf("还书成功!\n");
int count = 0;
for (int j = 0; j < num; j++) {
if (strcmp(book[i].id, book[j].id) == 0) {
count++;
}
}
if (count == a) {
book[i].state = 2;
}
return;
}
}
printf("未找到该图书!\n");
}
int main() {
initBookList();
while(1) {
printf("请选择操作:\n1. 显示图书列表\n2. 借阅图书\n3. 归还图书\n4. 退出\n");
int choice;
scanf("%d", &choice);
switch(choice) {
case 1:
showBookList();
break;
case 2:
borrowBook();
break;
case 3:
returnBook();
break;
case 4:
return 0;
default:
printf("无效的选择!\n");
break;
}
}
return 0;
}
```
修改的地方在归还图书函数中,增加了一个循环,用于统计该图书在书架中的数量,如果归还后数量等于未归还之前的数量,则将该图书的状态设置为“未借出”。
阅读全文