C语言图书管理系统:借阅、归还和显示图书功能
本文将介绍一个使用 C 语言实现的简单图书管理系统,其中包含了借阅、归还和显示图书的功能。为了简化示例,我们将假设图书数据存储在一个链表中,并使用一个名为 BookNode 的结构体来表示每个图书的信息。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义图书节点结构体
typedef struct BookNode {
char bookCode[20];
char bookName[50];
char author[30];
char publisher[50];
char bookkind[20];
char bookkinds[20];
int quantity;
int borrowed;
struct BookNode *next;
} BookNode;
BookNode *head = NULL; // 图书链表的头节点
// 借阅图书函数
void borrowBook() {
char bookCode[20];
printf('请输入要借阅的图书编号:');
scanf('%s', bookCode);
if (head == NULL) {
printf('没有找到相关图书!\n');
return;
}
BookNode *current = head;
while (current != NULL) {
if (strcmp(current->bookCode, bookCode) == 0) {
if (current->borrowed) {
printf('该图书已借出!\n');
} else {
current->borrowed = 1;
printf('借阅成功!\n');
}
return;
}
current = current->next;
}
printf('没有找到相关图书!\n');
}
// 归还图书函数
void returnBook() {
char bookCode[20];
printf('请输入要归还的图书编号:');
scanf('%s', bookCode);
if (head == NULL) {
printf('没有找到相关图书!\n');
return;
}
BookNode *current = head;
while (current != NULL) {
if (strcmp(current->bookCode, bookCode) == 0) {
if (current->borrowed) {
current->borrowed = 0;
printf('归还成功!\n');
} else {
printf('该图书未借出!\n');
}
return;
}
current = current->next;
}
printf('没有找到相关图书!\n');
}
// 显示图书信息函数
void displayBook() {
if (head == NULL) {
printf('图书列表为空!\n');
return;
}
BookNode *current = head;
while (current != NULL) {
printf('图书编号:%s\n', current->bookCode);
printf('书名:%s\n', current->bookName);
printf('作者:%s\n', current->author);
printf('出版社:%s\n', current->publisher);
printf('图书种类:%s\n', current->bookkind);
printf('图书种类编号:%s\n', current->bookkinds);
printf('价格:%d\n', current->quantity);
printf('借阅状态:%s\n', current->borrowed ? '已借出' : '未借出');
printf('\n');
if (current->next != NULL) {
printf('\n');
}
current = current->next;
}
}
// 释放图书链表内存函数
void freeBookList() {
BookNode *current = head;
while (current != NULL) {
BookNode *temp = current;
current = current->next;
free(temp);
}
head = NULL;
}
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');
}
}
}
功能解释
-
borrowBook() 函数:
- 获取用户输入的图书编号。
- 遍历图书链表,查找与输入编号匹配的图书。
- 如果找到图书,判断其借阅状态,并进行相应的处理:
- 如果图书已借出,输出提示信息。
- 如果图书未借出,更新借阅状态为已借出,并输出提示信息。
- 如果未找到匹配的图书,输出提示信息。
-
returnBook() 函数:
- 获取用户输入的图书编号。
- 遍历图书链表,查找与输入编号匹配的图书。
- 如果找到图书,判断其借阅状态,并进行相应的处理:
- 如果图书已借出,更新借阅状态为未借出,并输出提示信息。
- 如果图书未借出,输出提示信息。
- 如果未找到匹配的图书,输出提示信息。
-
displayBook() 函数:
- 遍历图书链表,将每个图书的信息输出到屏幕。
- 包括图书编号、书名、作者、出版社、图书种类、图书种类编号、价格和借阅状态。
-
freeBookList() 函数:
- 遍历图书链表,释放每个节点的内存。
- 最后将头节点设置为 NULL。
流程图
以下是用流程图来展示 borrowBook() 函数的具体流程:
graph LR
A[开始]
B{输入图书编号}
C{图书列表为空?}
D[输出“没有找到相关图书!”]
E{遍历图书列表}
F{找到匹配的图书?}
G{图书已借出?}
H[输出“该图书已借出!”]
I{更新借阅状态为已借出}
J[输出“借阅成功!”]
K[输出“没有找到相关图书!”]
L[结束]
A --> B
B --> C
C --是--> D
C --否--> E
E --> F
F --是--> G
F --否--> E
G --是--> H
G --否--> I
I --> J
H --> L
J --> L
E --> K
K --> L
以下是 returnBook() 函数的流程图:
graph LR
A[开始]
B{输入图书编号}
C{图书列表为空?}
D[输出“没有找到相关图书!”]
E{遍历图书列表}
F{找到匹配的图书?}
G{图书已借出?}
H{更新借阅状态为未借出}
I[输出“归还成功!”]
J[输出“该图书未借出!”]
K[输出“没有找到相关图书!”]
L[结束]
A --> B
B --> C
C --是--> D
C --否--> E
E --> F
F --是--> G
F --否--> E
G --是--> H
G --否--> J
H --> I
I --> L
J --> L
E --> K
K --> L
以下是 displayBook() 函数的流程图:
graph LR
A[开始]
B{图书列表为空?}
C[输出“图书列表为空!”]
D{遍历图书列表}
E{输出图书信息}
F{当前节点为最后一个节点?}
G[结束]
A --> B
B --是--> C
B --否--> D
D --> E
E --> F
F --是--> G
F --否--> D
以下是 freeBookList() 函数的流程图:
graph LR
A[开始]
B{遍历图书列表}
C{释放当前节点内存}
D{设置头节点为 NULL}
E[结束]
A --> B
B --> C
C --> B
B --> D
D --> E
本文提供了一个简单的 C 语言图书管理系统示例,涵盖了借阅、归还和显示图书的功能,并附有详细的流程图和代码注释,供读者参考和学习。读者可以根据实际需求对代码进行扩展和改进,例如增加添加、删除、修改图书的功能,以及数据库连接等。
原文地址: https://www.cveoy.top/t/topic/fx81 著作权归作者所有。请勿转载和采集!