《最新C语言图书管理系统代码.docx》由会员分享,可在线阅读,更多相关《最新C语言图书管理系统代码.docx(151页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC语言图书管理系统代码C语言图书管理系统代码#include #include /*清屏函数*/#include #include #include #include typedef int BOOL;typedef struct bookinfo/将bookinfo类型定义为BOOKINFO char number15;/*产品编号*/ char name30;/*
2、产品名称*/ float price;/*单价*/ char auther20;/*作者*/ BOOL isExit;/*存在状态*/ char sort20;/*书籍类别*/char published30;/*出版社*/ int bookcount;/*剩余书籍数量*/BOOKINFO;struct bookinfo book1000;typedef struct student /*借书卡的数据类型*/ int studentnum; /学号int cardnum;/卡号char studentname10;/会员姓名 char studentclass10; /会员班级char len
3、dbook10; int count;/借书数组 最多借书十本char bookname1110;/存放书名student;student card1000;/定义借书卡数组char aa6=123456,kk6=654321;/初始化密码void input_newp()/*输入新用户信息*/int i; char choice; FILE *a; student newp;system(cls); while(1) newp.count=0;/初始化计数器for(i=0;i11;i+)/初始化借书名称newp.booknamei0=0;printf(输入学号:);scanf(%d,&new
4、p.studentnum);fflush(stdin);printf(输入卡号:);scanf(%d,&newp.cardnum);fflush(stdin);printf(输入学员姓名:);gets(newp.studentname);fflush(stdin);printf(输入学员班级:);gets(newp.studentclass);fflush(stdin);printf(是否保存该条信息?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)printf(请输入Y或y或N或nn);choice=g
5、etch();if(choice=Y|choice=y) a=fopen(c:card.txt,ab);fwrite(&newp,sizeof(student),1,a);fclose(a); printf(n该用户已添加到c:card.txt文件中!n); else printf(n改用户资料未保存!n); printf(n是否继续添加用户?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)printf(请输入Y或y或N或nn);choice=getch();if(choice=Y|choice=y)co
6、ntinue;else break; void input_new()/*输入新进的图书信息*/ char choice; FILE *a; BOOKINFO newbook;system(cls); while(1) fflush(stdin);/清除文件缓冲区printf(输入书籍编号:);gets(newbook.number); printf(输入书籍名称:);gets(newbook.name); printf(输入书籍单价:);scanf(%f,&newbook.price);while(getchar()!=n); printf(输入书籍的作者:);gets(newbook.au
7、ther); printf(输入书籍的出版社:);gets(newbook.published); printf(输入书籍的类别:);gets(newbook.sort); printf(输入书籍的数量:);scanf(%d,&newbook.bookcount); printf(是否保存该条书目?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n) printf(请输入Y或y或N或nn);choice=getch();if(choice=Y|choice=y) newbook.isExit=1;/*将图书状
8、态设置成1,表示没有借出*/a=fopen(c:bookinfo.data,ab); fwrite(&newbook,sizeof(BOOKINFO),1,a);fclose(a); printf(n该条书目已添加到c:bookinfo.data文件中!n); else printf(n本条书目未保存!n); printf(n是否继续添加书目?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)printf(请输入Y或y或N或nn);choice=getch();if(choice=Y|choice=y)co
9、ntinue;else break; void search_according_name()/*根据图书名称显示图书的信息*/ char search20=;/*search用来存放要查询的书名*/ int n; FILE *p; char choice; BOOKINFO bookinfo100; int booknumber=0; system(cls); p=fopen(c:bookinfo.data,rb); while(!feof(p) fflush(stdin);/清除文件缓冲区 fread(&bookinfobooknumber,sizeof(BOOKINFO),1,p); b
10、ooknumber+; booknumber-;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); while(1) printf(输入要查询的书本名称:);gets(search);if(booknumber=0)printf(书库中没有任何信息!nn);printf(按任意键回到主菜单!nn);getch();break; /*if结束*/elsefor(n=0;nbooknumber;n+)if(strcmp(bookinfon.name,search)=0)printf(该书的详细信息如下:n);printf( 图书信息
11、 n);printf(编号 名称 单价 作者 图书状态 出版社 类别 剩余书籍n);break;for(n=0;n=booknumber)printf(没有查找该书的任何信息!n);printf(nn是否继续查询?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)printf(请输入Y或y或N或nn);choice=getch();if(choice=Y|choice=y)continue;else break; /*else结束*/ /*while(1)结束*/ void search_according
12、_auther()/*根据图书作者显示图书的信息*/ char search20=;/*search用来存放要查询的作者名*/ int n; FILE *p; char choice; BOOKINFO bookinfo100; int booknumber=0; system(cls); p=fopen(c:bookinfo.data,rb); while(!feof(p)fflush(stdin); /清除文件缓冲区fread(&bookinfobooknumber,sizeof(BOOKINFO),1,p);booknumber+; booknumber-;/*使用feof()函数会多读
13、一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); while(1) printf(输入要查询的作者名称:);gets(search);if(booknumber=0)printf(书库中没有任何信息!nn);printf(按任意键回到主菜单!nn);getch();break; /*if结束*/elsefor(n=0;nbooknumber;n+)if(strcmp(bookinfon.name,search)=0)printf(该书的详细信息如下:n);printf( 图书信息 n);printf(编号 名称 单价 作者 图书状态 出版社 类别 剩余书籍
14、n);break;for(n=0;n=booknumber)printf(没有查找该书的任何信息!n);printf(nn是否继续查询?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)printf(请输入Y或y或N或nn);choice=getch();if(choice=Y|choice=y)continue;else break; /*else结束*/ /*while(1)结束*/ void search_according_sort()/*根据图书类别显示图书的信息*/ char search20=
15、;/*search用来存放要查询的类别*/ int n; FILE *p; char choice; BOOKINFO bookinfo100; int booknumber=0; system(cls); p=fopen(c:bookinfo.data,rb); while(!feof(p)fread(&bookinfobooknumber,sizeof(BOOKINFO),1,p);booknumber+; booknumber-;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); while(1) fflush(stdin
16、);/清除文件缓冲区printf(输入要查询的类别名称:);gets(search);if(booknumber=0)printf(书库中没有任何信息!nn);printf(按任意键回到主菜单!nn);getch();break; /*if结束*/elsefor(n=0;nbooknumber;n+)if(strcmp(bookinfon.sort,search)=0)printf(该书的详细信息如下:n);printf( 图书信息 n);printf(编号 名称 单价 作者 图书状态 出版社 类别 剩余书籍n);break; for(n=0;n=booknumber)printf(没有查找该
17、书的任何信息!n);printf(nn是否继续查询?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)printf(请输入Y或y或N或nn);choice=getch();if(choice=Y|choice=y)continue;else break; /*else结束*/ /*while(1)结束*/ void search_according_published()/*根据图书出版社显示图书的信息*/ char search20=;/*search用来存放要查询的出版社*/ int n; FILE *
18、p; char choice; BOOKINFO bookinfo100; int booknumber=0; system(cls); p=fopen(c:bookinfo.data,rb); while(!feof(p)fflush(stdin);/清除文件缓冲区fread(&bookinfobooknumber,sizeof(BOOKINFO),1,p);booknumber+; booknumber-;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); while(1) printf(输入要查询的出版社名称:);gets
19、(search);if(booknumber=0)printf(书库中没有任何信息!nn);printf(按任意键回到主菜单!nn);getch();break; /*if结束*/elsefor(n=0;nbooknumber;n+)if(strcmp(bookinfon.published,search)=0)printf(该书的详细信息如下:n);printf( 图书信息 n);printf(编号 名称 单价 作者 图书状态 出版社 类别 剩余书籍n);break; for(n=0;n=booknumber)printf(没有查找该书的任何信息!n);printf(nn是否继续查询?(Y/
20、N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)printf(请输入Y或y或N或nn);choice=getch();if(choice=Y|choice=y)continue;else break; /*else结束*/ /*while(1)结束*/ void delete_according_name()/*根据图书名称对图书信息进行删除*/ char search20=;/*search用来存放要删除的书名*/ int n,i; FILE *p; char choice; BOOKINFO bookinf
21、o100; int booknumber; system(cls); while(1)fflush(stdin);printf(输入要删除的书本名称:);gets(search);p=fopen(c:bookinfo.data,rb);booknumber=0;while(!feof(p) fread(&bookinfobooknumber,sizeof(BOOKINFO),1,p);booknumber+; booknumber-;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/fclose(p); if(booknumber=0) printf
22、(书库中没有任何信息!nn);printf(按任意键回到主菜单!nn);getch();break; /*if结束*/else for(n=0;n=booknumber)printf(没有查找该书的任何信息!n);elseprintf(是否确认需要删除该条书目?(Y/N);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)printf(请输入Y或y或N或nn);choice=getch();if(choice=Y|choice=y) for(i=n;ibooknumber-1;i+)/将后面的数组数据全部前移一个booki
23、nfoi=bookinfoi+1; booknumber-; p=fopen(c:bookinfo.data,wb);for(n=0;nbooknumber;n+)fwrite(&bookinfon,sizeof(BOOKINFO),1,p);fclose(p); printf(删除成功!n);elseprintf(nn该条书目没有被删除!); printf(nn是否继续进行删除操作?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)printf(请输入Y或y或N或nn);choice=getch();if
24、(choice=Y|choice=y)continue;else break; /*else结束*/ /*while(1)结束*/void lendbook()/借书FILE *p,*p2; int i,j,k,n=0,z=0; int cardnum; printf(ntt请你输入你的卡号: ); scanf(%d,&cardnum); p=fopen(c:card.txt,rb); while(!feof(p) fread(&cardn,sizeof(student),1,p);n+; fclose(p); p2=fopen(c:bookinfo.data,rb); while(!feof
25、(p2) fread(&bookz,sizeof(BOOKINFO),1,p2);z+; fclose(p2);for(i=0;in;i+)if(cardi.cardnum=cardnum) /判断卡号是否存在 printf(ntt请输入你要借阅的书的名字: ); scanf(%s,&cardi.lendbook); for(j=0;jz;j+) if(strcmp(bookj.name,cardi.lendbook)=0)/判断书是否存在 if(bookj.bookcount=0)/判断是否还有库存printf(tt对不起,此书有人借出,请借其他书.按任意键返回.n);getch();ret
26、urn;else if(cardi.count=10)/判断是否借满10本 printf(tt对不起,借书本数已达到上限,按任意键返回.n);getch();return;elsep=fopen(c:card.txt,wb);p2=fopen(c:bookinfo.data,wb);cardi.count+;/借书本书加一bookj.bookcount -;/库存减一for(k=1;k=10;k+)if(cardi.booknamek1!=0)strcpy(cardi.booknamek,cardi.lendbook);/保存所借书的名字if(bookj.bookcount=0)bookj.i
27、sExit=0;elsebookj.isExit=1;break;for(i=0;in;i+)fwrite(&cardi,sizeof(student),1,p);for(i=0;iz;i+)fwrite(&booki,sizeof(BOOKINFO),1,p2);printf(tt借书已完成,按任意键返回.n); fclose(p);fclose(p2); getch(); return; printf(ntt很抱歉,不存在这本书,按任意键返回.); fclose(p2); getch(); return; printf(ntt你的卡号不存在,请申请新卡,按任意键返回.); fclose(p
28、); getch(); void returnbook()char bookname100;FILE *p,*p2; int i,j,k,n=0,z=0; int cardnum; printf(ntt请你输入你的卡号: ); scanf(%d,&cardnum); p=fopen(c:card.txt,rb); while(!feof(p)fread(&cardn,sizeof(student),1,p);n+; fclose(p); p2=fopen(c:bookinfo.data,rb); while(!feof(p2) fread(&bookz,sizeof(BOOKINFO),1,p2);z+; fclose(p2);for(i=0;in;i+)if(cardi.cardnum=cardnum) /判断卡号是否存在