C语言图书管理系统代码_第1页
C语言图书管理系统代码_第2页
C语言图书管理系统代码_第3页
C语言图书管理系统代码_第4页
C语言图书管理系统代码_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include<stdio.h>#include<stdlib.h>#include<string.h>struct bookint num;char bname50;char wname20;char press50;char sort50;int time;float price;struct book *next;struct book *creatbook();struct book *addbook(struct book *head);int yanzheng(struct book *head,int m);void deletebook(s

2、truct book *head);void fprint(struct book *head);struct book *load();void print_book(struct book *head);void chaxun(struct book *head);void num_chaxun(struct book *head);void wname_chaxun(struct book *head);void sort_chaxun(struct book *head);void time_chaxun(struct book *head);void bname_chaxun(str

3、uct 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);void bname_paixu(struct book *head);void wname_paixu(struct book *head);int main()int choice,n,x,y=1,c,c1=1234;char a,

4、d,b10,b110="yjk"struct book *head=NULL;while(y)/ 创建链表/ 添加图书/ 验证新添加的图书编码是否已存在/ 删除图书/ 将链表写入文件/ 从文件中读取信息并建成链表/ 将链表信息输出/ 查询图书信息/ 按图书编号查询图书/ 按作者名查询图书/ 按类别查询图书/ 按出版时间查询图书/ 按图书名查询图书/ 修改图书信息/ 对图书进行排序/ 按图书编号排序/ 按图书出版时间排序/ 按图书价格排序/ 按图书名排序/ 按作者名排序system("cls");printf("nnnnnnn");pr

