C语言实现图书管理系统(附完整源码)
C语言实现图书管理系统(附完整源码)
这篇博客文章将带你一步步创建一个基于C语言的图书管理系统,并提供完整的源代码。
1. 系统概述
这个图书管理系统旨在帮助用户有效地管理图书信息,它具备以下功能:
- 添加图书: 录入新图书的信息,包括编号、书名、作者、出版社、种类、价格等。
- 删除图书: 从系统中移除不再需要的图书信息。
- 修改图书: 更新现有图书的信息,例如价格变动或库存变化。
- 查找图书: 根据书名或其他关键词搜索特定的图书。
- 借阅图书: 记录图书借阅状态,避免重复借阅。
- 归还图书: 更新图书的借阅状态,使其可被再次借阅。
- 显示图书: 展示系统中所有图书的详细信息。
2. 数据结构
我们使用链表来存储图书信息。每个节点表示一本书,包含以下字段:
typedef struct Node {
char bookCode[20];
char bookName[50];
char author[50];
char publisher[50];
char bookkind[50];
char bookkinds[50];
int quantity;
int borrowed;
struct Node *next;
} BookNode;
BookNode *head = NULL;
3. 核心功能实现
3.1 加载和保存图书数据
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, '%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('无法保存图书信息!\n');
return;
}
BookNode *current = head;
while (current != NULL) {
fprintf(file, '%s\n', current->bookCode);
fprintf(file, '%s\n', current->bookName);
fprintf(file, '%s\n', current->author);
fprintf(file, '%s\n', current->publisher);
fprintf(file, '%s\n', current->bookkind);
fprintf(file, '%s\n', current->bookkinds);
fprintf(file, '%d\n', current->quantity);
fprintf(file, '%d\n', current->borrowed);
current = current->next;
}
fclose(file);
}
3.2 添加图书
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('%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('添加成功!\n');
}
3.3 其他功能
删除、修改、查找、借阅、归还和显示图书信息等功能的实现与添加图书类似, 请参考完整源代码。
4. 完整源代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// ... (BookNode结构体和其他函数的代码,与上面相同)...
int main() {
loadBookData();
while (1) {
printf('*****欢迎使用图书管理系统*****\n');
printf('1. 添加图书信息\n');
printf('2. 删除图书信息\n');
printf('3. 修改图书信息\n');
printf('4. 查找图书信息\n');
printf('5. 借阅图书\n');
printf('6. 归还图书\n');
printf('7. 显示图书信息\n');
printf('0. 退出程序\n');
printf('请输入您的选择:');
int choice;
scanf('%d', &choice);
switch (choice) {
case 1:
addBook();
break;
case 2:
deleteBook();
break;
case 3:
modifyBook();
break;
case 4:
searchBook();
break;
case 5:
borrowBook();
break;
case 6:
returnBook();
break;
case 7:
displayBook();
break;
case 0:
saveBookData();
freeBookList();
printf('感谢使用图书管理系统,再见!\n');
return 0;
default:
printf('无效的选择,请重新输入!\n');
}
}
}
5. 总结
本篇文章介绍了如何使用C语言创建一个简单的图书管理系统。你可以根据自己的需求对系统进行扩展,例如添加用户管理、借阅历史记录等功能。
原文地址: https://www.cveoy.top/t/topic/fv4r 著作权归作者所有。请勿转载和采集!