用c语言来写一个图书馆管理系统
时间: 2023-06-18 17:02:05 浏览: 42
好的,以下是一个简单的图书馆管理系统的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//定义图书结构体
typedef struct Book {
char title[50];
char author[50];
int num;
} Book;
//定义链表结构体
typedef struct Node {
Book book;
struct Node *next;
} Node;
//定义全局变量head指针
Node *head = NULL;
//函数声明
void addBook();
void deleteBook();
void searchBook();
void displayBooks();
//主函数
int main() {
int choice;
do {
printf("\n图书馆管理系统\n");
printf("1. 添加图书\n");
printf("2. 删除图书\n");
printf("3. 查找图书\n");
printf("4. 显示所有图书\n");
printf("0. 退出\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
addBook();
break;
case 2:
deleteBook();
break;
case 3:
searchBook();
break;
case 4:
displayBooks();
break;
case 0:
printf("\n谢谢使用!\n");
break;
default:
printf("\n输入有误,请重新输入!\n");
break;
}
} while (choice != 0);
return 0;
}
//添加图书
void addBook() {
Node *newNode = (Node*) malloc(sizeof(Node));
printf("\n请输入图书名称:");
scanf("%s", newNode->book.title);
printf("请输入作者名称:");
scanf("%s", newNode->book.author);
printf("请输入数量:");
scanf("%d", &newNode->book.num);
newNode->next = head;
head = newNode;
printf("\n添加成功!\n");
}
//删除图书
void deleteBook() {
char title[50];
Node *prevNode = head;
Node *currNode = head->next;
printf("\n请输入要删除的图书名称:");
scanf("%s", title);
if (strcmp(head->book.title, title) == 0) {
head = head->next;
free(prevNode);
printf("\n删除成功!\n");
return;
}
while (currNode != NULL) {
if (strcmp(currNode->book.title, title) == 0) {
prevNode->next = currNode->next;
free(currNode);
printf("\n删除成功!\n");
return;
} else {
prevNode = currNode;
currNode = currNode->next;
}
}
printf("\n未找到该图书!\n");
}
//查找图书
void searchBook() {
char title[50];
Node *currNode = head;
printf("\n请输入要查找的图书名称:");
scanf("%s", title);
while (currNode != NULL) {
if (strcmp(currNode->book.title, title) == 0) {
printf("\n图书名称:%s\n", currNode->book.title);
printf("作者名称:%s\n", currNode->book.author);
printf("数量:%d\n", currNode->book.num);
return;
} else {
currNode = currNode->next;
}
}
printf("\n未找到该图书!\n");
}
//显示所有图书
void displayBooks() {
Node *currNode = head;
if (currNode == NULL) {
printf("\n暂无图书!\n");
return;
}
printf("\n图书列表:\n");
while (currNode != NULL) {
printf("图书名称:%s\n", currNode->book.title);
printf("作者名称:%s\n", currNode->book.author);
printf("数量:%d\n", currNode->book.num);
currNode = currNode->next;
}
}
```
这个图书馆管理系统使用链表来存储图书信息,可以添加、删除、查找和显示所有图书。您可以根据自己的需求进行修改和扩展。