设计思路:
图书:(增删改查)显示
读者:(增删改查)显示
借书 还书 信息记录
主菜单 子菜单 各级菜单之间的相应对应
结构体设计进行封装:
图书信息:编号,名称,作者,出版社,库存···
读者信息:编号,姓名,性别,借阅量···
函数关系调用图:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#define BOOK_NUM 200
#define READER_NUM 100
#define BOOK_DATA astBook[i].iNum,astBook[i].acName,astBook[i].acAuthor,astBook[i].acPress,astBook[i].iAmount
#define LEN_BOOK sizeof(struct Book)
#define READER_DATA astReader[i].iNum,astReader[i].acName,astReader[i].acSex,astReader[i].iMax,astReader[i].iAmount
#define LEN_READER sizeof(struct Reader)
//两个结构体封装图书和读者的信息
struct Book
{
int iNum;//图书编号
char acName[15];//名称
char acAuthor[15];//作者
char acPress[15];//出版社
int iAmount; //库存
};
struct Reader
{
int iNum;//读者编号
char acName[15];//姓名
char acSex[4];//性别
int iMax;//最大可借阅量
int iAmount;//当前可借阅的数量
int Bookid[10];//已经借阅的数量
};
//定义两个全局结构体数组来记录所有图书信息和所有读者信息
struct Book astBook[BOOK_NUM];
struct Reader astReader[READER_NUM];
//显示主菜单
void ShowMainMenu()
{
printf("\n\n");
printf("*********欢迎进入**********\n");
printf("********图书管理系统*******\n");
printf("*********主菜单************\n");
printf("******1.图书管理***********\n");
printf("******2.读者管理***********\n");
printf("******3.借书还书登记*******\n");
printf("******0.退出系统***********\n");
printf("***************************\n");
printf("\n");
printf("请输入选择: \n");
}
//显示书籍管理的子菜单
void ShowBookMenu()
{
system("cls");
printf("\n\n");
printf("*********欢迎进入**********\n");
printf("*****图书馆管理系统********\n");
printf("*********子菜单************\n");
printf("****1.显示图书信息*********\n");
printf("****2.新增图书信息*********\n");
printf("****3.查找图书信息*********\n");
printf("****4.删除图书信息*********\n");
printf("****5.修改图书信息*********\n");
printf("****0.返回主菜单***********\n");
printf("***************************\n");
}
//文件操作,创建文件
int ReadBookFile(const char* pcMode)
{
int iBookRecord = 0;
FILE* pfBook;//文件指针
pfBook = fopen("book.txt", pcMode);
if (pfBook == NULL)
{
return -1;
}
while (!feof(pfBook))
{
if (fread(&astBook[iBookRecord], LEN_BOOK, 1, pfBook))
{
iBookRecord++;
}
}
fclose(pfBook);
return iBookRecord;
}
//打印图书信息
void ShowBook()
{
int i, iBookRecord;//记录条数
system("cls");
iBookRecord = ReadBookFile("rb");//以只读的方式打开
if (iBookRecord == -1)
{
printf("该文件打开失败,请先新增图书信息!\n");
}
if (iBookRecord == 0)
{
printf("文件中没有图书信息!\n");
}
else
{
printf("\t***********************************************************\n");
printf("\n\n");
printf("\t%-6s%-16s%-10s%-20s%-4s\n","编号","书名","作者","出版社","库存");
for (i = 0; i < iBookRecord; i++)
{
printf("\t%-6d%-16s%-10s%-20s%-4d\n", BOOK_DATA);
}
printf("\n\n");
printf("\t************************************************************\n");
printf("\n\n");
}
}
//添加图书信息
void AddBook()
{
FILE* pfBook;
int iBookRecord, iFlagExist=0, i;
char cFlag;
system("cls");
iBookRecord = ReadBookFile("ab+");//ad+追加方式打开或者新建二进制文件
if (iBookRecord == -1)
{
printf("文件打开失败 \n");
return;
}
else if (iBookRecord == 0)
{
printf("没有图书记录 \n");
}
else
{
ShowBook();//如果图书记录不为0,则显示所有图书信息
}
//循环录入图书信息
printf("请选择是否输入信息(y/n):");
cFlag = getchar();
if (cFlag == 'n')
{
return;
}
pfBook = fopen("book.txt", "ab+");
if (pfBook == NULL)
{
printf("文件打开失败!\n");
return;
}
while(cFlag=='y')
{
//录入数据
if (iBookRecord >= BOOK_NUM)
{
printf("记录已满!\n");
fclose(pfBook);
return;
}
//图书编号不能重复
printf("请输入图书编号:\n");
do
{
iFlagExist = 0;
scanf("%d", &astBook[iBookRecord].iNum);
getchar();
for (int i = 0; i < iBookRecord; i++)
{
if (astBook[i].iNum == astBook[iBookRecord].iNum)
{
iFlagExist = 1;
printf("该图书编号已经存在,请重新输入! \n");
break;
}
}
}while (iFlagExist == 1);
printf("请输入图书名称:\n");
scanf("%s", astBook[iBookRecord].acName);
getchar();
printf("请输入图书作者:\n");
scanf("%s", astBook[iBookRecord].acAuthor);
getchar();
printf("请输入图书出版社:\n");
scanf("%s", astBook[iBookRecord].acPress);
getchar();
printf("请输入图书库存量:\n");
scanf("%d", &astBook[iBookRecord].iAmount);
getchar();
//将新增的图书信息写入到文件中
if(fwrite(&astBook[iBookRecord],LEN_BOOK,1,pfBook)!=1)
{
printf("无法保存该信息! \n");
return;
}
else
{
printf("%d号图书信息已经保存!\n", astBook[iBookRecord].iNum);
iBookRecord++;
}
printf("继续输入信息吗?(y/n);");
cFlag = getchar();
getchar();
}
fclose(pfBook);
printf("添加图书信息执行完毕!\n");
}
//查找图书信息
int SearchBook()
{
int iBookNum, iBookRecord, iBookid=0, i;
//
system("cls");
iBookRecord = ReadBookFile("rb");
if (iBookRecord == -1)
{
printf("文件打开失败! \n");
printf("按任意键返回子菜单");
_getch();
return -2;//文件打开失败
}
else if (iBookRecord==0)
{
printf("没有图书记录! \n");
printf("按任意键返回子菜单");
_getch();
return -3;//没有记录
}
//进入查找程序
printf("请输入图书编号:");
scanf("%d", &iBookNum);
getchar();
for (i = 0; i < iBookRecord; i++)
{
if (iBookNum == astBook[i].iNum)
{
iBookid = i;//找到记录,返回图书编号
printf("%d号图书信息如下:\n", iBookNum);
printf("\t**********************************************************\n");
printf("\t%-6s%-16s%-10s%-20s%-4s\n", "编号", "书名", "作者", "出版社", "库存");
printf("\t%-6d%-16s%-10s%-20s%-4d\n", BOOK_DATA);
printf("\t**********************************************************\n");
break;
}
}
if (i == iBookRecord)
{
printf("找不到%d号图书信息\n", iBookNum);
iBookid == -1; //找不到记录,返回-1
}
return iBookid;
}
//删除图书信息
void DeleteBook()
{
FILE* pfBook;
int iBookid, iBookRecord, i;
char cFlag;
system("cls");
iBookid = SearchBook();
if (iBookid == -1)
{
return;
}
iBookRecord = ReadBookFile("rb"); //???
printf("已经找到该图书,是否删除?(y/n)");
cFlag = getchar();
getchar();
//删除之前需要保存删除之前的图书编号,因为删除之后的图书编号信息会被覆盖
int index = astBook[iBookid].iNum;
if (cFlag == 'n')
{
return;
}
else if(cFlag=='y')
{
for (int i = iBookid; i < iBookRecord - 1; i++)
{
astBook[i] = astBook[i + 1];//数组依次前移
}
iBookRecord--;
}
pfBook = fopen("book.txt", "wb");
if(pfBook!=NULL)
{
for (i = 0; i < iBookRecord; i++)
{
if (fwrite(&astBook[i], LEN_BOOK, 1, pfBook) != 1)
{
printf("无法保存该信息! \n");
return;
}
}
}
fclose(pfBook);
printf("%d号图书信息已经删除!\n", index);
}
//显示修改选项的子菜单
void ShowModifyBookMenu()
{
printf("\n\n\n");
printf("| 1.编号 |\n");
printf("| 2.书名 |\n");
printf("| 3.作者 |\n");
printf("| 4.出版社 |\n");
printf("| 5.图书库存量 |\n");
printf("| 输入需要修改的信息: |\n");
}
//保存图书修改后的信息
void SaveBookFile(int iBookid)
{
FILE* pfBook;
pfBook = fopen("book.txt", "rb+");
if(pfBook!=NULL)
{
fseek(pfBook, LEN_BOOK * iBookid, SEEK_SET);
if (fwrite(&astBook[iBookid], LEN_BOOK, 1, pfBook) != 1)
{
printf("无法保存该信息!\n");
}
fclose(pfBook);
}
}
//修改图书信息
void ModifyBook()
{
int iBookid, iBookRecord, iFlagExist, iltem, iNum, i;
system("cls");
iBookid = SearchBook();
if (iBookid == -1)
{
return;
}
if(iBookid==-3)
{
return;
}
//找到该序号的图书 可以开始修改操作
iBookRecord = ReadBookFile("rb");
//显示修改选项的子菜单
ShowModifyBookMenu();
scanf("%d", &iltem);
getchar();
switch (iltem)
{
case 1:
printf("输入图书的编号:\n");
do
{
iFlagExist = 0;
scanf("%d", &iNum);
getchar();
for (int i = 0; i < iBookRecord; i++)
{
if (iNum==astBook[i].iNum&&i!=iBookid)
{
iFlagExist = 1;
printf("该图书编号已经存在,请重新输入:");
break;
}
}
} while (iFlagExist == 1);
astBook[iBookid].iNum = iNum;
break;
case 2:
printf("请输入图书名称:");
scanf("%s", astBook[iBookid].acName);
getchar();
break;
case 3:
printf("请输入图书作者:");
scanf("%s", astBook[iBookid].acAuthor);
getchar();
break;
case 4:
printf("请输入图书出版社:");
scanf("%s", astBook[iBookid].acPress);
getchar();
break;
case 5:
printf("请输入图书库存量:");
scanf("%d", &astBook[iBookid].iAmount);
getchar();
break;
}
SaveBookFile(iBookid);
printf("图书信息修改成功!\n");
}
//图书管理模块
void ManageBook()
{
int iltem;
ShowBookMenu();//显示书籍管理的子菜单
scanf("%d", &iltem);
getchar();
while (iltem)
{
switch (iltem)
{
case 1:
ShowBook();//显示图书信息
break;
case 2:
AddBook();//新增图书信息
break;
case 3:
SearchBook();//查找图书信息
break;
case 4:
DeleteBook();//删除图书信息
break;
case 5:
ModifyBook();//修改图书信息
break;
default:
printf("\t\t请输入正确的选择\n");
}
printf("请按任意键返回子菜单");
_getch();//从控件中获取字符而无需回显
ShowBookMenu();
scanf("%d", &iltem);
getchar();
}
};
//显示读者管理的主菜单
void ShowReaderMenu()
{
system("cls");
printf("\n\n");
printf("********欢迎进入***********\n");
printf("*****图书馆管理系统********\n");
printf("*********子菜单************\n");
printf("****1.显示读者信息*********\n");
printf("****2.新增读者信息*********\n");
printf("****3.查找读者信息*********\n");
printf("****4.删除读者信息*********\n");
printf("****5.修改读者信息*********\n");
printf("****0.返回主菜单***********\n");
printf("***************************\n");
}
int ReadReaderFile(const char* fopenMode)
{
int iReaderRecord = 0;
FILE* pfReader;
pfReader = fopen("reader.txt", fopenMode);
if (pfReader == NULL)
{
return -1;
}
while (!feof(pfReader))
{
if (fread(&astReader[iReaderRecord], LEN_READER, 1, pfReader))
{
iReaderRecord++;
}
}
fclose(pfReader);
return iReaderRecord;
}
//显示读者信息
void ShowReader()
{
int i,iReaderRecord;
system("cls");
iReaderRecord = ReadReaderFile("rb");
if (iReaderRecord == -1)
{
printf("文件打开失败,请先增加读者信息!\n");
}
if (iReaderRecord == 0)
{
printf("文件中没有读者信息!\n");
}
else
{
printf("\t*******************************************************************\n");
printf("\n\n");
printf("\t%-8s%-16s%-10s%-20s%-20s\n", "读者编号", "姓名", "性别", "最大可借阅量", "当前可借阅的数量");
for (i = 0; i < iReaderRecord; i++)
{
printf("\t%-6d%-20s%-12s%-24d%-24d\n", READER_DATA);
}
printf("\n\n");
printf("\t********************************************************************\n");
printf("\n\n");
}
}
//添加读者信息
void AddReader()
{
FILE* pfReader;//文件指针
int iReaderRecord, iFlagExist, i;
char cFlag;
system("cls");
iReaderRecord = ReadReaderFile("ab+");//ad+追加方式打开或者新建二进制文件
if (iReaderRecord == -1)
{
printf("文件打开失败!\n");
return;
}
else if (iReaderRecord == 0)
{
printf("没有读者记录! \n");//如果读者记录不为0则调用ShowReader函数显示所有读者信息
}
else
{
ShowReader();//如果图书记录不为0,则显示所有图书信息
}
//循环录入读者信息
printf("请选择是否输入信息(y/n):");
cFlag = getchar();
if (cFlag == 'n')
{
return;
}
pfReader = fopen("reader.txt", "ab+");
if (pfReader == NULL)
{
printf("文件打开失败!\n");
return;
}
while (cFlag == 'y')
{
//录入数据
if (iReaderRecord >= READER_NUM)
{
printf("记录已满!\n");
fclose(pfReader);
return;
}
//读者编号不能重复
printf("请输入读者编号: \n");
do
{
iFlagExist = 0;
scanf("%d", &astReader[iReaderRecord].iNum);
getchar();
for (int i = 0; i < iReaderRecord; i++)
{
if (astReader[i].iNum == astReader[iReaderRecord].iNum)
{
iFlagExist = 1;
printf("该读者编号已经存在,请重新输入: \n");
break;
}
}
} while (iFlagExist == 1);
//新增读者信息
printf("请输入读者姓名:\n");
scanf("%s", astReader[iReaderRecord].acName);
getchar();
printf("请输入读者性别:\n");//F M //细节 //a 1
scanf("%s",astReader[iReaderRecord].acSex);
getchar();
printf("请输入读者最大可借阅量:\n");//10 范围
scanf("%d", &astReader[iReaderRecord].iMax);
getchar();
printf("请输入读者当前可借阅量:\n");//新增的读者 提示 两者必须相等
//读者当前可借阅量=iMax-iAmount
scanf("%d", &astReader[iReaderRecord].iAmount);
getchar();
//将新增的读者信息写入到文件中
if (fwrite(&astReader[iReaderRecord], LEN_READER, 1, pfReader) != 1)
{
printf("无法保存该信息! \n");
return;
}
else
{
printf("%d号读者信息已经保存!\n", astReader[iReaderRecord].iNum);
iReaderRecord++;
}
printf("继续输入信息吗?(y/n):");
cFlag = getchar();
getchar();
}
fclose(pfReader);
printf("添加读者信息执行完毕!\n");
}
//查找读者信息
int SearchReader()
{
int iReaderNum, iReaderRecord, iReaderid=0, i;
//
system("cls");
iReaderRecord = ReadReaderFile("rb");//以只读的形式打开
if (iReaderRecord == -1)
{
printf("文件打开失败! \n");
printf("按任意键返回子菜单");
_getch();
return -2;
}
else if (iReaderRecord == 0)
{
printf("没有读者记录! \n");
printf("按任意键返回子菜单");
_getch();
return -3;
}
//进入查找程序
printf("请输入读者编号:");
scanf("%d", &iReaderNum);
getchar();
for (i = 0; i < iReaderRecord; i++)
{
if (iReaderNum == astReader[i].iNum)
{
iReaderid = i;//找到记录,返回读者编号
printf("%d号读者信息如下:\n", iReaderNum);
printf("\t**************************************************************\n");
printf("\t%-6s%-16s%-10s%-20s%-20s\n", "编号", "姓名", "性别", "最大可借阅数量", "当前可借阅数量");
printf("\t%-6d%-16s%-10s%-20d%-20d\n", READER_DATA);
printf("\t**************************************************************\n");
break;
}
}
if (i == iReaderRecord)
{
printf("找不到%d号读者信息", iReaderNum);
iReaderid == -1; //找不到记录返回-1
}
return iReaderid;
}
//删除读者信息
void DeleteReader()
{
FILE* pfReader;//文件指针
int iReaderid, iReaderRecord, i;
char cFlag;
system("cls");
iReaderid = SearchReader();
if (iReaderid == -1)
{
return;
}
iReaderRecord = ReadReaderFile("rb"); //???
printf("已经找到该读者,是否删除?(y/n)");
cFlag = getchar();
getchar();
//删除之前需要保存删除之前的读者编号,因为删除之后的读者编号信息会被覆盖
int index = astReader[iReaderid].iNum;
if (cFlag == 'n')
{
return;
}
else if (cFlag == 'y')
{
for (int i = iReaderid; i < iReaderRecord - 1; i++)
{
astReader[i] = astReader[i + 1];//数组依次前移
}
iReaderRecord--;
}
pfReader = fopen("reader.txt", "wb");
if (pfReader != NULL)
{
for (i = 0; i < iReaderRecord; i++)
{
if (fwrite(&astBook[i], LEN_READER, 1, pfReader) != 1)
{
printf("无法保存该信息! \n");
return;
}
}
fclose(pfReader);
printf("%d号读者信息已经删除!\n", index);
}
}
//修改读者信息子菜单
void ShowModifyReaderMenu()
{
printf("\n\n\n");
printf("| 1.编号 |\n");
printf("| 2.姓名 |\n");
printf("| 3.性别 |\n");
printf("| 4.最大可借阅数量 |\n");
printf("| 输入需要修改的信息: |\n");
}
//保存修改后的读者信息
void SaveReaderFile(int iReaderid)
{
FILE* pfReader;
pfReader = fopen("reader.txt", "rb+");
if (pfReader != NULL)
{
fseek(pfReader, LEN_READER * iReaderid, SEEK_SET);
if (fwrite(&astReader[iReaderid], LEN_READER, 1, pfReader) != 1)
{
printf("无法保存该信息!\n");
}
fclose(pfReader);
}
}
//修改读者信息
void ModifyReader()
{
int iReaderid, iReaderRecord, iBorrow, iltem, iNum, iMax, iFlagExist,i;
system("cls");
iReaderid = SearchReader();
if (iReaderid == -1)
{
return;
}
//找到该序号的读者,可以进行修改
iReaderRecord = ReadReaderFile("rb");
ShowModifyReaderMenu();//显示需要修改的信息的菜单
scanf("%d", &iltem);
getchar();
switch (iltem)
{
case 1:
printf("请输入读者编号:\n");
do
{
iFlagExist = 0;
scanf("%d", &iNum);
getchar();
for (int i = 0; i < iReaderRecord; i++)
{
if(iNum==astReader[i].iNum&&i!=iReaderid)
{
iFlagExist = 1;
printf("该读者编号已经存在,请重新输入:");
break;
}
}
} while (iFlagExist == -1);
astReader[iReaderid].iNum = iNum;
break;
case 2:
printf("请输入读者姓名: \n");
scanf("%s", astReader[iReaderid].acName);
getchar();
break;
case 3:
printf("请输入读者性别:F/M \n");
while (scanf("%s", astReader[iReaderid].acSex) > 0)
{
getchar();
if (strcmp(astReader[iReaderid].acSex, "F") == 0 || strcmp(astReader[iReaderid].acSex, "M") == 0)
{
break;
}
printf("只能输入'F'或者'M',请重新输入!\n");
}
break;
case 4:
//iBorrow表示已经借阅的数量
iBorrow = astReader[iReaderid].iMax - astReader[iReaderid].iAmount;
printf("请输入读者最大可借阅数量(范围为:5-10): \n");
while (scanf("%d", &iMax) == 1)
{
getchar();
if (iMax >= 5 && iMax <= 10)
{
if (iBorrow > iMax)
{
printf("读者已经借阅的数量超于最大,需还书后进行修改!\n");
return;
}
else
{
astReader[iReaderid].iMax = iMax;
astReader[iReaderid].iAmount = iMax - iBorrow;
for (i = iBorrow; i < iMax; i++)
{
astReader[iReaderid].Bookid[i] = 0;
}
break;
}
}
printf("错误,读者最大可借阅的范围为5-10,请重新输入!\n");
}
break;
}
SaveReaderFile(iReaderid);
printf("该读者信息修改成功! \n");
}
void ManageReader()//读者管理模块
{
int rselect;
ShowReaderMenu();//显示读者管理的主菜单
scanf("%d", &rselect);
getchar();
while (rselect)
{
switch (rselect)
{
case 1:
ShowReader();//显示读者信息
break;
case 2:
AddReader();//新增读者信息
break;
case 3:
SearchReader();//查找读者信息
break;
case 4:
DeleteReader();//删除读者信息
break;
case 5:
ModifyReader();//修改读者信息
break;
default:
printf("\t\t请输入正确的数字 \n");
}
printf("请按任意键返回子菜单");
_getch();//从控件中获取字符而无需回显
ShowReaderMenu();
scanf("%d", &rselect);
getchar();
}
}
void ShowBorrowRetuenMenu()
{
system("cls");
printf("\n\n");
printf("*******欢迎进入*************\n");
printf("*****借书还书子菜单*********\n");
printf("*****1.借书*****************\n");
printf("*****2.还书*****************\n");
printf("*****0.返回主菜单***********\n");
printf("*****请输入选择:***********\n");
printf("****************************\n");
}
//借书系统
void BorrowBook()
{
//读者是否可以借书
system("cls");
int iBookid, iReaderid, iBorrow, i;
//输入要借书的读者编号,判断编号是否存在,如果在,显示读者已经借阅的图书信息
iReaderid = SearchReader();
if (iReaderid == -1)
{
return;
}
iBorrow = astReader[iReaderid].iMax - astReader[iReaderid].iAmount;
if (iBorrow == 0)
{
printf("该读者目前没有借阅任何图书!");
}
else
{
printf("\t该读者当前所借图书为:");
for (int i = 0; i < iBorrow; i++)
{
printf("%d\n", astReader[iReaderid].Bookid[i]);
}
printf("\n\n");
}
if (astReader[iReaderid].iAmount == 0)
{
printf("该读者可借阅图书的数量为0,不予借书!\n");
}
//图书是否可以借阅(图书编号,库存)
printf("\n按任意键输入要借阅的图书信息\n");
_getch();
iBookid = SearchBook();
if (iBookid == -1)
{
return;
}
if (astBook[iBookid].iAmount == 0)
{
printf("该图书的库存为0,不可借阅\n");
return;
}
//借书
astReader[iReaderid].Bookid[iBorrow] = astBook[iBookid].iNum;
//图书的库存减1
astBook[iBookid].iAmount--;
//当前读者可借阅的数量减1
astReader[iReaderid].iAmount--;
//保存
SaveBookFile(iBookid);
SaveReaderFile(iReaderid);
printf("借书成功!\n");
}
//还书系统
void ReturnBook()
{
system("cls");
int iBookid, iReaderid, iBorrow, i=0, j;
//读者
iReaderid = SearchReader();
if (iReaderid == -1)
{
return;
}
iBorrow = astReader[iReaderid].iMax - astReader[iReaderid].iAmount;
if (iBorrow == 0)
{
printf("该读者没有借阅任何图书,无需归还!\n");
return;
}
else
{
printf("该读者借阅的图书为:\n");
for(int i=0;i<iBorrow;i++)
{
printf("%d\n", astReader[iReaderid].Bookid[i]);
}
}
printf("按任意键输入要归还的图书信息\n");
_getch();
// 图书在不在
iBookid = SearchBook();
if (iBookid == -1)
{
return;
}
//图书列表有没有该图书
for (int i=0; i < iBorrow; i++)
{
if (astReader[iReaderid].Bookid[i] == astBook[iBookid].iNum)
{
for (j = i; j < iBorrow - 1; j++)
{
astReader[iReaderid].Bookid[j] = astReader[iReaderid].Bookid[j + 1];
}
astReader[iReaderid].Bookid[iBorrow - 1] = 0;
//图书库存加1
astBook[iBookid].iAmount++;
//读者的可借阅数量加1
astReader[iReaderid].iAmount++;
break;
}
}
if (i == iBorrow)
{
printf(" \n该读者没有借阅该图书,无需归还! \n");
return;
}
SaveBookFile(iBookid);
SaveReaderFile(iReaderid);
printf("还书成功!\n");
//还书
}
//借书还书模块
void BorrowReturnBook()
{
ShowBorrowRetuenMenu();//借还书子菜单
int iltem;
scanf("%d", &iltem);
getchar();
while (iltem)
{
switch (iltem)
{
case 1:
BorrowBook();//借书
break;
case 2:
ReturnBook();//还书
break;
default:
printf("输入错误,请输入正确的选项!\n");
}
printf("按任意键返回子菜单!\n");
_getch();
ShowBorrowRetuenMenu();
scanf("%d", &iltem);
getchar();
}
}
int main()
{
//显示主函数的模块
ShowMainMenu();
int iltem;
scanf("%d", &iltem);
while (iltem)
{
switch (iltem)
{
case 1:
ManageBook();//图书管理模块
break;
case 2:
ManageReader();//读者管理模块
break;
case 3:
BorrowReturnBook();//借书还书模块
break;
default:
printf("\t请输入正确的数字 \n \t 程序将于3s后跳转至主菜单");
Sleep(3000);
}
ShowMainMenu();
scanf("%d", &iltem);
getchar();
}
return 0;
}