要實(shí)現(xiàn)一個(gè)圖書館管理系統(tǒng),首先需要明確系統(tǒng)的功能需求。以下是一個(gè)基本的圖書館管理系統(tǒng)功能列表:
接下來,我們可以使用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)特定的功能。