某学校的图书管理系统中,书本种类信息包括:书号、书名、价格三项属性,且书的种类数不超过20。编写c语言代码,分别用顺序存储方式和链式存储方式实现该图书管理系统数据结构的构建,并至少能够进行初始化、清空、增加
时间: 2024-10-17 16:03:01 浏览: 43
软件工程图书管理系统需求规格说明书.pdf
在C语言中,我们可以通过顺序存储(数组)和链式存储(结构体和指针)来实现图书管理系统的数据结构。这里我将分别展示这两种方式的基本实现:
### 一、顺序存储(数组)
```c
#include <stdio.h>
#define MAX_BOOKS 20
typedef struct {
char book_id[50];
char title[100];
float price;
} Book;
Book books[MAX_BOOKS]; // 定义数组用于顺序存储
int num_books = 0; // 记录当前书籍数量
// 初始化函数
void init_books() {
for (int i = 0; i < MAX_BOOKS; i++) {
books[i].book_id[0] = '\0';
books[i].title[0] = '\0';
books[i].price = 0.0;
}
}
// 增加书籍
void add_book(char* book_id, char* title, float price) {
if (num_books < MAX_BOOKS) {
strcpy(books[num_books].book_id, book_id);
strcpy(books[num_books].title, title);
books[num_books].price = price;
num_books++;
} else {
printf("已达最大容量,无法添加更多书籍。\n");
}
}
// 清空书籍列表
void clear_books() {
for (int i = 0; i < MAX_BOOKS; i++) {
books[i].book_id[0] = '\0';
books[i].title[0] = '\0';
books[i].price = 0.0;
}
num_books = 0;
}
// 示例操作
int main() {
init_books();
// 添加书籍...
clear_books();
return 0;
}
```
### 二、链式存储(链表)
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
char book_id[50];
char title[100];
float price;
struct Node* next;
} BookNode;
// 动态链表头节点
BookNode* books_list = NULL;
int num_books = 0;
// 链表相关函数
BookNode* create_node(char* book_id, char* title, float price) {
BookNode* newNode = (BookNode*)malloc(sizeof(BookNode));
newNode->book_id = book_id;
newNode->title = title;
newNode->price = price;
newNode->next = NULL;
return newNode;
}
void add_book_to_list(BookNode** head, char* book_id, char* title, float price) {
BookNode* newNode = create_node(book_id, title, price);
if (*head == NULL) {
*head = newNode;
} else {
BookNode* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
num_books++;
}
void delete_list(BookNode** head) {
BookNode* temp;
while (*head != NULL) {
temp = *head;
*head = (*head)->next;
free(temp);
}
num_books = 0;
}
// 示例操作
int main() {
// 初始化链表...
// 增加书籍...
delete_list(&books_list);
return 0;
}
```
阅读全文