5、intf("*欢迎光临*nn");printf(*书信息*nnn");printf("nn");printf("=1-=n");printf("=0-=n");printf(" 请输入您的选择:");scanf("%d",&n);printf("n");getchar();switch(n)case 0:管理系统用户登录退出系统y=0;break;case 1:printf(" 请输入您的用户名:");gets(b);

6、printf("n");printf(" 请输入您的密码:");scanf("%d",&c);printf("n");if(strcmp(b,b1)!=0|c!=c1)printf("验证失败,请重新输入!n");scanf("%c",&d);getchar();system("cls");elseprintf("验证通过!请按Enter 键进入 !n");scanf("%c",&d);get

7、char();x=1;while(x)system("cls");printf("n");*n");2-删除图书printf("*图书信息管理系统printf("nn");printf("*nn");printf("*nn");printf("|1-添加图书|nn");printf("|3-图书列表4-图书排序|nn");printf("|5-查询图书6-修改图书|nn");printf("|7-录入数据0

8、-退出系统|nn");printf("*nn");printf("*nn");:");printf(" 请输入所选择的序号scanf("%d",&choice);getchar(); system("cls");switch(choice) case 0:x=0;break;case 1:head=load();if(head=NULL)printf(" 文件为空,请先录入数据!n");getchar();break;elsehead=addbook(hea

9、d);printf(" 添加成功!n");printf(" 是否将新信息保存到文件?(y/n)n");scanf("%c",&a);getchar();switch(a) case 'n':break;case 'y':fprint(head);printf(" 保存成功!n");getchar();break;break;case 2:head=load();if(head=NULL)printf(" 文件为空,请先录入数据!n");getchar();

10、break;elsedeletebook(head);getchar();break;break;case 3:head=load();if(head=NULL)printf(" 文件为空,请先录入数据!n");getchar();break;elseprint_book(head);getchar();break;case 4:head=load();if(head=NULL)printf(" 文件为空,请先录入数据!n");getchar();break;elsepaixu(head);getchar();break;case 5:head=load

11、();if(head=NULL)printf(" 文件为空,请先录入数据!n");getchar();break;elsechaxun(head);getchar();break;case 6:head=load();if(head=NULL)printf(" 文件为空,请先录入数据!n");getchar();break;elsexiugai(head);getchar();break;break;case 7:printf(" 注意 :输入图书编码为0时结束 !n");head=creatbook();printf("

12、是否将输入的信息保存到文件以覆盖文件中已存在的信息 ?(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("您的输入有误! 请

13、重新输入!n");getchar();break;/ 录入数据并形成链表struct book *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;printf(" 请输入图书编号:");scanf("%d",&num);printf(" 请输入图书名:");scanf("

14、;%s",bname);getchar();printf(" 请输入作者名:");scanf("%s",wname);getchar();printf(" 请输入出版社:");scanf("%s",press);getchar();printf(" 请输入类别:");scanf("%s",sort);getchar();printf(" 请输入出版时间:");scanf("%d",&time);getchar();pr

15、intf(" 请输入价格:");scanf("%f",&price);getchar();while(1)p=(struct book *)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;elsetai

16、l->next=p;tail=p;doprintf(" 请输入图书编号:");scanf("%d",&num);n=yanzheng(head,num);if(n=0)break;elseprintf(" 您输入的编号已存在,请重新输入!n");while(1);if(num=0)break;elseprintf(" 请输入图书名:");scanf("%s",bname);getchar();printf(" 请输入作者名:");scanf("%s&q

17、uot;,wname);getchar();printf(" 请输入出版社:");scanf("%s",press);getchar();printf(" 请输入类别:");scanf("%s",sort);getchar();printf(" 请输入出版时间:");scanf("%d",&time);getchar();printf(" 请输入价格:");scanf("%f",&price);getchar();ret

18、urn head;/ 插入结点,并且插入后仍按一定顺序struct book *addbook(struct book *head)struct book *ptr,*p1,*p2,*p;char bname50,wname20,press50,sort50;int size=sizeof(struct book);int num,time,n=1;float price;doprintf(" 请输入图书编号:");scanf("%d",&num);n=yanzheng(head,num);if(n=0)break;elseprintf(&quo

19、t; 您输入的编号已存在,请重新输入!n");while(1);printf(" 请输入图书名:");scanf("%s",bname);getchar();printf(" 请输入作者名:");scanf("%s",wname);getchar();printf(" 请输入出版社:");scanf("%s",press);getchar();printf(" 请输入类别:");scanf("%s",sort);getchar

20、();printf(" 请输入出版时间:");scanf("%d",&time);getchar();printf(" 请输入价格:");scanf("%f",&price);getchar();p=(struct book *)malloc(size);p->num=num;strcpy(p->bname,bname);strcpy(p->wname,wname);strcpy(p->press,press);strcpy(p->sort,sort);p->ti

21、me=time;p->price=price;p2=head;ptr=p;while(ptr->num>p2->num)&&(p2->next!=NULL) p1=p2;p2=p2->next;if(ptr->num<=p2->num)if(head=p2)head=ptr;elsep1->next=ptr;p->next=p2;elsep2->next=ptr;p->next=NULL;return head;/ 验证添加的图书编号是否已存在int yanzheng(struct book *hea

22、d,int m)struct book *p;p=head;while(p!=NULL)if(p->num=m)break;p=p->next;if(p=NULL)return 0;elsereturn 1;/ 将新链表写入文件中void fprint(struct book *head)FILE *fp;char ch='1'struct book *p1;if(fp=fopen("f1.txt","w")=NULL)printf("File open error!n");exit(0);fputc(ch

23、,fp);for(p1=head;p1;p1=p1->next)fprintf(fp,"%d %s %s %s %s %d %fn",p1->num,p1->bname,p1->wname,p1->press,p1->sort, p1->time,p1->price);fclose(fp);/ 从文件中读取图书信息struct book *load()FILE *fp;char ch;struct book *head,*tail,*p1;head=tail=NULL;if(fp=fopen("f1.txt"

24、;,"r")=NULL)printf("File open error!n");exit(0);ch=fgetc(fp);if(ch='1')while(!feof(fp)p1=(struct book *)malloc(sizeof(struct book);fscanf(fp,"%d%s%s%s%s%d%fn",&p1->num,p1->bname,p1->wname,p1->press,p1->sort,&p1->t ime,&p1->price)

25、;if(head=NULL)head=p1;elsetail->next=p1;tail=p1;tail->next=NULL;fclose(fp);return head;elsereturn NULL;/ 将整个链表的信息输出void print_book(struct book *head)struct book *ptr;if(head=NULL)printf("n 没有信息!n");return;printf("图书信息列表如下n");printf("n");价格%dprintf("编号 图书名作者名出

26、版社类别 出版时间n");for(ptr=head;ptr;ptr=ptr->next)printf("%d%s%s%s %s%.2fn",ptr->num,ptr->bname,ptr->wname,ptr->press,ptr->sort,ptr->time,ptr->price);printf("n");/ 删除图书信息void deletebook(struct book *head)int a;char b,ch='1'struct book *p1,*p2;FILE *

27、fp;printf(" 请输入要删除的图书编号:");scanf("%d",&a);p1=head;if(p1->num=a&&p1->next=NULL)/ 对于文件中只有一组数据printf(" 是否清空文件!(y/n)n");getchar();scanf("%c",&b);getchar();switch(b)case 'n':break;case 'y':if(fp=fopen("f1.txt","w

28、")=NULL) printf("File open error!n");exit(0);fclose(fp);printf(" 文件已清空!n");elsewhile(p1->num!=a&&p1->next!=NULL) p2=p1;p1=p1->next;if(p1->next=NULL)if(p1->num=a)p2->next=NULL;printf(" 是否确定从文件中彻底删除该图书?(y/n)n");getchar();scanf("%c"

29、,&b);switch(b)case 'n':break;case 'y':fprint(head);printf(" 删除成功!n");getchar();break;elseprintf(" 没有找到要删除的数据!n");getchar();else if(p1=head)head=p1->next;printf(" 是否确定从文件中彻底删除该图书?(y/n)n");getchar();scanf("%c",&b);switch(b)case 'n&

30、#39;:break;case 'y':fprint(head);printf(" 删除成功!n");getchar();break;elsep2->next=p1->next;printf(" 是否确定从文件中彻底删除该图书?(y/n)n");getchar();scanf("%c",&b);switch(b)case 'n':break;case 'y':fprint(head);printf(" 删除成功!n");getchar();brea

31、k; / 图书查询void chaxun(struct book *head)int a;printf("printf(" printf(" printf(" printf("* * 1- 按图书编号查询* * 3-按图书类别查询* * 5- 按出版时间查询2-按图书名查询*n");4-按作者名查询*n");0-退出查询*n");printf(" 请输入所选择的编号:");scanf("%d",&a);getchar();switch(a)case 0:break;c

32、ase 1:num_chaxun(head);break;case 2:bname_chaxun(head);break;case 3:sort_chaxun(head);break;case 4:wname_chaxun(head);break;case 5:time_chaxun(head);break;default:printf("您的输入有误!n");break;/按编号查询图书信息void num_chaxun(struct book *head)int a;struct book *p;printf("请选择您要查询的图书编号:");sca

33、nf("%d",&a);getchar();p=head;while(p!=NULL)if(p->num=a)break;p=p->next;if(p=NULL)!n");你所查询的图书信息如下n");printf("没有找到该编号的图书elseprintf("printf("An");printf(" * 编号图书名作者名出版社类别出版时间价格*n");printf("*%d%s%s%s%s%d%.2f*n",p->num,p->bname,

34、p->wname,p->press,p->sort,p->time,p->price); printf("=n");/按图书名查询图书信息void bname_chaxun(struct book *head)char a50;int flag=0;struct book *p;printf("请选择您要查询的图书名:");gets(a);p=head;while(p!=NULL)if(strcmp(p->bname,a)=0)flag=1;break;p=p->next;if(flag=0)printf(&qu

35、ot;没有找到该图书名的图书!n");elseprintf("你所查询的图书信息如下n");printf(" =n");printf(" * 编号 图书名 作者名 出版社 类别 出版时间 价格*n");while(p!=NULL)if(strcmp(p->bname,a)=0) printf("* * %d%s%s%s%s%d%.2f*n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price)

36、;p=p->next;) printf("=n");)/按作者名查询图书信息void wname_chaxun(struct book *head)(char a50;int flag=0;struct book *p;printf("请选择您要查询的图书作者名:");gets(a);p=head;while(p!=NULL)if(strcmp(p->wname,a)=0)flag=1;break;)p=p->next;)if(flag=0)printf("没有找到该图书名的图书!n");)elseprintf(&q

37、uot;你所查询的图书信息如下n");printf(" =n");价格%.2fprintf(" * 编号 图书名 作者名 出版社 类别 出版时间*n");while(p!=NULL)if(strcmp(p->wname,a)=0) printf("* * %d%s%s%s%s%d*n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;)p=p->next;)printf(" =

38、n");)/按图书类别查询图书信息void sort_chaxun(struct book *head)(char a50;int flag=0;struct book *p;printf("请选择您要查询的图书类别:");gets(a);p=head;while(p!=NULL)if(strcmp(p->sort,a)=0)flag=1;break;)p=p->next;)if(flag=0)printf("没有找到该图书名的图书!n");)elseprintf("你所查询的图书信息如下n");printf(&

39、quot; =n");价格%.2fprintf(" * 编号 图书名 作者名 出版社 类别 出版时间*n");while(p!=NULL)if(strcmp(p->sort,a)=0)printf("* * %d%s%s%s%s%d*n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;)p=p->next;)printf("=n");)/按图书出版时间查询图书信息void time_c

40、haxun(struct book *head)(int a,flag=0;struct book *p;printf("请选择您要查询的图书出版时间:");scanf("%d",&a);getchar();p=head;while(p!=NULL)if(p->time=a)flag=1;break;)p=p->next;)if(flag=0)printf("没有找到该图书名的图书!n");)elseprintf("你所查询的图书信息如下n");printf("An");pr

41、intf(" * 编号图书名作者名出版社类别出版时间价格*n");while(p!=NULL)if(p->time=a)printf("*%d%s%s%s%s%d%.2f*n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price); flag=1;)p=p->next;)printf(" =n");)修改图书信息void xiugai(struct book *head)(int a,b;char c;struct

42、book *p;printf("请输入要修改的图书编号:");scanf("%d",&a);p=head;while(p!=NULL)if(p->num=a)break;p=p->next;if(p=NULL)printf("没有找到该编号的图书!n"); getchar();elseprintf("=n");printf("*1-编号2-图书名3-作者名 *n");printf("*4-出版社5-类别6-出版时间*n");printf("*7-

43、价格8-修改全部。-放弃修改*n");printf(=n");printf("请选择你要修改的信息编号:");scanf("%d",&b);getchar();switch(b)case 1:printf("请输入新编号:");scanf("%d",&p->num);printf("修改成功!n");getchar();break;case 2:printf("请输入新图书名:");gets(p->bname);printf(&

44、quot; 修改成功!n");break;case 3:printf(" 请输入新作者名:");gets(p->wname);printf(" 修改成功!n");break;case 4:printf(" 请输入新出版社:");gets(p->press);printf(" 修改成功!n");break;case 5:printf(" 请输入新类别:");gets(p->sort);printf(" 修改成功!n");break;case 6:pr

45、intf(" 请输入新出版时间:");scanf("%d",&p->time);printf(" 修改成功!n");getchar();break;case 7:printf(" 请输入新价格:");scanf("%f",&p->price);printf(" 修改成功!n");getchar();break;case 8:printf(" 请输入新图书编号:");scanf("%d",&p->

46、num);printf(" 请输入新图书名:");scanf("%s",p->bname);getchar();printf(" 请输入新作者名:");scanf("%s",p->wname);getchar();printf(" 请输入新出版社:");scanf("%s",p->press);getchar();printf(" 请输入新类别:");scanf("%s",p->sort);getchar();p

47、rintf("请输入新出版时间:");scanf("%d",&p->time);getchar();printf("请输入新价格:");scanf("%f",&p->price);getchar();printf("修改成功!n");getchar();break;case 0:break;default :printf("您的输入有误!n");break;printf("是否将修改后的信息保存到文件中 ?(y/n)n");sc

48、anf("%c",&c);getchar();switch(c)case 'n':break;case 'y':fprint(head);printf("保存成功!n");getchar();break;/图书排序void paixu(struct book *head) int a;printf(" =n");2-按出版时间排序4-按图书名排序0-取消排序操作printf("*1-按图书编号排序*n");printf("*3-按图书价格排序*n");pr

49、intf("*5-按作者名排序*n");printf("=n");printf("请输入您选择的编号:");scanf("%d",&a);getchar();switch(a)case 0:break;case 1:num_paixu(head);break;case 2:time_paixu(head);break;case 3:price_paixu(head);break;case 4:bname_paixu(head);break;case 5:wname_paixu(head);break;def

50、ault:printf("您的输入有误!n");break;/按图书编号排序void num_paixu(struct book *head)struct book *a1000,*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n+;for(i=0;i<n;i+)ai=p1;p1=p1->next;for(k=0;k<n-1;k+)index=k;for(i=k+1;i<n;i+) if(ai->num<aindex->num) inde

51、x=i;temp=aindex;aindex=ak;ak=temp;printf("排序成功!n");printf("是否显示排序结果?(y/n)n"); scanf("%s",&b);getchar();switch(b)case 'n':break;case 'y':printf("=n");出版时间%.2fprintf("*编号 图书名 作者名 出版社 类别价格 *n");for(i=0;i<n;i+) printf("* %d%s%

52、s%s%s%d*n",ai->num,ai->bname,ai->wname,ai->press,ai->sort,ai->time,ai->price);printf("=n");break;default:printf("您的输入有误!n");break;/按出版时间排序void time_paixu(struct book *head)struct book *a1000,*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p-

53、>next)n+;for(i=0;i<n;i+)ai=p1;p1=p1->next;)for(k=0;k<n-1;k+)index=k;for(i=k+1;i<n;i+)if(ai->time<aindex->time) index=i;)temp=aindex;aindex=ak;ak=temp;)printf("排序成功!n");printf("是否显示排序结果?(y/n)n");scanf("%s",&b);getchar();switch(b)case 'n

54、9;:break;case 'y':printf("=n");printf("*编号 图书名作者名出版社类别出版时间价格 *n");for(i=0;i<n;i+)printf("* %d%s%s%s%s%d%.2f*n",ai->num,ai->bname,ai->wname,ai->press,ai->sort,ai->time,ai->price); )printf("=n");break;default:printf("您的输入有误!n

55、"); break;)/按图书价格排序void price_paixu(struct book *head)struct book *a1000,*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n+;for(i=0;i<n;i+)ai=p1;p1=p1->next;for(k=0;k<n-1;k+)index=k;for(i=k+1;i<n;i+)if(ai->price<aindex->price) index=i;temp=aindex;aindex=ak;ak=temp;printf("排序成功!n");printf("是否显示排序结果?(y/n)n");scanf("%s",&b);getchar();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论