C语言图书管理系统
下面是一个简单的C语言图书管理系统实现,包含基本的图书管理功能:添加图书、删除图书、查找图书、显示所有图书和退出系统。

(图片来源网络,侵删)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100
#define MAX_TITLE_LENGTH 50
#define MAX_AUTHOR_LENGTH 30
#define MAX_ISBN_LENGTH 20
// 图书结构体
typedef struct {
char title[MAX_TITLE_LENGTH];
char author[MAX_AUTHOR_LENGTH];
char isbn[MAX_ISBN_LENGTH];
int year;
float price;
} Book;
// 图书管理系统结构体
typedef struct {
Book books[MAX_BOOKS];
int count;
} Library;
// 初始化图书馆
void initLibrary(Library *lib) {
lib->count = 0;
}
// 添加图书
void addBook(Library *lib) {
if (lib->count >= MAX_BOOKS) {
printf("图书馆已满,无法添加更多图书!\n");
return;
}
Book newBook;
printf("请输入书名: ");
scanf(" %[^\n]", newBook.title);
printf("请输入作者: ");
scanf(" %[^\n]", newBook.author);
printf("请输入ISBN: ");
scanf(" %[^\n]", newBook.isbn);
printf("请输入出版年份: ");
scanf("%d", &newBook.year);
printf("请输入价格: ");
scanf("%f", &newBook.price);
lib->books[lib->count++] = newBook;
printf("图书添加成功!\n");
}
// 删除图书
void deleteBook(Library *lib) {
char isbn[MAX_ISBN_LENGTH];
printf("请输入要删除的图书ISBN: ");
scanf(" %[^\n]", isbn);
int found = 0;
for (int i = 0; i < lib->count; i++) {
if (strcmp(lib->books[i].isbn, isbn) == 0) {
found = 1;
// 将后面的图书前移
for (int j = i; j < lib->count - 1; j++) {
lib->books[j] = lib->books[j + 1];
}
lib->count--;
printf("图书删除成功!\n");
break;
}
}
if (!found) {
printf("未找到ISBN为 %s 的图书!\n", isbn);
}
}
// 查找图书
void searchBook(Library *lib) {
char keyword[MAX_TITLE_LENGTH];
printf("请输入书名或作者进行搜索: ");
scanf(" %[^\n]", keyword);
int found = 0;
for (int i = 0; i < lib->count; i++) {
if (strstr(lib->books[i].title, keyword) != NULL ||
strstr(lib->books[i].author, keyword) != NULL) {
printf("找到匹配的图书:\n");
printf("书名: %s\n", lib->books[i].title);
printf("作者: %s\n", lib->books[i].author);
printf("ISBN: %s\n", lib->books[i].isbn);
printf("出版年份: %d\n", lib->books[i].year);
printf("价格: %.2f\n", lib->books[i].price);
printf("------------------------\n");
found = 1;
}
}
if (!found) {
printf("未找到匹配的图书!\n");
}
}
// 显示所有图书
void displayBooks(Library *lib) {
if (lib->count == 0) {
printf("图书馆中没有图书!\n");
return;
}
printf("图书馆中的所有图书:\n");
printf("------------------------------------------------------------\n");
printf("%-30s %-20s %-15s %-6s %-8s\n",
"书名", "作者", "ISBN", "年份", "价格");
printf("------------------------------------------------------------\n");
for (int i = 0; i < lib->count; i++) {
printf("%-30s %-20s %-15s %-6d %-8.2f\n",
lib->books[i].title,
lib->books[i].author,
lib->books[i].isbn,
lib->books[i].year,
lib->books[i].price);
}
printf("------------------------------------------------------------\n");
printf("总计: %d 本图书\n", lib->count);
}
// 显示菜单
void displayMenu() {
printf("\n===== 图书管理系统 =====\n");
printf("1. 添加图书\n");
printf("2. 删除图书\n");
printf("3. 查找图书\n");
printf("4. 显示所有图书\n");
printf("5. 退出系统\n");
printf("========================\n");
printf("请选择操作 (1-5): ");
}
int main() {
Library lib;
initLibrary(&lib);
int choice;
do {
displayMenu();
scanf("%d", &choice);
switch (choice) {
case 1:
addBook(&lib);
break;
case 2:
deleteBook(&lib);
break;
case 3:
searchBook(&lib);
break;
case 4:
displayBooks(&lib);
break;
case 5:
printf("感谢使用图书管理系统,再见!\n");
break;
default:
printf("无效的选择,请重新输入!\n");
}
} while (choice != 5);
return 0;
}
功能说明
- 添加图书:输入图书信息(书名、作者、ISBN、出版年份、价格)并添加到系统中
- 删除图书:通过ISBN号删除指定图书
- 查找图书:通过书名或作者关键字搜索图书
- 显示所有图书:以表格形式显示图书馆中所有图书信息
- 退出系统:结束程序运行
使用说明
- 编译并运行程序
- 根据菜单提示输入数字选择相应功能
- 按照程序提示输入相关信息
- 选择5退出系统
扩展建议
如果需要进一步完善这个系统,可以考虑添加以下功能:
- 将图书数据保存到文件中,实现持久化存储
- 按不同条件排序(如按出版年份、价格等)
- 添加用户管理功能(管理员、普通用户等不同权限)
- 增加图书借阅功能
- 添加图书分类功能
这个实现是一个基础版本,您可以根据实际需求进行修改和扩展。

(图片来源网络,侵删)
