#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\ntypedef struct Node {\n\tchar bookCode[50];\n\tchar bookName[50];\n\tchar author[50];\n\tchar publisher[50];\n\tchar bookkind[50];\n\tchar bookkinds[50];\n\tint quantity;\n\tint borrowed;\n\tstruct Node *next;\n} BookNode;\n\nBookNode *head = NULL;\n\nvoid saveBookData() {\n\tFILE *file = fopen("book_storage.txt", "w");\n\tif (file == NULL) {\n\t printf("无法保存图书信息!\n");\n\t \n\t}\n\n\tBookNode *current = head;\n\twhile (current != NULL) {\n\t fprintf(file, "%s\n", current->bookCode);\n\t fprintf(file, "%s\n", current->bookName);\n\t fprintf(file, "%s\n", current->author);\n\t fprintf(file, "%s\n", current->publisher);\n\t fprintf(file, "%s\n", current->bookkind);\n\t fprintf(file, "%s\n", current->bookkinds);\n\t fprintf(file, "%d\n", current->quantity);\n\t fprintf(file, "%d\n", current->borrowed);\n\n\t current = current->next;\n\t}\n\n\tfclose(file);\n}\nvoid loadBookData() {\n\tFILE *file = fopen("book_storage.txt", "r");\n\tif (file == NULL) {\n\t return;\n\t}\n\n\twhile (!feof(file)) {\n\t BookNode *newNode = (BookNode *)malloc(sizeof(BookNode));\n\t fscanf(file, "%s ", newNode->bookCode);\n\t fscanf(file, "%s ", newNode->bookName);\n\t fscanf(file, "%s ", newNode->author);\n\t fscanf(file, "%s ", newNode->publisher);\n\t fscanf(file, "%s ", newNode->bookkind);\n\t fscanf(file, "%s ", newNode->bookkinds);\n\t fscanf(file, "%d ", &newNode->quantity);\n\t fscanf(file, "%d ", &newNode->borrowed);\n\t newNode->next = NULL;\n\n\t if (head == NULL) {\n\t head = newNode;\n\t } else {\n\t BookNode *current = head;\n\t while (current->next != NULL) {\n\t current = current->next;\n\t }\n\t current->next = newNode;\n\t }\n\t}\n\n\tfclose(file);\n}\n\nvoid addBook() {\n\tBookNode *newNode = (BookNode *)malloc(sizeof(BookNode));\n\tprintf("请输入图书编号:");\n\tscanf("%s", newNode->bookCode);\n\tprintf("请输入书名:");\n\tscanf("%s", newNode->bookName);\n\tprintf("请输入作者:");\n\tscanf("%s", newNode->author);\n\tprintf("请输入出版社:");\n\tscanf("%s", newNode->publisher);\n\tprintf("请输入图书种类:");\n\tscanf("%s", newNode->bookkind);\n\tprintf("请输入图书种类编号:");\n\tscanf("%s", newNode->bookkinds);\n\tprintf("请输入数量:");\n\tscanf("%d", &newNode->quantity);\n\tnewNode->borrowed = 0;\n\tnewNode->next = NULL;\n\n\tif (head == NULL) {\n\t head = newNode;\n\t} else {\n\t BookNode *current = head;\n\t while (current->next != NULL) {\n\t current = current->next;\n\t }\n\t current->next = newNode;\n\t}\n\n\tprintf("添加成功!\n");\n}\n\nvoid deleteBook() {\n\tchar bookCode[20];\n\tprintf("请输入要删除的图书编号:");\n\tscanf("%s", bookCode);\n\n\tif (head == NULL) {\n\t printf("没有找到相关图书!\n");\n\t return;\n\t}\n\n\tif (strcmp(head->bookCode, bookCode) == 0) {\n\t BookNode *temp = head;\n\t head = head->next;\n\t free(temp);\n\t printf("删除成功!\n");\n\t return;\n\t}\n\n\tBookNode *current = head;\n\twhile (current->next != NULL) {\n\t if (strcmp(current->next->bookCode, bookCode) == 0) {\n\t BookNode *temp = current->next;\n\t current->next = temp->next;\n\t free(temp);\n\t printf("删除成功!\n");\n\t return;\n\t }\n\t current = current->next;\n\t}\n\n\tprintf("没有找到相关图书!\n");\n}\n\nvoid modifyBook() {\n\tchar bookCode[20];\n\tprintf("请输入要修改的图书编号:");\n\tscanf("%s", bookCode);\n\n\tif (head == NULL) {\n\t printf("没有找到相关图书!\n");\n\t return;\n\t}\n\n\tBookNode *current = head;\n\twhile (current != NULL) {\n\t if (strcmp(current->bookCode, bookCode) == 0) {\n\t printf("请输入新的书名:");\n\t scanf("%s", current->bookName);\n\t printf("请输入新的作者:");\n\t scanf("%s", current->author);\n\t printf("请输入新的出版社:");\n\t scanf("%s", current->publisher);\n\t printf("请输入新的图书种类:");\n\t scanf("%s", current->bookkind);\n\t printf("请输入新的图书种类编号:");\n\t scanf("%s", current->bookkinds);\n\t printf("请输入新的价格:");\n\t scanf("%d", &current->quantity);\n\t printf("修改成功!\n");\n\t return;\n\t }\n\t current = current->next;\n\t}\n\n\tprintf("没有找到相关图书!\n");\n}\n\nvoid searchBook() {\n\tchar bookName[50];\n\tprintf("请输入要查找的书名:");\n\tscanf("%s", bookName);\n\n\tif (head == NULL) {\n\t printf("没有找到相关图书!\n");\n\t return;\n\t}\n\n\tBookNode *current = head;\n\tint found = 0;\n\twhile (current != NULL) {\n\t if (strcmp(current->bookName, bookName) == 0) {\n\t printf("图书编号:%s\n", current->bookCode);\n\t printf("书名:%s\n", current->bookName);\n\t printf("作者:%s\n", current->author);\n\t printf("出版社:%s\n", current->publisher);\n\t printf("图书种类:%s\n", current->bookkind);\n\t printf("图书种类编号:%s\n", current->bookkinds);\n\t printf("价格:%d\n", current->quantity);\n\t printf("借阅状态:%s\n", current->borrowed ? "已借出" : "未借出");\n\t found = 1;\n\t }\n\t current = current->next;\n\t}\n\n\tif (!found) {\n\t printf("没有找到相关图书!\n");\n\t}\n}\n\nvoid borrowBook() {\n\tchar bookCode[20];\n\tprintf("请输入要借阅的图书编号:");\n\tscanf("%s", bookCode);\n\n\tif (head == NULL) {\n\t printf("没有找到相关图书!\n");\n\t return;\n\t}\n\n\tBookNode *current = head;\n\twhile (current != NULL) {\n\t if (strcmp(current->bookCode, bookCode) == 0) {\n\t if (current->borrowed) {\n\t printf("该图书已借出!\n");\n\t } else {\n\t current->borrowed = 1;\n\t printf("借阅成功!\n");\n\t }\n\t return;\n\t }\n\t current = current->next;\n\t}\n\n\tprintf("没有找到相关图书!\n");\n}\n\nvoid returnBook() {\n\tchar bookCode[20];\n\tprintf("请输入要归还的图书编号:");\n\tscanf("%s", bookCode);\n\n\tif (head == NULL) {\n\t printf("没有找到相关图书!\n");\n\t return;\n\t}\n\n\tBookNode *current = head;\n\twhile (current != NULL) {\n\t if (strcmp(current->bookCode, bookCode) == 0) {\n\t if (current->borrowed) {\n\t current->borrowed = 0;\n\t printf("归还成功!\n");\n\t } else {\n\t printf("该图书未借出!\n");\n\t }\n\t return;\n\t }\n\t current = current->next;\n\t}\n\n\tprintf("没有找到相关图书!\n");\n}\n\nvoid displayBook() {\n\tif (head == NULL) {\n\t printf("图书列表为空!\n");\n\t return;\n\t}\n\n\tBookNode *current = head;\n\twhile (current != NULL) {\n\t printf("图书编号:%s\n", current->bookCode);\n\t printf("书名:%s\n", current->bookName);\n\t printf("作者:%s\n", current->author);\n\t printf("出版社:%s\n", current->publisher);\n\t printf("图书种类:%s\n", current->bookkind);\n\t printf("图书种类编号:%s\n", current->bookkinds);\n\t printf("价格:%d\n", current->quantity);\n\t printf("借阅状态:%s\n", current->borrowed ? "已借出" : "未借出");\n\t printf("\n");\n\n\t if (current->next != NULL) {\n\t printf("\n");\n\t }\n\n\t current = current->next;\n\t}\n}\n\nvoid freeBookList() {\n\tBookNode *current = head;\n\twhile (current != NULL) {\n\t BookNode *temp = current;\n\t current = current->next;\n\t free(temp);\n\t}\n\thead = NULL;\n}\n\nint main() {\n\tloadBookData();\n\n\twhile (1) {\n\t printf("欢迎使用图书管理系统\n");\n\t printf("1. 添加图书信息\n");\n\t printf("2. 删除图书信息\n");\n\t printf("3. 修改图书信息\n");\n\t printf("4. 查找图书信息\n");\n\t printf("5. 借阅图书\n");\n\t printf("6. 归还图书\n");\n\t printf("7. 显示图书信息\n");\n\t printf("0. 退出程序\n");\n\t printf("请输入您的选择:");\n\n\t int choice;\n\t scanf("%d", &choice);\n\n\t switch (choice) {\n\t case 1:\n\t addBook();\n\t break;\n\t case 2:\n\t deleteBook();\n\t break;\n\t case 3:\n\t modifyBook();\n\t break;\n\t case 4:\n\t searchBook();\n\t break;\n\t case 5:\n\t borrowBook();\n\t break;\n\t case 6:\n\t returnBook();\n\t break;\n\t case 7:\n\t displayBook();\n\t break;\n\t case 0:\n\t saveBookData();\n\t freeBookList();\n\t printf("感谢使用图书管理系统,再见!\n");\n\t return 0;\n\t default:\n\t printf("无效的选择,请重新输入!\n");\n\t }\n\t \n\t}\n\t}\n\n

C语言图书管理系统:第二本书图书编码消失问题解决

原文地址: https://www.cveoy.top/t/topic/ptDV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录