c語言怎么實(shí)現(xiàn)圖書館管理系統(tǒng)

小億
81
2024-10-26 23:52:43
欄目: 編程語言

要實(shí)現(xiàn)一個(gè)圖書館管理系統(tǒng),首先需要明確系統(tǒng)的功能需求。以下是一個(gè)基本的圖書館管理系統(tǒng)功能列表:

  1. 添加新書
  2. 刪除書籍
  3. 修改書籍信息
  4. 查詢書籍
  5. 借書
  6. 還書
  7. 查看當(dāng)前借出的書籍
  8. 管理員登錄
  9. 管理員添加書籍
  10. 管理員刪除書籍
  11. 管理員修改書籍信息

接下來,我們可以使用C語言來設(shè)計(jì)并實(shí)現(xiàn)這個(gè)系統(tǒng)。以下是一個(gè)簡(jiǎn)化的代碼示例,用于展示如何實(shí)現(xiàn)上述部分功能。請(qǐng)注意,這只是一個(gè)基礎(chǔ)框架,實(shí)際開發(fā)中還需要考慮更多細(xì)節(jié),如用戶輸入驗(yàn)證、錯(cuò)誤處理、數(shù)據(jù)持久化等。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_BOOKS 100
#define MAX_NAME_LEN 100
#define MAX_ISBN_LEN 20

typedef struct {
    char name[MAX_NAME_LEN];
    char isbn[MAX_ISBN_LEN];
    int is_borrowed;
} Book;

Book books[MAX_BOOKS];
int book_count = 0;

void add_book() {
    if (book_count >= MAX_BOOKS) {
        printf("圖書館已滿,無法添加新書!\n");
        return;
    }

    printf("請(qǐng)輸入書名:");
    fgets(books[book_count].name, MAX_NAME_LEN, stdin);
    books[book_count].name[strcspn(books[book_count].name, "\n")] = 0; // 去掉換行符

    printf("請(qǐng)輸入ISBN:");
    fgets(books[book_count].isbn, MAX_ISBN_LEN, stdin);
    books[book_count].isbn[strcspn(books[book_count].isbn, "\n")] = 0; // 去掉換行符

    books[book_count].is_borrowed = 0;
    book_count++;
    printf("新書添加成功!\n");
}

void delete_book() {
    int index;
    printf("請(qǐng)輸入要?jiǎng)h除的書籍索引:");
    scanf("%d", &index);

    if (index < 0 || index >= book_count) {
        printf("無效的書籍索引!\n");
        return;
    }

    books[index].is_borrowed = 0; // 標(biāo)記為未借出,以便后續(xù)查詢
    printf("書籍刪除成功!\n");
}

void modify_book() {
    int index;
    printf("請(qǐng)輸入要修改的書籍索引:");
    scanf("%d", &index);

    if (index < 0 || index >= book_count) {
        printf("無效的書籍索引!\n");
        return;
    }

    printf("請(qǐng)輸入新書名:");
    fgets(books[index].name, MAX_NAME_LEN, stdin);
    books[index].name[strcspn(books[index].name, "\n")] = 0; // 去掉換行符

    printf("請(qǐng)輸入新ISBN:");
    fgets(books[index].isbn, MAX_ISBN_LEN, stdin);
    books[index].isbn[strcspn(books[index].isbn, "\n")] = 0; // 去掉換行符

    printf("書籍信息修改成功!\n");
}

void search_book() {
    int index;
    char name[MAX_NAME_LEN];
    printf("請(qǐng)輸入要查詢的書籍名:");
    fgets(name, MAX_NAME_LEN, stdin);
    name[strcspn(name, "\n")] = 0; // 去掉換行符

    for (int i = 0; i < book_count; i++) {
        if (strcmp(books[i].name, name) == 0) {
            printf("找到書籍:%s (ISBN: %s)\n", books[i].name, books[i].isbn);
            printf("當(dāng)前狀態(tài):%s\n", books[i].is_borrowed ? "已借出" : "未借出");
            return;
        }
    }

    printf("未找到該書籍!\n");
}

void borrow_book() {
    int index;
    printf("請(qǐng)輸入要借出的書籍索引:");
    scanf("%d", &index);

    if (index < 0 || index >= book_count) {
        printf("無效的書籍索引!\n");
        return;
    }

    if (books[index].is_borrowed) {
        printf("該書籍已被借出!\n");
        return;
    }

    books[index].is_borrowed = 1;
    printf("書籍借出成功!\n");
}

void return_book() {
    int index;
    printf("請(qǐng)輸入要?dú)w還的書籍索引:");
    scanf("%d", &index);

    if (index < 0 || index >= book_count) {
        printf("無效的書籍索引!\n");
        return;
    }

    if (!books[index].is_borrowed) {
        printf("該書籍未借出!\n");
        return;
    }

    books[index].is_borrowed = 0;
    printf("書籍歸還成功!\n");
}

int main() {
    int choice;
    do {
        printf("\n圖書館管理系統(tǒng)\n");
        printf("1. 添加新書\n");
        printf("2. 刪除書籍\n");
        printf("3. 修改書籍信息\n");
        printf("4. 查詢書籍\n");
        printf("5. 借書\n");
        printf("6. 還書\n");
        printf("7. 退出\n");
        printf("請(qǐng)選擇操作:");
        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:
                borrow_book();
                break;
            case 6:
                return_book();
                break;
            case 7:
                printf("感謝使用圖書館管理系統(tǒng),再見!\n");
                break;
            default:
                printf("無效的選擇,請(qǐng)重新選擇!\n");
        }
    } while (choice != 7);

    return 0;
}

這個(gè)示例代碼實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的命令行界面圖書館管理系統(tǒng)。用戶可以通過輸入不同的數(shù)字來選擇不同的操作,如添加新書、刪除書籍等。代碼中使用了結(jié)構(gòu)體來存儲(chǔ)書籍信息,并使用數(shù)組來管理所有書籍。當(dāng)用戶執(zhí)行借書、還書等操作時(shí),代碼會(huì)修改相應(yīng)書籍的is_borrowed字段來表示書籍的狀態(tài)。

請(qǐng)注意,這個(gè)示例代碼只是一個(gè)起點(diǎn),實(shí)際開發(fā)中可能需要添加更多功能,如用戶認(rèn)證、圖書分類管理、借閱期限設(shè)置等。此外,為了提高系統(tǒng)的可擴(kuò)展性和可維護(hù)性,建議將代碼組織成多個(gè)模塊,每個(gè)模塊負(fù)責(zé)實(shí)現(xiàn)特定的功能。

0