1、 /对图书进行排序void num_paixu(struct book head); /按图书编号排序void time_paixu(struct book head); /按图书出版时间排序void price_paixu(struct book head); /按图书价格排序void bname_paixu(struct book *head); /按图书名排序void wname_paixu(struct book *head); /按作者名排序int main() int choice,n,x,y=1,c,c1=1; char a,d,b10,b110=1”; struct book
2、head=NULL; while(y) system(”cls); printf(”nnnnn); printf( -n printf(” - -|-图书信息管理系统-|-|-n - |- 登陆界面 -|-|-n”); printf( -nn =1-进入系统=n”); printf(” =0退出系统=n”); -n 请输入选择:”); scanf(”%d”,n);n”); getchar(); switch(n) case 0: y=0; break; case 1: 请输入您的用户名(输入1即可):”); gets(b); 请输入您的密码(输入1即可): scanf(d,&c); print
3、f(”n if(strcmp(b,b1)!=0|c!=c1) 验证失败,请重新输入!n”); scanf(”cd); getchar(); system(”cls”); else 验证通过!请按Enter键进入!d); x=1; while(x) system(cls”); system (”color 1F”); printf(” -nn - |-|-图书信息管理系统-|-|nn”); - |-操作界面-|-|nn”); printf(” -nn -n printf(” -|-系统菜单选项-|-n printf(” -n”); - 1-添加图书 删除图书-2 |-nn - 3图书列表 图书排
4、序-4 |-nn”); printf(” | 5-查询图书 修改图书-6 -nn printf(” - 7录入数据 退出系统-0 nn -n”); printf(” -nn”); printf(”请输入所选择的序号:%d,choice); getchar(); system(cls switch(choice) case 0: x=0;break; head=load(); if(head=NULL) printf(”文件为空,请先录入数据! getchar(); break; else head=addbook(head); printf(添加成功!是否将新信息保存到文件?(y/n)n”);
5、 scanf(”%c,a); switch(a) case n: break; case y: fprint(head); printf(保存成功! getchar(); break; case 2: if(head=NULL)文件为空,请先录入数据! getchar(); else deletebook(head); case 3: head=load();文件为空,请先录入数据! print_book(head); case 4: head=load(); if(head=NULL)文件为空,请先录入数据! paixu(head); case 5: printf(”文件为空,请先录入数据!
6、 else chaxun(head); getchar(); case 6:文件为空,请先录入数据! else xiugai(head); break; case 7: printf(注意:输入图书编码为0时结束! head=creatbook();是否将输入的信息保存到文件以覆盖文件中已存在的信息? scanf(c”,a); switch(a) case 0: break; case y保存成功! default: printf(”输入有误,请重新输入! getchar(); break; break; 输入有误,请重新输入! getchar(); /录入数据并形成链表struct book
7、 creatbook() struct book head,*tail,*p; int num,time,n; char bname50,wname20,press50,sort50; float price; int size=sizeof(struct book); head=tail=NULL;请输入图书编号: scanf(”%d,&num); printf(”请输入图书名: scanf(”%s”,bname); printf(”请输入作者名:%s”,wname); printf(”请输入出版社:%s,press); printf(”请输入类别: scanf(”s,sort);请输入出版
8、时间:d”,time);请输入价格:f”,price); while(1) p=(struct book )malloc(size); pnum=num; strcpy(p-bname,bname); strcpy(p-wname,wname); strcpy(p-press,press); strcpy(psort,sort); ptime=time; pprice=price; p-next=NULL; if(head=NULL) head=p; else tailnext=p; tail=p; do printf(”请输入图书编号:%d”,&num); n=yanzheng(head,n
9、um); if(n=0) printf(”您输入的编号已存在,请重新输入! while(1); if(num=0) 请输入图书名: scanf(%s”,bname); printf(”请输入作者名: scanf(”s,wname);请输入出版社:,press); printf(”请输入类别: scanf(”s”,sort);请输入出版时间:,time); printf(”请输入价格:%f”,price); return head;/插入结点,并且插入后仍按一定顺序struct book *addbook(struct book *head) struct book *ptr,*p1,*p2,*
10、p; char bname50,wname20,press50,sort50; int num,time,n=1; do printf(”请输入图书编号:%d”,& n=yanzheng(head,num); printf(”您输入的编号已存在,请重新输入! while(1); printf(”请输入图书名:%s”,bname);s scanf(”%s”,sort); printf(”请输入出版时间: scanf(”%d”,time); printf(”请输入价格:fprice); p=(struct book *)malloc(size); pnum=num; strcpy(pbname,b
11、name); strcpy(pwname,wname); strcpy(p-press,press); strcpy(p-sort,sort); ptime=time; pprice=price; p2=head; ptr=p; while(ptr-nump2num)&(p2-next!=NULL) p1=p2; p2=p2next; if(ptr-numnum) if(head=p2) head=ptr; p1-next=ptr;next=p2; else p2next=ptr;next=NULL;/验证添加的图书编号是否已存在int yanzheng(struct book head,in
12、t m) struct book p; p=head; while(p!=NULL) if(p-num=m) p=p-next; if(p=NULL) return 0; else return 1;/将新链表写入文件中void fprint(struct book *head) FILE *fp; char ch=1; struct book p1; if(fp=fopen(f1。txt,”w”)=NULL)File open error! exit(0); fputc(ch,fp); for(p1=head;p1;p1=p1-next) fprintf(fp,d s %s s %s %d
13、fn”,p1num,p1bname,p1wname,p1-press,p1-sort,p1time,p1-price); fclose(fp);/从文件中读取图书信息struct book *load() char ch; struct book head,tail,*p1; if(fp=fopen(”f1.txt,r”)=NULL)File open error! ch=fgetc(fp); if(ch=1) while(!feof(fp) p1=(struct book )malloc(sizeof(struct book); fscanf(fp,”dsss%s%d%fn”,&p1num,
14、p1-bname,p1wname,p1press,p1sort,&p1time,p1price); head=p1; tailnext=p1; tail=p1; tailnext=NULL; return NULL;/将整个链表的信息输出void print_book(struct book *head) struct book ptr; printf(”n没有信息! return; 图书信息列表如下n”); printf(” =n printf(” 编号 图书名 作者名 出版社 类别 出版时间 价格n for(ptr=head;ptr;ptr=ptrnext) 3d %12s %8s %14
15、s -2s -4d 。2fn”, ptrnum,ptr-bname,ptrwname,ptrpress,ptrsort,ptrtime,ptrprice);/删除图书信息void deletebook(struct book head) int a; char b,ch=; struct book *p1,*p2; FILE *fp;请输入要删除的图书编号: scanf(”d”,a); p1=head; if(p1-num=a&p1-next=NULL) /对于文件中只有一组数据 printf(”是否清空文件! scanf(”%c”,&b); switch(b) case n: case y if(fp=fopen(”f1。w)=NULL) printf(”File open error! fclose(fp);文件已清空! else while(p1-num!=a&p1=NULL) p2=p1; p1=p1next; if(p1next=NULL) if(p1num=a) p2-是否确定从文件中彻底删除该图书?(y/n)n getchar(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1