返回

C 语言管理系统 —— 深入剖析图书管理系统(第二部分)

闲谈

在上一篇文章中,我们展示了图书管理系统的运行结果。在这一篇中,我们将重点讲解代码与思路。

首先,我们需要定义结构体与全局变量。

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;
}

至此,我们就完成了图书管理系统的编写。读者可以自行编译运行该系统,体验其功能。