用顺序表实现图书管理系统
时间: 2023-09-09 07:06:29 浏览: 112
好的,我可以为您解答该问题。首先,我们需要确定图书管理系统需要存储哪些信息,例如书名、作者、出版社、ISBN、价格等。然后,我们可以创建一个结构体来表示每一本书的信息,如下所示:
```c
typedef struct {
char name[50]; // 书名
char author[20]; // 作者
char publisher[30]; // 出版社
char ISBN[20]; // ISBN 号
float price; // 价格
} Book;
```
接下来,我们需要使用顺序表来存储图书信息。我们可以定义一个动态分配的数组来存储图书信息,如下所示:
```c
#define MAX_SIZE 100 // 数组的最大长度
typedef struct {
Book data[MAX_SIZE]; // 存储图书信息的数组
int length; // 当前图书的数量
} BookList;
```
然后,我们可以编写一些函数来实现图书管理系统的基本操作,例如添加图书、删除图书、查找图书、显示所有图书等。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
char name[50]; // 书名
char author[20]; // 作者
char publisher[30]; // 出版社
char ISBN[20]; // ISBN 号
float price; // 价格
} Book;
#define MAX_SIZE 100 // 数组的最大长度
typedef struct {
Book data[MAX_SIZE]; // 存储图书信息的数组
int length; // 当前图书的数量
} BookList;
// 初始化图书列表
void initBookList(BookList* list) {
list->length = 0;
}
// 添加图书
void addBook(BookList* list, Book book) {
if (list->length < MAX_SIZE) {
list->data[list->length++] = book;
}
}
// 删除图书
void deleteBook(BookList* list, char* ISBN) {
int i;
for (i = 0; i < list->length; i++) {
if (strcmp(list->data[i].ISBN, ISBN) == 0) {
break;
}
}
if (i < list->length) {
for (; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
}
}
// 查找图书
Book* findBook(BookList* list, char* ISBN) {
int i;
for (i = 0; i < list->length; i++) {
if (strcmp(list->data[i].ISBN, ISBN) == 0) {
return &list->data[i];
}
}
return NULL;
}
// 显示所有图书
void displayBooks(BookList* list) {
int i;
for (i = 0; i < list->length; i++) {
printf("书名:%s,作者:%s,出版社:%s,ISBN:%s,价格:%f\n",
list->data[i].name, list->data[i].author, list->data[i].publisher,
list->data[i].ISBN, list->data[i].price);
}
}
int main() {
BookList list;
initBookList(&list);
Book book1 = {"C Primer Plus", "Stephen Prata", "人民邮电出版社", "9787115337587", 79.00};
Book book2 = {"C++ Primer", "Stanley B. Lippman", "机械工业出版社", "9787111128069", 109.00};
Book book3 = {"Python编程从入门到实践", "Eric Matthes", "人民邮电出版社", "9787111594642", 79.00};
addBook(&list, book1);
addBook(&list, book2);
addBook(&list, book3);
displayBooks(&list);
deleteBook(&list, "9787115337587");
Book* book = findBook(&list, "9787111128069");
if (book) {
printf("查找到的图书:书名:%s,作者:%s,出版社:%s,ISBN:%s,价格:%f\n",
book->name, book->author, book->publisher, book->ISBN, book->price);
} else {
printf("未找到该图书!\n");
}
displayBooks(&list);
return 0;
}
```
以上就是用顺序表实现图书管理系统的基本思路和示例代码。当然,实际应用中还需要考虑更多的细节和功能,例如图书借阅、归还、统计等。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)