C语言链表是一种常用的数据结构,通过链表可以实现一些比较复杂的数据管理系统。本篇攻略将讲解如何使用C语言链表实现一个简单的图书管理系统。整个系统的实现分为以下几步:
- 定义图书数据结构。在本例中,我们需要使用结构体来存储每一本图书的信息,如图书编号、图书名称、图书作者等。
struct Book {
int id;
char title[50];
char author[50];
char publisher[50];
int year;
int price;
struct Book* next;
};
- 定义链表。在本例中,我们需要使用链表来管理多本图书的信息。同时,需要使用头结点来记录链表的起始位置。
struct Book* head = NULL;
void addBook(int id, char title[], char author[], char publisher[], int year, int price) {
struct Book* book = (struct Book*)malloc(sizeof(struct Book));
book -> id = id;
strcpy(book -> title, title);
strcpy(book -> author, author);
strcpy(book -> publisher, publisher);
book -> year = year;
book -> price = price;
book -> next = NULL;
if (head == NULL) {
head = book;
} else {
struct Book* temp = head;
while (temp -> next != NULL) {
temp = temp -> next;
}
temp -> next = book;
}
}
- 实现图书管理系统的基本操作。在本例中,我们需要实现添加图书,删除图书,修改图书和查询图书等基本操作。
void addBook(int id, char title[], char author[], char publisher[], int year, int price);
void deleteBook(int id) {
if (head == NULL) {
printf("您还没有添加图书!\n");
return;
} else {
struct Book* temp = head;
struct Book* prev = NULL;
while (temp != NULL && temp -> id != id) {
prev = temp;
temp = temp -> next;
}
if (temp == NULL) {
printf("您要删除的图书不存在!\n");
} else {
if (prev == NULL) {
head = temp -> next;
} else {
prev -> next = temp -> next;
}
free(temp);
printf("已成功删除图书!\n");
}
}
}
void modifyBook(int id, char title[], char author[], char publisher[], int year, int price) {
if (head == NULL) {
printf("您还没有添加图书!\n");
return;
} else {
struct Book* temp = head;
while (temp != NULL && temp -> id != id) {
temp = temp -> next;
}
if (temp == NULL) {
printf("您要修改的图书不存在!\n");
} else {
strcpy(temp -> title, title);
strcpy(temp -> author, author);
strcpy(temp -> publisher, publisher);
temp -> year = year;
temp -> price = price;
printf("已成功修改图书信息!\n");
}
}
}
void queryBook(int id) {
if (head == NULL) {
printf("您还没有添加图书!\n");
return;
} else {
struct Book* temp = head;
int count = 0;
while (temp != NULL) {
if (temp -> id == id) {
printf("编号:%d\n", temp -> id);
printf("名称:%s\n", temp -> title);
printf("作者:%s\n", temp -> author);
printf("出版社:%s\n", temp -> publisher);
printf("年份:%d\n", temp -> year);
printf("价格:%d元\n", temp -> price);
count++;
}
temp = temp -> next;
}
if (count == 0) {
printf("您要查询的图书不存在!\n");
}
}
}
- 使用示例。使用定义好的函数,用简单的实例演示如何添加一本图书以及如何删除一本图书。
int main() {
addBook(1, "The C Programming Language", "Brian W. Kernighan, Dennis M. Ritchie", "Prentice Hall", 1978, 25);
addBook(2, "Head First Design Patterns", "Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates", "O'Reilly Media", 2004, 38);
addBook(3, "Clean Code: A Handbook of Agile Software Craftsmanship", "Robert C. Martin", "Prentice Hall", 2008, 44);
queryBook(2); // 查询第2本图书的信息
deleteBook(3); //删除第3本图书
queryBook(3); //查询第3本图书的信息(应该报错)
return 0;
}
通过以上的实现,我们可以很容易地使用C语言链表实现一个简单的图书管理系统。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言链表实现简单图书管理系统 - Python技术站