写一个基于链式存储结构的图书信息管理系统,要有菜单。用C语言实现
时间: 2024-10-17 21:08:07 浏览: 35
在C语言中,我们可以使用链表数据结构来构建一个简单的图书信息管理系统的框架。链表是一种动态的数据结构,非常适合用于存储需要频繁添加、删除元素的情况,如图书信息。这里我会给出一个基本的设计思路,并展示核心部分的代码。
首先,我们需要定义一个结构体`Book`来表示每本书的信息,包含书名、作者和ID等字段:
```c
typedef struct Book {
char* title;
char* author;
int id;
struct Book* next; // 链接指针
} BookNode;
```
然后创建链表相关的函数:
1. 初始化链表头节点(如果为空)
```c
BookNode* createList() {
BookNode* head = (BookNode*)malloc(sizeof(BookNode));
if (head == NULL) {
printf("Memory allocation failed.\n");
return NULL;
}
head->next = NULL;
return head;
}
```
2. 插入新书
```c
void insertBook(BookNode** head, const char* title, const char* author, int id) {
BookNode* newNode = (BookNode*)malloc(sizeof(BookNode));
if (newNode == NULL) {
printf("Memory allocation failed.\n");
return;
}
newNode->title = strdup(title);
newNode->author = strdup(author);
newNode->id = id;
newNode->next = *head;
*head = newNode;
}
```
3. 显示菜单并处理用户选择
```c
void displayMenu(BookNode* head) {
printf("\n1. Add book\n2. Display books\n3. Exit\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1: // 添加书籍
// 使用输入函数获取用户信息并插入
break;
case 2: // 展示书籍列表
printBooks(head);
break;
case 3: // 退出程序
break;
default:
printf("Invalid option.\n");
}
}
// 打印链表中的所有书籍
void printBooks(BookNode* head) {
BookNode* temp = head;
while (temp != NULL) {
printf("ID: %d, Title: %s, Author: %s\n", temp->id, temp->title, temp->author);
temp = temp->next;
}
}
```
完整应用的主循环会包括创建链表、显示菜单以及处理用户的操作,直到用户选择退出。这只是一个基础版本,实际项目可能会加入更多功能,比如搜索、编辑和删除图书。
阅读全文