《图书馆管理系统C语言程序设计.pdf》由会员分享,可在线阅读,更多相关《图书馆管理系统C语言程序设计.pdf(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、HUNANHUNANUNIVERSITYUNIVERSITYC C 语言程序训练语言程序训练报报告告【设计目的设计目的】图书信息包括:读者登录号、管理员登录号、图书编号、作者名、种类、出版社、图书库存、图书借出数目等.图书信息管理系统,使之能提供以下功能:1)系统以菜单方式工作2)读者注册功能3)读者登录功能4)读者借书还书功能5)查询读者借阅记录6)查询在管图书信息功能7)修改密码功能8)管理员登录功能9)增加、修改、删除图书功能10)查看图书信息功能【设计思路设计思路】根据题目要求,应当把图书信息用结构体形式输入,应该提供以下结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查
2、询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的;管理员和读者登录界面及各自功能应有不同的实现。【总体设计总体设计】图书馆管理系统读者注册、登陆及密码修改管理员登陆修改图书信息查找图书信息删除图书信息浏 览 图书信息【详细设计详细设计】1.1.主函数主函数主函数设计要求简洁,只提供部分提示语和函数的调用开始显示一系列功能选项n输入 n,n 为 1,2 或 3根据 n 的值调用各功能模块函数结束源代码为/rkou.c程序的入口#include#include#include#include#includehead.h#include
3、fuc.h#includepicture.h#includejiangzhuo1.h#includeoutput.hmain()int i=setup();switch(i)case 0:while(n0)i-;else if(ij)if(b)printf(*);elseprintf(%c,c);ai=c;i+;if(i=j)printf(a);ai=0;printf(n);void examine(int*a,int b)while(!scanf(%d,a)while(getchar()!=n);printf(请输入数字!n);rewind(stdin);if(b)system(cls);v
4、oid changepaw(int a,int b)int i;char c110,c210,c310;printf(请输入原密码n);password(c1,1,9);printf(请输入新密码n);password(c2,1,9);printf(请再次输入新密码n);password(c3,1,9);system(cls);if(b)i=mp(aa.no,c1,c2,c3,b);if(i)eros(i);n=27;else n=26;elsei=mp(rr.no,c1,c2,c3,b);if(i)eros(i);n=44;else n=43;void inputs0()int i=1;wh
5、ile(i=1)printf(1.A类n2.B类n3.C类n4.D类n5.E类n6.F类n);examine(&i,1);switch(i)case 1:strcpy(bk.classic,A类);i=0;break;case 2:strcpy(bk.classic,B类);i=0;break;case 3:strcpy(bk.classic,C类);i=0;break;case 4:strcpy(bk.classic,D类);i=0;break;case 5:strcpy(bk.classic,E类);i=0;break;case 6:strcpy(bk.classic,F类);i=0;br
6、eak;default:i=1;void inputs1(int a,int b,int c,int d,int e)int i;switch(a)case 1:printf(请输入图书编号:n);examine(&bk.bh,1);default:;switch(b)case 1:printf(请输入图书名称:n);gets(bk.name);default:;switch(c)case 1:printf(请输入图书的作者:n);gets(bk.writer);default:;switch(d)case 1:printf(请输入该图书的库存:n);examine(&bk.zn,1);def
7、ault:;system(cls);switch(e)case 1:printf(请选择图书类别:n);inputs0();default:;void inputs2(int a,int b,int c)switch(a)case 1:printf(请输入账号:n);password(aa.no,0,11);default:;switch(b)case 1:printf(请输入密码:n);password(aa.key,1,9);default:;switch(c)case 1:printf(请输入姓名:n);gets(aa.name);default:;system(cls);void in
8、puts3(int a,int b,int c)switch(a)case 1:printf(请输入账号:n);password(rr.no,0,11);default:;switch(b)case 1:printf(请输入密码:n);password(rr.key,1,9);default:;switch(c)case 1:printf(请输入姓名:n);gets(rr.name);default:;system(cls);void eros(int i)/错误函数switch(i)case-1:printf(error1!初始化失败nn);break;case-2:printf(error
9、2!账号不存在nn);break;case-3:printf(error3!账号不存在nn);break;case-4:printf(error4!密码错误nn);break;case-5:printf(error5!输入的密码不一致nn);break;case-6:printf(error6!编号不存在nn);break;case-7:printf(error7!书名不能为空nn);break;case-8:printf(error8!作者名字不能为空nn);break;case-9:printf(error9!无此图书编号的记录nn);break;case-10:printf(error1
10、0!无此账号的记录nn);break;case-11:printf(error11!原始密碼輸入錯誤nn);break;case-12:printf(error12!您已经归还此书nn);break;case-13:printf(error13!您所增加的图书编号已存在nn);break;case-14:printf(error14!搜索不到此书的相关信息nn);break;case-15:printf(error15!搜索不到该作者的信息nn);break;case-16:printf(error16!打不开文件,保存失败nn);break;case-17:printf(error17!该图
11、书信息已存在nn);break;case-18:printf(error18!您没有借过这本书nn);break;case-19:printf(error19!您已经借阅了这本书,不能再借nn);break;case-20:printf(error20!抱歉,图书已经借完了nn);break;case-21:printf(error21!账号已存在nn);break;case-22:printf(error22!还有图书未还,不能删除该条信息nn);break;default:;void conects(int j)switch(j)case 0:pic0();break;case 1:pic
12、1();break;case 2:pic2();break;case 3:pic3();break;case 4:pic4();break;case 5:pic5();break;case 6:pic6();break;case 7:pic7();break;case 8:pic8();break;case 9:pic9();break;case 10:pic10();break;case 11:pic11();break;case 12:pic12();break;case 13:pic13();break;case 14:pic14();break;case 15:pic15();brea
13、k;case 16:pic16();break;case 17:pic17();break;case 18:pic18();break;case 19:pic19();break;case 20:pic20();break;case 21:pic21();break;case 22:pic22();break;case 23:pic23();break;case 24:pic24();break;case 25:pic25();break;case 26:pic26();break;case 27:pic27();break;case 29:pic29();break;case 30:pic3
14、0();break;case 31:pic31();break;case 32:pic32();break;case 33:pic33();break;case 34:pic34();break;case 35:pic35();break;case 36:pic36();break;case 37:pic37();break;case 38:pic38();break;case 39:pic39();break;case 40:pic40();break;case 41:pic41();break;case 42:pic42();break;case 43:pic43();break;case
15、 44:pic44();break;case 45:pic45();break;case 46:pic46();break;case 47:pic47();break;default:;4.4.文件操作各种函数文件操作各种函数源代码为/jiangzhuo1.h 文件操作各种函数int setup()/数据初始化函数FILE*fp;fp=fopen(reader.txt,r);/对文档以只读的方式进行操作if(fp=NULL)return-1;/当文件打不开时返回-1elsei=0;while(!feof(fp)fscanf(fp,%s%s%s,stui.name,stui.no,stui.ke
16、y);/将文档里面的数据格式化读取到结构体数组里面i+;i=i-1;fclose(fp);fp=fopen(ad.txt,r);/对文档以只读的方式进行操作if(fp=NULL)return-1;/当文件打不开时返回-1elsej=0;while(!feof(fp)fscanf(fp,%s%s%s,adj.name,adj.no,adj.key);/将文档里面的数据格式化读取到结构体数组里面j+;j=j-1;fclose(fp);fp=fopen(book.txt,r);/对文档以只读的方式进行操作if(fp=NULL)return-1;/当文件打不开时返回-1elsek=0;while(!f
17、eof(fp)fscanf(fp,%d%s%s%s%d%d,&bbk.bh,bbk.name,bbk.classic,bbk.writer,&bbk.zn,&bbk.jn);/将文档里面的数据格式化读取到结构体数组里面k+;k=k-1;fclose(fp);fp=fopen(show.txt,r);/对文档以只读的方式进行操作if(fp=NULL)return-1;/当文件打不开时返回-1elses=0;while(!feof(fp)fscanf(fp,%s%s%d%s%s%d,sss.name1,sss.no,&sss.bh,sss.name2,sss.writer,&sss.o);/将文档
18、里面的数据格式化读取到结构体数组里面s+;s=s-1;fclose(fp);return 0;/当操作全部正确时返回 0int xzc(char no12,char key110,char key210,char name10)/读者注册函数int x=0;for(x=0;x=i;x+)if(!strcmp(no,stux.no)/判断读者输入的账号与结构体里面的账号是否相同return-21;break;if(x=i&strcmp(no,stux.no)/判断读者输入的账号与结构体里面的账号是否相同if(!strcmp(key1,key2)/判断读者两次输入的密码是否一致i=i+1;strc
19、py(stui.name,name);strcpy(stui.no,no);strcpy(stui.key,key1);fp=fopen(reader.txt,a);/对文件以写的方式将注册的信息保存到文件里面if(fp=NULL)return-16;elsefprintf(fp,%stt%stt%sn,stui.name,stui.no,stui.key);fclose(fp);return 0;elsereturn-5;int exam(char no10,char key10,int n)/密码账号检验函数 int x;if(n=0)/对读者的 密码和账号信息进行检验for(x=0;x=
20、i;x+)if(!strcmp(no,stux.no)/判断该账号是否存在if(!strcmp(key,stux.key)/当账号存在时判断与之相应的密码是否相同return 0;break;elsereturn-4;break;if(x=i&strcmp(no,stux.no)return-3;if(n=1)/对管理员的密码账号信息进行检验for(x=0;x=i;x+)if(!strcmp(no,adx.no)/判断该账号是否存在if(!strcmp(key,adx.key)/判断与之相应的密码是否存在return 0;break;elsereturn-4;break;if(x=j&strc
21、mp(no,adx.no)return-3;int zj(struct book b)/管理员增加图书信息函数int x;for(x=0;x=k;x+)if(bbx.bh=b.bh)/判断所增加的图书编号是否已存在return-13;break;if(!strcmp(b.name,bbx.name)&!strcmp(b.writer,bbx.writer)/判断所增加的图书是否存在return-17;break;if(x=k)if(strlen(bb0.name)=0)/判断文档的第一行是否为空k=k;elsek=k+1;bbk.bh=b.bh;/将所增加的图书信息添加到结构体里面strcpy
22、(bbk.name,b.name);strcpy(bbk.classic,b.classic);strcpy(bbk.writer,b.writer);bbk.zn=b.zn;bbk.jn=b.jn;fp=fopen(book.txt,a);/将增加的图书信息追加到文件里面if(fp=NULL)return-16;elsefprintf(fp,%dt%-30st%-30st%-10st%dt%dn,bbk.bh,bbk.name,bbk.classic,bbk.writer,bbk.zn,bbk.jn);fclose(fp);return 0;int sc(int bh)/管理员删除图书信息函
23、数int x;for(x=0;x=k;x+)if(bbx.bh=bh)/判断所删除图书的编号是否存在if(bbx.jn!=0)return-22;for(x=x;x=k-1;x+)bbx=bbx+1;/删除图书信息后将该图书信息后面的图书信息依次前移k-;fp=fopen(book.txt,w+);/将删除后的所有图书信息重新写入文档if(fp=NULL)return-16;elsefor(x=0;x=k;x+)fprintf(fp,%dt%-30st%-30st%-10st%dt%dn,bbx.bh,bbx.name,bbx.classic,bbx.writer,bbx.zn,bbx.jn)
24、;fclose(fp);return 0;break;int mp(char no12,char key110,char key210,char key310,int n)/密码修改函数int x;if(n=0)/读者密码修改for(x=0;x=i;x+)if(!strcmp(no,stux.no)/定位读者账号位置if(!strcmp(stux.key,key1)/判断输入的原密码是否正确if(!strcmp(key2,key3)/判断两次输入的新密码是否一致strcpy(stux.key,key3);fp=fopen(reader.txt,w+);/将修改后的信息保存在文件里面if(fp=
25、NULL)return-16;elsefor(x=0;x=i;x+)fprintf(fp,%stt%stt%sn,stux.name,stux.no,stux.key);fclose(fp);return 0;elsereturn-5;elsereturn-11;if(n=1)/管理员密码修改for(x=0;x=j;x+)if(!strcmp(no,adx.no)/定位管理员账号位置if(!strcmp(key1,adx.key)/判断输入的原密码是否正确if(!strcmp(key2,key3)/判断两次输入的新密码是否一致strcpy(adx.key,key3);fp=fopen(ad.t
26、xt,w+);/将修改后的信息保存在文件里面if(fp=NULL)return-16;elsefor(x=0;x=j;x+)fprintf(fp,%stt%stt%sn,adx.name,adx.no,adx.key);fclose(fp);return 0;elsereturn-5;elsereturn-11;int xg(struct book b)/管理员修改图书信息函数int x;if(strlen(b.name)=0)/判断所输入的要修改的图书名字是否为空return-7;elseif(strlen(b.writer)=0)/判断所输入的要修改的图书作者是否为空return-8;el
27、sefor(x=0;x=k;x+)if(bbx.bh=b.bh)/定位要修改的图书编号位置strcpy(bbx.name,b.name);/将修改后的信息保存在结构体里strcpy(bbx.classic,b.classic);strcpy(bbx.writer,b.writer);bbx.zn=b.zn;bbx.jn=b.jn;fp=fopen(book.txt,w+);/将修改后的所有信息 保存在文件里if(fp=NULL)return-16;elsefor(x=0;x=k;x+)fprintf(fp,%dt%-30st%-30st%-10st%dt%dn,bbx.bh,bbx.name,
28、bbx.classic,bbx.writer,bbx.zn,bbx.jn);fclose(fp);return 0;void copy(int bh)/按编图书编号将图书信息暂时保存在另外一个结构体里面int x;for(x=0;x=k;x+)if(bbx.bh=bh)strcpy(bk.name,bbx.name);strcpy(bk.classic,bbx.classic);strcpy(bk.writer,bbx.writer);bk.zn=bbx.zn;bk.jn=bbx.jn;bk.bh=bbx.bh;void copy2(char no12)/按管理员账号将管理员信息暂时保存在另外
29、一个结构体里面int x;for(x=0;x=j;x+)if(!strcmp(adx.no,no)strcpy(aa.name,adx.name);strcpy(aa.key,adx.key);void copy3(char no12)/按读者账号将读者信息暂时保存在另外一个结构体里面int x;for(x=0;x=i;x+)if(!strcmp(stux.no,no)strcpy(rr.name,stux.name);strcpy(rr.key,stux.key);int js(int bh,char no12)/借书函数int x,y,z;for(x=0;x0)/判断在馆数是否为 0if(
30、strlen(ss0.name1)=0)/判断文件里面的第一行信息是否存在for(y=0;y=i;y+)if(!strcmp(stuy.no,no)-bbx.zn;/修改借书后的信息+bbx.jn;ss0.o=2;strcpy(ss0.name1,stuy.name);/将借书后的信息保存在结构体数组里面strcpy(ss0.no,no);strcpy(ss0.writer,bbx.writer);strcpy(ss0.name2,bbx.name);ss0.bh=bh;elsefor(y=0;y=s;y+)if(ssy.bh=bh)&!strcmp(ssy.no,no)/定位与输入的编号和账
31、号一致的借书记录if(ssy.o=2)/判断是否已借过该书return-19;else-bbx.zn;/修改借书后的信息+bbx.jn;ssy.o=2;break;elseif(y=s)s+;for(z=0;z=i;z+)if(!strcmp(stuz.no,no)/定位读者信息bbx.zn-;/修改借书后的信息bbx.jn+;strcpy(sss.name1,stuz.name);strcpy(sss.name2,bbx.name);strcpy(sss.no,no);strcpy(sss.writer,bbx.writer);sss.bh=bbx.bh;sss.o=2;break;fp=f
32、open(book.txt,w+);/将借书后的图书信息写入文件if(fp=NULL)return-16;elsefor(y=0;y=k;y+)fprintf(fp,%dt%-30st%-30st%-10st%dt%dn,bby.bh,bby.name,bby.classic,bby.writer,bby.zn,bby.jn);fclose(fp);fp=fopen(show.txt,w+);/将借书记录写入文件if(fp=NULL)return-16;elsefor(y=0;y=s;y+)fprintf(fp,%-20st%st%dt%-30st%-10st%dn,ssy.name1,ssy
33、.no,ssy.bh,ssy.name2,ssy.writer,ssy.o);fclose(fp);return 0;elsereturn-20;int hs(int bh,char no12)/还书函数int x,p;for(x=0;x=s;x+)if(ssx.bh=bh&!strcmp(ssx.no,no)/判断 其借书记录是否存在if(ssx.o=2)/判断该书是否被借过for(p=0;p=k;p+)if(bbp.bh=bh)/修改还书后的图书信息+bbp.zn;-bbp.jn;ssx.o=1;fp=fopen(book.txt,w+);/将还书后的所有图书信息重新写入文件if(fp=N
34、ULL)return-16;elsefor(p=0;p=k;p+)fprintf(fp,%dt%-30st%-30st%-10st%dt%dn,bbp.bh,bbp.name,bbp.classic,bbp.writer,bbp.zn,bbp.jn);fclose(fp);fp=fopen(show.txt,w+);/将还书后的所有借书记录重新写入文件if(fp=NULL)return-16;elsefor(p=0;p=s;p+)fprintf(fp,%-20st%st%dt%-30st%-10st%dn,ssp.name1,ssp.no,ssp.bh,ssp.name2,ssp.writer
35、,ssp.o);fclose(fp);return 0;elsereturn-12;elseif(x=s)return-18;void paixu()/对图书按照编号从小到大的顺序进行排列int x,flag;struct book a;do/用冒泡法排序flag=1;for(x=0;xbbx+1.bh)a=bbx+1;bbx+1=bbx;bbx=a;flag=0;while(flag=0);fp=fopen(book.txt,w+);/将排序后的信息重新写入文件for(x=0;x=k;x+)fprintf(fp,%dt%-30st%-30st%-10st%dt%dn,bbx.bh,bbx.n
36、ame,bbx.classic,bbx.writer,bbx.zn,bbx.jn);fclose(fp);5.5.登陆界面所有函数登陆界面所有函数源代码为/picture.h登陆界面所有函数void pica()printf(n 登陆用户:%-16s 登陆者:%-16s 权限:管理员n,aa.no,aa.name);printf(-nn);void picb()printf(n 登陆用户:%-16s 登陆者:%-16s 权限:读者n,rr.no,rr.name);printf(-nn);void pic0()/登陆界面printf(nttt欢迎登陆湖南大学图书管理系统n);printf(-nn
37、);printf(1.登陆n2.读者注册n3.退出系统nn);printf(-nn);examine(&x,1);switch(x)case 1:n=1;break;case 2:n=45;break;case 3:n=50;break;default:;void pic1()/管理员登陆界面int i;printf(ntttt登陆n);printf(-nn);printf(1.管理员登陆n2.读者登陆n3.返回系统界面nn);printf(-nn);examine(&x,1);switch(x)case 1:inputs2(1,1,0);i=exam(aa.no,aa.key,1);if(i
38、)eros(i);n=3;elsen=2;break;case 2:inputs3(1,1,0);i=exam(rr.no,rr.key,0);if(i)eros(i);n=30;elsen=29;break;case 3:n=0;break;default:;void pic2()/管理员管理界面copy2(aa.no);pica();printf(1.增加图书n2.修改图书n3.删除图书n4.查看图书信息n);printf(5.修改密码n6.返回到系统登陆界面nn);printf(-nn);examine(&x,1);switch(x)case 1:n=4;break;case 2:n=8
39、;break;case 3:n=15;break;case 4:n=21;break;case 5:n=25;break;case 6:n=0;break;default:;void pic3()/管理员登陆错误提示printf(1.返回重新输入n2.返回系统登陆界面n);examine(&x,1);switch(x)case 1:n=1;break;case 2:n=0;break;default:;void pic4()/管理员添加图书界面pica();printf(1.录入新的图书信息n2.返回上一层nn);printf(-nn);examine(&x,1);switch(x)case
40、1:inputs1(1,1,1,1,1);n=5;break;case 2:n=2;break;default:;void pic5()/添加图书确认界面int i;pica();printf(你输入的图书信息为:nn);printf(书名ttt 编号t 作者tt 种类t 在馆数t 借出数n);printf(%-24s%-8d%-16s%-8s%-8d%-8dnn,bk.name,bk.bh,bk.writer,bk.classic,bk.zn,bk.jn);printf(-nn);printf(1.录入以上信息n2.返回重新输入图书信息nn);printf(-nn);examine(&x,1
41、);switch(x)case 1:i=zj(bk);if(i)eros(i);n=7;elsen=6;break;case 2:n=4;break;default:;void pic6()/添加图书成功提示界面printf(添加图书成功!n);printf(1.返回继续添加图书n2.返回管理图书界面n);examine(&x,1);switch(x)case 1:n=4;break;case 2:n=2;break;default:;void pic7()/添加图书失败提示界面printf(1.重新输入图书信息n2.返回管理图书界面n);examine(&x,1);switch(x)case
42、 1:n=4;break;case 2:n=2;break;default:;void pic8()/修改图书界面pica();printf(1.进行修改图书操作n2.返回管理图书界面nn);printf(-nn);examine(&x,1);switch(x)case 1:n=9;break;case 2:n=2;break;default:;void pic9()/输入编号以选择修改相应的图书int i;pica();printf(以下是在馆所有图书信息:nn);gck23();printf(-nn);printf(1.输入编号修改图书n2.返回图书管理界面nn);printf(-nn);
43、examine(&x,0);switch(x)case 1:inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i)eros(i);n=11;elsen=10;break;case 2:system(cls);n=2;break;default:system(cls);void pic10()/按需求修改图书界面pica();printf(编号为%d 的图书信息:nn,bk.bh);copy(bk.bh);bh2(bk.bh);printf(-nn);printf(1.修改书名n2.修改作者名字n3.修改图书在馆的数量n4.修改图书所属的类别n);printf(5.修改图书所
44、有信息n6.返回上一层选择其他编号的书nn);printf(-nn);examine(&x,1);switch(x)case 1:inputs1(0,1,0,0,0);n=12;break;case 2:inputs1(0,0,1,0,0);n=12;break;case 3:inputs1(0,0,0,1,0);n=12;break;case 4:inputs1(0,0,0,0,1);n=12;break;case 5:inputs1(0,1,1,1,1);n=12;break;case 6:n=9;break;default:;void pic11()/获取相应的图书失败提示界面print
45、f(1.重新输入图书编号n2.返回图书管理界面n);examine(&x,1);switch(x)case 1:n=9;break;case 2:n=8;break;default:;void pic12()/修改图书信息确认界面int i;pica();printf(你要修改的图书信息为:nn);bh2(bk.bh);printf(%-24s%-8d%-16s%-8s%-8d%-8dnn,bk.name,bk.bh,bk.writer,bk.classic,bk.zn,bk.jn);printf(-nn);printf(1.确认修改此图书n2.返回选择修改其他信息n3.返回图书管理界面nn)
46、;printf(-nn);examine(&x,1);switch(x)case 1:i=xg(bk);if(i)eros(i);n=14;elsen=13;break;case 2:n=10;break;case 3:n=8;break;default:;void pic13()/修改图书提示成功界面printf(修改图书成功!n);printf(1.返回继续修改图书n2.返回管理图书界面n);examine(&x,1);switch(x)case 1:n=8;break;case 2:n=2;break;default:;void pic14()/修改图书失败提示界面printf(1.重新
47、输入图书修改信息n2.图书管理界面n);examine(&x,1);switch(x)case 1:n=10;break;case 2:n=8;break;default:;void pic15()/删除图书选择界面pica();printf(1.进行删除图书操作n2.返回图书管理界面nn);printf(-nn);examine(&x,1);switch(x)case 1:n=16;break;case 2:n=2;break;default:;void pic16()/输入相应编号删除图书int i;pica();printf(以下是在馆所有图书信息:nn);gck23();printf(
48、-nn);printf(1.输入编号删除图书n2.返回图书管理界面nn);printf(-nn);examine(&x,0);switch(x)case 1:inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i)eros(i);n=18;elsen=17;system(cls);break;case 2:system(cls);n=2;break;default:system(cls);void pic17()/删除图书确认界面int i;pica();printf(编号为%d 的图书信息:nn,bk.bh);bh2(bk.bh);printf(-nn);printf(1.
49、删除该图书n2.返回图书管理界面nn);printf(-nn);examine(&x,1);switch(x)case 1:i=sc(bk.bh);if(i)eros(i);n=20;elsen=19;break;case 2:n=2;break;default:;void pic18()/获取特定编号图书失败界面printf(1.返回重新输入图书编号n2.返回选择不同类别的图书n);examine(&x,1);switch(x)case 1:n=16;break;case 2:n=15;break;default:;void pic19()/删除图书成功提示界面printf(删除图书操作成功
50、!n);printf(1.返回选择其他的图书n2.返回管理图书界面n);examine(&x,1);switch(x)case 1:n=15;break;case 2:n=2;break;default:;void pic20()/删除图书失败提示界面printf(1.返回重新输入图书编号n2.返回重新选择类别n);examine(&x,1);switch(x)case 1:n=16;break;case 2:n=15;break;default:;void pic21()/管理员查看借阅记录界面int i;pica();printf(1.查看指定编号的图书借阅记录n2.查看指定读者的借阅记录