c语言图书管理系统
时间: 2023-07-03 11:06:16 浏览: 133
好的,一个简单的C语言图书管理系统可以包括以下功能:
1. 添加书籍:用户输入书籍的名称、作者、出版社、出版日期等信息,系统将其保存在图书库中。
2. 删除书籍:用户输入要删除的书籍名称,系统将其从图书库中删除。
3. 修改书籍信息:用户输入要修改的书籍名称,可以修改书籍的各项信息。
4. 查询书籍:用户输入关键词,系统可以根据书名、作者、出版社等信息查询相关的书籍。
5. 显示所有书籍:系统将所有书籍的信息按照一定的格式输出。
6. 保存数据:系统将当前的图书库保存到文件中,以便下次打开程序时能够恢复数据。
下面是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义书籍结构体
typedef struct {
char name[50]; // 书名
char author[20]; // 作者
char publisher[30]; // 出版社
char publish_date[15]; // 出版日期
} Book;
// 定义全局变量
Book book_list[100]; // 图书库
int book_count = 0; // 图书数量
// 函数声明
void add_book();
void delete_book();
void modify_book();
void search_book();
void display_books();
void save_data();
void load_data();
int main() {
int choice = 0;
load_data(); // 加载数据
while (1) {
// 显示菜单
printf("\n======= 图书管理系统 =======\n");
printf("1. 添加书籍\n");
printf("2. 删除书籍\n");
printf("3. 修改书籍信息\n");
printf("4. 查询书籍\n");
printf("5. 显示所有书籍\n");
printf("6. 保存数据\n");
printf("0. 退出系统\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_book();
break;
case 2:
delete_book();
break;
case 3:
modify_book();
break;
case 4:
search_book();
break;
case 5:
display_books();
break;
case 6:
save_data();
break;
case 0:
// 退出程序
save_data();
printf("感谢使用图书管理系统,再见!\n");
exit(0);
default:
printf("无效的选择,请重新输入!\n");
break;
}
}
return 0;
}
// 添加书籍
void add_book() {
Book book;
printf("\n请输入书籍信息:\n");
printf("书名:");
scanf("%s", book.name);
printf("作者:");
scanf("%s", book.author);
printf("出版社:");
scanf("%s", book.publisher);
printf("出版日期:");
scanf("%s", book.publish_date);
book_list[book_count++] = book;
printf("书籍已添加成功!\n");
}
// 删除书籍
void delete_book() {
char name[50];
int i, index = -1;
printf("\n请输入要删除的书籍名称:");
scanf("%s", name);
for (i = 0; i < book_count; i++) {
if (strcmp(book_list[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该书籍!\n");
} else {
for (i = index; i < book_count - 1; i++) {
book_list[i] = book_list[i + 1];
}
book_count--;
printf("书籍已删除成功!\n");
}
}
// 修改书籍信息
void modify_book() {
char name[50];
int i, index = -1;
printf("\n请输入要修改的书籍名称:");
scanf("%s", name);
for (i = 0; i < book_count; i++) {
if (strcmp(book_list[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该书籍!\n");
} else {
printf("\n请输入新的书籍信息:\n");
printf("书名:");
scanf("%s", book_list[index].name);
printf("作者:");
scanf("%s", book_list[index].author);
printf("出版社:");
scanf("%s", book_list[index].publisher);
printf("出版日期:");
scanf("%s", book_list[index].publish_date);
printf("书籍信息已修改成功!\n");
}
}
// 查询书籍
void search_book() {
char keyword[50];
int i, count = 0;
printf("\n请输入查询关键词:");
scanf("%s", keyword);
printf("\n查询结果如下:\n");
printf("名称\t作者\t出版社\t出版日期\n");
for (i = 0; i < book_count; i++) {
if (strstr(book_list[i].name, keyword) != NULL ||
strstr(book_list[i].author, keyword) != NULL ||
strstr(book_list[i].publisher, keyword) != NULL) {
printf("%s\t%s\t%s\t%s\n", book_list[i].name, book_list[i].author, book_list[i].publisher, book_list[i].publish_date);
count++;
}
}
if (count == 0) {
printf("未找到相关书籍!\n");
}
}
// 显示所有书籍
void display_books() {
int i;
printf("\n当前图书库中共有 %d 本书籍:\n", book_count);
printf("名称\t作者\t出版社\t出版日期\n");
for (i = 0; i < book_count; i++) {
printf("%s\t%s\t%s\t%s\n", book_list[i].name, book_list[i].author, book_list[i].publisher, book_list[i].publish_date);
}
}
// 保存数据
void save_data() {
FILE *fp;
int i;
fp = fopen("book.dat", "wb");
fwrite(&book_count, sizeof(int), 1, fp);
for (i = 0; i < book_count; i++) {
fwrite(&book_list[i], sizeof(Book), 1, fp);
}
fclose(fp);
printf("数据已保存成功!\n");
}
// 加载数据
void load_data() {
FILE *fp;
int i;
fp = fopen("book.dat", "rb");
if (fp == NULL) {
return;
}
fread(&book_count, sizeof(int), 1, fp);
for (i = 0; i < book_count; i++) {
fread(&book_list[i], sizeof(Book), 1, fp);
}
fclose(fp);
printf("数据已加载成功!\n");
}
```
这个程序使用了结构体来表示书籍的各项信息,使用全局变量来存储图书库和图书数量。函数实现了添加、删除、修改、查询、显示和保存数据等功能。保存和加载数据使用了文件操作,将数据保存到名为book.dat的文件中。
阅读全文