#includestdio.h#includestdlib.h#includestring.hstructbook{intnum;charbname[50];charwname[20];charpress[50];charsort[50];inttime;floatprice;structbook*next;};structbook*creatbook();//创建链表structbook*addbook(structbook*head);//添加图书intyanzheng(structbook*head,intm);//验证新添加的图书编码是否已存在voiddeletebook(structbook*head);//删除图书voidfprint(structbook*head);//将链表写入文件structbook*load();//从文件中读取信息并建成链表voidprint_book(structbook*head);//将链表信息输出voidchaxun(structbook*head);//查询图书信息voidnum_chaxun(structbook*head);//按图书编号查询图书voidwname_chaxun(structbook*head);//按作者名查询图书voidsort_chaxun(structbook*head);//按类别查询图书voidtime_chaxun(structbook*head);//按出版时间查询图书voidbname_chaxun(structbook*head);//按图书名查询图书voidxiugai(structbook*head);//修改图书信息voidpaixu(structbook*head);//对图书进行排序voidnum_paixu(structbook*head);//按图书编号排序voidtime_paixu(structbook*head);//按图书出版时间排序voidprice_paixu(structbook*head);//按图书价格排序voidbname_paixu(structbook*head);//按图书名排序voidwname_paixu(structbook*head);//按作者名排序intmain(){intchoice,n,x,y=1,c,c1=1234;chara,d,b[10],b1[10]=yjk;structbook*head=NULL;while(y){system(cls);printf(\n\n\n\n\n\n\n);printf(**********欢迎光临**********\n\n);printf(**********************图书信息管理系统************************\n\n\n);printf(\n\n);printf(============1-用户登录===========\n);printf(============0-退出系统===========\n);printf(请输入您的选择:);scanf(%d,&n);printf(\n);getchar();switch(n){case0:y=0;break;case1:printf(请输入您的用户名:);gets(b);printf(\n);printf(请输入您的密码:);scanf(%d,&c);printf(\n);if(strcmp(b,b1)!=0||c!=c1){printf(验证失败,请重新输入!\n);scanf(%c,&d);getchar();system(cls);}else{printf(验证通过!请按Enter键进入!\n);scanf(%c,&d);getchar();x=1;while(x){system(cls);printf(------------------\n);printf(*图书信息管理系统*\n);printf(------------------\n\n);printf(**********************************************\n\n);printf(**********************************************\n\n);printf(||1-添加图书2-删除图书||\n\n);printf(||3-图书列表4-图书排序||\n\n);printf(||5-查询图书6-修改图书||\n\n);printf(||7-录入数据0-退出系统||\n\n);printf(**********************************************\n\n);printf(**********************************************\n\n);printf(请输入所选择的序号:);scanf(%d,&choice);getchar();system(cls);switch(choice){case0:x=0;break;case1:head=load();if(head==NULL){printf(文件为空,请先录入数据!\n);getchar();break;}else{head=addbook(head);printf(添加成功!\n);printf(是否将新信息保存到文件?(y/n)\n);scanf(%c,&a);getchar();switch(a){case'n':break;case'y':fprint(head);printf(保存成功!\n);getchar();break;}break;}case2:head=load();if(head==NULL){printf(文件为空,请先录入数据!\n);getchar();break;}else{deletebook(head);getchar();break;}break;case3:head=load();if(head==NULL){printf(文件为空,请先录入数据!\n);getchar();break;}else{print_book(head);getchar();break;}case4:head=load();if(head==NULL){printf(文件为空,请先录入数据!\n);getchar();break;}else{paixu(head);getchar();}break;case5:head=load();if(head==NULL){printf(文件为空,请先录入数据!\n);getchar();break;}else{chaxun(head);getchar();}break;case6:head=load();if(head==NULL){printf(文件为空,请先录入数据!\n);getchar();break;}else{xiugai(head);getchar();break;}break;case7:printf(注意:输入图书编码为0时结束!\n);head=creatbook();printf(是否将输入的信息保存到文件以覆盖文件中已存在的信息?(y/n)\n);getchar();scanf(%c,&a);getchar();switch(a){case'n':break;case'y':fprint(head);printf(保存成功!\n);getchar();break;}break;default:printf(您的输入有误,请重新输入!\n);getchar();break;}}}break;default:printf(您的输入有误!请重新输入!\n);getchar();break;}}}//录入数据并形成链表structbook*creatbook(){structbook*head,*tail,*p;intnum,time,n;charbname[50],wname[20],press[50],sort[50];floatprice;intsize=sizeof(structbook);head=tail=NULL;printf(请输入图书编号:);scanf(%d,&num);printf(请输入图书名:);scanf(%s,bname);getchar();printf(请输入作者名:);scanf(%s,wname);getchar();printf(请输入出版社:);scanf(%s,press);getchar();printf(请输入类别:);scanf(%s,sort);getchar();printf(请输入出版时间:);scanf(%d,&time);getchar();printf(请输入价格:);scanf(%f,&price);getchar();while(1){p=(structbook*)malloc(size);p-num=num;strcpy(p-bname,bname);strcpy(p-wname,wname);strcpy(p-press,press);strcpy(p-sort,sort);p-time=time;p-price=price;p-next=NULL;if(head==NULL)head=p;elsetail-next=p;tail=p;do{printf(请输入图书编号:);scanf(%d,&num);n=yanzheng(head,num);if(n==0)break;elseprintf(您输入的编号已存在,请重新输入!\n);}while(1);if(num==0)break;else{printf(请输入图书名:);scanf(%s,bname);getchar();printf(请输入作者名:);scanf(%s,wname);getchar();printf(请输入出版社:);scanf(%s,press);getchar();printf(请输入类别:);scanf(%s,sort);getchar();printf(请输入出版时间:);scanf(%d,&time);getchar();printf(请输入价格:);scanf(%f,&price);getchar();}}returnhead;}//插入结点,并且插入后仍按一定顺序structbook*addbook(structbook*head){structbook*ptr,*p1,*p2,*p;charbname[50],wname[20],press[50],sort[50];intsize=sizeof(structbook);intnum,time,n=1;floatprice;do{printf(请输入图书编号:);scanf(%d,&num);n=yanzheng(head,num);if(n==0)break;elseprintf(您输入的编号已存在,请重新输入!\n);}while(1);printf(请输入图书名:);scanf(%s,bname);getchar();printf(请输入作者名:);scanf(%s,wname);getchar();printf(请输入出版社:);scanf(%s,press);getchar();printf(请输入类别:);scanf(%s,sort);getchar();printf(请输入出版时间:);scanf(%d,&time);getchar();printf(请输入价格:);scanf(%f,&price);getchar();p=(structbook*)malloc(size);p-num=num;strcpy(p-bname,bname);strcpy(p-wname,wname);strcpy(p-press,press);strcpy(p-sort