1、struct book /*图书信息*/int num; /*书号*/char name10; /*书名*/char where10; /*所在书库*/char author15; /*作者*/char pub20; /*出版社*/int count; /*数量*/struct book *next;/*输出模块*/void print(struct book *p0)struct book *p;p=p0-next;printf(nntt图书信息表);printf(nn图书编号-图书名称-所在书库-作者-出版社-数量n);while(p!=NULL)printf(PT);p=p-next;g
2、etch();/*输入模块*/struct book *creat() struct book *head,*p1,*p2;int i=0;head=p2=(struct book *)malloc(N);head-next=NULL;printf(nntt录入图书信息);printf(nt-);while(1) p1=(struct book *)malloc(N);printf(n 请输入图书编号(书号为0结束): );scanf(%d,&p1-num);if(p1-num!=0)printf(nn书名 所在书库 作者 出版社 图书数量n);scanf(%s%s%s%s%d,p1-name
3、,p1-where,p1-author,p1-pub,&p1-count);p2-next=p1;p2=p1;i+;else break;p2-next=NULL;free(p1);printf(ntt-);printf(ntt %d 种书录入完毕,i);getch();return head;/*查找模块*/void find(struct book *p0)char name10;int flag=1;struct book *p;p=p0-next;printf(请输入要查找的书名:n);scanf(%s,name);for(p=p0;p;p=p-next)if(strcmp(p-nam
4、e,name)=0) printf(nn图书编号-图书名称-所在书库-作者-出版社-数量n);printf(PT);flag=0;break;if(flag) printf(n 暂无此图书信息n);getch();/*删除模块*/void del(struct book *p0)char name10;int flag=1;struct book *p;p=p0;printf(请输入要删除的书名:n);scanf(%s,name);while(p!=NULL)if(strcmp(p-name,name)=0)p0-next=p-next; /*后续节点连接到前驱节点之后*/free(p);pr
5、intf(t该书资料已删除.);flag=0;break;p0=p;p=p-next;if(flag) printf(nt无此图书信息。);getch();/*增加模块*/void insert(struct book *p0)struct book *p;p=(struct book *)malloc(N);while(1)printf(n 请输入要增加的图书编号(书号为0 退出): );scanf(%d,&p-num);if(p-num!=0)if(p0-next!=NULL&p0-next-num=p-num) /*找到重号*/p=p-next;free(p);printf(t该书已存在
6、);else printf(nn书名 所在书库 作者 出版社 图书数量n);scanf(%s%s%s%s%d,p-name,p-where,p-author,p-pub,&p-count);p-next=p0-next;p0-next=p;printf(t已成功插入.);else break;getch();/*修改模块*/void modify(struct book *p0)char name10;int flag=1;int choice;struct book *p;p=p0-next;printf(请输入要修改的书名:n);scanf(%s,name);while(p!=NULL&f
7、lag=1)if(strcmp(p-name,name)=0)printf(nt请选择要修改的项:);printf(nt 1.修改图书编号n);printf(nt 2.修改图书所在书库n);printf(nt 3.修改图书作者n);printf(nt 4.修改图书出版社n);printf(nt 5.修改图书库存量n);scanf(%d,&choice);switch(choice)case 1: printf(n 请输入新的图书编号:);scanf(%d,p-num); break;case 2: printf(n 请输入新的图书书库:);scanf(%s,p-where); break;ca
8、se 3: printf(n 请输入新的图书作者:);scanf(%s,p-author); break;case 4: printf(n 请输入新的图书出版社:);scanf(%s,p-pub); break;case 5: printf(n 请输入新的图书库存量:);scanf(%d,p-count); break;printf(nt该项已成功修改。nt 新的图书信息:);printf(nn图书编号-图书名称-所在书库-作者-出版社-数量n);printf(PT);flag=0; p0=p;p=p0-next;if(flag) printf(nt暂无此图书信息。);getch();/*读文
9、件*/struct book *read_file() int i=0;struct book *p,*p1,*head=NULL;FILE *fp;if(fp=fopen(library.txt,rb)=NULL)printf(nnnnn t*库文件不存在,请创建!*);getch();return NULL;head=(struct book *)malloc(N);p1=head;head-next=NULL;printf(n 已有图书信息:);printf(nn图书编号-图书名称-所在书库-作者-出版社-数量n);while(!feof(fp)p=(struct book *)mall
10、oc(N); /*开辟空间以存放的取得信息*/while(fscanf(fp,%d%s%s%s%s%d,&p-num,p-name,p-where,p-author,p-pub,&p-count)!=EOF)printf(PT);i+;p1-next=p;p1=p;p1-next=NULL;fclose(fp);printf(n 共种%d 图书信息,i);printf(nnn 文件中的信息以正确读出。按任意键进入主菜单。);getch();return (head); /*保存文件*/void save(struct book *head) FILE *fp;struct book *p;fp
11、=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 %dn,p-num,p-name,p-where,p-author,p-pub,p-count);fclose(fp);printf(nt保存文件成功!n);void main()struct book *head=NULL;int choice=1;head=read_file
12、();if(head=NULL)printf(ntt*);getch();head=creat();dosystem(cls);printf(tt-Welcome-n);printf(nnt欢迎您,图书管理员.n);printf(nnnnn);printf(nt 请选择:);printf(nt 1.查询图书信息n);printf(nt 2.修改图书信息n);printf(nt 3.增加图书信息n);printf(nt 4.删除图书信息n);printf(nt 5.显示所有图书信息n);printf(nt 0.退出系统n);scanf(%d,&choice);switch(choice)case 1: find(head); break;case 2: modify(head); break;case 3: insert(head); break;case 4: del(head); break;case 5: print(head); break;case 0: system(cls);printf(nnnnnt谢谢使用,再见!nn);break;while(choice!=0);save(head);THANKS !致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考