用C语言设计一个图书管理系统
时间: 2023-10-03 20:05:49 浏览: 41
好的,下面是一个简单的图书管理系统的代码,仅供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100 // 最大图书数量
#define MAX_TITLE 50 // 图书标题最大长度
// 图书结构体
typedef struct {
char title[MAX_TITLE];
char author[MAX_TITLE];
int year;
int available;
} Book;
// 全局变量
Book library[MAX_BOOKS];
int num_books = 0;
// 函数声明
void add_book();
void remove_book();
void list_books();
void search_books();
int main() {
int choice;
while (1) {
printf("\n\n");
printf("1. 添加图书\n");
printf("2. 删除图书\n");
printf("3. 列出所有图书\n");
printf("4. 查找图书\n");
printf("5. 退出\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_book();
break;
case 2:
remove_book();
break;
case 3:
list_books();
break;
case 4:
search_books();
break;
case 5:
exit(0);
}
}
return 0;
}
// 添加图书
void add_book() {
if (num_books >= MAX_BOOKS) {
printf("图书数量已达上限,无法添加!\n");
return;
}
Book new_book;
printf("请输入图书标题:");
scanf(" %[^\n]s", new_book.title);
printf("请输入作者名字:");
scanf(" %[^\n]s", new_book.author);
printf("请输入出版年份:");
scanf("%d", &new_book.year);
new_book.available = 1;
library[num_books] = new_book;
num_books++;
printf("图书添加成功!\n");
}
// 删除图书
void remove_book() {
if (num_books == 0) {
printf("当前没有图书可供删除!\n");
return;
}
char title[MAX_TITLE];
printf("请输入要删除的图书的标题:");
scanf(" %[^\n]s", title);
for (int i = 0; i < num_books; i++) {
if (strcmp(title, library[i].title) == 0) {
// 找到了要删除的图书
for (int j = i; j < num_books - 1; j++) {
library[j] = library[j + 1];
}
num_books--;
printf("图书删除成功!\n");
return;
}
}
printf("没有找到要删除的图书!\n");
}
// 列出所有图书
void list_books() {
if (num_books == 0) {
printf("当前没有任何图书!\n");
return;
}
printf("%-20s%-20s%-10s%s\n", "标题", "作者", "年份", "状态");
for (int i = 0; i < num_books; i++) {
printf("%-20s%-20s%-10d%s\n", library[i].title, library[i].author, library[i].year, library[i].available ? "可借" : "已借出");
}
}
// 查找图书
void search_books() {
if (num_books == 0) {
printf("当前没有任何图书!\n");
return;
}
char keyword[MAX_TITLE];
printf("请输入要查找的关键字(标题或作者):");
scanf(" %[^\n]s", keyword);
int found = 0;
printf("%-20s%-20s%-10s%s\n", "标题", "作者", "年份", "状态");
for (int i = 0; i < num_books; i++) {
if (strstr(library[i].title, keyword) != NULL || strstr(library[i].author, keyword) != NULL) {
printf("%-20s%-20s%-10d%s\n", library[i].title, library[i].author, library[i].year, library[i].available ? "可借" : "已借出");
found = 1;
}
}
if (!found) {
printf("没有找到包含关键字 \"%s\" 的图书!\n", keyword);
}
}
```
这个图书管理系统可以添加、删除、列出所有图书和查找图书。每本图书有一个标题、作者、出版年份和状态(是否可借),最多可以存储100本图书。