【实训内容】 采用链表数据结构实现一“图书管理系统〞,为用户提供管理和查询服务。 图书信息包括8个数据项:书名,ISBN、作者、出版社、出版时间,入库时间, 库存量(图书馆购买此书的数量),借阅数(被借阅的数量)等信息。完成以下 操作: (1)录入:图书信息(至少10条记录): (2)删除:删除某一本图书的信息; (3)修改:修改某一本图书的信息: (4)查询:根据书名或图书ISBV等查询图书信息(查询方法不限)。 (5)借书:借出一本书,该书的借阅数增加一本。 (6)还书:还回一本书,该书的借阅数减少一本。 (7)统计:统计所有借出的图书数目,即所有图书借阅数之和。 (8)输出:输出所查询图书的信息,要求格式清晰,方便查看。
时间: 2023-11-28 15:47:48 浏览: 97
好的,这是一个比较完整的图书管理系统,需要用到链表数据结构。我可以给你提供一些思路和代码实现的框架,你可以根据自己的理解和需求进行修改和完善。
首先,我们需要定义一个图书的结构体,包括书名、ISBN、作者、出版社、出版时间、入库时间、库存量和借阅数等属性。
```c
typedef struct Book {
char name[50];
char ISBN[20];
char author[30];
char publisher[50];
char pubDate[20];
char inDate[20];
int stock;
int borrowed;
struct Book* next;
} Book;
```
然后,我们需要定义一个链表来存储图书信息。链表的每个节点都是一个图书结构体。
```c
Book* head = NULL;
void add_book() {
// 添加图书信息到链表
}
void delete_book() {
// 删除某本图书信息
}
void modify_book() {
// 修改某本图书信息
}
void search_book() {
// 根据书名或ISBN查询图书信息
}
void borrow_book() {
// 借出一本书,借阅数加一
}
void return_book() {
// 还回一本书,借阅数减一
}
void count_book() {
// 统计所有借出的图书数目
}
void print_book() {
// 输出查询到的图书信息
}
```
接下来,我们可以实现这些函数的具体操作。比如,添加图书信息到链表的函数可以这样写:
```c
void add_book() {
Book* p = (Book*)malloc(sizeof(Book));
printf("请输入图书信息:\n");
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->pubDate);
printf("入库时间:");
scanf("%s", p->inDate);
printf("库存量:");
scanf("%d", &p->stock);
p->borrowed = 0;
p->next = NULL;
if (head == NULL) {
head = p;
} else {
Book* q = head;
while (q->next != NULL) {
q = q->next;
}
q->next = p;
}
printf("添加成功!\n");
}
```
其他函数的实现也类似,需要根据具体需求进行修改和完善。最后,我们可以在主函数中调用这些函数来完成图书管理系统的操作。
```c
int main() {
int choice = 0;
while (choice != 9) {
printf("图书管理系统\n");
printf("1. 添加图书\n");
printf("2. 删除图书\n");
printf("3. 修改图书\n");
printf("4. 查询图书\n");
printf("5. 借出图书\n");
printf("6. 归还图书\n");
printf("7. 统计借出图书数\n");
printf("8. 输出查询结果\n");
printf("9. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_book();
break;
case 2:
delete_book();
break;
case 3:
modify_book();
break;
case 4:
search_book();
break;
case 5:
borrow_book();
break;
case 6:
return_book();
break;
case 7:
count_book();
break;
case 8:
print_book();
break;
case 9:
printf("再见!\n");
break;
default:
printf("无效选择!\n");
break;
}
}
return 0;
}
```
这样,一个简单的图书管理系统就完成了。
阅读全文