要實現一個圖書館管理系統,首先需要明確系統的功能需求。以下是一個基本的圖書館管理系統功能列表:
接下來,我們可以使用C語言來設計并實現這個系統。以下是一個簡化的代碼示例,用于展示如何實現上述部分功能。請注意,這只是一個基礎框架,實際開發中還需要考慮更多細節,如用戶輸入驗證、錯誤處理、數據持久化等。
#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("請輸入書名:");
fgets(books[book_count].name, MAX_NAME_LEN, stdin);
books[book_count].name[strcspn(books[book_count].name, "\n")] = 0; // 去掉換行符
printf("請輸入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("請輸入要刪除的書籍索引:");
scanf("%d", &index);
if (index < 0 || index >= book_count) {
printf("無效的書籍索引!\n");
return;
}
books[index].is_borrowed = 0; // 標記為未借出,以便后續查詢
printf("書籍刪除成功!\n");
}
void modify_book() {
int index;
printf("請輸入要修改的書籍索引:");
scanf("%d", &index);
if (index < 0 || index >= book_count) {
printf("無效的書籍索引!\n");
return;
}
printf("請輸入新書名:");
fgets(books[index].name, MAX_NAME_LEN, stdin);
books[index].name[strcspn(books[index].name, "\n")] = 0; // 去掉換行符
printf("請輸入新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("請輸入要查詢的書籍名:");
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("當前狀態:%s\n", books[i].is_borrowed ? "已借出" : "未借出");
return;
}
}
printf("未找到該書籍!\n");
}
void borrow_book() {
int index;
printf("請輸入要借出的書籍索引:");
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("請輸入要歸還的書籍索引:");
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圖書館管理系統\n");
printf("1. 添加新書\n");
printf("2. 刪除書籍\n");
printf("3. 修改書籍信息\n");
printf("4. 查詢書籍\n");
printf("5. 借書\n");
printf("6. 還書\n");
printf("7. 退出\n");
printf("請選擇操作:");
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("感謝使用圖書館管理系統,再見!\n");
break;
default:
printf("無效的選擇,請重新選擇!\n");
}
} while (choice != 7);
return 0;
}
這個示例代碼實現了一個簡單的命令行界面圖書館管理系統。用戶可以通過輸入不同的數字來選擇不同的操作,如添加新書、刪除書籍等。代碼中使用了結構體來存儲書籍信息,并使用數組來管理所有書籍。當用戶執行借書、還書等操作時,代碼會修改相應書籍的is_borrowed
字段來表示書籍的狀態。
請注意,這個示例代碼只是一個起點,實際開發中可能需要添加更多功能,如用戶認證、圖書分類管理、借閱期限設置等。此外,為了提高系統的可擴展性和可維護性,建議將代碼組織成多個模塊,每個模塊負責實現特定的功能。