以下是一個簡單的C語言實現的圖書管理系統,使用文件數據庫進行數據的存儲和讀取。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定義圖書結構體
typedef struct Book {
int id;
char title[100];
char author[100];
float price;
} Book;
// 添加圖書
void addBook(FILE* fp) {
Book book;
printf("請輸入圖書ID: ");
scanf("%d", &book.id);
printf("請輸入圖書標題: ");
scanf("%s", book.title);
printf("請輸入圖書作者: ");
scanf("%s", book.author);
printf("請輸入圖書價格: ");
scanf("%f", &book.price);
// 寫入文件
fseek(fp, 0, SEEK_END);
fwrite(&book, sizeof(Book), 1, fp);
printf("圖書添加成功\n");
}
// 顯示所有圖書
void displayBooks(FILE* fp) {
Book book;
rewind(fp); // 將文件指針設置到文件開頭
printf("圖書列表:\n");
while (fread(&book, sizeof(Book), 1, fp) != 0) {
printf("ID: %d\n", book.id);
printf("標題: %s\n", book.title);
printf("作者: %s\n", book.author);
printf("價格: %.2f\n", book.price);
printf("---------\n");
}
}
// 查找圖書
void searchBook(FILE* fp) {
int id;
Book book;
printf("請輸入要查找的圖書ID: ");
scanf("%d", &id);
while (fread(&book, sizeof(Book), 1, fp) != 0) {
if (book.id == id) {
printf("ID: %d\n", book.id);
printf("標題: %s\n", book.title);
printf("作者: %s\n", book.author);
printf("價格: %.2f\n", book.price);
return;
}
}
printf("未找到該圖書\n");
}
int main() {
FILE* fp;
int choice;
fp = fopen("books.dat", "ab+"); // 打開文件,如果文件不存在則創建
if (fp == NULL) {
printf("文件打開失敗\n");
exit(1);
}
while (1) {
printf("圖書管理系統\n");
printf("1. 添加圖書\n");
printf("2. 顯示所有圖書\n");
printf("3. 查找圖書\n");
printf("0. 退出\n");
printf("請選擇操作: ");
scanf("%d", &choice);
switch (choice) {
case 1:
addBook(fp);
break;
case 2:
displayBooks(fp);
break;
case 3:
searchBook(fp);
break;
case 0:
fclose(fp); // 關閉文件
exit(0);
break;
default:
printf("無效的選擇\n");
break;
}
}
return 0;
}
這個程序使用了一個Book
結構體來表示圖書信息,包括ID、標題、作者和價格。圖書信息被存儲在一個二進制文件中,每次操作時將文件指針設置到文件開頭或文件末尾來讀取或寫入數據。在程序運行過程中,用戶可以選擇添加圖書、顯示所有圖書或查找圖書。