图书馆管理系统C语言程序设计
图书馆管理系统C语言程序设计
![图书馆管理系统C语言程序设计](https://img.taocdn.com/s3/m/6a6e6318e2bd960590c677b2.png)
HUNANUNIVERSITYC语言程序训练1)2)3)4)5)6)7)8)9)10)在来实现:【总体设计】源代码为//rkou.c程序的入口#include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include"head.h"#include"fuc.h"#include"picture.h"#include"jiangzhuo1.h"#include"output.h"main(){inti=setup();switch(i){case0:while(n<50){conects(n);}default:eros(i);}}2.{intzn;//intbh;//};{};{intbh,o;//};//structbookbb[100];structinformationad[100];structshowss[100];inti,j,k,s;intn=0;intx;FILE*fp;//以下函数主要功能:方便窗口与用户之间交换信息intregst();voidpassword(char*a,intb,intj);//登陆时的输入函数voidexamine(int*a,intb); //保证键入的数据是数字voidchangepaw(inta,intb); //修改密码用到的提示函数voidinputs0(); //输出图书类别以供用户选择voidinputs1(inta,intb,intc,intd,inte); //方便用户输入图书各项信息(如书名,编号) voidinputs2(inta,intb,intc); //方便用户输入管理员的信息(如账号姓名) voidinputs3(inta,intb,intc); //方便用户输入读者的信息(如账号姓名) voideros(inti);//错误显示函数,操作一旦出错,则会出现相应的错误信息voidconects(intj); //连接函数,选择界面//一下函数主要用于改变文件的内容并保存intsetup();//数据初始化函数intxzc(charno[12],charkey1[10],charkey2[10],charname[10]);//读者注册函数//pic()函数voidpic0();voidpic1();voidpic2();voidpic3();voidpic4();voidpic5();voidpic6();voidpic7();voidpic8();voidpic9();voidpic10();voidpic11();voidpic12();voidpic13();voidpic14();voidpic15();voidpic16();voidpic17();voidpic18();voidpic19();voidpic20();voidpic47();voidpicc();3.用户输入以及界面反馈用到的功能函数源代码为intregst(){charnum[12],paw1[10],paw2[10],name[10];inti;printf("请输入账号\n(11字符以内,不能含有中文字符):\n");password(num,0,11);printf("输入您的密码\n(9字符以内,不能含有中文字符):\n"); password(paw1,1,9);printf("请再次输入密码:\n");password(paw2,1,9);printf("输入您的姓名:\n");gets(name);system("cls");i=xzc(num,paw1,paw2,name);returni;}{charc;inti=0;{if(c==8)if(i>0)i--;}elseif(i<j)a[i]=c;i++;}if(i==j)}}a[i]='\0';}printf("请输入数字!!\n");}rewind(stdin);if(b)system("cls");}voidchangepaw(inta,intb){inti;charc1[10],c2[10],c3[10];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;}elsen=26;}elseif(i)}elsen=43;}}{inti=1;switch(i)}}}voidinputs1(inta,intb,intc,intd,inte){inti;switch(a){case1:printf("请输入图书编号:\n");examine(&bk.bh,1); default:;}switch(b){case1:printf("请输入图书名称:\n");gets(); default:;}switch(c){case1:printf("请输入图书的作者:\n");gets(bk.writer); default:;}switch(d){case1:printf("请输入该图书的库存:\n");examine(&bk.zn,1); default:;}system("cls");switch(e){case1:printf("请选择图书类别:\n");inputs0();default:;}}{switch(a)default:;}switch(b)default:;}switch(c)default:;}}{switch(a)default:;}switch(b)default:;}switch(c){case1:printf("请输入姓名:\n");gets();default:;}system("cls");}voideros(inti)//错误函数{switch(i){case-1:printf("error1!初始化失败\n\n");break;case-2:printf("error2!账号不存在\n\n");break; case-3:printf("error3!账号不存在\n\n");break;case-4:printf("error4!密码错误\n\n");break;case-5:printf("error5!输入的密码不一致\n\n");break; case-6:printf("error6!编号不存在\n\n");break;case-7:printf("error7!书名不能为空\n\n");break;case-8:printf("error8!作者名字不能为空\n\n");break; case-9:printf("error9!无此图书编号的记录\n\n");break; case-10:printf("error10!无此账号的记录\n\n");break; case-11:printf("error11!原始密码输入错误\n\n");break;default:;}}{switch(j)case9:pic9();break;case10:pic10();break;case11:pic11();break;case12:pic12();break;case13:pic13();break;case14:pic14();break;case15:pic15();break;case16:pic16();break;case17:pic17();break;case18:pic18();break;case19:pic19();break;case20:pic20();break;case21:pic21();break;case22:pic22();break;case23:pic23();break;case24:pic24();break;case25:pic25();break;case26:pic26();break;case27:pic27();break;case29:pic29();break;case30:pic30();break;default:;}}4.//intsetup()//数据初始化函数{FILE*fp;fp=fopen("reader.txt","r");//对文档以只读的方式进行操作if(fp==NULL){return-1;//当文件打不开时返回-1}else{i=0;while(!feof(fp)){fscanf(fp,"%s%s%s",stu[i].name,stu[i].no,stu[i].key);//将文档里面的数据格式化读取到结构体数组里面i++;}i=i-1;}fclose(fp);fp=fopen("ad.txt","r");//对文档以只读的方式进行操作if(fp==NULL){return-1;//}else{j=0;{j++;}j=j-1;}fclose(fp);{return-1;//}else{k=0;{将文档里面的数据格式化读取到结构体数组里面k++;}k=k-1;}fclose(fp);fp=fopen("show.txt","r");//对文档以只读的方式进行操作if(fp==NULL){{s=0;while(!feof(fp)){fscanf(fp,"%s%s%d%s%s%d",ss[s].name1,ss[s].no,&ss[s].bh,ss[s].name2,ss[s].writer,&ss[s].o);//将文档里面的数据格式化读取到结构体数组里面s++;}s=s-1;}fclose(fp);return0;//}{intx=0;{{return-21;break;}{{i=i+1;return-16;else{fprintf(fp,"%s\t\t%s\t\t%s\n",stu[i].name,stu[i].no,stu[i].key);}fclose(fp);return0;}else{return-5;}intexam(charno[10],charkey[10],intn)//密码账号检验函数{intx;if(n==0)//对读者的密码和账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no))//判断该账号是否存在{}{return-3;}}}if(n==1)//{{return0;break;}else{return-4;break;}}return-3;}}}}intzj(structbookb)//管理员增加图书信息函数{intx;for(x=0;x<=k;x++){if(bb[x].bh==b.bh)//判断所增加的图书编号是否已存在{return-13;break;}break;}if(x==k)k=k;elsek=k+1;return-16;else{}fclose(fp);return0;}}}intsc(intbh)//管理员删除图书信息函数{intx;for(x=0;x<=k;x++){if(bb[x].jn!=0)return-22;for(x=x;x<=k-1;x++){bb[x]=bb[x+1];//删除图书信息后将该图书信息后面的图书信息依次前移}k--;fp=fopen("book.txt","w+");//将删除后的所有图书信息重新写入文档if(fp==NULL)return-16;else{{}}fclose(fp);return0;break;}}}{intx;if(n==0)//{{{{fp=fopen("reader.txt","w+");//将修改后的信息保存在文件里面if(fp==NULL)return-16;else{for(x=0;x<=i;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",stu[x].name,stu[x].no,stu[x].key);}fclose(fp);else{return-5;}}elsereturn-11;}}}if(n==1)//{{{{{return-16;else{}fclose(fp);return0;}else{return-5;}}elsereturn-11;}}}}intxg(structbookb)//管理员修改图书信息函数if(strlen()==0)//判断所输入的要修改的图书名字是否为空{return-7;}else{if(strlen(b.writer)==0)//判断所输入的要修改的图书作者是否为空{return-8;}else{{{return-16;else{{}}fclose(fp);return0;}}}}}voidcopy(intbh)//按编图书编号将图书信息暂时保存在另外一个结构体里面{intx;for(x=0;x<=k;x++){if(bb[x].bh==bh){strcpy(,bb[x].name);strcpy(bk.writer,bb[x].writer);bk.zn=bb[x].zn;bk.jn=bb[x].jn;bk.bh=bb[x].bh;}}}voidcopy2(charno[12])//按管理员账号将管理员信息暂时保存在另外一个结构体里面{intx;for(x=0;x<=j;x++){{}}}{intx;{{}}}{intx,y,z;{{{if(strlen(ss[0].name1)==0)//判断文件里面的第一行信息是否存在{for(y=0;y<=i;y++){if(!strcmp(stu[y].no,no)){--bb[x].zn;//修改借书后的信息++bb[x].jn;ss[0].o=2;strcpy(ss[0].no,no);strcpy(ss[0].writer,bb[x].writer); strcpy(ss[0].name2,bb[x].name); ss[0].bh=bh;}}}else{for(y=0;y<=s;y++){{return-19;else{ss[y].o=2;}break;}else{if(y==s){s++;{{strcpy(ss[s].no,no);strcpy(ss[s].writer,bb[x].writer); ss[s].bh=bb[x].bh;ss[s].o=2;}}break;}}}fp=fopen("book.txt","w+");//将借书后的图书信息写入文件if(fp==NULL)return-16;else{for(y=0;y<=k;y++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[y].bh,bb[y].name,bb[y].classic,bb[y].writer,bb[y].zn,bb[y].jn); }}fclose(fp);return-16;else{{}}fclose(fp);return0;}elsereturn-20;}}}{intx,p;{{for(p=0;p<=k;p++){if(bb[p].bh==bh)//修改还书后的图书信息{++bb[p].zn;--bb[p].jn;}}ss[x].o=1;fp=fopen("book.txt","w+");//将还书后的所有图书信息重新写入文件return-16;else{for(p=0;p<=k;p++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[p].bh,bb[p].name,bb[p].classic,bb[p].writer,bb[p].zn,bb[p].jn); }}fclose(fp);fp=fopen("show.txt","w+");//将还书后的所有借书记录重新写入文件if(fp==NULL)return-16;else{{}}fclose(fp);return0;}else{return-12;}}elseif(x==s)return-18;}}{intx,flag;do//{flag=1;for(x=0;x<=k-1;x++){if(bb[x].bh>bb[x+1].bh){a=bb[x+1];bb[x+1]=bb[x];bb[x]=a;flag=0;}}while(flag==0);fp=fopen("book.txt","w+");//将排序后的信息重新写入文件for(x=0;x<=k;x++)fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x].writer,bb[x].zn,bb[x].jn); fclose(fp);}5.登陆界面所有函数源代码为//picture.hvoidpica(){printf("\n}voidpicb(){printf("\n}printf("1.switch(x)default:;}}{inti;printf("\n\t\t\t\t登陆\n");printf("------------------------------------------------------------------------\n\n");printf("1.管理员登陆\n2.读者登陆\n3.返回系统界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case1:inputs2(1,1,0);i=exam(aa.no,aa.key,1);if(i){eros(i);n=3;elsen=2;break;case2:inputs3(1,1,0);i=exam(rr.no,rr.key,0);if(i){eros(i);n=30;}elsen=29;break;case3:n=0;break;default:;}}pica();printf("1.printf("5.switch(x)default:;}}{printf("1.switch(x)default:;}}voidpic4()//管理员添加图书界面{pica();printf("1.录入新的图书信息\n2.返回上一层\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){case1:inputs1(1,1,1,1,1);n=5;break;case2:n=2;break;default:;}}voidpic5()//添加图书确认界面{inti;pica();printf("你输入的图书信息为:\n\n");printf("书名\t\t\t编号\t作者\t\t种类\t在馆数\t借出数\n");printf("%-24s%-8d%-16s%-8s%-8d%-8d\n\n",,bk.bh,bk.writer,bk.classic,bk.zn,bk.jn); printf("------------------------------------------------------------------------\n\n");printf("1.录入以上信息\n2.返回重新输入图书信息\n\n");switch(x)if(i)}default:;}}{printf("printf("1.switch(x)default:;}}{printf("1.switch(x){case1:n=4;break;case2:n=2;break;default:;}}voidpic8()//修改图书界面{pica();printf("1.进行修改图书操作\n2.返回管理图书界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case1:n=9;break;case2:n=2;break;default:;}}voidpic9()//输入编号以选择修改相应的图书{inti;pica();printf("以下是在馆所有图书信息:\n\n");gck23();printf("1.switch(x)if(i)}else{n=10;}break;}}{pica();printf("printf("1.修改书名\n2.修改作者名字\n3.修改图书在馆的数量\n4.修改图书所属的类别\n"); printf("5.修改图书所有信息\n6.返回上一层选择其他编号的书\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case1:inputs1(0,1,0,0,0);n=12;break;case2:inputs1(0,0,1,0,0);n=12;break;case3:inputs1(0,0,0,1,0);n=12;break;case4:inputs1(0,0,0,0,1);n=12;break;case5:inputs1(0,1,1,1,1);n=12;break;case6:n=9;break;default:;}}voidpic11()//获取相应的图书失败提示界面{printf("1.重新输入图书编号\n2.返回图书管理界面\n"); examine(&x,1);switch(x){case1:n=9;break;case2:n=8;break;default:;}}{inti;pica();printf("printf("1.switch(x)if(i)}default:;}}{printf("printf("1.返回继续修改图书\n2.返回管理图书界面\n"); examine(&x,1);switch(x){case1:n=8;break;case2:n=2;break;default:;}}voidpic14()//修改图书失败提示界面{printf("1.重新输入图书修改信息\n2.图书管理界面\n");examine(&x,1);switch(x){case1:n=10;break;case2:n=8;break;default:;}}voidpic15()//删除图书选择界面{pica();printf("1.进行删除图书操作\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");switch(x)default:;}}{inti;pica();;printf("gck23();printf("1.switch(x)if(i)}else{};break;case2:system("cls");n=2;break;default:system("cls");;}}voidpic17()//删除图书确认界面{inti;pica();printf("编号为%d的图书信息:\n\n",bk.bh);bh2(bk.bh);printf("------------------------------------------------------------------------\n\n");printf("1.删除该图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case1:i=sc(bk.bh);if(i){eros(i);n=20;}elsen=19;break;case2:n=2;break;default:;}}{printf("1.switch(x)default:;}}{printf("printf("1.switch(x)default:;}}{printf("1.switch(x){case1:n=16;break;case2:n=15;break;default:;}}voidpic21()//管理员查看借阅记录界面{inti;pica();printf("1.查看指定编号的图书借阅记录\n2.查看指定读者的借阅记录\n3.查看所有图书借阅记录\n4.查看在馆图书的详细信息\n");printf("5.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){case1:inputs1(1,0,0,0,0);i=rck1(bk.bh);if(i){eros(i);n=23;}else{pica();printf("}break;if(i)}else{pica();printf("}break;default:;}}{printf("------------------------------------------------------------------------\n\n"); printf("1.返回查看其它借阅记录\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){case1:n=21;break;case2:n=2;break;default:;}}voidpic23()//查看借阅记录失败界面{printf("1.返回查看记录界面\n2.返回图书管理界面\n"); examine(&x,1);switch(x){case1:n=21;break;case2:n=2;break;default:;}}voidpic24()//图书信息显示界面{pica();printf("gck23();printf("1.switch(x)default:;}}{pica();printf("1.switch(x)default:;}}voidpic26()//修改密码成功提示界面{printf("修改密码操作成功!!!\n");printf("1.返回管理图书界面\n");examine(&x,1);switch(x){case1:n=2;break;default:;}}voidpic27()//修改密码失败提示界面{printf("1.再试一次\n2.返回图书管理界面\n");examine(&x,1);switch(x){case1:n=25;break;case2:n=2;break;default:;}}voidpic29()//读者主页{copy3(rr.no);picb();printf("1.printf("5.switch(x)default:;}}{printf("1.switch(x)default:;}}{inti;picb();printf("1.按编号查询书目\n2.按书名查询书目\n3.按作者查询书目\n4.按类别查询书目\n5.返回我的主页\n\n"); printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case1:inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i){eros(i);n=33;elsen=34;break;case2:inputs1(0,1,0,0,0);i=sm1();if(i){eros(i);n=33;}else{picb();sm2();n=32;}break;case3:inputs1(0,0,1,0,0);if(i)}else}break;default:;}}{ inti;printf("1.{{eros(i);n=36;}elsen=34;break;case2:system("cls");n=31;break;default:system("cls");}}voidpic33()//查询书目失败界面{printf("1.返回重新查询\n2.返回我的主页\n");switch(x){case1:n=31;break;case2:n=29;break;default:;}}voidpic34()//借书确认界面{inti;picb();printf("编号为%d的图书信息:\n\n",bk.bh);bh2(bk.bh);printf("1.if(i)}elsedefault:;}}{printf("printf("1.switch(x)default:;}}voidpic36()//借书失败提示界面{printf("1.返回重新查询\n2.返回我的主页\n"); examine(&x,1);switch(x){case1:n=31;break;case2:n=29;break;default:;}}{inti;picb();printf("1.输入还书的编号\n2.返回我的主页\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){case1:inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i){eros(i);n=39;}elseif(i)}elsen=38;}break;default:;}}{printf("printf("1.switch(x)default:;}}{printf("1.switch(x){case1:n=37;break;case2:n=29;break;default:;}}voidpic40()//读者的借阅记录界面{picb();printf("以下是您尚未归还的所有书目:\n\n");printf("------------------------------------------------------------------------\n\n"); printf("1.返回我的主页\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){case1:n=29;break;default:;}}voidpic41()//读者浏览在馆图书信息的界面{picb();printf("gck23();printf("1.switch(x)default:;}}{picb();printf("1.switch(x)default:;}}{printf("printf("1.examine(&x,1);switch(x){case1:n=42;break;case2:n=29;break;default:;}}voidpic44()//修改密码失败提示界面{printf("1.我要再试一次\n2.返回我的主页\n");switch(x){case1:n=42;break;case2:n=29;break;default:;}}voidpic45()//新读者注册界面{inti;printf("\t\t\t新用户注册\n\n");printf("------------------------------------------------------------------------\n\n");printf("1.我要注册\n2.返回系统登录界面\n\n");switch(x)if(i)}default:;}}{printf("printf("1.switch(x)default:;}}{switch(x){case1:n=45;break;case2:n=0;break;default:;}}6.按要求读取文件的数据并显示到屏幕上源代码为intbh1(intbh)//判断该编号的图书信息是否存在函数{intx;for(x=0;x<=k;x++){if(bh==bb[x].bh){return0;}if(x==k&&bh!=bb[x].bh){return-6;}}}{intx;{{printf("}}}{intx;{{return0;break;}return-14;}}voidsm2(charname[50])//按照图书名字显示图书信息函数{intx;printf("书名\t\t\t编号\t作者\t\t种类\t在馆数\t借出数\n"); for(x=0;x<=k;x++){if(!strcmp(name,bb[x].name))printf("%-24s%-8d%-16s%-8s%-8d%-8d\n",bb[x].name,bb[x].bh,bb[x].writer,bb[x].classic,bb[x].zn,bb[x].jn); }}printf("\n");}intzz1(charwriter[20])//判断是否存在该作者的图书信息函数{intx;for(x=0;x<=k;x++){if(!strcmp(writer,bb[x].writer)){return0;break;}return-15;}}{intx;printf("{{}}}{intx;printf("{{printf("%-24s%-8d%-16s%-8s%-8d%-8d\n",bb[x].name,bb[x].bh,bb[x].writer,bb[x].classic,bb[x].zn,bb[x].jn); }}printf("\n");}intrck1(intbh)//判断该编号的图书的借书记录是否存在{intx;if(ss[x].bh==bh){return0;}else{if(x==s)return-9;}}}{intx;printf("{{}}}{intx;printf("{{}}}intgck21(charno[12])//判断该账号读者的借书记录是否存在{intx;for(x=0;x<=s;x++){if(!strcmp(ss[x].no,no)){return0;}if(x==s)return-10;}}}voidgck22(charno[12])//按读者显示借书情况2{intx;printf("借书人\t借者账号\t图书编号\t书名\t\t\t作者\n");for(x=0;x<=s;x++){{}}}{intx;printf("{}}1.2.3.4.5.读者登陆界面【心得体会】1.通过这次实训课的训练,我组成员收获了许多新的知识,也锻炼了自己各方面的能力,坚实地打牢了专业知识基础,极大得方便了以后的学习生活。
C语言程序课程设计图书管理系统方案
![C语言程序课程设计图书管理系统方案](https://img.taocdn.com/s3/m/bf1ed2e6d4bbfd0a79563c1ec5da50e2524dd1ac.png)
C语言程序课程设计报告标题:图书管理系统专业:软件工程类:设计主题图书馆管理系统主要包括管理图书的库存信息,每本书的借阅信息,每个人的借阅信息。
每本书的库存信息包括数量、书名、作者、出版日期、金额、类别、总入库数量、当前库存、已借出图书数量等。
每本借书包括以下信息:编号、书名、金额、借书证号、借阅日期、到期日期、罚款金额等。
每个人的图书馆信息包括借书证号、班级、学号等。
该系统的功能包括以下几个方面:一、借阅资料管理要求对图书、期刊、报纸、期刊进行分类管理,这样操作会更加灵活方便。
可以随时添加、删除、修改、查询等相关资料。
b、借贷管理(1)借贷操作(2)还书操作(3)更新治疗提示:以上处理需要相互配合,通过编辑赔偿和违约金金额来完成图书借还业务的各种登记。
例如,读者在还书时,不仅要更新图书的库存信息,还要自动计算图书的罚款金额。
并显示读者当天到期未还图书的所有信息。
c、读者管理读者等级:对借阅的读者进行分类,比如可以分为教师和学生两类。
并定义每类读者可以借阅的图书数量及相关借阅时间等信息。
读者管理:可以录入读者信息,以及挂失或注销读者、查询等服务。
D.统计分析可以随时进行统计分析,及时了解当前的借阅情况和相关数据状态。
统计分析包括借阅列表、数据状态统计、借阅统计等功能分析,显示当日所有到期未还的图书信息。
e系统参数设置:您可以设置相关的系统服务器参数,如违约金金额、最大借用天数等。
根据题目分析这项工作分为六个模块。
1.图书数据2.借款人信息3.借用模块4.还书模块5.照看书籍6.查询模块模块一:书号,书名,作者,出版时间,价格,份数,页数。
模块二:单位、借阅书目、借阅时间模块3:输入书名、书号、借书证。
模块四:登记书号,还书,处理罚款。
模块5:管理书库中的书籍,将新书入库,删除旧书,堆栈查询模块6:图书查询。
数据测试源代码汉字菜单可以参照以下代码编写:#包含“stdio.h”。
主(){ char c;int I;做{clr SCR();for(I = 0;i < 80i++)printf(" * ");printf("\t 1:添加书籍\ n ");printf("\t 2:列出书籍\ n ");printf(" \ t 3:s reach books \ n ");printf("\t 4:借书\ n ");printf("\t 5:返回图书\ n ");printf("\t6:退出\n ")printf(" \ t请选择输入选项[1 \ \ 2 \ \ 3 \ \ 4 \ \ 5 \ \ 6]:\ n ");做{c = getchar();}while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5'&&!='6');getchar();开关(c){事例“1”:输入();打破;案例“2”:del();打破;事例“3”:find();打破;case“4”:arrange();打破;事例“5”:right();打破;案例“6”:出口(0);}Printf("按任意键返回主菜单:\ n ");getchar();clr SCR();} while(1);}#include <stdio.h >定义图书结构*/结构书{int _ id#include <stdlib.h >#include <string.h >#定义借入1#定义NOBORROW 0/*//数字,唯一char _ name[32];//书的名称,不唯一int _ type//书的类型,不唯一int _ status//书的状态,借出/未借出int _ count//图书借出的次数struct Book * _ next//下一本书结构书* _ prev//前一本书};定义书籍类型*/操作目录提示*/操作目录提示1 */添加图书类型并显示用户信息*/添加图书状态并显示用户信息。
C语言课程设计图书馆管理系统程序代码
![C语言课程设计图书馆管理系统程序代码](https://img.taocdn.com/s3/m/e5d4a1a6f01dc281e43af000.png)
#include〈stdio.h〉#include<windows.h〉#include〈string。
h〉#include<conio。
h>#define M 100struct books{char tsmc[12];inttsbh;float dj;char zz[12];char czzt[12];char xm[12];char xb[12];intxh; }s[M];int N;bool flag;intmain (){intsele;flag=0;sele=1;void sr();void cx();void sc();void js();void hs();void tc();void jsh();//system ("tsgl”);printf("\n\n");printf(" ************************\n"); printf(" 1:输入2:查询3:删除\n");printf(”4:借书5:还书0:退出\n");printf(” ************************\n"); while(1){printf(”\n\n请输入功能序号:");scanf (”%d",&sele);if(sele>=0 && sele<=5){switch(sele){case 1:sr();break;case 2:cx();break;case 3:sc();break;case 4:js();break;case 5:hs();break;case 0:jsh();break;}if(flag)break;printf(”\n\n");printf(” ************************\n”); printf(" 1:输入2:查询3:删除\n");printf(”4:借书5:还书0:退出\n”);printf(” ************************\n”);}else{printf(”输入错误请再次输入|\n\n");printf("\n\n");printf(” ************************\n”);printf(" 1:输入2:查询3:删除\n”);printf(”4:借书5:还书0:退出\n");printf(" ************************\n");}printf("\n\n让任意键继续\n”);} //wr_file();}/******主函数***//*********输入*********/void sr(){intn,i;N=0;printf("可输入的书本数:");scanf("%d",&n);N=n+N;printf("请输入相关信息:\n");for(i=1;i<=n;i++){printf(”图书名称:”);scanf(”%s",s[N-n-1+i]。
图书馆管理系统C语言程序设计
![图书馆管理系统C语言程序设计](https://img.taocdn.com/s3/m/04ca9987524de518964b7d73.png)
图书馆管理系统C语言程序设计-CAL-FENGHAI.-(YICAI)-Company One1HUNAN UNIVERSITYC语言程序训练报告【设计目的】图书信息包括:读者登录号、管理员登录号、图书编号、作者名、种类、出版社、图书库存、图书借出数目等.图书信息管理系统,使之能提供以下功能:1)系统以菜单方式工作2)读者注册功能3)读者登录功能4)读者借书还书功能5)查询读者借阅记录6)查询在管图书信息功能7)修改密码功能8)管理员登录功能9)增加、修改、删除图书功能10)查看图书信息功能【设计思路】根据题目要求,应当把图书信息用结构体形式输入,应该提供以下结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的;管理员和读者登录界面及各自功能应有不同的实现。
【总体设计】【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用源代码为//rkou.c 程序的入口#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include"head.h"#include"fuc.h"#include"picture.h"#include"jiangzhuo1.h"#include"output.h"main(){ int i=setup();switch (i){ case 0: while(n<50){ conects(n);}default: eros(i);}system("pause");}2.程序中全局变量声明定义,以及所有函数声明源代码为struct book //图书结构体声明{ char name[50],classic[10],writer[20]; //书名,类别,作者int jn; //借出数量int zn; //在馆数量int bh; //图书编号};struct information //管理员和读者结构体声明{ char name[10],no[12],key[10]; //姓名,账号,密码};struct show //图书借阅记录的结构体声明{char name1[10],name2[50],writer[20],no[12]; //书名,读者姓名,书的作者,读者账号 int bh,o; //图书编号,借阅状况(未还,已还)};//以下为用到的全局变量struct book bk;struct information aa,rr;struct information stu[100];struct book bb[100];struct information ad[100];struct show ss[100];int i,j,k,s;int n=0;int x;FILE *fp;//以下函数主要功能:方便窗口与用户之间交换信息int regst();void password(char *a,int b,int j); //登陆时的输入函数void examine(int *a,int b); //保证键入的数据是数字void changepaw(int a,int b); //修改密码用到的提示函数void inputs0(); //输出图书类别以供用户选择void inputs1(int a,int b,int c,int d,int e); //方便用户输入图书各项信息(如书名,编号) void inputs2(int a,int b,int c); //方便用户输入管理员的信息(如账号姓名)void inputs3(int a,int b,int c); //方便用户输入读者的信息(如账号姓名)void eros(int i) ; //错误显示函数,操作一旦出错,则会出现相应的错误信息void conects(int j); //连接函数,选择界面//一下函数主要用于改变文件的内容并保存int setup() ; //数据初始化函数int xzc(char no[12],char key1[10],char key2[10],char name[10]); //读者注册函数int exam(char no[10],char key[10],int n); //密码账号检验函数int mp(char no[12],char key1[10],char key2[10],char key3[10],int n); //密码修改函数void paixu(); //对图书按照编号从小到大的顺序进行排列int sc(int bh); //管理员删除图书信息函数int zj(struct book bb); //管理员增加图书信息函数int xg(struct book bb); //管理员修改图书信息函数int js(int bh,char no[12]); //借书函数int hs(int bh,char no[12]); //还书函数int bh1(int bh); //判断该编号的图书信息是否存在函数void bh2(int bh); //按照图书编号显示图书信息函数int sm1(char name[50]); //判断是否存在该名字的图书信息函数void sm2(char name[50]); //按照图书名字显示图书信息函数int zz1(char writer[20]); //判断是否存在该作者的图书信息函数void zz2(char writer[20]); //按照图书作者显示图书信息函数void lb(char classic[10]); //按类别显示图书信息int rck1(int bh); //判断该编号的图书的借书记录是否存在void rck2(int bh); //按编号显示图书借书情况int gck21(char no[12]); //判断该账号读者的借书记录是否存在void gck22(char no[12]); //按读者显示借书情况2void gck12(); //显示全部借书情况void gck23(); //管理员查看所有书的信息void copy(int bh); // 按编图书编号将图书信息暂时保存在另外一个结构体里面void copy2(char no[12]); //按管理员账号将管理员信息暂时保存在另外一个结构体里面void copy3(char no[12]); //按读者账号将读者信息暂时保存在另外一个结构体里面//pic() 函数:每个函数表示一个界面,conects函数将它们连接起来void pic0();void pic1();void pic2();void pic3();void pic4();void pic5();void pic6();void pic7();void pic8();void pic9();void pic10();void pic11();void pic12();void pic13();void pic14();void pic15();void pic16();void pic17();void pic18();void pic19();void pic20();void pic21();void pic22();void pic23();void pic24();void pic25();void pic26();void pic27();void pic29();void pic30();void pic31();void pic32();void pic33();void pic34();void pic35();void pic36();void pic37();void pic38();void pic39();void pic40();void pic41();void pic42();void pic43();void pic44();void pic45();void pic46();void pic47();void picc();3.用户输入以及界面反馈用到的功能函数源代码为int regst(){ char num[12],paw1[10],paw2[10],name[10];int i;printf("请输入账号\n(11字符以内,不能含有中文字符):\n");password(num,0,11);printf("输入您的密码\n(9字符以内,不能含有中文字符):\n");password(paw1,1,9);printf("请再次输入密码:\n");password(paw2,1,9);printf("输入您的姓名:\n");gets(name);system("cls");i=xzc(num,paw1,paw2,name);return i;}void password(char *a,int b,int j){ char c;int i=0;while((c=getch())!='\r'){ if(c==8){ printf("\b \b");if(i>0)i--;}else if(i<j){ if(b) printf("*");else printf("%c",c);a[i]=c;i++;}if(i==j){ printf("\a");}}a[i]='\0';printf("\n");}void examine(int *a,int b){ while(!scanf("%d",a)){ while(getchar()!='\n'); printf("请输入数字!!\n"); }rewind(stdin);if(b) system("cls");}void changepaw(int a,int b){ int i;char c1[10],c2[10],c3[10];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;}else{ i=mp(rr.no,c1,c2,c3,b);if(i){ eros(i);n=44;}else n=43;}}void inputs0(){ int i=1;while(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;break;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();default: ;}switch(c){ case 1: printf("请输入图书的作者:\n");gets(bk.writer);default: ;}switch(d){ case 1: printf("请输入该图书的库存:\n");examine(&bk.zn,1); default: ;}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();default: ;}system("cls");}void inputs3(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();default: ;}system("cls");}void eros(int i) //错误函数{ switch (i){ case -1: printf("error1 !初始化失败\n\n");break;case -2: printf("error2 !账号不存在\n\n");break;case -3: printf("error3 !账号不存在\n\n");break;case -4: printf("error4 !密码错误\n\n");break;case -5: printf("error5 !输入的密码不一致\n\n");break;case -6: printf("error6 !编号不存在\n\n");break;case -7: printf("error7 !书名不能为空\n\n");break;case -8: printf("error8 !作者名字不能为空\n\n");break;case -9: printf("error9 !无此图书编号的记录\n\n");break;case -10: printf("error10 !无此账号的记录\n\n");break;case -11: printf("error11 !原始密碼輸入錯誤\n\n");break;case -12: printf("error12 !您已经归还此书\n\n");break;case -13: printf("error13 !您所增加的图书编号已存在\n\n");break;case -14: printf("error14 !搜索不到此书的相关信息\n\n");break;case -15: printf("error15 !搜索不到该作者的信息\n\n");break;case -16: printf("error16 !打不开文件,保存失败\n\n");break;case -17: printf("error17 !该图书信息已存在\n\n");break;case -18: printf("error18 !您没有借过这本书\n\n");break;case -19: printf("error19 !您已经借阅了这本书,不能再借\n\n");break;;case -20: printf("error20 !抱歉,图书已经借完了\n\n");break;case -21: printf("error21 !账号已存在\n\n") ; break;case -22: printf("error22 !还有图书未还,不能删除该条信息\n\n");break; default : ;}}void conects(int j){ switch(j){ case 0: pic0();break;case 1: pic1();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();break;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: pic30();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 44: pic44();break;case 45: pic45();break;case 46: pic46();break;case 47: pic47();break;default: ;}}4.文件操作各种函数源代码为// jiangzhuo1.h 文件操作各种函数int setup() //数据初始化函数{FILE *fp;fp=fopen("reader.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{i=0;while(!feof(fp)){fscanf(fp,"%s %s %s",stu[i].name,stu[i].no,stu[i].key); //将文档里面的数据格式化读取到结构体数组里面i++;}i=i-1;}fclose(fp);fp=fopen("ad.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{j=0;while(!feof(fp)){fscanf(fp,"%s %s %s",ad[j].name,ad[j].no,ad[j].key); //将文档里面的数据格式化读取到结构体数组里面j++;}j=j-1;}fclose(fp);fp=fopen("book.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{k=0;while(!feof(fp)){fscanf(fp,"%d %s %s %s %d %d",&bb[k].bh,bb[k].name,bb[k].classic,bb[k].writer,&bb[k].zn,&bb[k].jn); //将文档里面的数据格式化读取到结构体数组里面k++;}k=k-1;}fclose(fp);fp=fopen("show.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{s=0;while(!feof(fp)){fscanf(fp," %s %s %d %s %s %d",ss[s].name1,ss[s].no,&ss[s].bh,ss[s].name2,ss[s].writer,&ss[s].o); //将文档里面的数据格式化读取到结构体数组里面s++;}s=s-1;}fclose(fp);return 0; //当操作全部正确时返回0}int xzc(char no[12],char key1[10],char key2[10],char name[10]) //读者注册函数{ int x=0;for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //判断读者输入的账号与结构体里面的账号是否相同{return -21;break;}if(x==i && strcmp(no,stu[x].no))//判断读者输入的账号与结构体里面的账号是否相同{if(!strcmp(key1,key2)) //判断读者两次输入的密码是否一致{i=i+1;strcpy(stu[i].name,name);strcpy(stu[i].no,no);strcpy(stu[i].key,key1);fp=fopen("reader.txt","a"); //对文件以写的方式将注册的信息保存到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%s\t\t%s\t\t%s\n",stu[i].name,stu[i].no,stu[i].key);}fclose(fp);return 0;}else{return -5;}}}}int exam(char no[10],char key[10],int n) //密码账号检验函数{ int x;if(n==0) //对读者的密码和账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //判断该账号是否存在{if(!strcmp(key,stu[x].key)) //当账号存在时判断与之相应的密码是否相同{return 0;break;}else{return -4;break;}}if(x==i && strcmp(no,stu[x].no)){return -3;}}}if(n==1) //对管理员的密码账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,ad[x].no)) //判断该账号是否存在{if(!strcmp(key,ad[x].key)) //判断与之相应的密码是否存在{return 0;break;}else{return -4;break;}}if(x==j && strcmp(no,ad[x].no)){return -3;}}}}int zj(struct book b) //管理员增加图书信息函数{ int x;for(x=0;x<=k;x++){ if(bb[x].bh==b.bh) //判断所增加的图书编号是否已存在{return -13;break;}if(!strcmp(,bb[x].name)&&!strcmp(b.writer,bb[x].writer)) //判断所增加的图书是否存在{ return -17;break;}if(x==k){ if(strlen(bb[0].name)==0) //判断文档的第一行是否为空k=k;elsek=k+1;bb[k].bh=b.bh; //将所增加的图书信息添加到结构体里面strcpy(bb[k].name,);strcpy(bb[k].classic,b.classic);strcpy(bb[k].writer,b.writer);bb[k].zn=b.zn;bb[k].jn=b.jn;fp=fopen("book.txt","a"); //将增加的图书信息追加到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[k].bh,bb[k].name,bb[k].classic,bb[k].writer,bb[k].zn,bb[k].jn); }fclose(fp);return 0;}}}int sc(int bh) //管理员删除图书信息函数{ int x;for(x=0;x<=k;x++){if(bb[x].bh==bh) //判断所删除图书的编号是否存在{if(bb[x].jn!=0)return -22;for(x=x;x<=k-1;x++){bb[x]=bb[x+1]; //删除图书信息后将该图书信息后面的图书信息依次前移}k--;fp=fopen("book.txt","w+"); //将删除后的所有图书信息重新写入文档if(fp==NULL)return -16;else{for(x=0;x<=k;x++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x].writer,bb[x].zn,bb[x].jn); }}fclose(fp);return 0;break;}}}int mp(char no[12],char key1[10],char key2[10],char key3[10],int n) //密码修改函数{ int x;if(n==0) //读者密码修改{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //定位读者账号位置{if(!strcmp(stu[x].key,key1)) //判断输入的原密码是否正确{ if(!strcmp(key2,key3)) //判断两次输入的新密码是否一致{strcpy(stu[x].key,key3);fp=fopen("reader.txt","w+"); //将修改后的信息保存在文件里面if(fp==NULL)return -16;else{for(x=0;x<=i;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",stu[x].name,stu[x].no,stu[x].key); }fclose(fp);return 0;}else{return -5;}}elsereturn -11;}}}if(n==1) //管理员密码修改{for(x=0;x<=j;x++){if(!strcmp(no,ad[x].no)) //定位管理员账号位置{if(!strcmp(key1,ad[x].key)) //判断输入的原密码是否正确{if(!strcmp(key2,key3)) //判断两次输入的新密码是否一致{strcpy(ad[x].key,key3);fp=fopen("ad.txt","w+"); //将修改后的信息保存在文件里面if(fp==NULL)return -16;else{for(x=0;x<=j;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",ad[x].name,ad[x].no,ad[x].key); }fclose(fp);return 0;}else{return -5;}}elsereturn -11;}}}}int xg(struct book b) //管理员修改图书信息函数{ int x;if(strlen()==0) //判断所输入的要修改的图书名字是否为空{return -7;}else{if(strlen(b.writer)==0) //判断所输入的要修改的图书作者是否为空{return -8;}else{for(x=0;x<=k;x++){if((bb[x].bh==b.bh)) //定位要修改的图书编号位置{strcpy(bb[x].name,); //将修改后的信息保存在结构体里strcpy(bb[x].classic,b.classic);strcpy(bb[x].writer,b.writer);bb[x].zn=b.zn;bb[x].jn=b.jn;fp=fopen("book.txt","w+"); //将修改后的所有信息保存在文件里 if(fp==NULL)return -16;else{for(x=0;x<=k;x++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x].writer,bb[x].zn,bb[x].jn); }}fclose(fp);return 0;}}}}}void copy(int bh) // 按编图书编号将图书信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=k;x++){if(bb[x].bh==bh){strcpy(,bb[x].name);strcpy(bk.classic,bb[x].classic);strcpy(bk.writer,bb[x].writer);bk.zn=bb[x].zn;bk.jn=bb[x].jn;bk.bh=bb[x].bh;}}}void copy2(char no[12]) //按管理员账号将管理员信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=j;x++){if(!strcmp(ad[x].no,no)){strcpy(,ad[x].name);strcpy(aa.key,ad[x].key);}}}void copy3(char no[12]) //按读者账号将读者信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=i;x++){if(!strcmp(stu[x].no,no)){strcpy(,stu[x].name);strcpy(rr.key,stu[x].key);}}}int js(int bh,char no[12]) //借书函数{ int x,y,z;for(x=0;x<=k;x++){if(bb[x].bh==bh) //判断借书编号是否存在{if(bb[x].zn>0) //判断在馆数是否为0{if(strlen(ss[0].name1)==0) //判断文件里面的第一行信息是否存在{for(y=0;y<=i;y++){if(!strcmp(stu[y].no,no)){ --bb[x].zn; //修改借书后的信息++bb[x].jn;ss[0].o=2;strcpy(ss[0].name1,stu[y].name); //将借书后的信息保存在结构体数组里面strcpy(ss[0].no,no);strcpy(ss[0].writer,bb[x].writer);strcpy(ss[0].name2,bb[x].name);ss[0].bh=bh;}}}else{for(y=0;y<=s;y++){if((ss[y].bh==bh )&&!strcmp(ss[y].no,no)) //定位与输入的编号和账号一致的借书记录{if(ss[y].o==2) //判断是否已借过该书return -19;else{--bb[x].zn; //修改借书后的信息++bb[x].jn;ss[y].o=2;}break;}else{if(y==s){s++;for(z=0;z<=i;z++){if(!strcmp(stu[z].no,no)) //定位读者信息{bb[x].zn--; //修改借书后的信息bb[x].jn++;strcpy(ss[s].name1,stu[z].name);strcpy(ss[s].name2,bb[x].name);strcpy(ss[s].no,no);strcpy(ss[s].writer,bb[x].writer);ss[s].bh=bb[x].bh;ss[s].o=2;}}break;}}}}fp=fopen("book.txt","w+"); //将借书后的图书信息写入文件if(fp==NULL)return -16;else{for(y=0;y<=k;y++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[y].bh,bb[y].name,bb[y].classic,bb[y].writer,bb[y].zn,bb[y].jn); }}fclose(fp);fp=fopen("show.txt","w+"); //将借书记录写入文件if(fp==NULL)return -16;else{for(y=0;y<=s;y++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[y].name1,ss[y].no,ss[y].bh,ss[y].name2,ss[y].writer,ss[y].o);} }fclose(fp);return 0;}elsereturn -20;}}}int hs(int bh,char no[12]) //还书函数{ int x,p;for(x=0;x<=s;x++){if(ss[x].bh==bh && !strcmp(ss[x].no,no)) //判断其借书记录是否存在{ if(ss[x].o==2) //判断该书是否被借过{ for(p=0;p<=k;p++){if(bb[p].bh==bh) //修改还书后的图书信息{ ++bb[p].zn;--bb[p].jn;}}ss[x].o=1;fp=fopen("book.txt","w+"); //将还书后的所有图书信息重新写入文件if(fp==NULL)return -16;else{for(p=0;p<=k;p++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[p].bh,bb[p].name,bb[p].classic,bb[p].writer,bb[p].zn,bb[p].jn); }}fclose(fp);fp=fopen("show.txt","w+"); //将还书后的所有借书记录重新写入文件if(fp==NULL)return -16;else{for(p=0;p<=s;p++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[p].name1,ss[p].no,ss[p].bh,ss[p].name2,ss[p].writer,ss[p].o); }}fclose(fp);return 0;}else{return -12;}}elseif(x==s)return -18;}}void paixu() //对图书按照编号从小到大的顺序进行排列{ int x,flag;struct book a;do //用冒泡法排序{flag=1;for(x=0;x<=k-1;x++){if(bb[x].bh>bb[x+1].bh){a=bb[x+1];bb[x+1]=bb[x];bb[x]=a;flag=0;}}}while(flag==0);fp=fopen("book.txt","w+"); //将排序后的信息重新写入文件for(x=0;x<=k;x++)fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x].writer,bb[x].zn,bb[x].jn); fclose(fp);}5.登陆界面所有函数源代码为// picture.h 登陆界面所有函数void pica(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:管理员\n",aa.no,);printf("------------------------------------------------------------------------\n\n");}void picb(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:读者\n",rr.no,);printf("------------------------------------------------------------------------\n\n");}void pic0() //登陆界面{ printf("\n\t\t\t欢迎登陆湖南大学图书管理系统\n");printf("------------------------------------------------------------------------\n\n");printf("1.登陆\n2.读者注册\n3.退出系统\n\n");printf("------------------------------------------------------------------------\n\n");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("\n\t\t\t\t登陆\n");printf("------------------------------------------------------------------------\n\n"); printf("1.管理员登陆\n2.读者登陆\n3.返回系统界面\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){ case 1: inputs2(1,1,0);i=exam(aa.no,aa.key,1);if(i){ eros(i);n=3;}else n=2;break;case 2: inputs3(1,1,0);i=exam(rr.no,rr.key,0);if(i){ eros(i);n=30;}else n=29;break;case 3: n=0;break;default: ;}}void pic2() //管理员管理界面{ copy2(aa.no);pica();printf("1.增加图书\n2.修改图书\n3.删除图书\n4.查看图书信息\n");printf("5.修改密码\n6.返回到系统登陆界面\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){ case 1: n=4;break;case 2: n=8;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.返回上一层\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){ case 1: inputs1(1,1,1,1,1);n=5; break;case 2: n=2;break;default: ;}}void pic5() //添加图书确认界面{ int i;pica();printf("你输入的图书信息为:\n\n");printf("书名\t\t\t编号\t作者\t\t种类\t在馆数\t借出数\n");printf("%-24s%-8d%-16s%-8s%-8d%-8d\n\n",,bk.bh,bk.writer,bk.classic,bk.zn,bk.jn);printf("1.录入以上信息\n2.返回重新输入图书信息\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){ case 1: i=zj(bk);if(i){ eros(i);n=7;}else n=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 1: n=4;break;case 2: n=2;break;default: ;}}void pic8() //修改图书界面{ pica();printf("1.进行修改图书操作\n2.返回管理图书界面\n\n");examine(&x,1);switch(x){ case 1: n=9;break;case 2: n=2;break;default: ;}}void pic9() //输入编号以选择修改相应的图书{ int i;pica();printf("以下是在馆所有图书信息:\n\n");gck23();printf("------------------------------------------------------------------------\n\n"); printf("1.输入编号修改图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,0);switch(x){ case 1: inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i){ eros(i);n=11;}else{ n=10;}break;case 2: system("cls");n=2;break;default: system("cls");}}void pic10() //按需求修改图书界面{ pica();printf("编号为%d的图书信息:\n\n",bk.bh);copy(bk.bh);bh2(bk.bh);printf("------------------------------------------------------------------------\n\n");printf("1.修改书名\n2.修改作者名字\n3.修改图书在馆的数量\n4.修改图书所属的类别\n");printf("5.修改图书所有信息\n6.返回上一层选择其他编号的书\n\n");printf("------------------------------------------------------------------------\n\n");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() //获取相应的图书失败提示界面{ printf("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("你要修改的图书信息为:\n\n");bh2(bk.bh);printf("%-24s%-8d%-16s%-8s%-8d%-8d\n\n",,bk.bh,bk.writer,bk.classic,bk.zn,bk.jn);printf("------------------------------------------------------------------------\n\n");printf("1.确认修改此图书\n2.返回选择修改其他信息\n3.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: i=xg(bk);if(i){ eros(i);n=14;}else n=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.重新输入图书修改信息\n2.图书管理界面\n");examine(&x,1);switch(x){ case 1: n=10;break;case 2: n=8;break;default: ;}}void pic15() //删除图书选择界面{ pica();printf("1.进行删除图书操作\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){ case 1: n=16; break;case 2: n=2;break;default: ;}}void pic16() //输入相应编号删除图书{ int i;pica();;printf("以下是在馆所有图书信息:\n\n");gck23();printf("------------------------------------------------------------------------\n\n"); printf("1.输入编号删除图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,0);switch(x){ case 1: inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i){ eros(i);n=18;}else{n=17;system("cls");};break;case 2: system("cls");n=2;break;default: system("cls"); ;}}void pic17() //删除图书确认界面{ int i;pica();printf("编号为%d的图书信息:\n\n",bk.bh);bh2(bk.bh);printf("------------------------------------------------------------------------\n\n"); printf("1.删除该图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){ case 1: i=sc(bk.bh);if(i){ eros(i);n=20;}else n=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("删除图书操作成功!!!\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() //管理员查看借阅记录界面。
c语言课程设计报告图书管理系统
![c语言课程设计报告图书管理系统](https://img.taocdn.com/s3/m/37d4686117fc700abb68a98271fe910ef02dae03.png)
c语言课程设计报告图书管理系统一、教学目标本课程的目标是使学生掌握C语言的基本语法,熟悉图书管理系统的开发流程,培养学生运用C语言解决实际问题的能力。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构。
–理解图书管理系统的需求和设计原理。
2.技能目标:–能够使用C语言编写简单的程序。
–学会使用C语言实现图书管理系统的功能。
3.情感态度价值观目标:–培养学生的团队协作意识和沟通能力。
–增强学生对计算机科学和编程的兴趣和热情。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构以及图书管理系统的开发。
具体安排如下:1.C语言的基本语法:–变量和数据类型–运算符和表达式–函数和数组–指针和引用2.数据结构:3.图书管理系统的开发:–系统测试和优化三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:用于讲解C语言的基本语法和数据结构。
2.案例分析法:通过分析具体的图书管理系统案例,使学生更好地理解系统设计和功能实现。
3.实验法:让学生动手编写程序,巩固所学知识,提高实际操作能力。
4.小组讨论法:鼓励学生分组讨论,培养团队协作意识和沟通能力。
四、教学资源本课程所需的教学资源包括:1.教材:《C语言程序设计》2.参考书:《C Primer Plus》、《数据结构与算法分析》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、网络设备以上教学资源将用于支持教学内容和教学方法的实施,丰富学生的学习体验。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
评估方式应客观、公正,能够全面反映学生的学习成果。
具体安排如下:1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的20%。
2.作业:包括编程练习和理论作业,占总评的30%。
3.考试:包括期中和期末考试,占总评的50%。
期中和期末考试将涵盖C语言基本语法、数据结构以及图书管理系统的开发内容。
c语言课程设计图书管理系统
![c语言课程设计图书管理系统](https://img.taocdn.com/s3/m/173d48440622192e453610661ed9ad51f01d54dc.png)
c语言课程设计图书管理系统一、教学目标本课程的教学目标是使学生掌握C语言基础知识,学会使用C语言进行程序设计,能够运用C语言实现图书管理系统的功能。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识,理解图书管理系统的业务流程和需求。
2.技能目标:学生能够运用C语言编写程序,实现图书管理系统的各个功能模块,如图书信息的添加、删除、修改和查询等。
3.情感态度价值观目标:培养学生对计算机编程的兴趣和热情,增强学生的自主学习能力和团队协作精神,使学生在解决实际问题时能够积极思考、勇于尝试。
二、教学内容本课程的教学内容分为五个部分:1.C语言基础知识:包括基本语法、数据类型、运算符、控制结构等。
2.函数与模块化编程:学习函数的定义、声明和调用,掌握模块化编程的方法和技巧。
3.图书管理系统需求分析:了解图书管理系统的业务流程,明确系统需求。
4.图书管理系统功能实现:使用C语言编写程序,实现图书管理系统的各个功能模块。
5.程序调试与优化:学习使用调试工具,掌握调试和优化程序的方法。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:教师讲解C语言基本语法和概念,引导学生掌握知识要点。
2.案例分析法:分析实际编程案例,让学生学会将理论知识应用于实际问题。
3.实验法:学生动手编写程序,实现图书管理系统的功能,培养实际操作能力。
4.讨论法:分组讨论问题,培养学生的团队协作能力和解决问题的能力。
四、教学资源本课程所需教学资源包括:1.教材:《C程序设计语言》或《C语言入门教程》等。
2.参考书:《C语言编程实例解析》、《C语言常用算法解析》等。
3.多媒体资料:教学PPT、视频教程、编程案例等。
4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)。
5.在线资源:编程论坛、博客、教程等。
五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:评估学生在课堂上的参与程度、提问回答情况、团队合作表现等,占总评的30%。
C语言程序设计大作业--图书管理系统
![C语言程序设计大作业--图书管理系统](https://img.taocdn.com/s3/m/928efacb58fb770bf68a55aa.png)
C语言程序设计大作业设计报告一.设计方案本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。
二.模块说明及代码分析1.主函数:源代码:void main(){int a;printf("\n");printf("\n");printf(" ( ^_^ ) WELCOME!\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");do {printf("1.借书 2.还书 3.新书录入4.查询 0.退出");printf("\n");printf("\n");printf("\n");printf("\n");printf("请选择序号:");scanf("%d",&a);switch(a){case 1:jieshu();break;case 2:huanshu();break;case 3:xinshu();break;case 4:chaxun();break;case 0:break;default:printf("请选择正确的序号!\n");printf("\n");}}while(a!=0);printf("谢谢使用图书管理系统!\n");}主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。
c语言图书管理系统课程设计
![c语言图书管理系统课程设计](https://img.taocdn.com/s3/m/a21431422379168884868762caaedd3382c4b578.png)
c语言图书管理系统课程设计一、课程目标知识目标:1. 理解C语言中数组、结构体和文件操作的基本概念;2. 掌握使用C语言进行图书管理系统的基础功能设计,包括图书信息的增加、删除、查询和修改;3. 学会运用模块化编程思想,将大型程序拆分为功能独立的子程序。
技能目标:1. 能够运用C语言编写出图书管理系统的基本功能模块,并实现模块间的有效连接;2. 能够使用文件操作将图书信息存储到文件中,实现数据的持久化;3. 能够运用调试工具对程序进行调试,找出并修复程序中的错误。
情感态度价值观目标:1. 培养学生的团队协作意识,学会与他人共同分析和解决问题;2. 激发学生对编程的兴趣和热情,提高对计算机编程的主动性和积极性;3. 引导学生认识到编程在解决实际问题中的重要性,培养学生的创新精神和实践能力。
课程性质:本课程为高年级的C语言编程实践课程,注重培养学生运用C语言解决实际问题的能力。
学生特点:学生已具备一定的C语言基础,具有一定的编程能力和问题解决能力。
教学要求:在教学过程中,需注重理论与实践相结合,鼓励学生动手实践,提高编程技能。
同时,关注学生的情感态度,激发学生的学习兴趣,培养其团队协作能力和创新精神。
通过课程学习,使学生能够独立完成一个简单的图书管理系统设计与实现。
二、教学内容1. C语言基础回顾:数组、结构体、函数的定义和用法,以及文件操作的基本原理。
2. 图书管理系统需求分析:讲解图书管理系统的功能模块,明确系统需求。
- 图书信息增加、删除、查询、修改等功能的实现;- 系统界面设计和用户交互;- 数据存储和读取。
3. 教学大纲:- 第一周:C语言基础知识回顾,学习数组、结构体和文件操作;- 第二周:分析图书管理系统需求,设计系统功能模块;- 第三周:编写图书管理系统功能代码,实现模块间通信;- 第四周:系统测试、调试和优化,完成课程项目。
4. 教材章节关联:- 数组、结构体:参考教材第二章;- 函数:参考教材第三章;- 文件操作:参考教材第四章;- 模块化编程:参考教材第五章。
C语言程序设计-图书馆管理系统
![C语言程序设计-图书馆管理系统](https://img.taocdn.com/s3/m/a4a30a5ba0116c175e0e484a.png)
题目:图书馆管理系统院系:信息科技学院专业:姓名:学号:指导教师:日期: 2015年7月15日桂林电子科技大学信息科技学院实训报告目录1 问题定义 =================================12 系统设计 ---------------------------------5 2.1 总体设计 ---------------------------------5 2.2 详细设计 ---------------------------------6 2.2.1 数据结构设计 ---------------------------------6 2.2.2 主控流程 ---------------------------------8 2.2.3 增加信息模块 ---------------------------------7 2.2.4 查找信息模块 ---------------------------------7 2.2.7 删除信息模块 ---------------------------------7 2.2.8 修改信息模块 ---------------------------------72.2.8 数据功能描述 ---------------------------------73 系统实现 ================================ 2 3.1 编码 -------------------------------- 83.1.1 程序预处理 -------------------------------- 93.1.2 主函数main() --------------------------------- 93.1.3 主菜单界面 -------------------------------- 113.1.7 增加图书信息 -------------------------------- 143.1.8 查询图书信息 -------------------------------- 143.1.9 删除图书信息 -------------------------------- 153.2.0 修改图书信息 -------------------------------- 153.2 测试与调试 -------------------------------- 133.2.1 概述 -------------------------------- 143.2.2 程序测试 -------------------------------- 14 5 归纳总结 ============================================== 3 5.1 开发经验 -------------------------------- 16 5.2 实训中遇到的问题及解决方法------------------------- 16 5.3 设计中的不足之处 --------------------------------- 165.4 感想和心得体会 --------------------------------- 166 参考资料 ================================= 16前言课程设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。
图书馆管理系统(C语言程序设计)
![图书馆管理系统(C语言程序设计)](https://img.taocdn.com/s3/m/0bd2747e793e0912a21614791711cc7930b77844.png)
图书管理系统/*图书数据由编号、书名、出版社、单价和图书状态(库存用0表示或借出用读者编号表示),读者数据由编号、姓名和电话号码构成。
实现功能包括:(1)添加图书的记录(2)图书管理(借书和还书)(3)对图书数据排序(按单价的降序)(4)删除图书记录(5)修改图书记录(6)添加读者记录(7)输出图书信息表和读者信息表*#include <stdio.h>#include <string.h>#include <stdlib.h>#include <windows.h>/*函数的声明*/void bookname();void writername();void booknumber();void press();void bookdate();void Bfind(); //查询主菜单void Bdevise(); //修改函数void Badd(); //添加函数void Bdelete(); //删除函数void Bdisplay(); //显示所以已保存的图书信息函数void Bclean(); //清除所有图书信息函数void lendbook(); // 借书函数void returnbook(); //还书函数void lendorreturnbook();//借书或还书主菜单函数void appealkey();//用户密码申诉函数void devisepeoplekey();//修改用户密码函数void accountapply(); //用户申请账户函数void addpeopleaccount(); //管理员之添加用户帐号函数void addmanageaccount(); //管理员之添加管理员账号函数void addaccount(); //管理员之账户添加主菜单函数void devisepeopleaccount();//管理员之修改用户账号函数void devisemanageaccount();//管理员之修改管理员帐号函数void deviseaccount();//管理员之修改账号主菜单函数void deletepeopleaccount();//管理员之删除用户账号函数void deletemanageaccount();//管理员之删除管理员账号函数void deleteaccount();//管理员之删除账号主菜单函数void displayallpeopleaccounts();//显示所有用户信息函数void displayallmanageaccounts();//显示所有管理员信息函数void displayallaccountsmessage();//显示所有账号信息主菜单函数void highaddpeopleaccount(); //高级管理员添加用户账户函数void highaddmanageaccount(); //高级管理员添加管理员账户函数void highaddaccount(); //高级管理员之添加账户主菜单函数void booksmanage();//图书操作主菜单函数void accountsmanage();//管理员账号操作主菜单函数void highaccountsmanage();//高级管理员账号操作主菜单函数void menu1(); //用户之查询主菜单void menu2(); //管理员之查询主菜单void menu3(); //高级管理员之查询主菜单/*定义书的类型*/struct book{int bookstock; //库存量char bookname[20]; //书名char bookwriter[20]; //作者char booknumber[20]; //书号char press[20]; //出版社char bookdate[20]; //出版日期char price[20]; //出版价格int turefalse; //判断图书是否被借阅}books[20];/*定义用户类型*/struct peopleaccount{char pname[20];char pkey[20];}peopleaccounts[20];/*定义管理员类型*/struct manageaccount{char mname[20];char mkey[20];}manageaccounts[20];/*定义借书卡类型*/struct card{char cardnumber[20]; //借书卡号和用户信息一起写入yonghu.txt文件中的}cards[20];/*定义文件指针变量*/FILE *fp1; //fp1打开用户信息文件FILE *fp2; //fp2打开管理员信息文件FILE *fp3; //fp3打开图书信息文件FILE *fp4; //打开借还书记录的文件FILE *fpa; //fpa是临时文件指针/*改变输出的字体颜色*/void color(const unsigned short color1){if(color1>=0&&color1<=15)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1);/*仅限改变0-15的颜色;如果在0-15那么实现他的颜色因为如果超过15后面的改变的是文本背景色。
图书馆管理系统C语言程序设计
![图书馆管理系统C语言程序设计](https://img.taocdn.com/s3/m/51c462f2336c1eb91b375d62.png)
HUNAN UNIVERSITYC语言程序训练报告【设计目得】图书信息包括:读者登录号、管理员登录号、图书编号、作者名、种类、出版社、图书库存、图书借出数目等、图书信息管理系统,使之能提供以下功能:1)系统以菜单方式工作2)读者注册功能3)读者登录功能4)读者借书还书功能5)查询读者借阅记录6)查询在管图书信息功能7)修改密码功能8)管理员登录功能9)增加、修改、删除图书功能10)查瞧图书信息功能【设计思路】根据题目要求,应当把图书信息用结构体形式输入,应该提供以下结构体与文件得输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除与修改等功能得操作,所以需要建立相应得模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求得目得;管理员与读者登录界面及各自功能应有不同得实现。
【总体设计】【详细设计】1、主函数主函数设计要求简洁,只提供部分提示语与函数得调用源代码为//rkou、c程序得入口#include<stdio、h>#include<stdlib、h>#include<string、h>#include<conio、h>#include"head、h"#include"fuc、h"#include"picture、h"#include"jiangzhuo1、h"#include"output、h"main(){int i=setup();switch(i){ case 0:while(n<50){ conects(n);}default: eros(i);}system("pause");}2、程序中全局变量声明定义,以及所有函数声明源代码为struct book //图书结构体声明{ char name[50],classic[10],writer[20]; //书名,类别,作者ﻩint jn;//借出数量int zn; //在馆数量intbh; //图书编号};structinformation//管理员与读者结构体声明{ﻩcharname[10],no[12],key[10];//姓名,账号,密码};structshow //图书借阅记录得结构体声明{charname1[10],name2[50],writer[20],no[12]; //书名,读者姓名,书得作者,读者账号int bh,o; //图书编号,借阅状况(未还,已还)};//以下为用到得全局变量struct book bk;structinformation aa,rr;struct information stu[100];structbook bb[100];struct information ad[100];struct show ss[100];int i,j,k,s;int n=0;intx;FILE *fp;//以下函数主要功能:方便窗口与用户之间交换信息int regst();void password(char *a,int b,intj);//登陆时得输入函数void examine(int*a,int b);ﻩ//保证键入得数据就是数字void changepaw(int a,int b); //修改密码用到得提示函数void inputs0();ﻩﻩ//输出图书类别以供用户选择void inputs1(int a,intb,int c,intd,int e); //方便用户输入图书各项信息(如书名,编号)void inputs2(int a,int b,intc); ﻩﻩ//方便用户输入管理员得信息(如账号姓名)void inputs3(int a,int b,int c);ﻩﻩﻩ//方便用户输入读者得信息(如账号姓名)void eros(int i) ; //错误显示函数,操作一旦出错,则会出现相应得错误信息void conects(int j);ﻩﻩﻩ//连接函数,选择界面//一下函数主要用于改变文件得内容并保存int setup() ;//数据初始化函数int xzc(char no[12],char key1[10],charkey2[10],charname[10]); //读者注册函数intexam(char no[10],charkey[10],int n); //密码账号检验函数int mp(char no[12],charkey1[10],char key2[10],char key3[10],int n); //密码修改函数void paixu();//对图书按照编号从小到大得顺序进行排列int sc(int bh); //管理员删除图书信息函数int zj(struct book bb); //管理员增加图书信息函数intxg(struct book bb); //管理员修改图书信息函数int js(int bh,char no[12]); //借书函数int hs(int bh,char no[12]); //还书函数int bh1(int bh);//判断该编号得图书信息就是否存在函数void bh2(int bh);//按照图书编号显示图书信息函数intsm1(char name[50]); //判断就是否存在该名字得图书信息函数void sm2(char name[50]);//按照图书名字显示图书信息函数int zz1(char writer[20]);//判断就是否存在该作者得图书信息函数voidzz2(char writer[20]); //按照图书作者显示图书信息函数void lb(charclassic[10]);//按类别显示图书信息int rck1(intbh);//判断该编号得图书得借书记录就是否存在void rck2(int bh);//按编号显示图书借书情况int gck21(char no[12]); //判断该账号读者得借书记录就是否存在void gck22(char no[12]); //按读者显示借书情况2void gck12(); //显示全部借书情况voidgck23(); //管理员查瞧所有书得信息voidcopy(int bh); // 按编图书编号将图书信息暂时保存在另外一个结构体里面voidcopy2(charno[12]); //按管理员账号将管理员信息暂时保存在另外一个结构体里面void copy3(char no[12]);//按读者账号将读者信息暂时保存在另外一个结构体里面//pic() 函数:每个函数表示一个界面,conects函数将它们连接起来voidpic0();void pic1();voidpic2();ﻩvoid pic3();void pic4();ﻩvoid pic5();void pic6();voidpic7();voidpic8();void pic9();void pic10();void pic11();void pic12();void pic13();void pic14();void pic15();voidpic16();void pic17();void pic18();void pic19();voidpic20();voidpic21();void pic22();voidpic23();void pic24();void pic25();ﻩvoid pic26();void pic27();ﻩvoid pic29();voidpic30();void pic31();void pic32();void pic33();void pic34();void pic35();void pic36();voidpic37();ﻩvoid pic38();void pic39();void pic40();ﻩvoid pic41();ﻩvoidpic42();void pic43();void pic44();voidpic45();ﻩvoid pic46();void pic47();void picc();3.用户输入以及界面反馈用到得功能函数源代码为int regst(){ char num[12],paw1[10],paw2[10],name[10];inti;printf("请输入账号\n(11字符以内,不能含有中文字符):\n");password(num,0,11);printf("输入您得密码\n(9字符以内,不能含有中文字符):\n");password(paw1,1,9);printf("请再次输入密码:\n");password(paw2,1,9);printf("输入您得姓名:\n");gets(name);system("cls");i=xzc(num,paw1,paw2,name);return i;}void password(char *a,int b,int j){char c;int i=0;while((c=getch())!='\r'){ if(c==8){ printf("\b\b");if(i>0)i--;}else if(i<j){ if(b) printf("*");elseprintf("%c",c);a[i]=c;i++;}if(i==j){ printf("\a");}}a[i]='\0';printf("\n");}voidexamine(int *a,int b){ while(!scanf("%d",a)){while(getchar()!='\n');printf("请输入数字!!\n");}rewind(stdin);if(b) system("cls");}void changepaw(inta,intb){int i;char c1[10],c2[10],c3[10];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;}else{ i=mp(rr、no,c1,c2,c3,b);if(i){ eros(i);n=44;}elsen=43;}}void inputs0(){ int i=1;while(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;case6: strcpy(bk、classic,"F类");i=0;b reak;default:i=1;}}}void inputs1(int a,int b,intc,int d,inte){ int i;switch(a){case1: 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){ case1:printf("请输入该图书得库存:\n");examine(&bk、zn,1);default:;}system("cls");switch(e){case 1: printf("请选择图书类别:\n");inputs0();default: ;}}void inputs2(int a,int b,int c){ switch(a){ case1: 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 inputs3(int a,int b,int c){switch(a){case1: 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(inti) //错误函数{switch (i){ case -1: printf("error1!初始化失败\n\n");break;ﻩcase-2:printf("error2!账号不存在\n\n");break;case -3:printf("error3!账号不存在\n\n");break;case-4: printf("error4 !密码错误\n\n");break;case -5: printf("error5!输入得密码不一致\n\n");break;case-6: printf("error6!编号不存在\n\n");break;case-7: printf("error7!书名不能为空\n\n");break;case -8:printf("error8!作者名字不能为空\n\n");break;case -9: printf("error9 !无此图书编号得记录\n\n");break;case-10:printf("error10!无此账号得记录\n\n");break;case-11:printf("error11 !原始密碼輸入錯誤\n\n");break;case-12: printf("error12!您已经归还此书\n\n");break;case -13: printf("error13!您所增加得图书编号已存在\n\n");break;case-14: printf("error14!搜索不到此书得相关信息\n\n");break;case -15:printf("error15 !搜索不到该作者得信息\n\n");break;case-16:printf("error16!打不开文件,保存失败\n\n");br eak;case -17: printf("error17!该图书信息已存在\n\n");break;case-18: printf("error18!您没有借过这本书\n\n");brea k;case -19: printf("error19 !您已经借阅了这本书,不能再借\n\n");break;;case-20: printf("error20 !抱歉,图书已经借完了\n\n");break;case-21:printf("error21 !账号已存在\n\n") ; break;case -22: printf("error22 !还有图书未还,不能删除该条信息\n\n");break;default: ;}}voidconects(intj){switch(j){case0:pic0();break;case1:pic1();break;case2:pic2();break;case3: pic3();break;case4: pic4();break;case 5: pic5();break;case6: pic6();break;case 7: pic7();break;case 8: pic8();break;case9: pic9();break;case 10: pic10();break;case11: pic11();break;case 12:pic12();break;case 13: pic13();break;case 14: pic14();break;case 15: pic15();break;case16: pic16();break;case17: pic17();break;case18: pic18();break;case 19: pic19();break;case20: pic20();break;case21:pic21();break;case 22: pic22();break;case23: pic23();break;case24: pic24();break;case25: pic25();break;case26: pic26();break;case 27: pic27();break;case 29:pic29();break;case 30:pic30();break;case31: pic31();break;case 32: pic32();break;case 33: pic33();break;case34:pic34();break;case 35: pic35();break;case 36:pic36();break;case 37: pic37();break;case 38:pic38();break;case 39: pic39();break;case40:pic40();break;case41:pic41();break;case 42: pic42();break;case43: pic43();break;ﻩﻩcase44:pic44();break;ﻩcase 45:pic45();break;case46:pic46();break;case 47:pic47();break;default:;}}4、文件操作各种函数源代码为//ﻩjiangzhuo1、hﻩ文件操作各种函数int setup() //数据初始化函数{FILE *fp;fp=fopen("reader、txt","r"); //对文档以只读得方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{ﻩi=0;while(!feof(fp)){ﻩfscanf(fp,"%s %s %s",stu[i]、name,stu[i]、no,stu[i]、key);//将文档里面得数据格式化读取到结构体数组里面i++;}ﻩi=i-1;}fclose(fp);fp=fopen("ad、txt","r");//对文档以只读得方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{j=0;while(!feof(fp))ﻩ{fscanf(fp,"%s%s%s",ad[j]、name,ad[j]、no,ad[j]、key);//将文档里面得数据格式化读取到结构体数组里面j++;ﻩ}ﻩj=j-1;}fclose(fp);fp=fopen("book、txt","r");//对文档以只读得方式进行操作if(fp==NULL){return-1; //当文件打不开时返回-1}else{ﻩk=0;while(!feof(fp)){ﻩfscanf(fp,"%d %s %s %s%d %d",&bb[k]、bh,bb[k]、name,bb[k]、classic,bb [k]、writer,&bb[k]、zn,&bb[k]、jn);//将文档里面得数据格式化读取到结构体数组里面ﻩﻩk++;}ﻩk=k-1;}fclose(fp);fp=fopen("show、txt","r"); //对文档以只读得方式进行操作if(fp==NULL){return -1;//当文件打不开时返回-1}else{ﻩs=0;while(!feof(fp)){ﻩfscanf(fp,"%s%s %d %s %s%d ",ss[s]、name1,ss[s]、no,&ss[s]、bh,ss[s]、name2,ss[s]、writer,&ss[s]、o); //将文档里面得数据格式化读取到结构体数组里面ﻩﻩs++;ﻩ}ﻩs=s-1;}fclose(fp);return 0; //当操作全部正确时返回0}intxzc(charno[12],char key1[10],char key2[10],charname[10]) //读者注册函数{ intx=0;for(x=0;x<=i;x++){if(!strcmp(no,stu[x]、no))//判断读者输入得账号与结构体里面得账号就是否相同{return-21;break;}if(x==i && strcmp(no,stu[x]、no))//判断读者输入得账号与结构体里面得账号就是否相同{if(!strcmp(key1,key2))//判断读者两次输入得密码就是否一致{i=i+1;strcpy(stu[i]、name,name);strcpy(stu[i]、no,no);strcpy(stu[i]、key,key1);fp=fopen("reader、txt","a"); //对文件以写得方式将注册得信息保存到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%s\t\t%s\t\t%s\n",stu[i]、name,s tu[i]、no,stu[i]、key);}fclose(fp);return0;}else{return -5;}}}}int exam(charno[10],char key[10],intn)//密码账号检验函数{ int x;if(n==0) //对读者得密码与账号信息进行检验{ﻩfor(x=0;x<=i;x++)ﻩ{if(!strcmp(no,stu[x]、no)) //判断该账号就是否存在ﻩ{ﻩﻩif(!strcmp(key,stu[x]、key)) //当账号存在时判断与之相应得密码就是否相同{ﻩﻩreturn 0;break;ﻩﻩ }ﻩelseﻩ {ﻩreturn -4;ﻩbreak;ﻩ}}if(x==i && strcmp(no,stu[x]、no)){return -3;}}}if(n==1) //对管理员得密码账号信息进行检验{ﻩfor(x=0;x<=i;x++)ﻩ{if(!strcmp(no,ad[x]、no)) //判断该账号就是否存在ﻩ{ﻩ if(!strcmp(key,ad[x]、key)) //判断与之相应得密码就是否存在ﻩ{ﻩreturn0;break;ﻩﻩ }ﻩﻩelseﻩﻩ{ﻩreturn -4;ﻩﻩbreak;ﻩ}}if(x==j&& strcmp(no,ad[x]、no)){return-3;}}}}intzj(structbook b) //管理员增加图书信息函数{ int x;for(x=0;x<=k;x++){if(bb[x]、bh==b、bh) //判断所增加得图书编号就是否已存在{return -13;break;}if(!strcmp(b、name,bb[x]、name)&&!strcmp(b、writer,bb[x]、writer))//判断所增加得图书就是否存在{ return -17;break;}if(x==k){ if(strlen(bb[0]、name)==0)//判断文档得第一行就是否为空k=k;elsek=k+1;bb[k]、bh=b、bh;//将所增加得图书信息添加到结构体里面strcpy(bb[k]、name,b、name);strcpy(bb[k]、classic,b、classic);strcpy(bb[k]、writer,b、writer);bb[k]、zn=b、zn;bb[k]、jn=b、jn;fp=fopen("book、txt","a"); //将增加得图书信息追加到文件里面if(fp==NULL)return-16;else{fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[k]、bh,bb[k]、name,bb[k]、classic,bb[k]、writer,bb[k]、zn,bb[k]、jn);}fclose(fp);return0;}}}intsc(intbh) //管理员删除图书信息函数{ int x;for(x=0;x<=k;x++){if(bb[x]、bh==bh) //判断所删除图书得编号就是否存在{if(bb[x]、jn!=0)return -22;for(x=x;x<=k-1;x++){bb[x]=bb[x+1]; //删除图书信息后将该图书信息后面得图书信息依次前移}k--;fp=fopen("book、txt","w+");//将删除后得所有图书信息重新写入文档if(fp==NULL)return -16;else{for(x=0;x<=k;x++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb [x]、bh,bb[x]、name,bb[x]、classic,bb[x]、writer,bb[x]、zn,bb[x]、jn);}}fclose(fp);return 0;break;}}}intmp(char no[12],charkey1[10],char key2[10],charkey3[10],intn)//密码修改函数{ int x;if(n==0) //读者密码修改{for(x=0;x<=i;x++){if(!strcmp(no,stu[x]、no)) //定位读者账号位置{if(!strcmp(stu[x]、key,key1))//判断输入得原密码就是否正确{if(!strcmp(key2,key3)) //判断两次输入得新密码就是否一致{strcpy(stu[x]、key,key3);fp=fopen("reader、txt","w+");//将修改后得信息保存在文件里面if(fp==NULL)return-16;else{for(x=0;x<=i;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",stu[x]、name,stu[x]、no,stu[x]、key);}fclose(fp);return 0;}else{return -5;}}elsereturn -11;}}}if(n==1) //管理员密码修改{for(x=0;x<=j;x++){if(!strcmp(no,ad[x]、no)) //定位管理员账号位置{if(!strcmp(key1,ad[x]、key))//判断输入得原密码就是否正确{if(!strcmp(key2,key3)) //判断两次输入得新密码就是否一致{strcpy(ad[x]、key,key3);fp=fopen("ad、txt","w+"); //将修改后得信息保存在文件里面if(fp==NULL)return -16;else{for(x=0;x<=j;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",ad[x]、name,ad[x]、no,ad[x]、key);}fclose(fp);return 0;}else{return -5;}}return -11;}}}}int xg(struct book b)//管理员修改图书信息函数{ intx;if(strlen(b、name)==0) //判断所输入得要修改得图书名字就是否为空{return-7;}else{if(strlen(b、writer)==0) //判断所输入得要修改得图书作者就是否为空{return-8;}else{for(x=0;x<=k;x++){if((bb[x]、bh==b、bh)) //定位要修改得图书编号位置{strcpy(bb[x]、name,b、name);//将修改后得信息保存在结构体里strcpy(bb[x]、classic,b、classic);strcpy(bb[x]、writer,b、writer);bb[x]、zn=b、zn;bb[x]、jn=b、jn;fp=fopen("book、txt","w+"); //将修改后得所有信息保存在文件里if(fp==NULL)return -16;else{for(x=0;x<=k;x++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x]、bh,bb[x]、name,bb[x]、classic,bb[x]、writer,bb[x]、zn,bb[x]、jn);}}fclose(fp);return0;}}}}voidcopy(int bh) // 按编图书编号将图书信息暂时保存在另外一个结构体里面{ intx;for(x=0;x<=k;x++){if(bb[x]、bh==bh){strcpy(bk、name,bb[x]、name);strcpy(bk、classic,bb[x]、classic);strcpy(bk、writer,bb[x]、writer);bk、zn=bb[x]、zn;bk、jn=bb[x]、jn;bk、bh=bb[x]、bh;}}}void copy2(charno[12])//按管理员账号将管理员信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=j;x++){if(!strcmp(ad[x]、no,no)){strcpy(aa、name,ad[x]、name);strcpy(aa、key,ad[x]、key);}}}void copy3(charno[12])//按读者账号将读者信息暂时保存在另外一个结构体里面{int x;for(x=0;x<=i;x++){if(!strcmp(stu[x]、no,no)){strcpy(rr、name,stu[x]、name);strcpy(rr、key,stu[x]、key);}}}int js(int bh,char no[12])//借书函数{ int x,y,z;for(x=0;x<=k;x++){if(bb[x]、bh==bh) //判断借书编号就是否存在{if(bb[x]、zn>0) //判断在馆数就是否为0{if(strlen(ss[0]、name1)==0) //判断文件里面得第一行信息就是否存在{for(y=0;y<=i;y++){if(!strcmp(stu[y]、no,no)){--bb[x]、zn; //修改借书后得信息++bb[x]、jn;ss[0]、o=2;strcpy(ss[0]、name1,stu[y]、name); //将借书后得信息保存在结构体数组里面strcpy(ss[0]、no,no);strcpy(ss[0]、writer,bb[x]、writer);strcpy(ss[0]、name2,bb[x]、name);ss[0]、bh=bh;}}}else{for(y=0;y<=s;y++){if((ss[y]、bh==bh)&&!strcmp(ss[y]、no,no))//定位与输入得编号与账号一致得借书记录{if(ss[y]、o==2)//判断就是否已借过该书return -19;else{--bb[x]、zn; //修改借书后得信息++bb[x]、jn;ss[y]、o=2;}break;}else{if(y==s){s++;for(z=0;z<=i;z++){if(!strcmp(stu[z]、no,no)) //定位读者信息{bb[x]、zn--; //修改借书后得信息bb[x]、jn++;strcpy(ss[s]、name1,stu[z]、name);strcpy(ss[s]、name2,bb[x]、name);strcpy(ss[s]、no,no);strcpy(ss[s]、writer,bb[x]、writer);ss[s]、bh=bb[x]、bh;ss[s]、o=2;}}break;}}}}fp=fopen("book、txt","w+"); //将借书后得图书信息写入文件if(fp==NULL)return -16;else{for(y=0;y<=k;y++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[y]、bh,bb[y]、name,bb[y]、classic,bb[y]、writer,bb[y]、zn,bb[y]、jn);}}fclose(fp);fp=fopen("show、txt","w+");//将借书记录写入文件if(fp==NULL)return -16;else{for(y=0;y<=s;y++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[y]、name1,ss[y]、no,ss[y]、bh,ss[y]、name2,ss[y]、writer,s s[y]、o);}}fclose(fp);return 0;}elsereturn -20;}}}int hs(int bh,char no[12])//还书函数{ int x,p;for(x=0;x<=s;x++){if(ss[x]、bh==bh &&!strcmp(ss[x]、no,no)) //判断其借书记录就是否存在{if(ss[x]、o==2) //判断该书就是否被借过{ for(p=0;p<=k;p++){if(bb[p]、bh==bh)//修改还书后得图书信息{++bb[p]、zn;--bb[p]、jn;}}ss[x]、o=1;fp=fopen("book、txt","w+"); //将还书后得所有图书信息重新写入文件if(fp==NULL)return -16;else{for(p=0;p<=k;p++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[p]、bh,bb[p]、name,bb[p]、classic,bb[p]、writer,bb[p]、zn,bb[p]、jn);}}fclose(fp);fp=fopen("show、txt","w+"); //将还书后得所有借书记录重新写入文件if(fp==NULL)return -16;else{for(p=0;p<=s;p++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d \n",ss[p]、name1,ss[p]、no,ss[p]、bh,ss[p]、name2,ss[p]、writer,ss[p]、o);}}fclose(fp);return 0;}else{return -12;}}elseif(x==s)return -18;}}void paixu() //对图书按照编号从小到大得顺序进行排列{int x,flag;struct booka;do //用冒泡法排序{flag=1;for(x=0;x<=k-1;x++){if(bb[x]、bh>bb[x+1]、bh){a=bb[x+1];bb[x+1]=bb[x];bb[x]=a;flag=0;}}}while(flag==0);fp=fopen("book、txt","w+"); //将排序后得信息重新写入文件for(x=0;x<=k;x++)fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x]、b h,bb[x]、name,bb[x]、classic,bb[x]、writer,bb[x]、zn,bb[x]、jn);fclose(fp);}5、登陆界面所有函数源代码为// picture、h 登陆界面所有函数voidpica(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:管理员\n",aa、no,aa、name);printf("------------------------------------------------------------------------\n\n");}void picb(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:读者\n",rr、no,rr、name);printf("------------------------------------------------------------------------\n\n");}void pic0() //登陆界面{ printf("\n\t\t\t欢迎登陆湖南大学图书管理系统\n");printf("------------------------------------------------------------------------\n\n");printf("1、登陆\n2、读者注册\n3、退出系统\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case 1:n=1;break;case 2:n=45;break;case3: n=50;break;default:;}}voidpic1()//管理员登陆界面{ int i;printf("\n\t\t\t\t登陆\n");printf("------------------------------------------------------------------------\n\n");printf("1、管理员登陆\n2、读者登陆\n3、返回系统界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case1:inputs2(1,1,0);i=exam(aa、no,aa、key,1);if(i){ eros(i);n=3;}else n=2;break;case 2:inputs3(1,1,0);i=exam(rr、no,rr、key,0);if(i){ eros(i);n=30;}else n=29;break;case 3: n=0;break;default:;}}void pic2()//管理员管理界面{ copy2(aa、no);pica();printf("1、增加图书\n2、修改图书\n3、删除图书\n4、查瞧图书信息\n");printf("5、修改密码\n6、返回到系统登陆界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case1: n=4;break;case2: n=8;break;case3:n=15;break;case4: n=21;break;case5:n=25;break;case6:n=0;break;default:;}}void pic3() //管理员登陆错误提示{ printf("1、返回重新输入\n2、返回系统登陆界面\n");examine(&x,1);switch(x){ case 1:n=1;break;case2: n=0;break;default:;}}void pic4()//管理员添加图书界面{ pica();printf("1、录入新得图书信息\n2、返回上一层\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case1:inputs1(1,1,1,1,1);n=5;break;case 2: n=2;break;default:;}}void pic5()//添加图书确认界面{ int i;pica();printf("您输入得图书信息为:\n\n");printf("书名\t\t\t编号\t作者\t\t种类\t在馆数\t借出数\n");printf("%-24s%-8d%-16s%-8s%-8d%-8d\n\n",bk、name,bk、bh,bk、write r,bk、classic,bk、zn,bk、jn);printf("------------------------------------------------------------------------\n\n");printf("1、录入以上信息\n2、返回重新输入图书信息\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case1: i=zj(bk);if(i){ eros(i);n=7;}else n=6;break;case2: n=4;break;default: ;}}void pic6()//添加图书成功提示界面{ printf("添加图书成功!!\n");printf("1、返回继续添加图书\n2、返回管理图书界面\n");examine(&x,1);switch(x){ case1: n=4;break;case 2: n=2;break;default:;}}void pic7() //添加图书失败提示界面{printf("1、重新输入图书信息\n2、返回管理图书界面\n");examine(&x,1);switch(x){ case 1: n=4;break;case2:n=2;break;default: ;}}void pic8()//修改图书界面{pica();printf("1、进行修改图书操作\n2、返回管理图书界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1:n=9;break;case 2:n=2;break;default: ;}}void pic9() //输入编号以选择修改相应得图书{int i;pica();printf("以下就是在馆所有图书信息:\n\n");gck23();printf("------------------------------------------------------------------------\n\n");printf("1、输入编号修改图书\n2、返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,0);switch(x){ case 1:inputs1(1,0,0,0,0);i=bh1(bk、bh);if(i){eros(i);n=11;}else{ n=10;}break;case2: system("cls");n=2;break;default:system("cls");}}voidpic10() //按需求修改图书界面{ pica();printf("编号为%d得图书信息:\n\n",bk、bh);copy(bk、bh);bh2(bk、bh);printf("------------------------------------------------------------------------\n\n");printf("1、修改书名\n2、修改作者名字\n3、修改图书在馆得数量\n4、修改图书所属得类别\n");printf("5、修改图书所有信息\n6、返回上一层选择其她编号得书\n\n");printf("------------------------------------------------------------------------\n\n");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;case4: 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()//获取相应得图书失败提示界面{printf("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("您要修改得图书信息为:\n\n");bh2(bk、bh);printf("%-24s%-8d%-16s%-8s%-8d%-8d\n\n",bk、name,bk、bh,bk、writer,bk、classic,bk、zn,bk、jn);printf("------------------------------------------------------------------------\n\n");printf("1、确认修改此图书\n2、返回选择修改其她信息\n3、返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case 1: i=xg(bk);if(i){ eros(i);n=14;}else n=13;break;case 2: n=10;break;case3:n=8;break;default: ;}}voidpic13()//修改图书提示成功界面{ printf("修改图书成功!!\n");printf("1、返回继续修改图书\n2、返回管理图书界面\n");examine(&x,1);switch(x){case 1:n=8;break;case2:n=2;break;default: ;}}voidpic14() //修改图书失败提示界面{ printf("1、重新输入图书修改信息\n2、图书管理界面\n");examine(&x,1);switch(x){case 1:n=10;break;case2:n=8;break;default:;}}void pic15() //删除图书选择界面{ pica();printf("1、进行删除图书操作\n2、返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case 1: n=16;break;case2: n=2;break;default: ;}}void pic16()//输入相应编号删除图书{int i;pica();;printf("以下就是在馆所有图书信息:\n\n");gck23();printf("------------------------------------------------------------------------\n\n");printf("1、输入编号删除图书\n2、返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,0);switch(x){case 1:inputs1(1,0,0,0,0);i=bh1(bk、bh);if(i){ eros(i);n=18;}else{n=17;system("cls");};break;case2: system("cls");n=2;break;default: system("cls");;}}void pic17()//删除图书确认界面{ int i;pica();printf("编号为%d得图书信息:\n\n",bk、bh);bh2(bk、bh);printf("------------------------------------------------------------------------\n\n");printf("1、删除该图书\n2、返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: i=sc(bk、bh);if(i){ eros(i);n=20;}else n=19;break;case 2:n=2;break;default: ;}}void pic18() //获取特定编号图书失败界面{printf("1、返回重新输入图书编号\n2、返回选择不同类别得图书\n");examine(&x,1);switch(x){case1: n=16;break;case 2: n=15;break;default: ;}}void pic19()//删除图书成功提示界面{ printf("删除图书操作成功!!!\n");printf("1、返回选择其她得图书\n2、返回管理图书界面\n");examine(&x,1);switch(x){ case1: n=15;break;case2: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() //管理员查瞧借阅记录界面{ inti;pica();printf("1、查瞧指定编号得图书借阅记录\n2、查瞧指定读者得借阅记录\n3、查瞧所有图书借阅记录\n4、查瞧在馆图书得详细信息\n");printf("5、返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: inputs1(1,0,0,0,0);i=rck1(bk、bh);。
C语言课程设计图书管理系统
![C语言课程设计图书管理系统](https://img.taocdn.com/s3/m/987fdd0eb207e87101f69e3143323968011cf4fb.png)
吞吐量: 系统在单 位时间内 处理的请 求数量
资源利用 率:系统 对硬件资 源的使用 情况
可靠性: 系统在运 行过程中 出现故障 的概率
可扩展性: 系统随着 业务增长 进行扩展 的能力
用户体验: 用户对系 统的满意 度和易用 性评价
系统功能完善建议
增加用户反馈功能,收集用户意见和建议 优化搜索功能,提高搜索速度和准确性 增加图书推荐功能,根据用户浏览和购买记录推荐相关图书 优化用户界面,提高用户体验和操作便捷性
降低错误率
优势:实现图 书信息的数字 化管理,方便 查询、统计和
分析
优势:支持远 程访问和移动 设备访问,提 高图书管理的
便捷性
图书管理系统的开发流程和实现方式
需求分析: 明确系统 功能、性 能、安全 性等需求
系统设计: 设计系统 架构、数 据库结构、 界面设计 等
编码实现: 编写代码 实现系统 功能
可扩展性:系统需要具备良好的可 扩展性,能够适应未来的业务需求 变化
系统设计
系统架构设计
前端设计:用 户界面、交互 逻辑、页面布
局等
后端设计:数 据库设计、数 据模型、业务
逻辑等
网络架构:服 务器配置、网 络拓扑、数据
传输等
安全设计:用 户认证、数据 加密、访问控
制等
数据库设计
数据库类型:关 系型数据库
数据操作实现
数据库设计:包括表结构、字段类型、索引等 数据库连接:使用JDBC、ODBC等连接数据库 数据操作:包括增删改查等基本操作 数据安全:包括用户权限管理、数据加密等 数据备份与恢复:定期备份数据,确保数据安全 数据分析与报表:提供数据分析功能,生成报表供用户查看
界面交互实现
图书管理系统c语言
![图书管理系统c语言](https://img.taocdn.com/s3/m/95cfd16a492fb4daa58da0116c175f0e7cd1198f.png)
图书管理系统C语言1. 简介图书管理系统是一种用于管理图书馆藏书和借阅记录的软件系统。
它通常包括图书的录入、借阅、归还、查询等功能,能够提高图书馆的工作效率和服务质量。
本文将使用C语言编写一个简单的图书管理系统,实现基本的图书信息录入、修改、查询、借阅、归还等功能。
2. 功能实现2.1 数据结构我们首先需要定义合适的数据结构来存储图书信息和借阅记录。
以下是一个简单的数据结构示例:struct Book {int id; // 图书编号char title[100]; // 图书标题char author[50]; // 图书作者char category[50]; // 图书分类int isBorrowed; // 图书是否已借阅,0表示未借阅,1表示已借阅char borrowerName[100]; // 借阅者姓名// 可根据需求扩展其他字段};struct BorrowRecord {int bookId; // 图书编号char borrowerName[100]; // 借阅者姓名char borrowDate[20]; // 借阅日期char returnDate[20]; // 归还日期// 可根据需求扩展其他字段};2.2 图书信息录入和修改我们可以通过实现相应的函数来实现图书信息的录入和修改。
以下是一个简单的示例:void addBook(struct Book *library, int *count) {// 输入图书信息,将其存入library数组中,同时更新count}void updateBook(struct Book *library, int count, int bookId) { // 根据图书编号bookId,更新library数组中对应图书的信息}2.3 图书查询我们可以根据图书的不同字段来实现不同的查询功能,比如根据图书标题、作者、分类等进行模糊查询,或根据图书编号进行精确查询。
c语言图书管理系统流程图
![c语言图书管理系统流程图](https://img.taocdn.com/s3/m/a3f30f20571252d380eb6294dd88d0d233d43c35.png)
c语言图书管理系统流程图C语言图书管理系统流程图概述:C语言图书管理系统是一个用于管理图书馆或书店的系统,它可以实现图书的添加、删除、查询和借还等功能。
本文将通过详细的流程图,介绍C语言图书管理系统的运行流程。
1. 添加图书:- 用户输入图书信息,包括书名、作者、出版日期和价格等。
- 系统接收用户输入的信息,并生成一个唯一的图书编号。
- 系统将图书信息和图书编号存储到数据库中。
2. 删除图书:- 用户输入要删除的图书编号。
- 系统在数据库中查找并验证该图书编号是否存在。
- 如果存在,则从数据库中删除该图书信息。
3. 查询图书:- 用户输入要查询的图书名称或作者等信息。
- 系统在数据库中查找与用户输入信息匹配的图书。
- 系统将符合条件的图书信息显示给用户。
4. 借阅图书:- 用户输入要借阅的图书编号。
- 系统在数据库中查找并验证该图书编号是否存在。
- 如果该图书可借,则系统记录借阅人的信息,标记该图书为已借出状态。
5. 归还图书:- 用户输入要归还的图书编号。
- 系统在数据库中查找并验证该图书编号是否存在,并检查该图书是否已借出。
- 如果该图书已借出且由用户借出,则系统记录归还时间,将该图书状态标记为可借。
6. 统计功能:- 用户选择统计功能入口。
- 系统提供多种统计选项,例如按照作者统计、按照出版日期统计、按照价格区间统计等。
- 系统在数据库中进行相应的查询并展示统计结果。
7. 备份与恢复:- 用户选择备份或恢复功能入口。
- 备份功能:系统将数据库中的图书信息备份到指定的文件中。
- 恢复功能:系统从指定的备份文件中还原图书信息到数据库中。
8. 系统维护:- 用户选择系统维护功能入口。
- 维护功能包括数据库清理、数据完整性检查、系统日志管理等。
- 用户可以根据需求选择相应的维护操作。
总结:C语言图书管理系统通过以上流程图所示的各项功能,实现了对图书的添加、删除、查询和借还等操作,同时还提供了统计、备份和维护等实用的功能。
图书管理系统c语言课程设计
![图书管理系统c语言课程设计](https://img.taocdn.com/s3/m/69a30e47a200a6c30c22590102020740bf1ecd77.png)
图书管理系统c语言课程设计一、课程目标知识目标:1. 学生能够理解图书管理系统的基本概念,掌握C语言实现数据结构(如链表)的基本方法。
2. 学生能够运用C语言编写程序,实现图书管理系统的基本功能,如图书的增删改查。
3. 学生能够理解文件操作在图书管理系统中的应用,实现数据的持久化存储。
技能目标:1. 学生能够运用所学知识,独立完成图书管理系统的需求分析、设计、编码和测试。
2. 学生通过课程设计,提高问题分析能力,培养解决实际问题的编程能力。
3. 学生能够运用调试工具,找出并修正程序中的错误,提高程序调试能力。
情感态度价值观目标:1. 学生在课程学习中,培养对编程的兴趣和热情,树立正确的计算机科学观念。
2. 学生通过团队协作完成课程设计,培养沟通协作能力和团队精神。
3. 学生在解决实际问题的过程中,体会编程带来的成就感,增强自信心。
课程性质:本课程为C语言程序设计课程的实践环节,旨在让学生将所学理论知识应用于实际项目中,提高编程实践能力。
学生特点:学生已具备C语言基础知识,具有一定的编程能力,但实际项目经验较少。
教学要求:注重理论联系实际,引导学生独立思考,培养学生解决实际问题的能力。
通过课程设计,使学生能够将所学知识综合运用,提高编程实践技能。
二、教学内容1. 数据结构基础:回顾教材中关于数据结构的基础知识,重点复习链表的结构及其操作,为图书管理系统设计打下基础。
- 教材章节:第三章 数据结构,第四节 链表2. 文件操作:学习C语言文件操作相关知识,掌握文件读写方法,为图书信息持久化提供支持。
- 教材章节:第五章 文件,第一节 文件的打开与关闭,第二节 文件的读写3. 系统需求分析:引导学生学习如何分析图书管理系统的功能需求,明确课程设计目标。
- 教材章节:第二章 程序设计基础,第三节 结构化程序设计4. 系统设计与实现:根据需求分析,设计系统功能模块,使用C语言实现图书管理系统的增删改查等功能。
图书馆管理系统C语言课程设计报告(原创)
![图书馆管理系统C语言课程设计报告(原创)](https://img.taocdn.com/s3/m/08d96d1bf18583d0496459fd.png)
课程报告任务书1需求分析开发一个图书管理系统。
一、图书信息包括图书编号、书名、作者、价格、出版社、出版日期、类别、馆藏地址、库存量。
二、系统功能包括1 新建图书信息库2查询图书信息●全部查询●按书名查询●按作者查询●按类别查询3 图书排序●按编号排序●按价格排序4 图书信息插入(插入后仍按编号顺序排放的)5 图书信息删除(按书名查找删除)6 图书信息修改(按书名查询到书后可以进行选择对各项信息进行修改)7 图书数目统计8 图书信息保存在文件中三、在主函数里设计各个功能选项,然后调用相应的自定义子函数来实现功能。
2 概要设计(1) 数据结构主要数据结构:单链表//图书信息结构体struct book{char num[L]; //图书编号char name[M]; //书名char writer[M]; //作者char publisher[M]; //出版社char time[N]; //出版日期char category[n]; //类别char room[N]; //馆藏地址double price; //价格int amount; //库存量struct book *next;};(2) 模块划分主函数void main()自定义子函数即功能函数struct book * create(); // 新建图书信息库struct book * scanf1_(); //输入单本书的信息void printf1_(struct book *); //输出单本书的信息void chaxun_(struct book *); //综合查询void chaxun_all(struct book *); //全部信息浏览void chaxun_name(struct book *); //按书名查询void chaxun_writer(struct book *); //按作者查询void chaxun_category(struct book *); //按类别查询struct book *num_order(struct book *); //按编号排序struct book *price_order(struct book *); //按价格排序struct book *delete_(struct book *); //图书信息删除void change(struct book *,char a[]); //图书信息修改struct book *insert(struct book *); //图书信息插入int count(struct book *); //图书数目统计void save(struct book *); //保存到文件struct book *load(); //从文件读取信息到链表int quit(struct book *); //退出函数(3) 程序总体框架(4) 主界面是如下3 详细设计一main()主函数程序采用模块化设计,主函数是程序的入口,各模块独立,可分块调整,均由主函数控制。
c语言课程设计报告图书管理系统
![c语言课程设计报告图书管理系统](https://img.taocdn.com/s3/m/116de358fbd6195f312b3169a45177232f60e4b1.png)
C语言课程设计报告: 图书管理系统1. 引言本报告旨在介绍一个基于C语言的图书管理系统的设计与实现。
图书管理系统是一个用于管理图书馆图书的软件,它能够方便地进行图书的借阅、归还、查询等操作,提高图书馆的管理效率。
2. 系统需求分析在设计图书管理系统之前,我们首先需要明确系统的需求。
根据需求分析,该系统需要具备以下功能:•图书的录入与管理:管理员可以添加、修改和删除图书信息,包括书名、作者、出版社、ISBN等。
•读者的管理:管理员可以添加、修改和删除读者信息,包括姓名、学号、联系方式等。
•图书借阅与归还:读者可以借阅图书,并在归还时完成相应的操作。
•图书查询:管理员和读者都可以通过关键字查询图书信息。
•预约图书:读者可以预约图书,待图书可用时通知读者。
•罚款管理:系统可以自动计算读者逾期归还图书的罚款金额,并进行相应的处理。
3. 系统设计与实现3.1 数据结构设计为了实现图书管理系统的各项功能,我们需要设计合适的数据结构来存储图书信息、读者信息等。
以下是我们设计的数据结构:•图书结构体:包括书名、作者、出版社、ISBN等信息;•读者结构体:包括姓名、学号、联系方式等信息;•借阅记录结构体:包括图书信息、读者信息、借阅日期、归还日期等信息;3.2 系统模块设计根据系统需求,我们可以将图书管理系统划分为以下几个模块:•图书管理模块:包括图书的添加、修改和删除功能;•读者管理模块:包括读者的添加、修改和删除功能;•图书借阅模块:包括图书的借阅和归还功能;•图书查询模块:包括关键字查询功能;•预约图书模块:包括图书的预约功能;•罚款管理模块:包括读者逾期归还图书的罚款管理功能;3.3 系统实现根据系统设计,我们使用C语言编写相应的代码来实现整个图书管理系统。
我们使用结构体来存储图书、读者和借阅记录的信息,并使用文件来存储这些数据。
我们可以通过菜单方式来实现用户和管理员的交互,用户可以根据需求选择相应的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HUNAN UNIVERSITYC语言程序训练报告【设计目的】图书信息包括:读者登录号、管理员登录号、图书编号、作者名、种类、出版社、图书库存、图书借出数目等.图书信息管理系统,使之能提供以下功能:1)系统以菜单方式工作2)读者注册功能3)读者登录功能4)读者借书还书功能5)查询读者借阅记录6)查询在管图书信息功能7)修改密码功能8)管理员登录功能9)增加、修改、删除图书功能10)查看图书信息功能【设计思路】根据题目要求,应当把图书信息用结构体形式输入,应该提供以下结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的;管理员和读者登录界面及各自功能应有不同的实现。
【总体设计】【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用源代码为//rkou.c 程序的入口#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include"head.h"#include"fuc.h"#include"picture.h"#include"jiangzhuo1.h"#include"output.h"main(){ int i=setup();switch (i){ case 0: while(n<50){ conects(n);}default: eros(i);}system("pause");}2.程序中全局变量声明定义,以及所有函数声明源代码为struct book //图书结构体声明{ char name[50],classic[10],writer[20]; //书名,类别,作者int jn; //借出数量int zn; //在馆数量int bh; //图书编号};struct information //管理员和读者结构体声明{ char name[10],no[12],key[10]; //姓名,账号,密码};struct show //图书借阅记录的结构体声明{char name1[10],name2[50],writer[20],no[12]; //书名,读者姓名,书的作者,读者账号int bh,o; //图书编号,借阅状况(未还,已还)};//以下为用到的全局变量struct book bk;struct information aa,rr;struct information stu[100];struct book bb[100];struct information ad[100];struct show ss[100];int i,j,k,s;int n=0;int x;FILE *fp;//以下函数主要功能:方便窗口与用户之间交换信息int regst();void password(char *a,int b,int j); //登陆时的输入函数void examine(int *a,int b); //保证键入的数据是数字void changepaw(int a,int b); //修改密码用到的提示函数void inputs0(); //输出图书类别以供用户选择void inputs1(int a,int b,int c,int d,int e); //方便用户输入图书各项信息(如书名,编号) void inputs2(int a,int b,int c); //方便用户输入管理员的信息(如账号姓名)void inputs3(int a,int b,int c); //方便用户输入读者的信息(如账号姓名) void eros(int i) ; //错误显示函数,操作一旦出错,则会出现相应的错误信息void conects(int j); //连接函数,选择界面//一下函数主要用于改变文件的内容并保存int setup() ; //数据初始化函数int xzc(char no[12],char key1[10],char key2[10],char name[10]); //读者注册函数int exam(char no[10],char key[10],int n); //密码账号检验函数int mp(char no[12],char key1[10],char key2[10],char key3[10],int n); //密码修改函数void paixu(); //对图书按照编号从小到大的顺序进行排列int sc(int bh); //管理员删除图书信息函数int zj(struct book bb); //管理员增加图书信息函数int xg(struct book bb); //管理员修改图书信息函数int js(int bh,char no[12]); //借书函数int hs(int bh,char no[12]); //还书函数int bh1(int bh); //判断该编号的图书信息是否存在函数void bh2(int bh); //按照图书编号显示图书信息函数int sm1(char name[50]); //判断是否存在该名字的图书信息函数void sm2(char name[50]); //按照图书名字显示图书信息函数int zz1(char writer[20]); //判断是否存在该作者的图书信息函数void zz2(char writer[20]); //按照图书作者显示图书信息函数void lb(char classic[10]); //按类别显示图书信息int rck1(int bh); //判断该编号的图书的借书记录是否存在void rck2(int bh); //按编号显示图书借书情况int gck21(char no[12]); //判断该账号读者的借书记录是否存在void gck22(char no[12]); //按读者显示借书情况2void gck12(); //显示全部借书情况void gck23(); //管理员查看所有书的信息void copy(int bh); // 按编图书编号将图书信息暂时保存在另外一个结构体里面void copy2(char no[12]); //按管理员账号将管理员信息暂时保存在另外一个结构体里面void copy3(char no[12]); //按读者账号将读者信息暂时保存在另外一个结构体里面//pic() 函数:每个函数表示一个界面,conects函数将它们连接起来void pic0();void pic1();void pic2();void pic3();void pic4();void pic5();void pic6();void pic7();void pic8();void pic9();void pic10();void pic11();void pic12();void pic13();void pic14();void pic15();void pic16();void pic17();void pic18();void pic19();void pic20();void pic21();void pic22();void pic23();void pic24();void pic25();void pic26();void pic27();void pic29();void pic30();void pic31();void pic32();void pic33();void pic34();void pic35();void pic36();void pic37();void pic38();void pic39();void pic40();void pic41();void pic42();void pic43();void pic44();void pic45();void pic46();void pic47();void picc();3.用户输入以及界面反馈用到的功能函数源代码为int regst(){ char num[12],paw1[10],paw2[10],name[10];int i;printf("请输入账号\n(11字符以内,不能含有中文字符):\n");password(num,0,11);printf("输入您的密码\n(9字符以内,不能含有中文字符):\n");password(paw1,1,9);printf("请再次输入密码:\n");password(paw2,1,9);printf("输入您的姓名:\n");gets(name);system("cls");i=xzc(num,paw1,paw2,name);return i;}void password(char *a,int b,int j){ char c;int i=0;while((c=getch())!='\r'){ if(c==8){ printf("\b \b");if(i>0)i--;}else if(i<j){ if(b) printf("*");else printf("%c",c);a[i]=c;i++;}if(i==j){ printf("\a");}}a[i]='\0';printf("\n");}void examine(int *a,int b){ while(!scanf("%d",a)){ while(getchar()!='\n');printf("请输入数字!!\n");}rewind(stdin);if(b) system("cls");}void changepaw(int a,int b){ int i;char c1[10],c2[10],c3[10];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;}else{ i=mp(rr.no,c1,c2,c3,b);if(i){ eros(i);n=44;}else n=43;}}void inputs0(){ int i=1;while(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;break;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();default: ;}switch(c){ case 1: printf("请输入图书的作者:\n");gets(bk.writer);default: ;}switch(d){ case 1: printf("请输入该图书的库存:\n");examine(&bk.zn,1);default: ;}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();default: ;}system("cls");}void inputs3(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();default: ;}system("cls");}void eros(int i) //错误函数{ switch (i){ case -1: printf("error1 !初始化失败\n\n");break;case -2: printf("error2 !账号不存在\n\n");break;case -3: printf("error3 !账号不存在\n\n");break;case -4: printf("error4 !密码错误\n\n");break;case -5: printf("error5 !输入的密码不一致\n\n");break;case -6: printf("error6 !编号不存在\n\n");break;case -7: printf("error7 !书名不能为空\n\n");break;case -8: printf("error8 !作者名字不能为空\n\n");break;case -9: printf("error9 !无此图书编号的记录\n\n");break;case -10: printf("error10 !无此账号的记录\n\n");break;case -11: printf("error11 !原始密碼輸入錯誤\n\n");break;case -12: printf("error12 !您已经归还此书\n\n");break;case -13: printf("error13 !您所增加的图书编号已存在\n\n");break;case -14: printf("error14 !搜索不到此书的相关信息\n\n");break;case -15: printf("error15 !搜索不到该作者的信息\n\n");break;case -16: printf("error16 !打不开文件,保存失败\n\n");break;case -17: printf("error17 !该图书信息已存在\n\n");break;case -18: printf("error18 !您没有借过这本书\n\n");break;case -19: printf("error19 !您已经借阅了这本书,不能再借\n\n");break;;case -20: printf("error20 !抱歉,图书已经借完了\n\n");break;case -21: printf("error21 !账号已存在\n\n") ; break;case -22: printf("error22 !还有图书未还,不能删除该条信息\n\n");break;default : ;}}void conects(int j){ switch(j){ case 0: pic0();break;case 1: pic1();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();break;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: pic30();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 44: pic44();break;case 45: pic45();break;case 46: pic46();break;case 47: pic47();break;default: ;}}4.文件操作各种函数源代码为// jiangzhuo1.h 文件操作各种函数int setup() //数据初始化函数{FILE *fp;fp=fopen("reader.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{i=0;while(!feof(fp)){fscanf(fp,"%s %s %s",stu[i].name,stu[i].no,stu[i].key); //将文档里面的数据格式化读取到结构体数组里面i++;}i=i-1;}fclose(fp);fp=fopen("ad.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{j=0;while(!feof(fp)){fscanf(fp,"%s %s %s",ad[j].name,ad[j].no,ad[j].key); //将文档里面的数据格式化读取到结构体数组里面j++;}j=j-1;}fclose(fp);fp=fopen("book.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{k=0;while(!feof(fp)){fscanf(fp,"%d %s %s %s %d %d ",&bb[k].bh,bb[k].name,bb[k].classic,bb[k].writer,&bb[k].zn,&bb[k].jn); //将文档里面的数据格式化读取到结构体数组里面k++;}k=k-1;}fclose(fp);fp=fopen("show.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{s=0;while(!feof(fp)){fscanf(fp," %s %s %d %s %s %d ",ss[s].name1,ss[s].no,&ss[s].bh,ss[s].name2,ss[s].writer,&ss[s].o); //将文档里面的数据格式化读取到结构体数组里面s++;}s=s-1;}fclose(fp);return 0; //当操作全部正确时返回0}int xzc(char no[12],char key1[10],char key2[10],char name[10]) //读者注册函数{ int x=0;for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //判断读者输入的账号与结构体里面的账号是否相同{return -21;break;}if(x==i && strcmp(no,stu[x].no))//判断读者输入的账号与结构体里面的账号是否相同{if(!strcmp(key1,key2)) //判断读者两次输入的密码是否一致{i=i+1;strcpy(stu[i].name,name);strcpy(stu[i].no,no);strcpy(stu[i].key,key1);fp=fopen("reader.txt","a"); //对文件以写的方式将注册的信息保存到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%s\t\t%s\t\t%s\n",stu[i].name,stu[i].no,stu[i].key);}fclose(fp);return 0;}else{return -5;}}}}int exam(char no[10],char key[10],int n) //密码账号检验函数{ int x;if(n==0) //对读者的密码和账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //判断该账号是否存在{if(!strcmp(key,stu[x].key)) //当账号存在时判断与之相应的密码是否相同{return 0;break;}else{return -4;break;}}if(x==i && strcmp(no,stu[x].no)){return -3;}}}if(n==1) //对管理员的密码账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,ad[x].no)) //判断该账号是否存在{if(!strcmp(key,ad[x].key)) //判断与之相应的密码是否存在{return 0;break;}else{return -4;break;}}if(x==j && strcmp(no,ad[x].no)){return -3;}}}}int zj(struct book b) //管理员增加图书信息函数{ int x;for(x=0;x<=k;x++){ if(bb[x].bh==b.bh) //判断所增加的图书编号是否已存在{return -13;break;}if(!strcmp(,bb[x].name)&&!strcmp(b.writer,bb[x].writer)) //判断所增加的图书是否存在{ return -17;break;}if(x==k){ if(strlen(bb[0].name)==0) //判断文档的第一行是否为空k=k;elsek=k+1;bb[k].bh=b.bh; //将所增加的图书信息添加到结构体里面strcpy(bb[k].name,);strcpy(bb[k].classic,b.classic);strcpy(bb[k].writer,b.writer);bb[k].zn=b.zn;bb[k].jn=b.jn;fp=fopen("book.txt","a"); //将增加的图书信息追加到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[k].bh,bb[k].name,bb[k].classic,bb[k].writer, bb[k].zn,bb[k].jn);}fclose(fp);return 0;}}}int sc(int bh) //管理员删除图书信息函数{ int x;for(x=0;x<=k;x++){if(bb[x].bh==bh) //判断所删除图书的编号是否存在{if(bb[x].jn!=0)return -22;for(x=x;x<=k-1;x++){bb[x]=bb[x+1]; //删除图书信息后将该图书信息后面的图书信息依次前移}k--;fp=fopen("book.txt","w+"); //将删除后的所有图书信息重新写入文档if(fp==NULL)else{for(x=0;x<=k;x++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x].writer, bb[x].zn,bb[x].jn);}}fclose(fp);return 0;break;}}}int mp(char no[12],char key1[10],char key2[10],char key3[10],int n) //密码修改函数{ int x;if(n==0) //读者密码修改{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //定位读者账号位置{if(!strcmp(stu[x].key,key1)) //判断输入的原密码是否正确{ if(!strcmp(key2,key3)) //判断两次输入的新密码是否一致{strcpy(stu[x].key,key3);fp=fopen("reader.txt","w+"); //将修改后的信息保存在文件里面if(fp==NULL)return -16;else{for(x=0;x<=i;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",stu[x].name,stu[x].no,stu[x].key);}fclose(fp);return 0;}{return -5;}}elsereturn -11;}}}if(n==1) //管理员密码修改{for(x=0;x<=j;x++){if(!strcmp(no,ad[x].no)) //定位管理员账号位置{if(!strcmp(key1,ad[x].key)) //判断输入的原密码是否正确{if(!strcmp(key2,key3)) //判断两次输入的新密码是否一致{strcpy(ad[x].key,key3);fp=fopen("ad.txt","w+"); //将修改后的信息保存在文件里面if(fp==NULL)return -16;else{for(x=0;x<=j;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",ad[x].name,ad[x].no,ad[x].key);}fclose(fp);return 0;}else{return -5;}}elsereturn -11;}}}}int xg(struct book b) //管理员修改图书信息函数{ int x;if(strlen()==0) //判断所输入的要修改的图书名字是否为空{return -7;}else{if(strlen(b.writer)==0) //判断所输入的要修改的图书作者是否为空{return -8;}else{for(x=0;x<=k;x++){if((bb[x].bh==b.bh)) //定位要修改的图书编号位置{strcpy(bb[x].name,); //将修改后的信息保存在结构体里strcpy(bb[x].classic,b.classic);strcpy(bb[x].writer,b.writer);bb[x].zn=b.zn;bb[x].jn=b.jn;fp=fopen("book.txt","w+"); //将修改后的所有信息保存在文件里if(fp==NULL)return -16;else{for(x=0;x<=k;x++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x].writer, bb[x].zn,bb[x].jn);}}fclose(fp);return 0;}}}}void copy(int bh) // 按编图书编号将图书信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=k;x++){if(bb[x].bh==bh){strcpy(,bb[x].name);strcpy(bk.classic,bb[x].classic);strcpy(bk.writer,bb[x].writer);bk.zn=bb[x].zn;bk.jn=bb[x].jn;bk.bh=bb[x].bh;}}}void copy2(char no[12]) //按管理员账号将管理员信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=j;x++){if(!strcmp(ad[x].no,no)){strcpy(,ad[x].name);strcpy(aa.key,ad[x].key);}}}void copy3(char no[12]) //按读者账号将读者信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=i;x++){if(!strcmp(stu[x].no,no)){strcpy(,stu[x].name);strcpy(rr.key,stu[x].key);}}}int js(int bh,char no[12]) //借书函数{ int x,y,z;for(x=0;x<=k;x++){if(bb[x].bh==bh) //判断借书编号是否存在{if(bb[x].zn>0) //判断在馆数是否为0{if(strlen(ss[0].name1)==0) //判断文件里面的第一行信息是否存在{for(y=0;y<=i;y++){if(!strcmp(stu[y].no,no)){ --bb[x].zn; //修改借书后的信息++bb[x].jn;ss[0].o=2;strcpy(ss[0].name1,stu[y].name); //将借书后的信息保存在结构体数组里面strcpy(ss[0].no,no);strcpy(ss[0].writer,bb[x].writer);strcpy(ss[0].name2,bb[x].name);ss[0].bh=bh;}}}else{for(y=0;y<=s;y++){if((ss[y].bh==bh )&&!strcmp(ss[y].no,no)) //定位与输入的编号和账号一致的借书记录{if(ss[y].o==2) //判断是否已借过该书return -19;else{--bb[x].zn; //修改借书后的信息++bb[x].jn;ss[y].o=2;}break;}else{if(y==s){s++;for(z=0;z<=i;z++){if(!strcmp(stu[z].no,no)) //定位读者信息{bb[x].zn--; //修改借书后的信息bb[x].jn++;strcpy(ss[s].name1,stu[z].name);strcpy(ss[s].name2,bb[x].name);strcpy(ss[s].no,no);strcpy(ss[s].writer,bb[x].writer);ss[s].bh=bb[x].bh;ss[s].o=2;}}break;}}}}fp=fopen("book.txt","w+"); //将借书后的图书信息写入文件if(fp==NULL)return -16;else{for(y=0;y<=k;y++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[y].bh,bb[y].name,bb[y].classic,bb[y].writer, bb[y].zn,bb[y].jn);}}fclose(fp);fp=fopen("show.txt","w+"); //将借书记录写入文件if(fp==NULL)return -16;else{for(y=0;y<=s;y++)fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[y].name1,ss[y].no,ss[y].bh,ss[y].name2,ss[y]. writer,ss[y].o);}}fclose(fp);return 0;}elsereturn -20;}}}int hs(int bh,char no[12]) //还书函数{ int x,p;for(x=0;x<=s;x++){if(ss[x].bh==bh && !strcmp(ss[x].no,no)) //判断其借书记录是否存在{ if(ss[x].o==2) //判断该书是否被借过{ for(p=0;p<=k;p++){if(bb[p].bh==bh) //修改还书后的图书信息{ ++bb[p].zn;--bb[p].jn;}}ss[x].o=1;fp=fopen("book.txt","w+"); //将还书后的所有图书信息重新写入文件if(fp==NULL)return -16;else{for(p=0;p<=k;p++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[p].bh,bb[p].name,bb[p].classic,bb[p].writer, bb[p].zn,bb[p].jn);}fclose(fp);fp=fopen("show.txt","w+"); //将还书后的所有借书记录重新写入文件if(fp==NULL)return -16;else{for(p=0;p<=s;p++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[p].name1,ss[p].no,ss[p].bh,ss[p].name2,ss[p]. writer,ss[p].o);}}fclose(fp);return 0;}else{return -12;}}elseif(x==s)return -18;}}void paixu() //对图书按照编号从小到大的顺序进行排列{ int x,flag;struct book a;do //用冒泡法排序{flag=1;for(x=0;x<=k-1;x++){if(bb[x].bh>bb[x+1].bh){a=bb[x+1];bb[x+1]=bb[x];bb[x]=a;flag=0;}}}while(flag==0);fp=fopen("book.txt","w+"); //将排序后的信息重新写入文件for(x=0;x<=k;x++)fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x].writer, bb[x].zn,bb[x].jn);fclose(fp);}5.登陆界面所有函数源代码为// picture.h 登陆界面所有函数void pica(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:管理员\n",aa.no,);printf("------------------------------------------------------------------------\n\n");}void picb(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:读者\n",rr.no,);printf("------------------------------------------------------------------------\n\n");}void pic0() //登陆界面{ printf("\n\t\t\t欢迎登陆湖南大学图书管理系统\n");printf("------------------------------------------------------------------------\n\n");printf("1.登陆\n2.读者注册\n3.退出系统\n\n");printf("------------------------------------------------------------------------\n\n");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("\n\t\t\t\t登陆\n");printf("------------------------------------------------------------------------\n\n");printf("1.管理员登陆\n2.读者登陆\n3.返回系统界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: inputs2(1,1,0);i=exam(aa.no,aa.key,1);if(i){ eros(i);n=3;}else n=2;break;case 2: inputs3(1,1,0);i=exam(rr.no,rr.key,0);if(i){ eros(i);n=30;}else n=29;break;case 3: n=0;break;default: ;}}void pic2() //管理员管理界面{ copy2(aa.no);pica();printf("1.增加图书\n2.修改图书\n3.删除图书\n4.查看图书信息\n");printf("5.修改密码\n6.返回到系统登陆界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=4;break;case 2: n=8;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.返回上一层\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: inputs1(1,1,1,1,1);n=5; break;case 2: n=2;break;default: ;}}void pic5() //添加图书确认界面{ int i;pica();printf("你输入的图书信息为:\n\n");printf("书名\t\t\t编号\t作者\t\t种类\t在馆数\t借出数\n");printf("%-24s%-8d%-16s%-8s%-8d%-8d\n\n",,bk.bh,bk.writer,bk.classic,bk.zn,bk.jn);printf("------------------------------------------------------------------------\n\n");printf("1.录入以上信息\n2.返回重新输入图书信息\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: i=zj(bk);if(i){ eros(i);n=7;}else n=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 1: n=4;break;case 2: n=2;break;default: ;}}void pic8() //修改图书界面{ pica();printf("1.进行修改图书操作\n2.返回管理图书界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=9;break;case 2: n=2;break;default: ;}}void pic9() //输入编号以选择修改相应的图书{ int i;pica();printf("以下是在馆所有图书信息:\n\n");gck23();printf("------------------------------------------------------------------------\n\n");printf("1.输入编号修改图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,0);switch(x){ case 1: inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i){ eros(i);n=11;}else{ n=10;}break;case 2: system("cls");n=2;break;default: system("cls");}}void pic10() //按需求修改图书界面{ pica();printf("编号为%d的图书信息:\n\n",bk.bh);copy(bk.bh);bh2(bk.bh);printf("------------------------------------------------------------------------\n\n");printf("1.修改书名\n2.修改作者名字\n3.修改图书在馆的数量\n4.修改图书所属的类别\n");printf("5.修改图书所有信息\n6.返回上一层选择其他编号的书\n\n");printf("------------------------------------------------------------------------\n\n");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() //获取相应的图书失败提示界面{ printf("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("你要修改的图书信息为:\n\n");bh2(bk.bh);printf("%-24s%-8d%-16s%-8s%-8d%-8d\n\n",,bk.bh,bk.writer,bk.classic,bk.zn,bk.jn);printf("------------------------------------------------------------------------\n\n");printf("1.确认修改此图书\n2.返回选择修改其他信息\n3.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: i=xg(bk);if(i){ eros(i);n=14;}else n=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.重新输入图书修改信息\n2.图书管理界面\n");examine(&x,1);switch(x){ case 1: n=10;break;case 2: n=8;break;default: ;}}void pic15() //删除图书选择界面{ pica();printf("1.进行删除图书操作\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=16; break;case 2: n=2;break;default: ;}}void pic16() //输入相应编号删除图书{ int i;pica();;printf("以下是在馆所有图书信息:\n\n");gck23();printf("------------------------------------------------------------------------\n\n");printf("1.输入编号删除图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,0);switch(x){ case 1: inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i){ eros(i);n=18;}else{n=17;system("cls");};break;case 2: system("cls");n=2;break;default: system("cls"); ;}}void pic17() //删除图书确认界面{ int i;pica();printf("编号为%d的图书信息:\n\n",bk.bh);bh2(bk.bh);printf("------------------------------------------------------------------------\n\n");printf("1.删除该图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: i=sc(bk.bh);if(i){ eros(i);n=20;}else n=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("删除图书操作成功\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.查看指定读者的借阅记录\n3.查看所有图书借阅记录\n4.查看在馆图书的详细信息\n");printf("5.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: inputs1(1,0,0,0,0);i=rck1(bk.bh);if(i){ eros(i);n=23;}else{ pica();printf("编号为%d的图书的借出情况:\n\n",bk.bh);。