图书管理系统代码(C语言)

上传人:微*** 文档编号:73597701 上传时间:2022-04-11 格式:DOCX 页数:49 大小:35.76KB
收藏 版权申诉 举报 下载
图书管理系统代码(C语言)_第1页
第1页 / 共49页
图书管理系统代码(C语言)_第2页
第2页 / 共49页
图书管理系统代码(C语言)_第3页
第3页 / 共49页
资源描述:

《图书管理系统代码(C语言)》由会员分享,可在线阅读,更多相关《图书管理系统代码(C语言)(49页珍藏版)》请在装配图网上搜索。

1、(C 语言 )#include#include#includestruct 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(struct b

2、ook *head); / 删除图书void fprint(struct book *head); /将链表写入文件struct book *load(); /从文件中读取信息并建成链表void print_book(struct book *head); /将链表信息输出 void chaxun(struct book *head); / 查询图书信息voidnum_chaxun(struct book *head); / 按图书编号查询图书 void wname_chaxun(struct book *head); / 按作者名查询图书 void sort_chaxun(struct bo

3、ok *head); / 按类别查询图书 void time_chaxun(structbook *head); / 按出版时间查询图书 void bname_chaxun(struct book *head);/ 按图书名查询图书 void xiugai(struct book *head); /修改图书信息voidpaixu(struct book *head); / 对图书进行排序void num_paixu(struct book*head); / 按图书编号排序void time_paixu(struct book *head); / 按图书出版时间排序 void price_pai

4、xu(struct book *head); /按图书价格排序 voidbname_paixu(struct book *head); / 按图书名排序void wname_paixu(structbook *head); / 按作者名排序int main()int choice,n,x,y=1,c,c1=123456;char a,d,b10,b110=201102520116;struct book *head=NULL;while(y)system(cls);printf(nnnnnnn);printf(*欢迎光临 *nn);printf(*图书信息管理系统*nnn);printf(nn

5、);printf( =1- 用户登录=n);printf( =0- 退出系统=n);printf( 请输入您的选择 :);scanf(%d,&n);printf(n);switch(n)case 0:y=0;break;case 1:printf( 请输入您的用户名 :);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( 验证通过 !

6、请按 Enter 键进入 !n);scanf(%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-查询图书6-修改图书|nn);printf( |7-录入数据0-退出系统|nn);printf( *nn);printf( *nn);printf( 请输入所选择的序号:);scanf(%d,&choic

7、e);getchar();system(cls);switch(choice)case 0:x=0;break;case 1:head=load();if(head=NULL)printf( 文件为空 , 请先录入数据!n);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:he

8、ad=load();if(head=NULL)printf( 文件为空 , 请先录入数据!n);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);getc

9、har();break;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();printf( 是否将输入的信

10、息保存到文件以覆盖文件中已存在的信息 ?(y/n)n);getchar();scanf(%c,&a);getchar();switch(a)case n:break;case y:fprint(head);printf( 保存成功 !n);break;break;default:printf( 您的输入有误, 请重新输入 !n);getchar();break;break;default:printf( 您的输入有误! 请重新输入 !n);getchar();break;/ 录入数据并形成链表struct book *creatbook() struct book *head,*tail,*p

11、;int num,time,n;char bname50,wname20,press50,sort50;int size=sizeof(struct book);head=tail=NULL;printf( 请输入图书编号:);scanf(%d,&num);printf( 请输入图书名 :);scanf(%s,bname);getchar();printf( 请输入作者名 :);scanf(%s,wname);getchar();printf( 请输入出版社:);scanf(%s,press);getchar();printf( 请输入类别 :);scanf(%s,sort);getchar(

12、);printf( 请输入出版时间 :);scanf(%d,&time);getchar();printf( 请输入价格 :);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;t

13、ail=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();printf( 请输入出版社:);scanf(%s,press);getchar();printf( 请输入类别 :);scanf(%s,sort);ge

