1、void time_chaxun(struct book *head); /按出版时间查询图书void bname_chaxun(struct book *head); /按图书名查询图书void xiugai(struct book *head); /修改图书信息void paixu(struct book *head); /对图书进行排序void num_paixu(struct book *head); /按图书编号排序void time_paixu(struct book *head); /按图书出版时间排序void price_paixu(struct book *head); /按
2、图书价格排序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 *head=NULL; while(y) system(cls); printf(nnnnn -n - |-|-图书信息管理系统-|-|-n - |-|- 登陆界面 -|-|-n printf(n =1-进入系统=n =0-退出系统=n 请输入选择: scanf(%d,
3、&n); getchar(); switch(n) case 0: y=0; break; case 1: 请输入您的用户名(输入1即可): gets(b); 请输入您的密码(输入1即可): scanf(c); if(strcmp(b,b1)!=0|c!=c1) 验证失败,请重新输入!%cd); getchar(); system( else 验证通过!请按Enter键进入! x=1; while(x) system (color 1F -nn - |-|-图书信息管理系统-|-|-nn - |-|-操作界面-|-|-nn printf( -n -|-系统菜单选项-|-n -| 1-添加图书
4、删除图书-2 |-nn -| 3-图书列表 图书排序-4 |-nn -| 5-查询图书 修改图书-6 |-nn -| 7-录入数据 退出系统-0 |-nn -nn请输入所选择的序号:choice); switch(choice) case 0: x=0;break; head=load(); if(head=NULL)文件为空,请先录入数据! getchar(); break; else head=addbook(head);添加成功!是否将新信息保存到文件?(y/n)na); switch(a) case n: break;y fprint(head); printf(保存成功! getch
5、ar(); case 2: if(head=NULL) deletebook(head); case 3: head=load(); print_book(head); case 4: paixu(head); case 5: else chaxun(head); case 6: xiugai(head); break; case 7: printf(注意:输入图书编码为0时结束! head=creatbook();是否将输入的信息保存到文件以覆盖文件中已存在的信息? scanf( switch(a) case 0 default:输入有误,请重新输入! getchar(); break; 输
6、入有误,请重新输入! /录入数据并形成链表struct book *creatbook() struct book *head,*tail,*p; int num,time,n; char bname50,wname20,press50,sort50; int size=sizeof(struct book); head=tail=NULL;请输入图书编号:num);请输入图书名:%s,bname);请输入作者名:,wname);请输入出版社:,press);请输入类别:,sort);请输入出版时间:time);请输入价格:%fprice); while(1) p=(struct book *
7、)malloc(size); p-num=num; strcpy(p-bname,bname);wname,wname);press,press);sort,sort);time=time;price=price;next=NULL; if(head=NULL) head=p; else tail-next=p; tail=p; do n=yanzheng(head,num); if(n=0)您输入的编号已存在,请重新输入! while(1); if(num=0) scanf( return head;/插入结点,并且插入后仍按一定顺序struct book *addbook(struct b
8、ook *head) struct book *ptr,*p1,*p2,*p; int num,time,n=1; do p=(struct book *)malloc(size); p- strcpy(p- p2=head; ptr=p; while(ptr-nump2-num)&(p2-next!=NULL) p1=p2; p2=p2-next; if(ptr-numnum) if(head=p2) head=ptr; p1-next=ptr;next=p2; else p2-/验证添加的图书编号是否已存在int yanzheng(struct book *head,int m) stru
9、ct book *p; p=head; while(p!=NULL) if(p-num=m) p=p- 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 %fn,p1-num,p
10、1-bname,p1-wname,p1-press,p1-sort,p1-time,p1- fclose(fp);/从文件中读取图书信息struct book *load() char ch; struct book *head,*tail,*p1;r ch=fgetc(fp); if(ch=) while(!feof(fp) p1=(struct book *)malloc(sizeof(struct book); fscanf(fp,%d%s%s%s%s%d%fnp1-sort,&time,& head=p1;next=p1; tail=p1; tail- return NULL;/将整个
11、链表的信息输出void print_book(struct book *head) struct book *ptr;n没有信息! return; 图书信息列表如下n =n 编号 图书名 作者名 出版社 类别 出版时间 价格n for(ptr=head;ptr;ptr=ptr-next) %3d %-12s %-8s %-14s %-2s %-4d %.2fn, ptr-num,ptr-bname,ptr-wname,ptr-press,ptr-sort,ptr-time,ptr-/删除图书信息void deletebook(struct book *head) int a; char b,ch= struct book *p1,*p2;请输入要删除的图书编号: p1=head; if(p1-num=a&next=NULL) /对于文件中只有一组数据是否清空文件!b); switch(b) case 文件已清空! while(p1-num!=a& p2=p1; p1=p1-next=NULL)num=a)是否确定从文件中彻底删除该图书? getchar(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1