c语言图书管理系统高级版
时间: 2023-08-06 11:05:54 浏览: 79
好的,我可以为您提供一份基于C语言的图书管理系统高级版的代码示例。
首先,定义一些数据结构和常量:
```c
#define MAX_BOOKS 1000 // 最大图书数量
// 图书的数据结构
struct Book {
char title[100]; // 书名
char author[50]; // 作者
char publisher[50]; // 出版社
int year; // 出版年份
int price; // 价格
int amount; // 数量
};
// 图书管理系统的数据结构
struct Library {
struct Book books[MAX_BOOKS]; // 图书数组
int num_books; // 图书数量
};
// 初始化图书管理系统
void init_library(struct Library *lib) {
lib->num_books = 0;
}
// 添加一本图书
void add_book(struct Library *lib, struct Book book) {
lib->books[lib->num_books] = book;
lib->num_books++;
}
// 根据书名查找图书
int find_book_by_title(struct Library *lib, char *title) {
for (int i = 0; i < lib->num_books; i++) {
if (strcmp(lib->books[i].title, title) == 0) {
return i;
}
}
return -1;
}
// 根据作者查找图书
int find_book_by_author(struct Library *lib, char *author) {
for (int i = 0; i < lib->num_books; i++) {
if (strcmp(lib->books[i].author, author) == 0) {
return i;
}
}
return -1;
}
// 根据出版社查找图书
int find_book_by_publisher(struct Library *lib, char *publisher) {
for (int i = 0; i < lib->num_books; i++) {
if (strcmp(lib->books[i].publisher, publisher) == 0) {
return i;
}
}
return -1;
}
// 删除一本图书
void remove_book(struct Library *lib, char *title) {
int index = find_book_by_title(lib, title);
if (index != -1) {
for (int i = index; i < lib->num_books - 1; i++) {
lib->books[i] = lib->books[i + 1];
}
lib->num_books--;
}
}
// 显示一本图书的详细信息
void show_book(struct Book book) {
printf("书名:%s\n", book.title);
printf("作者:%s\n", book.author);
printf("出版社:%s\n", book.publisher);
printf("出版年份:%d\n", book.year);
printf("价格:%d\n", book.price);
printf("数量:%d\n", book.amount);
}
// 显示所有图书的简要信息
void show_all_books(struct Library *lib) {
for (int i = 0; i < lib->num_books; i++) {
printf("%s\t%s\t%s\t%d\n", lib->books[i].title, lib->books[i].author, lib->books[i].publisher, lib->books[i].year);
}
}
```
然后,实现基本的菜单功能:
```c
int main() {
struct Library lib;
init_library(&lib);
while (1) {
int choice;
printf("欢迎使用图书管理系统,请选择操作:\n");
printf("1. 添加图书\n");
printf("2. 删除图书\n");
printf("3. 查找图书\n");
printf("4. 显示所有图书\n");
printf("0. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1: {
struct Book book;
printf("请输入书名:");
scanf("%s", book.title);
printf("请输入作者:");
scanf("%s", book.author);
printf("请输入出版社:");
scanf("%s", book.publisher);
printf("请输入出版年份:");
scanf("%d", &book.year);
printf("请输入价格:");
scanf("%d", &book.price);
printf("请输入数量:");
scanf("%d", &book.amount);
add_book(&lib, book);
printf("添加成功!\n");
break;
}
case 2: {
char title[100];
printf("请输入书名:");
scanf("%s", title);
remove_book(&lib, title);
printf("删除成功!\n");
break;
}
case 3: {
printf("请选择查找方式:\n");
printf("1. 按书名查找\n");
printf("2. 按作者查找\n");
printf("3. 按出版社查找\n");
int find_choice;
scanf("%d", &find_choice);
switch (find_choice) {
case 1: {
char title[100];
printf("请输入书名:");
scanf("%s", title);
int index = find_book_by_title(&lib, title);
if (index != -1) {
show_book(lib.books[index]);
} else {
printf("没有找到该书!\n");
}
break;
}
case 2: {
char author[50];
printf("请输入作者:");
scanf("%s", author);
int index = find_book_by_author(&lib, author);
if (index != -1) {
show_book(lib.books[index]);
} else {
printf("没有找到该书!\n");
}
break;
}
case 3: {
char publisher[50];
printf("请输入出版社:");
scanf("%s", publisher);
int index = find_book_by_publisher(&lib, publisher);
if (index != -1) {
show_book(lib.books[index]);
} else {
printf("没有找到该书!\n");
}
break;
}
default:
printf("输入有误!\n");
break;
}
break;
}
case 4: {
printf("所有图书的简要信息如下:\n");
show_all_books(&lib);
break;
}
case 0:
printf("再见!\n");
return 0;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
}
```
这是一个基本的图书管理系统,您可以根据自己的需求进行修改和扩展。
阅读全文