#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100
typedef struct
{
int id;
char title[50];
char type[20];
char author[50];
char publisher[50];
char isbn[20];
int quantity;
} Book;
// 全局变量
Book books[MAX_BOOKS];
int bookCount = 0;
// 函数声明
void addBook();
void deleteBook();
void updateBook();
void findBook();
void listBooks();
void sortBooks();
void saveBooks();
void loadBooks();
int main()
{
// 主菜单
int choice;
do
{
printf("\n 图书管理系统\n\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("0. 退出\n\n");
printf("请选择操作:");
scanf_s("%d", &choice);
switch (choice)
{
case 1:
addBook();
break;
case 2:
findBook();
break;
case 3:
addBook();
break;
case 4:
updateBook();
break;
case 5:
deleteBook();
break;
case 6:
sortBooks();
break;
case 7:
listBooks();
break;
case 8:
loadBooks();
break;
case 9:
saveBooks();
break;
case 0:
break;
default:
printf("无效选择,请重新输入。\n");
}
} while (choice != 0);
return 0;
}
// 录入图书信息
void addBook()
{
Book book;
printf("图书编号:");
scanf_s("%d", &book.id);
printf("图书名称:");
scanf_s("%s", book.title);
printf("图书类型:");
scanf_s("%s", book.type);
printf("作者:");
scanf_s("%s", book.author);
printf("出版社:");
scanf_s("%s", book.publisher);
printf("ISBN 号:");
scanf_s("%s", book.isbn);
printf("库存数量:");
scanf_s("%d", &book.quantity);
books[bookCount] = book;
bookCount++;
}
// 查找图书信息
void findBook()
{
int id;
printf("请输入图书编号:");
scanf_s("%d", &id);
for (int i = 0; i < bookCount; i++)
{
if (books[i].id == id)
{
printf("图书编号:%d\n", books[i].id);
printf("图书名称:%s\n", books[i].title);
printf("图书类型:%s\n", books[i].type);
printf("作者:%s\n", books[i].author);
printf("出版社:%s\n", books[i].publisher);
printf("ISBN 号:%s\n", books[i].isbn);
printf("库存数量:%d\n", books[i].quantity);
return;
}
}
printf("未找到相关图书信息。\n");
}
// 增加图书信息
void updateBook()
{
int id;
printf("请输入图书编号:");
scanf_s("%d", &id);
for (int i = 0; i < bookCount; i++)
{
if (books[i].id == id)
{
printf("图书编号:");
scanf_s("%d", &books[i].id);
printf("图书名称:");
scanf_s("%s", books[i].title);
printf("图书类型:");
scanf_s("%s", books[i].type);
printf("作者:");
scanf_s("%s", books[i].author);
printf("出版社:");
scanf_s("%s", books[i].publisher);
printf("ISBN 号:");
scanf_s("%s", books[i].isbn);
printf("库存数量:");
scanf_s("%d", &books[i].quantity);
return;
}
}
printf("未找到相关图书信息。\n");
}
// 修改图书信息
void deleteBook()
{
int id;
printf("请输入图书编号:");
scanf_s("%d", &id);
for (int i = 0; i < bookCount; i++)
{
if (books[i].id == id)
{
for (int j = i; j < bookCount - 1; j++)
{
books[j] = books[j + 1];
}
bookCount--;
return;
}
}
printf("未找到相关图书信息。\n");
}
// 排序图书信息
void sortBooks()
{
for (int i = 0; i < bookCount - 1; i++)
{
for (int j = 0; j < bookCount - i - 1; j++)
{
if (books[j].id > books[j + 1].id)
{
Book temp = books[j];
books[j] = books[j + 1];
books[j + 1] = temp;
}
}
}
}
// 显示图书信息
void listBooks()
{
printf("图书编号\t图书名称\t图书类型\t作者\t出版社\tISBN 号\t库存数量\n");
for (int i = 0; i < bookCount; i++)
{
printf("%d\t%s\t%s\t%s\t%s\t%s\t%d\n", books[i].id, books[i].title, books[i].type, books[i].author, books[i].publisher, books[i].isbn, books[i].quantity);
}
}
// 读取图书信息
#
void loadBooks()
{
FILE* file = fopen_s("book.txt", "r");
if (file == NULL)
{
printf("无法打开文件。\n");
return;
}
while (!feof(file))
{
Book book;
fscanf_s(file, "%d %s %s %s %s %s %d", &book.id, book.title, book.type, book.author, book.publisher, book.isbn, &book.quantity);
books[bookCount] = book;
bookCount++;
}
fclose(file);
}
// 保存图书信息
void saveBooks()
{
FILE* file = fopen_s("book.txt", "w");
if (file == NULL)
{
printf("无法打开文件。\n");
return;
}
for (int i = 0; i < bookCount; i++)
{
fprintf(file, "%d %s %s %s %s %s %d\n", books[i].id, books[i].title, books[i].type, books[i].author, books[i].publisher, books[i].isbn, books[i].quantity);
}
fclose(file);
}
这个问题怎么解决啊,有人帮我看看吗