C语言实现图书管理系统:增删改查、借阅归还功能详解
C语言实现图书管理系统
这篇文章将介绍如何使用C语言实现一个简单的图书管理系统,该系统支持以下功能:
- 添加图书* 删除图书* 修改图书信息* 查找图书* 借阅图书* 归还图书* 显示所有图书
代码实现c#include <stdio.h>#include <stdlib.h>#include <string.h>
// 定义图书节点结构体typedef struct Node { char bookCode[20]; char bookName[50]; char author[50]; char publisher[50]; char bookkind[50]; char bookkinds[50]; float price; int quantity; int borrowed; struct Node *next;} BookNode;
// 初始化链表头节点BookNode *head = NULL;
// 从文件中加载图书数据void loadBookData() { FILE *file = fopen('book_storage.txt', 'r'); if (file == NULL) { return; }
while (!feof(file)) { BookNode *newNode = (BookNode *)malloc(sizeof(BookNode)); fscanf(file, '%s', newNode->bookCode); fscanf(file, '%s', newNode->bookName); fscanf(file, '%s', newNode->author); fscanf(file, '%s', newNode->publisher); fscanf(file, '%s', newNode->bookkind); fscanf(file, '%s', newNode->bookkinds); fscanf(file, '%f', &newNode->price); fscanf(file, '%d', &newNode->quantity); fscanf(file, '%d', &newNode->borrowed); newNode->next = NULL;
if (head == NULL) { head = newNode; } else { BookNode *current = head; while (current->next != NULL) { current = current->next; } current->next = newNode; } }
fclose(file);}
// 将图书数据保存到文件void saveBookData() { FILE *file = fopen('book_storage.txt', 'w'); if (file == NULL) { printf('无法保存图书信息! '); return; }
BookNode *current = head; while (current != NULL) { fprintf(file, '%s
', current->bookCode); fprintf(file, '%s ', current->bookName); fprintf(file, '%s ', current->author); fprintf(file, '%s ', current->publisher); fprintf(file, '%s ', current->bookkind); fprintf(file, '%s ', current->bookkinds); fprintf(file, '%.2f ', current->price); fprintf(file, '%d ', current->quantity); fprintf(file, '%d ', current->borrowed);
current = current->next; }
fclose(file);}
// 添加图书void addBook() { BookNode *newNode = (BookNode *)malloc(sizeof(BookNode)); printf('请输入图书编号:'); scanf('%s', newNode->bookCode); printf('请输入书名:'); scanf('%s', newNode->bookName); printf('请输入作者:'); scanf('%s', newNode->author); printf('请输入出版社:'); scanf('%s', newNode->publisher); printf('请输入图书种类:'); scanf('%s', newNode->bookkind); printf('请输入图书种类编号:'); scanf('%s', newNode->bookkinds); printf('请输入价格:'); scanf('%f', &newNode->price); printf('请输入数量:'); scanf('%d', &newNode->quantity); newNode->borrowed = 0; newNode->next = NULL;
if (head == NULL) { head = newNode; } else { BookNode *current = head; while (current->next != NULL) { current = current->next; } current->next = newNode; }
printf('添加成功!
');}
// 删除图书void deleteBook() { char bookCode[20]; printf('请输入要删除的图书编号:'); scanf('%s', bookCode);
if (head == NULL) { printf('没有找到相关图书!
'); return; }
if (strcmp(head->bookCode, bookCode) == 0) { BookNode *temp = head; head = head->next; free(temp); printf('删除成功!
'); return; }
BookNode *current = head; while (current->next != NULL) { if (strcmp(current->next->bookCode, bookCode) == 0) { BookNode *temp = current->next; current->next = temp->next; free(temp); printf('删除成功!
'); return; } current = current->next; }
printf('没有找到相关图书!
');}
// 修改图书信息void modifyBook() { char bookCode[20]; printf('请输入要修改的图书编号:'); scanf('%s', bookCode);
if (head == NULL) { printf('没有找到相关图书!
'); return; }
BookNode *current = head; while (current != NULL) { if (strcmp(current->bookCode, bookCode) == 0) { printf('请输入新的书名:'); scanf('%s', current->bookName); printf('请输入新的作者:'); scanf('%s', current->author); printf('请输入新的出版社:'); scanf('%s', current->publisher); printf('请输入新的图书种类:'); scanf('%s', current->bookkind); printf('请输入新的图书种类编号:'); scanf('%s', current->bookkinds); printf('请输入新的价格:'); scanf('%f', ¤t->price); printf('请输入新的数量:'); scanf('%d', ¤t->quantity); printf('修改成功!
'); return; } current = current->next; }
printf('没有找到相关图书!
');}
// 查找图书void searchBook() { char bookName[50]; printf('请输入要查找的书名:'); scanf('%s', bookName);
if (head == NULL) { printf('没有找到相关图书!
'); return; }
BookNode *current = head; int found = 0; while (current != NULL) { if (strcmp(current->bookName, bookName) == 0) { printf('图书编号:%s
', current->bookCode); printf('书名:%s ', current->bookName); printf('作者:%s ', current->author); printf('出版社:%s ', current->publisher); printf('图书种类:%s ', current->bookkind); printf('图书种类编号:%s ', current->bookkinds); printf('价格:%.2f ', current->price); printf('数量:%d ', current->quantity); printf('借阅状态:%s ', current->borrowed ? '已借出' : '未借出'); found = 1; } current = current->next; }
if (!found) { printf('没有找到相关图书!
'); }}
// 借阅图书void borrowBook() { char bookCode[20]; printf('请输入要借阅的图书编号:'); scanf('%s', bookCode);
if (head == NULL) { printf('没有找到相关图书!
'); return; }
BookNode *current = head; while (current != NULL) { if (strcmp(current->bookCode, bookCode) == 0) { if (current->borrowed) { printf('该图书已借出!
'); } else { current->borrowed = 1; printf('借阅成功! '); } return; } current = current->next; }
printf('没有找到相关图书!
');}
// 归还图书void returnBook() { char bookCode[20]; printf('请输入要归还的图书编号:'); scanf('%s', bookCode);
if (head == NULL) { printf('没有找到相关图书!
'); return; }
BookNode *current = head; while (current != NULL) { if (strcmp(current->bookCode, bookCode) == 0) { if (current->borrowed) { current->borrowed = 0; printf('归还成功!
'); } else { printf('该图书未借出! '); } return; } current = current->next; }
printf('没有找到相关图书!
');}
// 显示所有图书void displayAllBooks() { if (head == NULL) { printf('没有图书信息! '); return; }
BookNode *current = head; while (current != NULL) { printf('图书编号:%s
', current->bookCode); printf('书名:%s ', current->bookName); printf('作者:%s ', current->author); printf('出版社:%s ', current->publisher); printf('图书种类:%s ', current->bookkind); printf('图书种类编号:%s ', current->bookkinds); printf('价格:%.2f ', current->price); printf('数量:%d ', current->quantity); printf('借阅状态:%s ', current->borrowed ? '已借出' : '未借出'); printf(' '); current = current->next; }}
// 主函数int main() { loadBookData();
int choice; while (1) { printf('
'); printf('1. 添加图书 '); printf('2. 删除图书 '); printf('3. 修改图书信息 '); printf('4. 查找图书 '); printf('5. 借阅图书 '); printf('6. 归还图书 '); printf('7. 显示所有图书 '); printf('8. 退出 '); printf('请选择操作:'); scanf('%d', &choice);
switch (choice) { case 1: addBook(); saveBookData(); break; case 2: deleteBook(); saveBookData(); break; case 3: modifyBook(); saveBookData(); break; case 4: searchBook(); break; case 5: borrowBook(); saveBookData(); break; case 6: returnBook(); saveBookData(); break; case 7: displayAllBooks(); break; case 8: saveBookData(); exit(0); default: printf('无效的选择!
'); break; } }
return 0;}
使用方法
- 编译并运行代码。2. 按照菜单提示选择操作。3. 输入相应的信息完成操作。
注意
- 本代码使用文件存储图书信息,请确保程序有权限读写文件。* 本代码只是一个简单的示例,您可以根据需要进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/fv2U 著作权归作者所有。请勿转载和采集!