温馨提示×

C语言实现图书管理系统(文件数据库)

小云
168
2023-08-08 15:07:47
栏目: 编程语言

以下是一个简单的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、标题、作者和价格。图书信息被存储在一个二进制文件中,每次操作时将文件指针设置到文件开头或文件末尾来读取或写入数据。在程序运行过程中,用户可以选择添加图书、显示所有图书或查找图书。

0