采用链表数据结构实现一“图书管理系统〞,为用户提供管理和查询服务。 图书信息包括8个数据项:书名,ISBN、作者、出版社、出版时间,入库时间, 库存量(图书馆购买此书的数量),借阅数(被借阅的数量)等信息。完成以下 操作:
时间: 2023-11-28 21:47:36 浏览: 83
好的,我会给出一个简单的链表数据结构实现图书管理系统的示例代码。在此之前,需要先定义图书信息的结构体,如下所示:
```c
typedef struct book {
char name[50]; // 书名
char ISBN[20]; // ISBN
char author[50]; // 作者
char publisher[50]; // 出版社
char pub_time[20]; // 出版时间
char in_time[20]; // 入库时间
int stock; // 库存量
int borrow; // 借阅数
struct book *next; // 指向下一本书的指针
} Book;
```
接下来,我们可以定义一个链表的头结点:
```c
Book *head = NULL;
```
然后,我们可以实现以下操作:
1. 添加图书信息
```c
void add_book() {
Book *p = (Book*) malloc(sizeof(Book));
printf("请输入书名:");
scanf("%s", p->name);
printf("请输入ISBN:");
scanf("%s", p->ISBN);
printf("请输入作者:");
scanf("%s", p->author);
printf("请输入出版社:");
scanf("%s", p->publisher);
printf("请输入出版时间:");
scanf("%s", p->pub_time);
printf("请输入入库时间:");
scanf("%s", p->in_time);
printf("请输入库存量:");
scanf("%d", &p->stock);
printf("请输入借阅数:");
scanf("%d", &p->borrow);
p->next = NULL;
if (head == NULL) {
head = p;
} else {
Book *q = head;
while (q->next != NULL) {
q = q->next;
}
q->next = p;
}
printf("添加成功!\n");
}
```
2. 删除图书信息
```c
void del_book() {
char ISBN[20];
printf("请输入要删除的图书的ISBN:");
scanf("%s", ISBN);
Book *p = head;
Book *q = NULL;
while (p != NULL && strcmp(p->ISBN, ISBN) != 0) {
q = p;
p = p->next;
}
if (p == NULL) {
printf("未找到该图书!\n");
} else {
if (p == head) {
head = p->next;
} else {
q->next = p->next;
}
free(p);
printf("删除成功!\n");
}
}
```
3. 修改图书信息
```c
void modify_book() {
char ISBN[20];
printf("请输入要修改的图书的ISBN:");
scanf("%s", ISBN);
Book *p = head;
while (p != NULL && strcmp(p->ISBN, ISBN) != 0) {
p = p->next;
}
if (p == NULL) {
printf("未找到该图书!\n");
} else {
printf("请输入新的书名(原书名:%s):", p->name);
scanf("%s", p->name);
printf("请输入新的作者(原作者:%s):", p->author);
scanf("%s", p->author);
printf("请输入新的出版社(原出版社:%s):", p->publisher);
scanf("%s", p->publisher);
printf("请输入新的出版时间(原出版时间:%s):", p->pub_time);
scanf("%s", p->pub_time);
printf("请输入新的入库时间(原入库时间:%s):", p->in_time);
scanf("%s", p->in_time);
printf("请输入新的库存量(原库存量:%d):", p->stock);
scanf("%d", &p->stock);
printf("请输入新的借阅数(原借阅数:%d):", p->borrow);
scanf("%d", &p->borrow);
printf("修改成功!\n");
}
}
```
4. 查询图书信息
```c
void query_book() {
char ISBN[20];
printf("请输入要查询的图书的ISBN:");
scanf("%s", ISBN);
Book *p = head;
while (p != NULL && strcmp(p->ISBN, ISBN) != 0) {
p = p->next;
}
if (p == NULL) {
printf("未找到该图书!\n");
} else {
printf("书名:%s\n", p->name);
printf("ISBN:%s\n", p->ISBN);
printf("作者:%s\n", p->author);
printf("出版社:%s\n", p->publisher);
printf("出版时间:%s\n", p->pub_time);
printf("入库时间:%s\n", p->in_time);
printf("库存量:%d\n", p->stock);
printf("借阅数:%d\n", p->borrow);
}
}
```
5. 显示所有图书信息
```c
void show_all() {
if (head == NULL) {
printf("当前没有图书信息!\n");
} else {
Book *p = head;
while (p != NULL) {
printf("书名:%s\n", p->name);
printf("ISBN:%s\n", p->ISBN);
printf("作者:%s\n", p->author);
printf("出版社:%s\n", p->publisher);
printf("出版时间:%s\n", p->pub_time);
printf("入库时间:%s\n", p->in_time);
printf("库存量:%d\n", p->stock);
printf("借阅数:%d\n", p->borrow);
p = p->next;
}
}
}
```
以上就是一个简单的链表数据结构实现图书管理系统的示例代码。
阅读全文