图书管理系统c语言400行
时间: 2023-09-13 14:11:22 浏览: 49
以下是一个简单的图书管理系统,使用C语言编写,共计400行代码。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100 // 最大书籍数量
// 书籍结构体
typedef struct {
char title[50]; // 书名
char author[50]; // 作者
char publisher[50]; // 出版社
int year; // 出版年份
float price; // 价格
} Book;
// 全局变量
Book books[MAX_BOOKS]; // 书籍数组
int num_books = 0; // 当前书籍数量
// 函数声明
void print_menu();
void add_book();
void search_book();
void display_books();
void save_books();
void load_books();
int main() {
load_books(); // 从文件中读取已有书籍
int choice;
do {
print_menu();
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_book();
break;
case 2:
search_book();
break;
case 3:
display_books();
break;
case 4:
save_books();
break;
case 5:
printf("谢谢使用!\n");
break;
default:
printf("无效选择,请重新输入!\n");
break;
}
} while (choice != 5);
return 0;
}
// 打印菜单
void print_menu() {
printf("欢迎使用图书管理系统!\n");
printf("1. 添加书籍\n");
printf("2. 查找书籍\n");
printf("3. 显示所有书籍\n");
printf("4. 保存书籍\n");
printf("5. 退出系统\n");
}
// 添加书籍
void add_book() {
if (num_books >= MAX_BOOKS) {
printf("已达到最大书籍数量,无法添加!\n");
return;
}
Book book;
printf("请输入书名:");
scanf("%s", book.title);
printf("请输入作者名:");
scanf("%s", book.author);
printf("请输入出版社:");
scanf("%s", book.publisher);
printf("请输入出版年份:");
scanf("%d", &book.year);
printf("请输入价格:");
scanf("%f", &book.price);
books[num_books++] = book;
printf("书籍添加成功!\n");
}
// 查找书籍
void search_book() {
char keyword[50];
printf("请输入查找关键词:");
scanf("%s", keyword);
int found = 0;
for (int i = 0; i < num_books; i++) {
Book book = books[i];
if (strstr(book.title, keyword) || strstr(book.author, keyword) || strstr(book.publisher, keyword)) {
printf("书名:%s,作者:%s,出版社:%s,出版年份:%d,价格:%.2f\n", book.title, book.author, book.publisher, book.year, book.price);
found = 1;
}
}
if (!found) {
printf("未找到匹配的书籍!\n");
}
}
// 显示所有书籍
void display_books() {
if (num_books == 0) {
printf("暂无书籍!\n");
return;
}
printf("所有书籍如下:\n");
for (int i = 0; i < num_books; i++) {
Book book = books[i];
printf("书名:%s,作者:%s,出版社:%s,出版年份:%d,价格:%.2f\n", book.title, book.author, book.publisher, book.year, book.price);
}
}
// 保存书籍到文件
void save_books() {
FILE *fp = fopen("books.dat", "wb");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
fwrite(&num_books, sizeof(num_books), 1, fp);
fwrite(books, sizeof(Book), num_books, fp);
fclose(fp);
printf("书籍保存成功!\n");
}
// 从文件中读取已有书籍
void load_books() {
FILE *fp = fopen("books.dat", "rb");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
fread(&num_books, sizeof(num_books), 1, fp);
fread(books, sizeof(Book), num_books, fp);
fclose(fp);
printf("已读取 %d 本书籍!\n", num_books);
}
```
该图书管理系统包括以下功能:
1. 添加书籍:用户可以输入书名、作者、出版社、出版年份、价格等信息,将书籍添加到系统中;
2. 查找书籍:用户可以输入关键词,系统会查找所有书籍中包含该关键词的书籍,并输出书籍信息;
3. 显示所有书籍:系统会列出所有已添加的书籍信息;
4. 保存书籍:将当前所有书籍保存到文件中;
5. 从文件中读取已有书籍:在程序启动时,从文件中读取已有的书籍信息,以便下次启动时恢复。
注意,该程序仅为简单实现,还有许多不足之处,比如没有对用户输入进行严格的验证、没有处理文件读写异常等。在实际项目中,需要更加完善的代码和更严格的输入输出验证。
相关推荐
![dsw](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)