返回
C 语言管理系统 —— 深入剖析图书管理系统(第二部分)
闲谈
2023-12-11 05:43:11
在上一篇文章中,我们展示了图书管理系统的运行结果。在这一篇中,我们将重点讲解代码与思路。
首先,我们需要定义结构体与全局变量。
struct book {
char title[50];
char author[50];
int price;
};
struct book books[100];
int num_books = 0;
结构体 book
用于表示一本书的信息,其中包含书名、作者和价格三个成员变量。数组 books
用于存储图书信息,它最多可以容纳 100 本书。全局变量 num_books
用于记录当前已经存储的图书数量。
接下来,我们需要实现添加图书、删除图书、修改图书和查询图书等功能。
void add_book() {
printf("Enter book title: ");
scanf("%s", books[num_books].title);
printf("Enter book author: ");
scanf("%s", books[num_books].author);
printf("Enter book price: ");
scanf("%d", &books[num_books].price);
num_books++;
}
void delete_book() {
int book_id;
printf("Enter book ID: ");
scanf("%d", &book_id);
for (int i = book_id; i < num_books - 1; i++) {
books[i] = books[i + 1];
}
num_books--;
}
void modify_book() {
int book_id;
printf("Enter book ID: ");
scanf("%d", &book_id);
printf("Enter new book title: ");
scanf("%s", books[book_id].title);
printf("Enter new book author: ");
scanf("%s", books[book_id].author);
printf("Enter new book price: ");
scanf("%d", &books[book_id].price);
}
void search_book() {
char book_title[50];
printf("Enter book title: ");
scanf("%s", book_title);
for (int i = 0; i < num_books; i++) {
if (strcmp(books[i].title, book_title) == 0) {
printf("Book found:\n");
printf("Title: %s\n", books[i].title);
printf("Author: %s\n", books[i].author);
printf("Price: %d\n", books[i].price);
return;
}
}
printf("Book not found.\n");
}
这些函数的功能都比较简单,就不一一解释了。读者可以自行阅读代码,理解其含义。
最后,我们还需要编写一个 main()
函数来调用这些函数,让用户可以与图书管理系统进行交互。
int main() {
int choice;
while (1) {
printf("1. Add book\n");
printf("2. Delete book\n");
printf("3. Modify book\n");
printf("4. Search book\n");
printf("5. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
add_book();
break;
case 2:
delete_book();
break;
case 3:
modify_book();
break;
case 4:
search_book();
break;
case 5:
exit(0);
default:
printf("Invalid choice.\n");
}
}
return 0;
}
至此,我们就完成了图书管理系统的编写。读者可以自行编译运行该系统,体验其功能。