#include
typedef int BOOL;
typedef struct bookinfo {
char number[15];/*产品编号*/ char name[30];/*产品名称*/ float price;/*单价*/
char auther[20];/*作者*/ BOOL isExit;/*存在状态*/
char lendername[20];/*借书人姓名*/ char lendersex[2];/*借书人性别*/ char lendernum[15];/*借书人学号*/ }BOOKINFO;
void menu() {
printf(\
printf(\图书管理系统\\n\
printf(\新进图书基本信息的输入\\n\ printf(\显示全部记录\\n\
printf(\根据图书名称查询图书基本信息\\n\
printf(\根据图书名称对撤销的图书信息进行删除\\n\ printf(\按照图书名称从小大到排序\\n\ printf(\统计某价格以上的图书数量\\n\ printf(\列出所有未借出去的图书信息\\n\ printf(\退出\\n\ }
void choice_1_input_new()/*输入新进的图书信息*/ {
char choice; FILE *p;
BOOKINFO newbook;
system(\ while(1) {
printf(\输入图书编号:\
gets(newbook.number);
printf(\输入图书名称:\ gets(newbook.name);
printf(\输入图书单价:\ scanf(\ while(getchar()!='\\n');
printf(\输入图书的作者:\ gets(newbook.auther);
printf(\输入借书人姓名:\
gets(newbook.lendername);
printf(\输入借书人性别:\ gets(newbook.lendersex);
printf(\输入借书人学号:\ gets(newbook.lendernum);
printf(\是否保存该条书目?(Y/N)\\n\ choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n') choice=getch();
if(choice=='Y'||choice=='y') {
newbook.isExit=1;/*将图书状态设置成1,表示没有借出*/
p=fopen(\
fwrite(&newbook,sizeof(BOOKINFO),1,p); fclose(p);
printf(\该条书目已添加到c:\\\\bookinfo.data文件中!\\n\ } else {
printf(\本条书目未保存!\\n\ }
printf(\是否继续添加书目?(Y/N)\\n\ choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n') choice=getch();
if(choice=='Y'||choice=='y')
continue; else
break; } }
void choice_2_display_all()/*显示全部图书信息*/ {
FILE *p; int n;
BOOKINFO bookinfo[100]; int booknumber=0;
system(\
p=fopen(\ while(!feof(p)) {
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p); booknumber++; }
/*booknumber--;使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); booknumber--; if(booknumber==0) {
printf(\没有任何图书信息!\\n\\n\ } else { n=0;
printf(\ 图书信息如下\\n\
printf(\ 图书信息 | 借书人信息 \\n\
printf(\编号 名称 单价 作者 图书状态 | 姓名 性别 学号\\n\
while(n printf(\ bookinfo[n].number,bookinfo[n].name,bookinfo[n].price, bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername, bookinfo[n].lendersex,bookinfo[n].lendernum); n++; } } printf(\按任意键回到主菜单!\\n\ getch(); } void choice_3_search_according_name()/*根据图书名称显示图书的信息*/ { char search[20]=\用来存放要查询的书名*/ int n; FILE *p; char choice; BOOKINFO bookinfo[100]; int booknumber=0; system(\ p=fopen(\ while(!feof(p)) { fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p); booknumber++; } booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); while(1) { printf(\输入要查询的书本名称:\ gets(search); if(booknumber==0) { printf(\书库中没有任何信息!\\n\\n\ printf(\按任意键回到主菜单!\\n\\n\ getch(); break; }/*if结束*/ else { for(n=0;n if(strcmp(bookinfo[n].name,search)==0) { printf(\该书的详细信息如下:\\n\ printf(\ 图书信息 | 借书人信息 \\n\ printf(\编号 名称 单价 作者 图书状态 | 姓名 性别 学号\\n\ printf(\ bookinfo[n].number,bookinfo[n].name,bookinfo[n].price, bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername, bookinfo[n].lendersex,bookinfo[n].lendernum); break; } if(n>=booknumber) printf(\没有查找该书的任何信息!\\n\ printf(\是否继续查询?(Y/N)\\n\ choice=getch(); while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n') choice=getch(); if(choice=='Y'||choice=='y') continue; else break; }/*else结束*/ }/*while(1)结束*/ } void choice_4_delete_according_name()/*根据图书名称对图书信息进行删除*/ { char search[20]=\用来存放要删除的书名*/ int n,i; FILE *p; char choice; BOOKINFO bookinfo[100]; int booknumber; system(\ while(1) { printf(\输入要删除的书本名称:\ gets(search); p=fopen(\ booknumber=0; while(!feof(p)) { fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p); booknumber++; }