该程序使用结构体`Book`来表示图书,其中包含书名、作者、出版商、出版年份和可用性信息。`bookList`数组存储所有图书,`numBooks`变量存储当前图书数量。

程序实现了以下功能:

– 添加书籍:向数组中添加一本书籍,输入书名、作者、出版商和出版年份;

– 搜索书籍:根据书名查找图书,并显示该书的详细信息;

– 显示所有书籍:显示所有图书的列表,包括书名、作者、出版商、出版年份和可用性信息;

– 借书:根据书名查找图书,并将其标记为不可用;

– 还书:根据书名查找图书,并将其标记为可用。

当添加的书籍超过数组大小时,程序将提示图书馆已满。当搜索到的书籍不存在或已经借出时,程序将相应提示。

该程序使用循环菜单,用户可以重复执行上述操作,直到选择退出。

#include #include #include #define MAX_BOOKS 100typedef struct Book {char title[50];char author[50];char publisher[50];int year;int available;} Book;Book bookList[MAX_BOOKS];int numBooks = 0;void displayMenu() {printf("Library Management System\n");printf("=========================\n");printf("1. Add a book\n");printf("2. Search for a book\n");printf("3. Display all books\n");printf("4. Borrow a book\n");printf("5. Return a book\n");printf("6. Exit\n");printf("Enter your choice: ");}void addBook() {if (numBooks >= MAX_BOOKS) {printf("Library is full.\n");return;}printf("Enter book title: ");scanf("%s", bookList[numBooks].title);printf("Enter book author: ");scanf("%s", bookList[numBooks].author);printf("Enter book publisher: ");scanf("%s", bookList[numBooks].publisher);printf("Enter book publication year: ");scanf("%d", &bookList[numBooks].year);bookList[numBooks].available = 1;numBooks++;printf("Book added successfully.\n");}void searchBook() {char title[50];printf("Enter book title: ");scanf("%s", title);for (int i = 0; i < numBooks; i++) {if (strcmp(title, bookList[i].title) == 0) {printf("Title: %s\n", bookList[i].title);printf("Author: %s\n", bookList[i].author);printf("Publisher: %s\n", bookList[i].publisher);printf("Publication Year: %d\n", bookList[i].year);printf("Availability: %s\n", bookList[i].available ? "Yes" : "No");return;}}printf("Book not found.\n");}void displayBooks() {printf("Title\tAuthor\tPublisher\tPublication Year\tAvailability\n");for (int i = 0; i < numBooks; i++) {printf("%s\t%s\t%s\t%d\t%s\n", bookList[i].title, bookList[i].author, bookList[i].publisher, bookList[i].year, bookList[i].available ? "Yes" : "No");}}void borrowBook() {char title[50];printf("Enter book title: ");scanf("%s", title);for (int i = 0; i < numBooks; i++) {if (strcmp(title, bookList[i].title) == 0) {if (bookList[i].available) {bookList[i].available = 0;printf("Book borrowed successfully.\n");} else {printf("Book not available.\n");}return;}}printf("Book not found.\n");}void returnBook() {char title[50];printf("Enter book title: ");scanf("%s", title);for (int i = 0; i < numBooks; i++) {if (strcmp(title, bookList[i].title) == 0) {if (!bookList[i].available) {bookList[i].available = 1;printf("Book returned successfully.\n");} else {printf("Book already available.\n");}return;}}printf("Book not found.\n");}int main() {int choice;do {displayMenu();scanf("%d", &choice);switch (choice) {case 1:addBook();break;case 2:searchBook();break;case 3:displayBooks();break;case 4:borrowBook();break;case 5:returnBook();break;case 6:printf("Goodbye.\n");break;default:printf("Invalid choice.\n");break;}} while (choice != 6);return 0;}