117.info
人生若只如初见

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

以下是一个简单的C语言实现的图书管理系统,使用文件数据库进行数据的存储和读取。

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

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe066AzsLBg5RAFw.html

推荐文章

  • c语言strchr函数的用法是什么

    c语言的strchr函数用于在字符串中查找指定字符的第一次出现位置。
    函数原型:
    char *strchr(const char *str, int c); 参数解释: str: 要查找的字符串...

  • c语言memcmp函数怎么使用

    memcmp函数是C语言中的库函数,用于比较两个内存块的内容。
    该函数的原型如下:
    int memcmp(const void* ptr1, const void* ptr2, size_t num); 其中,...

  • c语言十进制怎么转换为16进制

    要将十进制数转换为十六进制数,可以使用以下步骤: 将十进制数除以16,得到商和余数。 将余数转换为相应的十六进制数字。 将商作为新的十进制数,重复步骤1和2,...

  • C语言寄存器和变量怎么赋值

    在C语言中,寄存器和变量可以通过赋值操作符(=)来进行赋值。
    寄存器的赋值可以通过将一个值直接存储到寄存器中来实现,例如:
    register int a;

  • 云服务器无法删除数据库怎么解决

    如果云服务器无法删除数据库,可以尝试以下解决方法: 检查权限:确保当前登录的用户具有足够的权限来删除数据库。可以尝试使用超级用户或具有管理员权限的用户登...

  • 使用InternetOpen到底要包什么头文件啊

    在使用InternetOpen函数之前,您需要包含以下头文件:#include #include 其中,windows.h头文件是Windows操作系统的核心头文件,而wininet.h头文件是WinINet库的...

  • 多进程中CreateMutex与ReleaseMutex使用问题

    在多进程中使用CreateMutex和ReleaseMutex时,需要注意以下几个问题:1. 创建互斥对象时,需要指定一个唯一的名称,以便其他进程可以通过名称来打开这个互斥对象...

  • BDE Administrator问题

    BDE(Borland Database Engine)是一个用于数据库访问和管理的软件开发工具。BDE Administrator是BDE的管理工具,用于配置和管理BDE引擎。一些常见的BDE Adminis...