#define_CRT_SECURE_NO_DEPRECATE#includestdio.h#includestring.h#includeconio.h#includestdlib.h#defineNsizeof(structbook)#definePT%-5d%10s%6s%6s%6s%3d%5d%-15s\n,p-num,p-name,p-here,p-author,p-pub,p-count,p-price,p-datestructbook/*图书信息*/{intnum;/*书号*/charname[10];/*书名*/charhere[10];/*所在书库*/charauthor[15];/*作者*/charpub[20];/*出版社*/intcount;/*数量*/intprice;/*价格*/chardate[20];/*购买日期*/structbook*next;};/*输出模块*/voidprint(structbook*p0){structbook*p;p=p0-next;printf(\n\n\t\t^^^^^^^^^^^^^^图书信息表^^^^^^^^^^^^^^);printf(\n\n图书编号---图书名称---所在书库----作者----出版社---数量---价格---购买日期\n);while(p!=NULL){printf(PT);p=p-next;}getch();}/*输入模块*/structbook*creat(){structbook*head,*p1,*p2;inti=0;head=p2=(structbook*)malloc(N);head-next=NULL;printf(\n\n\t\t录入图书信息);printf(\n\t---------------------------------------);while(1){p1=(structbook*)malloc(N);printf(\n请输入图书编号(书号为0结束):);scanf(%d,&p1-num);if(p1-num!=0){printf(\n\n书名所在书库作者出版社图书数量价格购买日期\n);scanf(%s%s%s%s%d%d%s,p1-name,p1-here,p1-author,p1-pub,&p1-count,&p1-price,p1-date);p2-next=p1;p2=p1;i++;}elsebreak;}p2-next=NULL;free(p1);printf(\n\t\t----------------------------------------);printf(\n\t\t%d种书录入完毕,i);getch();returnhead;}/*查找模块*/voidfind_name(structbook*p0){charname[10];intflag=1;structbook*p;printf(请输入要查找的书名:\n);scanf(%s,name);for(p=p0-next;p;p=p-next)if(strcmp(p-name,name)==0){printf(\n\n图书编号---图书名称---所在书库----作者----出版社---数量---价格---购买日期\n);printf(PT);flag=0;}if(flag)printf(\n暂无此图书信息\n);getch();}voidfind_author(structbook*p0){charauthor[15];intflag=1;structbook*p;printf(请输入要查找的作者名:\n);scanf(%s,author);for(p=p0-next;p;p=p-next)if(strcmp(p-author,author)==0){printf(\n\n图书编号---图书名称---所在书库----作者----出版社---数量---价格---购买日期\n);printf(PT);flag=0;}if(flag)printf(\n暂无此图书信息\n);getch();}voidfind(structbook*p0){inta,flag=1;structbook*p;p=p0;system(cls);while(flag){system(cls);printf(\t\t\t------------查找------------);printf(\n\n\t\t\t\t1、按书名查找\t\n);printf(\n\n\t\t\t\t2、按作者查找\t\n);printf(\n\n\t\t\t\t3、按3键返回\t\n\n\n);printf(请输入查找方式:);scanf(%d,&a);switch(a){case1:find_name(p);break;case2:find_author(p);break;case3:system(cls);flag=0;break;default:printf(\n\t输入有误,请重新输入!);getch();find(p);}}system(cls);}/*删除模块*/voiddel(structbook*p0){charname[10];intflag=1;structbook*p;p=p0;printf(请输入要删除的书名:\n);scanf(%s,name);while(p!=NULL){if(strcmp(p-name,name)==0){p0-next=p-next;/*后续节点连接到前驱节点之后*/free(p);printf(\t该书资料已删除.);flag=0;break;}p0=p;p=p-next;}if(flag)printf(\n\t无此图书信息。);getch();}/*增加模块*/voidinsert(structbook*p0){intflag;structbook*p,*q;while(1){flag=0;p=(structbook*)malloc(N);printf(\n请输入要增加的图书编号(书号为0退出):);scanf(%d,&p-num);if(p-num!=0){for(q=p0-next;q;q=q-next){if(q-num==p-num)/*找到重号*/{flag=1;free(p);printf(\t该书已存在);getch();break;}}if(flag==0){printf(\n\n书名所在书库作者出版社图书数量价格购买日期\n);scanf(%s%s%s%s%d%d%s,p-name,p-here,p-author,p-pub,&p-count,&p-price,p-date);p-next=p0-next;p0-next=p;printf(\t已成功插入.);}}elsebreak;}getch();}/*修改模块*/voidmodify(structbook*p0){charname[10];intflag=1;intchoice;structbook*p;p=p0-next;printf(请输入要修改的书名:\n);scanf(%s,name);while(p!=NULL&&flag==1){if(strcmp(p-name,name)==0){printf(\n\t请选择要修改的项:);printf(\n\t1.修改图书编号\n);printf(\n\t2.修改图书所在书库\n);printf(\n\t3.修改图书作者\n);printf(\n\t4.修改图书出版社\n);printf(\n\t5.修改图书库存量\n);printf(\n\t6.修改图书价格\n);printf(\n\t7.修改图书购买日期\n);scanf(%d,&choice);switch(choice){case1:{printf(\n请输入新的图书编号:);scanf(%d,&p-num);break;}case2:{printf(\n请输入新的图书书库:);scanf(%s,p-here);break;}case3:{printf(\n请输入新的图书作者:);scanf(%s,p-author);break;}case4:{printf(\n请输入新的图书出版社:);scanf(%s,p-pub);break;}case5:{printf(\n请输入新的图书库存量:);scanf(%d,&p-count);break;}case6:{printf(\n请输入新的图书价格:);scanf(%d,&p-price);break;}case7:{printf(\n请输入新的图书购买日期:);scanf(%s,p-date);break;}}printf(\n\t该项已成功修改。\n\t新的图书信息:);printf(\n\n图书编号---图书名称---所在书库----作者----出版社---数量---价格---购买日期\n);printf(PT);flag=0;}p0=p;p=p0-next;}if(flag)printf(\n\t暂无此图书信息。);getch();}/*读文件*/structbook*read_file(){inti=0;structbook*p,*p1,*head=NULL;FILE*fp;if((fp=fopen(library.txt,rb))==NULL){printf(\n\n\n\n\n\t********库文件不存在,请创建!**********);getch();returnNULL;}head=(structbook*)malloc(N);p1=head;head-next=NULL;printf(\n已有图书信息:);printf(\n\n图书编号---图书名称---所在书库----作者----出版社---数量---价格---购买日期\n);while(1){p=(structbook*)malloc(N);/*开辟空间以存放的取得信息*/if(fscanf(fp,%d%s%s%s%s%d%d%s,&p-num,p-name,p-here,p-author,p-pub,&p-count,&p-price,p-date)!=EOF){printf(PT);i++;p1-next=p;p1=p;}if(feof(fp))break;}p1-next=NULL;fclose(fp);/*将文件类型指针fp所指向的文件关闭,fp不再指向该文件*/printf(\n共种%d图书信息,i);printf(\n\n\n文件中的信息以正确读出。按任意键进入主菜单。);getch();return(head);}/*保存文件*/voidsave(structbook*head){FILE*fp;structbook*p;fp=fopen(library.txt,wb);/*以只写方式打开二进制文件*/if(fp==NULL)/*打开文件失败*/{printf(\n=====打开文件失败!\n);getch();return;}elsefor(p=head-next;p!=NULL;p=p-next)fprintf(fp,%d%s%s%s%s%d%d%s\n,p-num,p-name,p-here,p-author,p-pub,p-count,p-price,p-date);/*按照格式要求将数据写入fp所指向的文件*/fclose(fp);printf(\n\t保存文件成功!\n);getch();}voidsort(structbook*p0){intflag,i;structbook*p,*r1,*r2;while(1){flag=0;for(p=p0-next;p-next-next!=NULL;p=p-next)