#define BOOK_NUM 10
#define READER_NUM 10
#define BOOK_DATA All_Book[i].book_id,All_Book[i].book_name,All_Book[i].book_author,All_Book[i].book_press,All_Book[i].amount
#define READER_DATA All_Reader[i].reader_id,All_Reader[i].reader_name,All_Reader[i].reader_sex,All_Reader[i].max_usebook,All_Reader[i].now_usebook
//**********函数定义************
//主菜单
void ShowMainMeun();
//图书管理模块子菜单
void ShowBookMenu();
//读者管理模块子菜单
void ShowReaderMenu();
//借还书管理模块子菜单
void ShowIObookMenu();
//********************************
//图书信息结构体
struct Book
{
int book_id;//图书序列号
char book_name[50];//书名
char book_author[25];//作者
char book_press[30];//出版社
int amount;//库存量
};
//读者信息结构体
struct Reader
{
int reader_id;//读书卡卡号
char reader_name[25];//读者姓名
char reader_sex[10];//读者性别
int max_usebook;//最大可借图书量
int now_usebook;//当前可借图书量
int Bookid[10];//已借阅的图书列表
};
struct Book All_Book[BOOK_NUM];//记录所有图书信息
struct Reader All_Reader[READER_NUM];//记录所有读者信息
//文件操作
int ReadBookFile(const char* pcMode)
{
int iBookRecord = 0;
FILE* pfBook;//文件指针
fopen_s(&pfBook, "book.txt", pcMode);
if (pfBook == NULL)
{
return -1;
}
while (!feof(pfBook))
{
if (fread(&All_Book[iBookRecord], sizeof(struct Book), 1, pfBook))//把文件读到内存里
{
iBookRecord++;//记录图书信息条数
}
}
fclose(pfBook);
return iBookRecord;
}
//书籍查找
int Find_Book_Mode(int x)
{
int find_id = -1;
int iBookRecord;//记录条数
system("cls");
iBookRecord = ReadBookFile("rb");//以只读方式打开
if (iBookRecord == -1)
{
printf("该文件打开失败,请新增图书信息。\n");
return -1;
}
if (iBookRecord == 0)
{
printf("文件中没有图书信息。\n");
return -2;
}
else
{
int key = 0;
printf("\t----------------------------------------------------\n");
if (x == 1)
{
int Book_id;
printf("确认输入目标书籍编号:");
scanf_s("%d", &Book_id);
getchar();
for (int i = 0; i < iBookRecord; i++)
{
if (All_Book[i].book_id == Book_id)
{
key = 1;
find_id = i;
printf("已找到此图书信息。\n");
printf("\t%-8s%-15s%-10s%-12s%-10s\n", "编号", "书名", "作者", "出版社", "库存量");
printf("\t%-8d%-15s%-10s%-12s%3d本\n", BOOK_DATA);
break;
}
}
}
else if (x == 2)
{
char Book_name[50];
printf("输入要查询的书籍名称:");
scanf_s("%s", Book_name, 50);
getchar();
for (int i = 0; i < iBookRecord; i++)
{
if (strcmp(Book_name, All_Book[i].book_name) == 0)
{
key = 1;
find_id = i;
printf("已找到此图书信息。\n");
printf("\t%-8s%-15s%-10s%-12s%-10s\n", "编号", "书名", "作者", "出版社", "库存量");
printf("\t%-8d%-15s%-10s%-12s%3d本\n", BOOK_DATA);
break;
}
}
}
else if (x == 3)
{
char Book_author[20];
printf("输入要查询的书籍作者:");
scanf_s("%s", Book_author, 20);
getchar();
for (int i = 0; i < iBookRecord; i++)
{
if (strcmp(Book_author, All_Book[i].book_author) == 0)
{
key = 1;
find_id = i;
printf("已找到此图书信息。\n");
printf("\t%-8s%-15s%-10s%-12s%-10s\n", "编号", "书名", "作者", "出版社", "库存量");
printf("\t%-8d%-15s%-10s%-12s%3d本\n", BOOK_DATA);
break;
}
}
}
else if (x == 4)
{
char Book_press[30];
printf("输入要查询的书籍出版社:");
scanf_s("%s", Book_press, 30);
getchar();
for (int i = 0; i < iBookRecord; i++)
{
if (strcmp(Book_press, All_Book[i].book_press) == 0)
{
key = 1;
find_id = i;
printf("已找到此图书信息。\n");
printf("\t%-8s%-15s%-10s%-12s%-10s\n", "编号", "书名", "作者", "出版社", "库存量");
printf("\t%-8d%-15s%-10s%-12s%3d本\n", BOOK_DATA);
break;
}
}
}
if (key == 0)
{
printf("\t 未查询到此图书信息! -_-##\n");
}
printf("\t----------------------------------------------------\n\n");
}
printf("\t------------------查找图书子菜单--------------------\n");
printf("\t\t 1.按书籍编号查找\n");
printf("\t\t 2.按书籍名称查找\n");
printf("\t\t 3.按书籍作者查找\n");
printf("\t\t 4.按书籍出版社查找\n");
printf("\t\t 0.返回上一级菜单\n");
printf("\t----------------------------------------------------\n");
return find_id;
}
//显示所有图书信息
void Show_AllBook()
{
int i;
int iBookRecord;//记录条数
system("cls");
iBookRecord = ReadBookFile("rb");//以只读方式打开
if (iBookRecord == -1)
{
printf("该文件打开失败,请新增图书信息。\n");
}
if (iBookRecord == 0)
{
printf("文件中没有图书信息。\n");
}
else
{
printf("\t------------------------------------------------------------\n");
printf("\t%-8s%-15s%-10s%-20s%-10s\n", "编号", "书名", "作者", "出版社", "库存量");
for (i = 0; i < iBookRecord; i++)
{
printf("\t%-8d%-15s%-10s%-20s%3d本\n", BOOK_DATA);
}
printf("\t-----------------------------------------------------------\n\n");
}
printf("\t----------------------子菜单------------------------\n");
printf("\t\t 1.显示所有图书信息\n");
printf("\t\t 2.增添图书信息\n");
printf("\t\t 3.查找图书信息\n");
printf("\t\t 4.删除图书信息\n");
printf("\t\t 5.修改图书信息\n");
printf("\t\t 0.返回上一级菜单\n");
printf("\t----------------------------------------------------\n");
}
//增添图书信息
void Add_NewBook()
{
FILE* pfBook;
int i;
int iBookRecord;
int iFlagExist;
char cFlag;
system("cls");
iBookRecord = ReadBookFile("ab+");//追加或新建方式打开二进制文件
if (iBookRecord == -1)
{
printf("文件打开失败!\n");
return;
}
else if (iBookRecord == 0)
{
printf("没有图书信息!\n");
}
else
{
Show_AllBook();
}
//循环录入图书信息
printf("请选择是否录入信息(y/n)?\n");
cFlag = getchar();
getchar();
if (cFlag == 'n')
{
return;
}
fopen_s(&pfBook, "book.txt", "ab+");
if (pfBook == NULL)
{
printf("文件打开失败!\n");
return;
}
if (cFlag == 'y')
{
while (cFlag == 'y')
{
//录入数据
if (iBookRecord >= BOOK_NUM)
{
printf("记录已满!\n");
fclose(pfBook);
return;
}
printf("请输入图书编号!\n");
//图书编号不能重复
do
{
iFlagExist = 0;
scanf_s("%d", &All_Book[iBookRecord].book_id);
getchar();
for (i = 0; i < iBookRecord; i++)
{
if (All_Book[i].book_id == All_Book[iBookRecord].book_id)
{
iFlagExist = 1;
printf("图书编号重复!\n");
break;
}
}
} while (iFlagExist == 1);
printf("请输入图书名称:\n");
scanf_s("%s", All_Book[iBookRecord].book_name, 50);
getchar();
printf("请输入图书作者:\n");
scanf_s("%s", All_Book[iBookRecord].book_author, 20);
getchar();
printf("请输入图书出版社:\n");
scanf_s("%s", All_Book[iBookRecord].book_press, 30);
getchar();
printf("请输入图书库存量:\n");
scanf_s("%d", &All_Book[iBookRecord].amount);
getchar();
//将新增的图书信息写入到文件中
if (fwrite(&All_Book[iBookRecord], sizeof(struct Book), 1, pfBook) != 1)
{
printf("无法保存该信息!\n");
return;
}
else
{
printf("%d号图书已经保存!\n", All_Book[iBookRecord].book_id);
iBookRecord++;
}
printf("是否继续录入信息(y/n)?\n");
cFlag = getchar();
getchar();
}
}
fclose(pfBook);
printf("图书信息已添加完毕!\n");
system("cls");
Show_AllBook();
}
//查找图书信息
void Find_Book()
{
system("cls");
printf("\t------------------查找图书子菜单--------------------\n");
printf("\t\t 1.按书籍编号查找\n");
printf("\t\t 2.按书籍名称查找\n");
printf("\t\t 3.按书籍作者查找\n");
printf("\t\t 4.按书籍出版社查找\n");
printf("\t\t 0.返回上一级菜单\n");
printf("\t----------------------------------------------------\n");
int number;
do
{
printf("等待输入:");
scanf_s("%d", &number);
getchar();
switch (number)
{
case 0:
ShowBookMenu();//返回上一级菜单
break;
case 1:
case 2:
case 3:
case 4:
Find_Book_Mode(number);
break;
default:
printf("▲请输入合法选项!\n");
}
} while (number);
}
//删除图书信息
void Delete_Book()
{
system("cls");
Show_AllBook();//展示所有图书信息
char cFlag;
int iBookrecord;
int Delete;
int Deleteindex;
FILE* pfBook;
printf("输入要删除的图书编号:\n");
scanf_s("%d", &Delete);
getchar();
Deleteindex = Find_Book_Mode(1);
if (Deleteindex == -1)
{
return;
}
iBookrecord = ReadBookFile("rb");//<?>每次都要重复这一步
printf("确认是否删除此信息(y/n)\n");
cFlag = getchar();
getchar();
if (cFlag == 'n')
{
return;
}
if (cFlag == 'y')
{
for (int i = Deleteindex; i < iBookrecord - 1; i++)
{
All_Book[i] = All_Book[i + 1];
}
}
fopen_s(&pfBook, "book.txt", "wb");
if (pfBook != NULL)
{
for (int i = 0; i < iBookrecord - 1; i++)
{
if (fwrite(&All_Book[i], sizeof(struct Book), 1, pfBook) != 1)
{
printf("无法保存该信息。\n");
return;
}
}
fclose(pfBook);
printf("编号为%d的数据已删除\n", Delete);
}
Show_AllBook();//展示所有图书信息
}
//修改图书信息
void Alter_Book()
{
system("cls");
Show_AllBook();//展示所有图书信息
char cFlag;
int iBookrecord;
int Delete;
int Deleteindex;
FILE* pfBook;
printf("输入要修改的图书编号:\n");
scanf_s("%d", &Delete);
getchar();
Deleteindex = Find_Book_Mode(1);
if (Deleteindex == -1)
{
return;
}
iBookrecord = ReadBookFile("rb");//<?>每次都要重复这一步
printf("确认是否修改此信息(y/n)\n");
cFlag = getchar();
getchar();
if (cFlag == 'n')
{
return;
}
if (cFlag == 'y')
{
printf("请输入图书名称:\n");
scanf_s("%s", All_Book[Deleteindex].book_name, 50);
getchar();
printf("请输入图书作者:\n");
scanf_s("%s", All_Book[Deleteindex].book_author, 20);
getchar();
printf("请输入图书出版社:\n");
scanf_s("%s", All_Book[Deleteindex].book_press, 30);
getchar();
printf("请输入图书库存量:\n");
scanf_s("%d", &All_Book[Deleteindex].amount);
getchar();
}
fopen_s(&pfBook, "book.txt", "wb");
if (pfBook != NULL)
{
for (int i = 0; i < iBookrecord; i++)
{
if (fwrite(&All_Book[i], sizeof(struct Book), 1, pfBook) != 1)
{
printf("无法保存该信息。\n");
return;
}
}
fclose(pfBook);
printf("修改成功。\n");
}
Show_AllBook();//展示所有图书信息
}
//************************************************************//<分割线>
//文件操作
int ReadReaderFile(const char* pcMode)
{
int iReaderRecord = 0;
FILE* pfReader;//文件指针
fopen_s(&pfReader, "reader.txt", pcMode);
if (pfReader == NULL)
{
return -1;
}
while (!feof(pfReader))
{
if (fread(&All_Reader[iReaderRecord], sizeof(struct Reader), 1, pfReader))//把文件读到内存里
{
iReaderRecord++;//记录图书信息条数
}
}
fclose(pfReader);
return iReaderRecord;
}
//显示所有读者信息
void Show_AllReader()
{
int i;
int iReaderRecord;//记录条数
system("cls");
iReaderRecord = ReadReaderFile("rb");//以只读方式打开
if (iReaderRecord == -1)
{
printf("该文件打开失败,请新增读者信息。\n");
}
if (iReaderRecord == 0)
{
printf("文件中没有读者信息。\n");
}
else
{
printf("\t------------------------------------------------------------\n");
printf("\t%-10s%-10s%-10s%-20s%-20s\n", "卡号", "姓名", "性别", "最大可借图书数量", "当前可借图书数量");
for (i = 0; i < iReaderRecord; i++)
{
printf("\t%-10d%-10s%-10s%-20d%-20d\n", READER_DATA);
}
printf("\t-----------------------------------------------------------\n\n");
}
printf("\t----------------------子菜单------------------------\n");
printf("\t\t 1.显示所有读者信息\n");
printf("\t\t 2.增添读者信息\n");
printf("\t\t 3.查找读者信息\n");
printf("\t\t 4.删除读者信息\n");
printf("\t\t 5.修改读者信息\n");
printf("\t\t 0.返回上一级菜单\n");
printf("\t----------------------------------------------------\n");
}
//读者查找
int Find_Reader_Mode(int x)
{
int find_id = -1;
int iReaderRecord;//记录条数
system("cls");
iReaderRecord = ReadReaderFile("rb");//以只读方式打开
if (iReaderRecord == -1)
{
printf("该文件打开失败,请新增读者信息。\n");
return -1;
}
if (iReaderRecord == 0)
{
printf("文件中没有读者信息。\n");
return -2;
}
else
{
int key = 0;
printf("\t----------------------------------------------------\n");
if (x == 1)
{
int Reader_id;
printf("输入目标读者卡号:");
scanf_s("%d", &Reader_id);
getchar();
for (int i = 0; i < iReaderRecord; i++)
{
if (All_Reader[i].reader_id == Reader_id)
{
key = 1;
find_id = i;
printf("已找到此读者信息。\n");
printf("\t%-10s%-10s%-10s%-20s%-20s\n", "卡号", "姓名", "性别", "最大可借图书数量", "当前可借图书数量");
printf("\t%-10d%-10s%-10s%-20d%-20d\n", READER_DATA);
break;
}
}
}
else if (x == 2)
{
char Reader_name[25];
printf("输入目标读者姓名:");
scanf_s("%s", Reader_name, 25);
getchar();
for (int i = 0; i < iReaderRecord; i++)
{
if (strcmp(Reader_name, All_Reader[i].reader_name) == 0)
{
key = 1;
find_id = i;
printf("已找到此读者信息。\n");
printf("\t%-10s%-10s%-10s%-20s%-20s\n", "卡号", "姓名", "性别", "最大可借图书数量", "当前可借图书数量");
printf("\t%-10d%-10s%-10s%-20d%-20d\n", READER_DATA);
break;
}
}
}
if (key == 0)
{
printf("\t 未查询到此读者信息! -_-##\n");
}
printf("\t----------------------------------------------------\n\n");
}
printf("\t------------------查找图书子菜单--------------------\n");
printf("\t\t 1.按读者卡号查找\n");
printf("\t\t 2.按读者姓名查找\n");
printf("\t\t 0.返回上一级菜单\n");
printf("\t----------------------------------------------------\n");
return find_id;
}
//增添读者信息
int Add_NewReader()
{
FILE* pfReader;
int i;
int iReaderRecord;
int iFlagExist;
char cFlag;
system("cls");
iReaderRecord = ReadReaderFile("ab+");//追加或新建方式打开二进制文件
if (iReaderRecord == -1)
{
printf("文件打开失败!\n");
return 0;
}
else if (iReaderRecord == 0)
{
printf("没有读者信息!\n");
}
else
{
Show_AllReader();
}
//循环录入读者信息
printf("请选择是否录入信息(y/n)?\n");
cFlag = getchar();
getchar();
if (cFlag == 'n')
{
return 0;
}
fopen_s(&pfReader, "reader.txt", "ab+");
if (pfReader == NULL)
{
printf("文件打开失败!\n");
return 0;
}
if (cFlag == 'y')
{
while (cFlag == 'y')
{
//录入数据
if (iReaderRecord >= READER_NUM)
{
printf("记录已满!\n");
fclose(pfReader);
return 0;
}
printf("请输入读者卡号!\n");
//读者卡号不能重复
do
{
iFlagExist = 0;
scanf_s("%d", &All_Reader[iReaderRecord].reader_id);
getchar();
for (i = 0; i < iReaderRecord; i++)
{
if (All_Reader[i].reader_id == All_Reader[iReaderRecord].reader_id)
{
iFlagExist = 1;
printf("读者卡号重复!\n");
break;
}
}
} while (iFlagExist == 1);
printf("请输入读者姓名:\n");
scanf_s("%s", All_Reader[iReaderRecord].reader_name, 20);
getchar();
printf("请输入读者性别:\n");
scanf_s("%s", All_Reader[iReaderRecord].reader_sex, 10);
getchar();
All_Reader[iReaderRecord].max_usebook = 100;//默认值
//将新增的读者信息写入到文件中
if (fwrite(&All_Reader[iReaderRecord], sizeof(struct Reader), 1, pfReader) != 1)
{
printf("无法保存该信息!\n");
return 0;
}
else
{
printf("%d号读者已经保存!\n", All_Reader[iReaderRecord].reader_id);
iReaderRecord++;
}
printf("是否继续录入信息(y/n)?\n");
cFlag = getchar();
getchar();
}
}
fclose(pfReader);
printf("读者信息已添加完毕!\n");
system("cls");
Show_AllReader();
return 1;
}
//查找读者信息
void Find_Reader()
{
system("cls");
printf("\t------------------查找读者子菜单-------------------\n");
printf("\t\t 1.按读者卡号查找\n");
printf("\t\t 2.按读者姓名查找\n");
printf("\t\t 0.返回上一级菜单\n");
printf("\t----------------------------------------------------\n");
int number;
do
{
printf("等待输入:");
scanf_s("%d", &number);
getchar();
switch (number)
{
case 0:
ShowReaderMenu();//返回上一级菜单
break;
case 1:
case 2:
Find_Reader_Mode(number);
break;
default:
printf("▲请输入合法选项!\n");
}
} while (number);
}
//删除读者信息
void Delete_Reader()
{
system("cls");
Show_AllReader();//展示所有读者信息
char cFlag;
int iReaderrecord;
int Delete;
int Deleteindex;
FILE* pfReader;
printf("输入要删除的读者的卡号:\n");
scanf_s("%d", &Delete);
getchar();
printf("请确认卡号。\n");
Deleteindex = Find_Reader_Mode(1);
if (Deleteindex == -1)
{
return;
}
iReaderrecord = ReadReaderFile("rb");//<?>每次都要重复这一步
printf("确认是否删除此信息(y/n)\n");
cFlag = getchar();
getchar();
if (cFlag == 'n')
{
return;
}
if (cFlag == 'y')
{
for (int i = Deleteindex; i < iReaderrecord - 1; i++)
{
All_Reader[i] = All_Reader[i + 1];
}
}
fopen_s(&pfReader, "reader.txt", "wb");
if (pfReader != NULL)
{
for (int i = 0; i < iReaderrecord - 1; i++)
{
if (fwrite(&All_Reader[i], sizeof(struct Reader), 1, pfReader) != 1)
{
printf("无法保存该信息。\n");
return;
}
}
fclose(pfReader);
printf("编号为%d的数据已删除\n", Delete);
}
Show_AllReader();//展示所有读者信息
}
//修改读者信息
void Alter_Reader()
{
system("cls");
Show_AllReader();//展示所有读者信息
char cFlag;
int Delete;
int Deleteindex;
FILE* pfReader;
printf("输入要修改的读者卡号:\n");
scanf_s("%d", &Delete);
getchar();
printf("请确认卡号。\n");
Deleteindex = Find_Reader_Mode(1);
if (Deleteindex == -1)
{
return;
}
int iReaderrecord = ReadReaderFile("rb");//<?>每次都要重复这一步
printf("确认是否修改此信息(y/n)\n");
cFlag = getchar();
getchar();
if (cFlag == 'n')
{
return;
}
if (cFlag == 'y')
{
printf("请输入读者姓名:\n");
scanf_s("%s", All_Reader[Deleteindex].reader_name, 25);
getchar();
printf("请输入读者性别:\n");
scanf_s("%s", All_Reader[Deleteindex].reader_sex, 10);
getchar();
}
fopen_s(&pfReader, "reader.txt", "wb");
if (pfReader != NULL)
{
for (int i = 0; i < iReaderrecord; i++)
{
if (fwrite(&All_Reader[i], sizeof(struct Reader), 1, pfReader) != 1)
{
printf("无法保存该信息。\n");
return;
}
}
fclose(pfReader);
printf("修改成功。\n");
}
Show_AllReader();//展示所有读者信息
}
//************************************************************//<分割线>
//借书登记
void BorrowBook()
{
//找到读者信息
//判断读者是否可以借书:已借图书不超过最大值
int Reader_id = -1;
int iReaderrecord = ReadReaderFile("rb");
int mode;
printf("按卡号查询请按1,按姓名查询请按2。\n :");
scanf_s("%d", &mode);
getchar();
for (int i = 0; i < iReaderrecord; i++)
{
if (All_Reader[i].reader_id == mode)
{
Reader_id = i;
break;
}
}
if (Reader_id == -1) {
if (Add_NewReader() == 0)
return;
Reader_id = iReaderrecord++;
}
//打印读者借阅的书籍列表
for (int i = 0; i < All_Reader[Reader_id].now_usebook; i++)
{
printf("%d\n", All_Reader[Reader_id].Bookid[i]);
}
//判断目标书籍是否可借
if (All_Reader[Reader_id].now_usebook < All_Reader[Reader_id].max_usebook)
{
int iBookRecord = ReadBookFile("rb");//以只读方式打开
int Book_id;
printf("确认输入目标书籍编号:");
scanf_s("%d", &Book_id);
getchar();
int i;
for (i = 0; i < iBookRecord; i++)
{
if (All_Book[i].book_id == Book_id)
{
break;
}
}
if (i < iBookRecord && All_Book[i].amount>0)
{
All_Book[i].amount--;
All_Reader[Reader_id].Bookid[All_Reader[Reader_id].now_usebook] = Book_id;
All_Reader[Reader_id].now_usebook++;
printf("jieshucehnggong。\n");
printf("\t%-8s%-15s%-10s%-12s%-10s\n", "编号", "书名", "作者", "出版社", "库存量");
printf("\t%-8d%-15s%-10s%-12s%3d本\n", BOOK_DATA);
FILE* pfReader, * pfBook;
fopen_s(&pfReader, "reader.txt", "wb");
if (pfReader != NULL)
{
for (int i = 0; i < iReaderrecord; i++)
{
if (fwrite(&All_Reader[i], sizeof(struct Reader), 1, pfReader) != 1)
{
printf("无法保存该信息。\n");
return;
}
}
fclose(pfReader);
}
fopen_s(&pfBook, "book.txt", "wb");
if (pfBook != NULL)
{
for (int i = 0; i < iBookRecord; i++)
{
if (fwrite(&All_Book[i], sizeof(struct Book), 1, pfBook) != 1)
{
printf("无法保存该信息。\n");
return;
}
}
fclose(pfBook);
printf("保存成功。\n");
}
}
else
{
printf("没有库存\n");
}
}
else
{
printf("借阅已达上限!\n");
}
}
//还书登记
void ReturnBook()
{
//找到读者信息判断读者是否可以借书
int Reader_id = -1;
int iReaderrecord = ReadReaderFile("rb");
int mode;
printf("按卡号查询请按1,按姓名查询请按2。\n :");
scanf_s("%d", &mode);
getchar();
for (int i = 0; i < iReaderrecord; i++)
{
if (All_Reader[i].reader_id == mode)
{
Reader_id = i;
break;
}
}
if (Reader_id == -1) {
if (Add_NewReader() == 0)
return;
Reader_id = iReaderrecord++;
}
//打印读者借阅的书籍列表
for (int i = 0; i < All_Reader[Reader_id].now_usebook; i++)
{
printf("%d\n", All_Reader[Reader_id].Bookid[i]);
}
int iBookRecord = ReadBookFile("rb");//以只读方式打开
int Book_id;
printf("确认输入目标书籍编号:");
scanf_s("%d", &Book_id);
getchar();
int i;
for (i = 0; i < iBookRecord; i++)
{
if (All_Book[i].book_id == Book_id)
{
break;
}
}
All_Book[i].amount++;
for (i = 0; i < All_Reader[Reader_id].now_usebook; i++) {
if (All_Reader[Reader_id].Bookid[i] == Book_id)
break;
}
for (; i < All_Reader[Reader_id].now_usebook; i++)
{
All_Reader[Reader_id].Bookid[i] = All_Reader[Reader_id].Bookid[i + 1];
}
All_Reader[Reader_id].now_usebook--;
FILE* pfReader, * pfBook;
fopen_s(&pfReader, "reader.txt", "wb");
if (pfReader != NULL)
{
for (i = 0; i < iReaderrecord; i++) {
if (fwrite(&All_Reader[i], sizeof(struct Reader), 1, pfReader) != 1)
{
printf("无法保存该信息。\n");
return;
}
}
fclose(pfReader);
}
fopen_s(&pfBook, "book.txt", "wb");
if (pfBook != NULL)
{
for (i = 0; i < iBookRecord; i++)
{
if (fwrite(&All_Book[i], sizeof(struct Book), 1, pfBook) != 1)
{
printf("无法保存该信息。\n");
return;
}
}
fclose(pfBook);
printf("保存成功。\n");
}
}
//************************************************************//<分割线>
//主菜单
void ShowMainMeun()
{
system("cls");
printf("\t\t-------图书管理系统--------\n");
printf("\t\t 1.图书管理\n");
printf("\t\t 2.读者管理\n");
printf("\t\t 3.借/还书管理\n");
printf("\t\t 0.退出系统\n");
printf("\t\t---------------------------\n");
int number;
do
{
printf("等待输入:");
scanf_s("%d", &number);
getchar();
switch (number)
{
case 0:
printf("退出系统.....");
exit(0);
case 1:
ShowBookMenu();
break;
case 2:
ShowReaderMenu();
break;
case 3:
ShowIObookMenu();
break;
default:
printf("▲请输入合法选项!\n");
}
} while (number);
}
//图书管理模块子菜单
void ShowBookMenu()
{
system("cls");
printf("\t----------------------子菜单------------------------\n");
printf("\t\t 1.显示所有图书信息\n");
printf("\t\t 2.增添图书信息\n");
printf("\t\t 3.查找图书信息\n");
printf("\t\t 4.删除图书信息\n");
printf("\t\t 5.修改图书信息\n");
printf("\t\t 0.返回上一级菜单\n");
printf("\t----------------------------------------------------\n");
int number;
do
{
printf("等待输入:");
scanf_s("%d", &number);
getchar();
switch (number)
{
case 0:
ShowMainMeun();//返回上一级菜单
break;
case 1:
Show_AllBook();//显示所有图书信息
break;
case 2:
Add_NewBook();//增添图书信息
break;
case 3:
Find_Book();//查找图书信息
break;
case 4:
Delete_Book();//删除图书信息
break;
case 5:
Alter_Book();//修改图书信息
break;
default:
printf("▲请输入合法选项!\n");
}
} while (number);
}
//读者管理模块子菜单
void ShowReaderMenu()
{
system("cls");
printf("\t----------------------子菜单------------------------\n");
printf("\t\t 1.显示所有读者信息\n");
printf("\t\t 2.增添读者信息\n");
printf("\t\t 3.查找读者信息\n");
printf("\t\t 4.删除读者信息\n");
printf("\t\t 5.修改读者信息\n");
printf("\t\t 0.返回上一级菜单\n");
printf("\t----------------------------------------------------\n");
int number;
do
{
printf("等待输入:");
scanf_s("%d", &number);
getchar();
switch (number)
{
case 0:
ShowMainMeun();//返回上一级菜单
break;
case 1:
Show_AllReader();//显示所有读者信息
break;
case 2:
Add_NewReader();//增添读者信息
break;
case 3:
Find_Reader();//查找读者信息
break;
case 4:
Delete_Reader();//删除读者信息
break;
case 5:
Alter_Reader();//修改读者信息
break;
default:
printf("▲请输入合法选项!\n");
}
} while (number);
}
//借还书管理模块子菜单
void ShowIObookMenu()
{
system("cls");
printf("\t-----------------借还书子菜单----------------------\n");
printf("\t 1.借书登记\n");
printf("\t 2.还书登记\n");
printf("\t 0.返回上一级菜单\n");
printf("\t---------------------------------------------------\n");
int number;
do
{
printf("等待输入:");
scanf_s("%d", &number);
getchar();
switch (number)
{
case 0:
ShowMainMeun();//返回上一级菜单
break;
case 1:
BorrowBook();//借书登记
break;
case 2:
ReturnBook();//还书登记
break;
default:
printf("▲请输入合法选项!\n");
}
} while (number);
}
int main()
{
ShowMainMeun();//主菜单
return 0;
}
05-19
840

05-22
1032
