图书馆管理系统C语言程序设计_第1页
图书馆管理系统C语言程序设计_第2页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、仅供个人学习参考HUNANUNIVERSITYC语言程序训练报告【设计目的】图书信息包括:读者登录号、管理员登录号、图书编号、作者名、种类、出版社、图书库存、图书 借出数目等.图书信息管理系统,使之能提供以下功能:1) 系统以菜单方式工作2) 读者注册功能3) 读者登录功能4) 读者借书还书功能5) 查询读者借阅记录6) 查询在管图书信息功能7) 修改密码功能8) 管理员登录功能9) 增加、修改、删除图书功能10)查看图书信息功能【设计思路】根据题目要求,应当把图书信息用结构体形式输入, 应该提供以下结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览, 查询,删除和修改等功能的操作,

2、所以需要建立相应的模块 来实现:另外还需提供选择菜单实现功能, 在运行时达到所要求的目的;管理员和读者登录界面及 各自功能应有不同的实现。【总体设计】仅供个人学习参考【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用源代码为/rkou.c 程序的入口#in clude#in clude#in clude#in clude#i ncludehead.h仅供个人学习参考#i ncludefuc.h#i ncludepicture.h#in cludejia ngzhuol.h#i ncludeoutput.hmai n()in ti=setup();switch(i)caseO

