C语言图书管理系统代码.doc

上传人:laozhun 文档编号:2384586 上传时间:2023-02-17 格式:DOC 页数:29 大小:61KB
返回 下载 相关 举报
C语言图书管理系统代码.doc_第1页
第1页 / 共29页
C语言图书管理系统代码.doc_第2页
第2页 / 共29页
C语言图书管理系统代码.doc_第3页
第3页 / 共29页
C语言图书管理系统代码.doc_第4页
第4页 / 共29页
C语言图书管理系统代码.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《C语言图书管理系统代码.doc》由会员分享,可在线阅读,更多相关《C语言图书管理系统代码.doc(29页珍藏版)》请在三一办公上搜索。

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); /验证新

2、添加的图书编码是否已存在 void deletebook(struct 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); /按

3、作者名查询图书void sort_chaxun(struct book *head); /按类别查询图书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

4、); /按图书出版时间排序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,d,b10,b110="yjk"struct book *head=NULL;while(y) system("cls");printf("nnnnnnn"

5、);printf(" * 欢迎光临 *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(" 请输入您的

6、用户名:");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");elseprintf(" 验证通过!请按Enter键进入!n");scanf("

7、%c",&d);getchar();x=1; while(x)system("cls");printf(" -n");printf(" *图书信息管理系统*n"); printf(" -nn");printf("*nn");printf("*nn");printf(" | 1-添加图书 2-删除图书 |nn");printf(" | 3-图书列表 4-图书排序 |nn");printf(" | 5-查询图书

8、6-修改图书 |nn");printf(" | 7-录入数据 0-退出系统 |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"

9、;);getchar();break;elsehead=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; case 2:head=load();if(head=NULL)printf("文件为空,请先录入数据!n&qu

10、ot;); getchar();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

11、;case 5:head=load();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();p

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

13、;); 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("%s",bna

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

15、");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;elsetail->next=p;tail=

16、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",wname);getchar()

17、;printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&time);getchar();printf("请输入价格:");scanf("%f",&price);getchar();return head; /插入结点,并且插入后仍按一定

18、顺序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("您输入的编号已存在,请重新输入!n"

19、;); while(1);printf("请输入图书名:");scanf("%s",bname);getchar();printf("请输入作者名:");scanf("%s",wname);getchar();printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:&quo

20、t;);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->time=time;p->price=price;p2=h

21、ead;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 *head,int m)struct book *p;p=head;w

22、hile(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,fp);for(p1=head;p1;p1=p1->next) fpri

23、ntf(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","r")=NULL)printf("File o

24、pen 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->time,&p1->price);if(head=NULL)head=p1;elsetail->next=p1;tail=p1

25、;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");printf(" 编号 图书名 作者名 出版社 类别 出版时间 价格n");for(ptr=head;ptr;ptr=ptr->

26、;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 *fp;printf("请输入要删除的图书编号:");scanf("

27、;%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")=NULL)printf("File open error!n");exit(0);fclose(f

28、p);printf("文件已清空!n"); %delsewhile(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",&b); switch(b)case n:break;case y:fprint(head);printf("删

29、除成功!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:break;case y:fprint(head);printf("删除成功!n");getchar();break; elsep2->next=p1-&

30、gt;next;printf("是否确定从文件中彻底删除该图书?(y/n)n");getchar();scanf("%c",&b); switch(b)case n:break;case y:fprint(head);printf("删除成功!n");getchar();break; /图书查询void chaxun(struct book *head)int a;printf("=n");printf(" * 1-按图书编号查询 2-按图书名查询 *n"); printf("

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

32、haxun(head);break;case 5:time_chaxun(head);break;default:printf("您的输入有误!n");break;/按编号查询图书信息void num_chaxun(struct book *head)int a;struct book *p;printf("请选择您要查询的图书编号:");scanf("%d",&a);getchar();p=head;while(p!=NULL)if(p->num=a)break;p=p->next; if(p=NULL)prin

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

34、图书信息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("没有找到该图书名的图书!n"); elseprintf(" 你所查询的图书信息如下n");printf("=n");prin

35、tf(" * 编号 图书名 作者名 出版社 类别 出版时间 价格 *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);p=p->next;printf("=n"); /按作者名查询图书信息void wname_chaxun(struct book *head

36、)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(" 你所查询的图书信息如下n");printf("=n");printf(" * 编号 图书名 作者名 出版社 类别 出版时间 价格 *n");while(p!=NULL)if(strcmp(p->wname,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);flag=1;p=p->next;printf("=n"); /

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号