14、tchar();printf( 请输入出版时间 :);scanf(%d,&time);getchar();printf( 请输入价格 :);scanf(%f,&price);getchar();return 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( 请输

15、入图书编号:);scanf(%d,&num);n=yanzheng(head,num);if(n=0)break;elseprintf( 您输入的编号已存在, 请重新输入!n);while(1);printf( 请输入图书名 :);scanf(%s,bname);getchar();printf( 请输入作者名 :);scanf(%s,wname);getchar();printf( 请输入出版社:);scanf(%s,press);getchar();printf( 请输入类别 :);scanf(%s,sort);getchar();printf( 请输入出版时间 :);scanf(%d,&

16、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=head;ptr=p;while(ptr-nump2-num)&(p2-next!=NULL)p1=p2;p2=p2-next;if(ptr-numnum)if(head

17、=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;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 *p

18、1;if(fp=fopen(f1.txt,w)=NULL)printf(File open error!n);exit(0);fputc(ch,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(

19、fp=fopen(f1.txt,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-time,&p1-price);if(head=NULL)head=p1;elsetail-next=p1;tail=p1;tail-next=NULL;fclose(fp);

20、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-next)printf( %d %s %s %s %s %d%.2fn”,ptr-num,ptr-bname,ptr-wname,ptr-press,ptr-sort,p

21、tr-time,ptr-price);printf(n);/ 删除图书信息void deletebook(struct book *head) int a;char b,ch=1;struct book *p1,*p2;FILE *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

22、.txt,w)=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;?(y/n)n);printf( 是否确定从文件中彻底删除该图书getchar();scanf(%c,&b);switch(b)case n:break;case y:fprint(head);printf( 删除成功 !n);getchar();break;els

23、eprintf( 没有找到要删除的数据!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-next;printf( 是否确定从文件中彻底删除该图书 ?(y/n)n);getchar();scanf(%c,&b);switch(b)case n:break;case y:fp

24、rint(head);printf(删除成功!n);getchar();break;/图书查询void chaxun(struct book *head) int a;printf(=n);printf( * 1- 按图书编号查询2-按图书名查询*n);printf( * 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

25、: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(请选择您要查询的图书编号:);scanf(%d,&a);getchar();p=head;while(p!=NULL)if(p-num=a)break

26、;p=p-next;if(p=NULL)printf(没有找到该编号的图书!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);/按图书名查询图书信息void bname_chaxun(struct book *head) char a50;int flag=0;struct book *p;pri

27、ntf(请选择您要查询的图书名:);gets(a);p=head;while(p!=NULL)if(strcmp(p-bname,a)=0)flag=1;break;if(flag=0)printf( 没有找到该图书名的图书!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,

28、p-time,p-price);)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(你所查询的图书信息如下n);=n);printf( * 编号 图书

29、名 作者名 出版社 类别 出版时间 价格*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);/按图书类别查询图书信息void sort_chaxun(struct book *head) char a50;int flag=0;struct book *p;printf( 请选择您要查询的图书类别:);gets(a);p=head;whil

30、e(p!=NULL)if(strcmp(p-sort,a)=0)flag=1;break;)p=p-next;)if(flag=O)printf( 没有找到该图书名的图书!rT);)elseprintf( 你所查询的图书信息如下n);printf(=n);printf( * 编号 图书名 作者名 出版社 类别 出版时间 价格while(p!=NULL)if(strcmp(p-sort,a)=0)printf(* %d %s %s %s %s %d %,2fflag=1;) p=p-next;)printf(=n);)/按图书出版时间查询图书信息void time_chaxun(struct b

31、ook *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(=n);printf( * 编号 图书名 作者名 出版社 类别 出版时间 价格*n);while(p!=NULL)if(p-time=a)printf(* %d %s %s %s %s

32、%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 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);p

33、rintf( * 1- 编号2-图书名3-作者名 *n);printf( * 4-出版社5-类别6-出版时间*n);printf( * 7- 价格8-修改全部0-放弃修改*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(修改成功!n);break;case 3:printf(

34、请输入新作者名 :);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:printf( 请输入新出版时间 :);scanf(%d,&p-time);printf( 修改成功 !n);getchar();break;case 7:printf( 请输入新价格 :);scanf(%f,&p-price);printf(

35、 修改成功 !n);getchar();break;case 8:printf( 请输入新图书编号:);scanf(%d,&p-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();printf( 请输入新出版时间 :);scanf(%d,&p-time);getchar(

36、);printf( 请输入新价格 :);scanf(%f,&p-price);getchar();printf( 修改成功 !n);getchar();break;case 0:break;default :printf( 您的输入有误!n);break;printf( 是否将修改后的信息保存到文件中 ?(y/n)n);scanf(%c,&c);getchar();switch(c)case n:break;case y:fprint(head);printf( 保存成功 !n);getchar();break;/图书排序void paixu(struct book *head) int a;

37、printf(=n);printf( * 1-按图书编号排序2-按出版时间排序*n);printf( * 3-按图书价格排序4-按图书名排序*n);printf( * 5- 按作者名排序0-取消排序操作*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

38、;case 5:wname_paixu(head);break;default: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;inext;)for(k=0;kn-1;k+)index=k;for(i=k+1;inumnum)index=i;)temp=aindex;aindex=ak;ak=temp;)printf(

39、排序成功!n);printf(是否显示排序结果?(y/n)n);scanf(%s,&b);getchar();switch(b)case n:break;case y:printf(价格 *n);for(i=0;inum,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

40、,n=0;char b;p1=head;for(p=head;p;p=p-next)n+;for(i=0;inext;)for(k=0;kn-1;k+)index=k;for(i=k+1;itimetime)index=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);for(i=0;inum,ai-bname,ai-wname,ai-press,ai-sort,ai

41、-time,ai-price);printf(=n);break;default:printf(您的输入有误!n);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;inext;)for(k=0;kn-1;k+)index=k;for(i=k+1;ipriceprice)index=i;)temp=aindex;aindex=ak;ak=temp;)p

42、rintf(排序成功!n);printf(是否显示排序结果?(y/n)n);scanf(%s,&b);getchar();switch(b)case n:break;case y:printf(价格 *n);for(i=0;inum,ai-bname,ai-wname,ai-press,ai-sort,ai-time,ai-price);printf(=n);break;default:printf(您的输入有误!n);break;/按图书名排序void bname_paixu(struct book *head) struct book *a1000,*p,*p1,*temp;int i,k

43、,index,n=0;char b;p1=head;for(p=head;p;p=p-next)n+;for(i=0;inext;)for(k=0;kn-1;k+)index=k;for(i=k+1;ibname,ai-bname)0) index=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);for(i=0;inum,ai-bname,ai-wname,ai-pr

44、ess,ai-sort,ai-time,ai-price);printf(=n);break;default:printf(您的输入有误!n);break;/按作者名排序void wname_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;inext;)for(k=0;kn-1;k+)index=k;for(i=k+1;iwname,ai-wname)0) index=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);for(i=0;inum,ai-bname,ai-wname,ai-press,ai-sort,ai-time,ai-price);printf(=n);break;default:printf(您的输入有误!n);break;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!