3、:while( n0)i-;elseif(ij)if(b)pri ntf(*);elsepri ntf(%c,c);ai=c;i+;if(i=j)pri ntf(a);ai=0;prin tf(n);i. -voidexami ne(i nt*a,i ntb)while(!sca nf(%d,a)while(getchar()!=n);printf(”请输入数字!n);rewi nd(stdi n);if(b)system(cls);voidcha ngepaw(i nta,i ntb)in ti;charc110,c210,c310;printf(”请输入原密码n);password(c1,

4、1,9);printf(”请输入新密码n”);password(c2,1,9);printf(”请再次输入新密码n);password(c3,1,9);system(cls);仅供个人学习参考if(b)i=mp(aa .no ,c1,c2,c3,b);if(i)eros(i); n=27;else n=26;elsei=mp(rr. no ,c1,c2,c3,b);if(i)eros(i); n=44;else n=43;voidi nputsO()in ti=1;while(i=1)printf(1.A 类n2.B 类n3.C 类n4.D 类n5.E 类n6.F 类n); exami ne(

5、&i,1);switch(i)case1:strcpy(bk.classic,A 类);i=0;break; case2:strcpy(bk.classic,B 类);i=0;break; case3:strcpy(bk.classic,C 类);i=0;break; case4:strcpy(bk.classic,D 类);i=0;break;I Icase5:strcpy(bk.classic,E 类);i=0;break; case6:strcpy(bk.classic,F 类);i=0;break; default:i=1;Lvoidi nputs1(i nta,i ntb,i

6、 ntc,i ntd,i nte)in ti;switch(a)case1:pri ntf(请输入图书编号:n ”);exami ne(&bk.bh,1); default:;switch(b)case1:pri ntf(请输入图书名称:n );gets(bk .n ame); default:;仅供个人学习参考switch(c)case1:pri ntf(请输入图书的作者:n ”);gets(bk.writer); default:;switch(d)case1:pri ntf(请输入该图书的库存:n ”);exami ne(&bk.z n,1)default:;system

7、(cls);switch(e)case1:pri ntf(请选择图书类别:n );i nputsO();仅供个人学习参考default:;voidi nputs2(i nta,i ntb,i ntc)switch(a)case1:pri ntf(请输入账号:default:;switch(b)case1:pri ntf(请输入密码:default:;switch(c)case1:pri ntf(请输入姓名:default:;system(cls);voidi nputs3(i nta,i ntb,i ntc)switch(a)case1:pri ntf(请输入账号:default:;Lswit

8、ch(b)case1:pri ntf(请输入密码:default:;switch(c)case1:pri ntf(请输入姓名:default:;system(cls);voideros(inti) 错误函数switch(i)n );password(aa .no ,0,11);n );password(aa.key,1,9);n );gets(aa .name);Mjn );password(rr.no ,0,11);n );password(rr.key,1,9);n);gets();仅供个人学习参考case-1:printf(error1!初始化失败 nn);break;ca

9、se-2:printf(error2!账号不存在 nn);break;case-3:printf(error3!账号不存在 nn);break; case-4:printf(error4!密码错误 nn);break;case-5:printf (error5!输入的密码不一致 nn) ;break; case-6:printf (error6!编号不存在 nn);break;case-7:printf(error7!书名不能为空 nn”);break; case-8:printf(erro作者名字不能为空 nn);break; case-9:printf(erro无此图书编号的记录 nn);

10、break;case-10:printf(error10!无此账号的记录 nn);break;case-11:printf(error11!原始密码输入错误 nn);break;case-12:printf(error12!您已经归还此书 nn);break;case-13:printf(error13!您所增加的图书编号已存在nn);break;case-14:printf(error14!搜索不到此书的相关信息nn”);break;case-15:printf(error15!搜索不到该作者的信息nn);break;case-16:printf(error16!打不开文件,保存失败 nn)

11、;break;case-17:printf(error17!该图书信息已存在 nn);break;case-18:printf(error18!您没有借过这本书 nn);break;case-19:printf(error19!您已经借阅了这本书,不能再借 nn);break;case-20:printf(error20!抱歉,图书已经借完了 nn);break;case-21:printf(error21!账号已存在 nn);break;case-22:printf(error22!还有图书未还,不能删除该条信息nn);break;default:;voidc on ects(i ntj)s

12、witch(j)caseO:picO();break;case1:pic1();break;case2:pic2();break;case3:pic3();break;case4:pic4();break;case5:pic5();break;i_ -case6:pic6();break;case7:pic7();break;case8:pic8();break;case9:pic9();break; case10:pic10();break; case11:pic11();break;case12:pic12();break;case13:pic13();break;case14:pic14

13、();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:pic

14、29();break;case30:pic30();break;case31:pic31();break;case32:pic32();break;case33:pic33();break;case34:pic34();break;case35:pic35();break;case36:pic36();break;case37:pic37();break;case38:pic38();break;case39:pic39();break;case40:pic40();break;case41:pic41();break;case42:pic42();break;case43:pic43();b

15、reak;case44:pic44();break;case45:pic45();break;case46:pic46();break;case47:pic47();break;default:;4.文件操作各种函数源代码为/jia ngzhuo1.h 文件操作各种函数in tsetup()数据初始化函数FILE*fp;fp=fopen(reader.txt,r);对文档以只读的方式进行操作if(fp=NULL)return-1;/当文件打不开时返回-1elsei=0;仅供个人学习参考while(!feof(fp)fsca nf(fp,%s%s%s,stui. name,stui. no,st

16、ui.key);将文档里面的数据格式化读取到结构体数组里面i+;i=i-1;fclose(fp);fp=fopen(ad.txt,r);对文档以只读的方式进行操作if(fp=NULL)return-1;/当文件打不开时返回-1I#elsej=;while(!feof(fp)fsca nf(fp,%s%s%s,adj. name,adj. no,adj.key); 将文档里面的数据格式化读取到结构体数组里面j+;j=j-1;fclose(fp);fp=fope n( book.txt,r);对文档以只读的方式进行操作if(fp=NULL)return-1;/当文件打不开时返回-1elsek=0;

17、while(!feof(fp)fscanf(fp,%d%s%s%s%d%d,&bbk.bh,,bbk.classic,bbk.writer,&bbk.zn,&bbk.jn);将文档里面的数据格式化读取到结构体数组里面k+;k=k-1;fclose(fp);fp=fopen(show.txt,r);对文档以只读的方式进行操作仅供个人学习参考if(fp=NULL)return-1;/当文件打不开时返回-1 elses=0;while(!feof(fp)fsca nf(fp,%s%s%d%s%s%d,sss. name1,sss. no,&sss.bh

18、,sss. name2,sss.writer, &sss.o);据格式化读取到结构体数组里面s+;s=s-1;fclose(fp);return。;/当操作全部正确时返回 0in txzc(charno12,charkey110,charkey210,charname10)读者注册函数in tx=0;for(x=0;x=i;x+)if(!strcmp(no,stux.no)/判断读者输入的账号与结构体里面的账号是否相同return-21;break;if(x=i&strcmp( no,stux. no)/判断读者输入的账号与结构体里面的账号是否相同if(!strcmp(key1

19、,key2)/判断读者两次输入的密码是否一致i=i+1;strcpy(stui. name, name);strcpy(stui. no,no);strcpy(stui.key,key1);fp=fopen(reader.txt,a);对文件以写的方式将注册的信息保存到文件里面if(fp=NULL)return-16;else将文档里面的数仅供个人学习参考fprin tf(fp,%stt%stt%sn,stui. name,stui. no,stui.key);fclose(fp);return。;elsereturn-5;intexam(charno10,charkey10,intn) 密码

20、账号检验函数intx;if(n=0)/对读者的密码和账号信息进行检验for(x=0;x=i;x+)if(!strcmp(no,stux.no)/判断该账号是否存在if(!strcmp(key,stux.key)当账号存在时判断与之相应的密码是否相同 return。;break;elsereturn-4;break;if(x=i&strcmp( no,stux. no)return-3;if(n=1)/对管理员的密码账号信息进行检验for(x=0;x=i;x+)if(!strcmp(no,adx.no)/判断该账号是否存在if(!strcmp(key,adx.key) 判断与之相应的密码

21、是否存在仅供个人学习参考returnO;break;elsereturn-4;break;if(x=j &strcmp( no ,adx. no)return-3;intzj(structbookb)/管理员增加图书信息函数intx;for(x=0;x=k;x+)if(bbx.bh=b.bh)判断所增加的图书编号是否已存在return-13;Ibreak;if(!strcmp(b .n ame,bbx. name )& !strcmp(b.writer,bb x .writer)/判断所增加的图书是否存在return-17;break;if(x=k)if(strlen(bb0.

22、name)=0)判断文档的第一行是否为空k=k;elsek=k+1;bbk.bh=b.bh;将所增加的图书信息添加到结构体里面strcpy(bbk. name,b .n ame);strcpy(bbk.classic,b.classic);strcpy(bbk.writer,b.writer);bbk.z n=b.z n;bbk .jn=b.j n;fp=fope n( book.txt,a);/将增加的图书信息追加到文件里面if(fp=NULL)return-16;elsel_ 、fprin tf(fp,%dt%-30st%-30st%-10st%dt%dn,bbk.bh,bbk .name

23、,bbk.classic,bbk.writer,bbk.z n, bbk.j n);仅供个人学习参考fclose(fp);return。;intsc(intbh)/管理员删除图书信息函数intx;for(x=0;x=k;x+)if(bbx.bh=bh)判断所删除图书的编号是否存在if(bb x.j n!=0)return-22;for(x=x;x=k_1;x+)bbx=bbx+1;删除图书信息后将该图书信息后面的图书信息依次前移k-;fp=fope n( book.txt,w+);将删除后的所有图书信息重新写入文档if(fp=NULL)return-16;elsefor(x=0;x=k;x+)

24、fprin tf(fp,%dt%-30st%-30st%-10st%dt%dn,bbx.bh,bbx. name,bbx .classic,bbx.writer,bbx.z n,bbx .j n);fclose(fp);JI / tJreturn。;break;in tmp(charno12,charkey110,charkey210,charkey310,i ntn)密码修改函数intx;if(n=0)/读者密码修改for(x=0;x=i;x+)if(!strcmp(no,stux.no)/ 定位读者账号位置if(!strcmp(stux.key,key1)判断输入的原密码是否正确if(!s

25、trcmp(key2,key3)/判断两次输入的新密码是否一致仅供个人学习参考strcpy(stux.key,key3);fp=fopen(reader.txt,w+);/将修改后的信息保存在文件里面if(fp=NULL)return-16;elsefor(x=0;x=i;x+)fprin tf(fp,%stt%stt%sn,stux. name,stux. no,st u x.key);fclose(fp);returnO;elsereturn-5;elsereturn-11;if(n=1)/管理员密码修改for(x=0;x=j;x+)if(!strcmp(no,adx.no)/定位管理员账

26、号位置if(!strcmp(key1,adx.key)判断输入的原密码是否正确if(!strcmp(key2,key3)判断两次输入的新密码是否一致strcpy(adx.key,key3);fp=fopen(ad.txt,w+);将修改后的信息保存在文件里面 if(fp=NULL)return-16;elsefor(x=0;x=j;x+)fprin tf(fp,%stt%stt%sn ,ad x. name,adx. no,adx.key);fclose(fp);return。;else仅供个人学习参考return-5;elsereturn-11;intxg(structbookb)/管理员修

27、改图书信息函数intx;if(strlen()=O)判断所输入的要修改的图书名字是否为空return-7;elseif(strlen(b.writer)=O)判断所输入的要修改的图书作者是否为空return-8;elsefor(x=0;x=k;x+)if(bbx.bh=b.bh)定位要修改的图书编号位置strcpy(,);将修改后的信息保存在结构体里strcpy(bbx.classic,b.classic);strcpy(bbx.writer,b.writer);bbx.z n=b.z n;bbx .jn=b.j n;fp=fope n(book.txt

28、,w+);将修改后的所有信息保存在文件里if(fp=NULL)return-16;elsefor(x=0;x=k;x+)fprin tf(fp,%dt%-30st%-30st%-10st%dt%dn,bbx.bh,bbx. name,bbx .classic,bbx.writer,bbx.z n,bbx .j n);fclose(fp);return。;L仅供个人学习参考voidcopy(intbh)/按编图书编号将图书信息暂时保存在另外一个结构体里面intx;for(x=0;x=k;x+)if(bb x.bh=bh)strcpy(bk .n ame,bbx. name);strcpy(bk.

29、classic,bbx.classic);strcpy(bk.writer,bbx.writer);bk.z n=bbx.z n;bk.j n=bbx.j n;bk.bh=bbx.bh;voidcopy2(charno12) 按管理员账号将管理员信息暂时保存在另外一个结构体里面intx;for(x=0;x=j;x+)if(!strcmp(adx. no, no)strcpy(aa .n ame,adx. name);strcpy(aa.key,adx.key);voidcopy3(charno12) 按读者账号将读者信息暂时保存在另外一个结构体里面intx;for(x=0;x=i;x+)if(

30、!strcmp(stux. no, no)strcpy(rr. name,stux. name);strcpy(rr.key,stux.key);intjs(intbh,charno12) 借书函数in tx,y,z;for(x=0;x0)判断在馆数是否为0if(strlen(1)=0)判断文件里面的第一行信息是否存在for(y=0;y=i;y+)if(!strcmp(stuy. no, no)-bbx.zn;修改借书后的信息+bbx.j n;ss0.o=2;strcpy(1,);/将借书后的信息保存在结构体数组里面strcpy(ssO. no,no);strcpy(ss

温馨提示

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

评论

0/150

提交评论