#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100
// 定义图书结构体
struct Book {
char title[100];
float price;
char publisher[100];
};
// 定义图书列表
struct Book books[MAX_BOOKS];
int n_books = 0;
// 添加图书
void add_book(struct Book book) {
if (n_books < MAX_BOOKS) {
books[n_books] = book;
n_books++;
printf("图书添加成功!\n");
} else {
printf("图书数量已达到最大值!\n");
}
}
// 删除图书
void delete_book(char *title) {
int i;
for (i = 0; i < n_books; i++) {
if (strcmp(books[i].title, title) == 0) {
for (int j = i; j < n_books - 1; j++) {
books[j] = books[j + 1];
}
n_books--;
printf("图书删除成功!\n");
return;
}
}
printf("图书不存在!\n");
}
// 修改图书
void update_book(char *title, char *new_title, float new_price, char *new_publisher) {
int i;
for (i = 0; i < n_books; i++) {
if (strcmp(books[i].title, title) == 0) {
strcpy(books[i].title, new_title);
books[i].price = new_price;
strcpy(books[i].publisher, new_publisher);
printf("图书修改成功!\n");
return;
}
}
printf("图书不存在!\n");
}
// 检索图书
void search_book(char *keyword) {
int i;
for (i = 0; i < n_books; i++) {
if (strstr(books[i].title, keyword) || strstr(books[i].publisher, keyword)) {
printf("书名:%s, 价格:%.2f, 出版社:%s\n", books[i].title, books[i].price, books[i].publisher);
}
}
}
// 输出图书信息
void list_books() {
int i;
for (i = 0; i < n_books; i++) {
printf("书名:%s, 价格:%.2f, 出版社:%s\n", books[i].title, books[i].price, books[i].publisher);
}
}
// 主函数
int main() {
int choice;
do {
printf("\n图书信息管理系统\n");
printf("1. 添加图书\n");
printf("2. 删除图书\n");
printf("3. 修改图书\n");
printf("4. 检索图书\n");
printf("5. 列出所有图书\n");
printf("0. 退出\n");
printf("请选择一个操作(输入数字):");
scanf("%d", &choice);
switch (choice) {
case 1:
char title[100];
float price;
char publisher[100];
printf("请输入书名:");
scanf("%s", title);
printf("请输入价格:");
scanf("%f", &price);
printf("请输入出版社:");
scanf("%s", publisher);
struct Book book = {title, price, publisher};
add_book(book);
break;
case 2:
char del_title[100];
printf("请输入要删除的书名:");
scanf("%s", del_title);
delete_book(del_title);
break;
case 3:
char upd_title[100];
float upd_price;
char upd_publisher[100];
printf("请输入要修改的书名:");
scanf("%s", upd_title);
printf("请输入新的书名(输入空格表示不修改):");
scanf("%s", title);
printf("请输入新的价格(输入空格表示不修改):");
scanf("%f", &upd_price);
printf("请输入新的出版社(输入空格表示不修改):");
scanf("%s", upd_publisher);
update_book(upd_title, title, upd_price, upd_publisher);
break;
case 4:
char serch_keyword[100];
printf("请输入检索关键词:");
scanf("%s", serch_keyword);
search_book(serch_keyword);
break;
case 5:
list_books();
break;
case 0:
printf("退出程序。");
break;
default:
printf("无效的选择,请重新选择!\n");
break;
}
} while (choice != 0);
return 0;
}