写一个C语言图书信息管理系统的完整代码,要求用到抽象数据类型
时间: 2024-09-11 09:16:56 浏览: 43
编写一个完整的C语言图书信息管理系统涉及到设计和实现多种功能,包括书籍的添加、删除、查询和更新等操作。这里提供一个简化的版本,使用结构体作为抽象数据类型(ADT),代表图书的信息,并结合数组实现基本管理。由于文本限制,这里只给出关键部分的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_BOOKS 10
typedef struct {
char title[50];
char author[50];
int year;
} Book;
Book books[MAX_BOOKS]; // 存储书籍的数组
int num_books = 0; // 当前书的数量
void add_book(char *title, char *author, int year) {
if (num_books < MAX_BOOKS) {
strcpy(books[num_books].title, title);
strcpy(books[num_books].author, author);
books[num_books].year = year;
num_books++;
} else {
printf("书籍已满,无法添加。\n");
}
}
void remove_book(int index) {
if (index >= 0 && index < num_books) {
memmove(&books[index], &books[index + 1], sizeof(Book) * (num_books - index - 1));
num_books--;
} else {
printf("无效索引。\n");
}
}
void search_book(char *title_search) {
for (int i = 0; i < num_books; i++) {
if (strcmp(title_search, books[i].title) == 0) {
printf("标题:%s\n作者:%s\n年份:%d\n", books[i].title, books[i].author, books[i].year);
break;
}
}
}
// 其他函数如更新书籍信息可以类似编写...
int main() {
while (true) {
printf("\n1. 添加书籍\n2. 删除书籍\n3. 搜索书籍\n4. 退出系统\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
add_book("输入标题", "输入作者", 2023);
break;
case 2:
int index;
scanf("%d", &index);
remove_book(index - 1); // 减一因为索引从0开始
break;
case 3:
char title_search[50];
scanf("%s", title_search);
search_book(title_search);
break;
case 4:
return 0;
default:
printf("无效选择。\n");
}
}
}
```
这个示例仅实现了基础的功能,实际项目可能需要更复杂的数据结构和更多的错误处理。运行此程序后,用户可以选择相应的选项进行操作。