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

下载本文档

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

文档简介

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

2、修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时到达所要求的目的;管理员和读者登录界面及各自功能应有不同的实现。【总体设计 】图书馆管理系统读者注册、管理员登陆修改图 书信查找图 书信删除图书信浏 览 图登陆及密码息息息书信息修改专业资料整理WORD格式【详细设计 】专业资料整理WORD格式1.主函数主函数设计要求简洁,只提供局部提示语和函数的调用开场显示一系列功能选项n输入 n, n 为 1,2 或 3根据 n 的值调用各功能模块函数完毕源代码为/rkou.c程序的入口#include<stdio.h>#include<stdlib.h

3、>#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)专业资料整理WORD格式default: eros(i);conects(n);专业资料整理WORD格式专业资料

4、整理WORD格式system("pause");2.程序中全局变量声明定义 ,以及所有函数声明源代码为专业资料整理WORD格式struct bookchar name50,classic10,writer20; /int jn;int zn;int bh;/图书构造体声明书名 ,类别 ,作者/ 借出数量/ 在馆数量/ 图书编号专业资料整理WORD格式;专业资料整理WORD格式struct informationchar name10,no12,key10;/ 管理员和读者构造体声明/* ,账号 ,密码专业资料整理WORD格式;专业资料整理WORD格式struct show/

5、 图书借阅记录的构造体声明专业资料整理WORD格式专业资料整理WORD格式charname110,name250,writer20,no12;/ 书名 ,读者*,书的作专业资料整理WORD格式者, 读者账号专业资料整理WORD格式int bh,o;/ 图书编号,借阅状专业资料整理WORD格式况 (未还 ,已还 );/ 以下为用到的全局变量struct book bk;struct information aa,rr;struct information stu100;struct book bb100;struct information ad100;struct show ss100;int

6、 i,j,k,s;int n=0;int x;FILE *fp;专业资料整理WORD格式/ 以下函数主要功能 :方便窗口与用户之间交换信息intregst();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);/ 方便用户输入图书各项信息(如书名 ,编号

7、 )void inputs2(int a,int b,int c);/方便用户输入管理员的信息(如账号姓名)专业资料整理WORD格式void inputs3(int a,int b,int c);void eros(int i) ;/方便用户输入读者的信息(如账号* )/ 错误显示函数 ,操作一旦出错,那么专业资料整理WORD格式会出现相应的错误信息专业资料整理WORD格式void conects(int j);/ 连接函数,选择界面专业资料整理WORD格式/ 一下函数主要用于改变文件的内容并保存intsetup() ;/ 数据初始化函数intxzc(char no12,char key110

8、,char key210,char name10);/ 读者注册函数intexam(char no10,char key10,int n);/ 密码账号检验函数intmp(char no12,char key110,char key210,char key310,int n);/密码修改函数voidpaixu();/ 对图书按照编号从小到大的顺序进展排列intsc(int bh);/ 管理员删除图书信息函数intzj(struct book bb);/管理员增加图书信息函数intxg(struct book bb);/ 管理员修改图书信息函数intjs(int bh,char no12);/

9、借书函数inths(int bh,char no12);/ 还书函数intbh1(int bh);/判断该编号的图书信息是否存在函数void bh2(int bh);/ 按照图书编号显示图书信息函数intsm1(char name50);/ 判断是否存在该名字的图书信息函数void sm2(char name50);/ 按照图书名字显示图书信息函数intzz1(char writer20);/ 判断是否存在该作者的图书信息函数void zz2(char writer20);/ 按照图书作者显示图书信息函数void lb(char classic10);/按类别显示图书信息intrck1(int

10、 bh);/ 判断该编号的图书的借书记录是否存在void rck2(int bh);/ 按编号显示图书借书情况intgck21(char no12);/ 判断该账号读者的借书记录是否存在void gck22(char no12);/ 按读者显示借书情况2void gck12();/ 显示全部借书情况专业资料整理WORD格式void gck23();/ 管理员查看所有书的信息voidcopy(int bh);/ 按编图书编号将图书信息暂时保存在另外一个构造体里面voidcopy2(charno12);/ 按管理员账号将管理员信息暂时保存在另外一个构造体里面voidcopy3(charno12);

11、/ 按读者账号将读者信息暂时保存在另外一个构造体里面/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 pic1

12、8();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();专业资料整理WORD格式void pic35();void pic36();void pic37();void pic38();void pic39();void pic40();void pic41(

13、);void pic42();void pic43();void pic44();void pic45();void pic46();void pic47();void picc();3.用户输入以及界面反响用到的功能函数源代码为int regst()char num12,paw110,paw210,name10;int i;printf(" 请输入账号 n(11 字符以内 ,不能含有中文字符 ):n"); password(num,0,11);printf(" 输入您的密码 n(9 字符以内 , 不能含有中文字符 ):n"); password(paw

14、1,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)专业资料整理WORD格式i-;专业资料

15、整理WORD格式else if(i<j)if(i=j)if(b) printf("*");elseprintf("%c",c);ai=c;i+;专业资料整理WORD格式printf("a");ai='0'printf("n");void examine(int *a,int b)while(!scanf("%d",a)while(getchar()!='n');printf(" 请输入数字 !n");rewind(stdin);if(b)

16、system("cls");voidchangepaw(int a,int b)int i;char c110,c210,c310; printf(" 请输入原密码 n");password(c1,1,9);printf(" 请输入新密码 n"); password(c2,1,9);printf(" 请再次输入新密码 n");password(c3,1,9);system("cls");if(b)i=mp(aa.no,c1,c2,c3,b); if(i)eros(i);n=27;else n=2

17、6;elsei=mp(rr.no,c1,c2,c3,b); if(i)eros(i);n=44;专业资料整理WORD格式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;ca

18、se 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)专业资料整理WORD格式case 1

19、: printf("请输入图书编号:n");examine(&bk.bh,1);专业资料整理WORD格式default: ;switch(b)专业资料整理WORD格式case 1: printf("请输入图书名称:n");gets();专业资料整理WORD格式default: ;switch(c)专业资料整理WORD格式case 1: printf("请输入图书的n");gets(bk.writer);专业资料整理WORD格式default: ;switch(d)专业资料整理WORD格式case 1: print

20、f("请输入该图书的库存:n");examine(&bk.zn,1);专业资料整理WORD格式default: ;专业资料整理WORD格式system("cls");switch(e)专业资料整理WORD格式case 1: printf("请选择图书类别:n");inputs0();专业资料整理WORD格式default: ;专业资料整理WORD格式专业资料整理WORD格式void inputs2(int a,int b,int c)switch(a)case 1: printf(" 请输入账号: n");

21、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,1

22、1);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)专业资料整理WORD格式case -1: printf("error1 ! case -2: printf("error2 ! case -

23、3: printf("error3 ! case -4: printf("error4 ! case -5: printf("error5 !case -6: printf("error6 !case -7: printf("error7 !case -8: printf("error8 !case -9: printf("error9 !case -10: printf("error10 !case -11: printf("error11 !case -12: printf("error12

24、 !初始化失败 nn");break;账号不存在 nn");break;账号不存在 nn");break;密码错误 nn");break;输入的密码不一致nn");break;编号不存在 nn");break;书名不能为空nn");break;作者名字不能为空nn");break;无此图书编号的记录nn");break;无此账号的记录nn");break;原始密碼輸入錯誤nn");break;您已经归还此书nn");break;专业资料整理WORD格式case -13: pr

25、intf("error13 ! 您所增加的图书编号已存在nn");break;专业资料整理WORD格式case -14: printf("error14 !case -15: printf("error15 !搜索不到此书的相关信息搜索不到该作者的信息nn");break;nn");break;专业资料整理WORD格式case -16: printf("error16 ! 打不开文件 ,保存失败 nn");break;case -17: printf("error17 ! 该图书信息已存在nn"

26、);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&q

27、uot;);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;cas

28、e 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

29、 25: pic25();break;case 26: pic26();break;case 27: pic27();break;case 29: pic29();break;专业资料整理WORD格式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()

30、;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 文件操作各种函数专业资料整理WORD格式int setup()/ 数据初始化函数专业资料整理WO

31、RD格式FILE *fp;fp=fopen("reader.txt","r");/对文档以只读的方式进展操作if(fp=NULL)return -1;/ 当文件打不开时返回-1elsei=0;专业资料整理WORD格式while(!feof(fp)fscanf(fp,"%s%s %s",,stui.no,stui.key);/ 将文档里面的数据格式化读取到构造体数组里面i+;i=i-1;fclose(fp);fp=fopen("ad.txt","r");/ 对文档以只读的方式进展

32、操作if(fp=NULL)return -1;/当文件打不开时返回-1elsej=0;while(!feof(fp)fscanf(fp,"%s%s %s",,adj.no,adj.key);/ 将文档里面的数据格式化读取到构造体数组里面j+;j=j-1;fclose(fp);fp=fopen("book.txt","r");/ 对文档以只读的方式进展操作if(fp=NULL)return -1;/ 当文件打不开时返回-1elsek=0;while(!feof(fp)专业资料整理WORD格式fscanf(fp,"

33、;%d%s%s%s%d%d专业资料整理WORD格式",&bbk.bh,,bbk.classic,bbk.writer,&bbk.zn,&bbk.jn);/ 将文档里面的数据专业资料整理WORD格式格式化读取到构造体数组里面k+;专业资料整理WORD格式k=k-1;fclose(fp);fp=fopen("show.txt","r");/ 对文档以只读的方式进展操作if(fp=NULL)专业资料整理WORD格式return -1;/ 当文件打不开时返回-1专业资料整理WORD格式elses=0;while(

34、!feof(fp)专业资料整理WORD格式fscanf(fp,"%s%s%d%s%s%d专业资料整理WORD格式",1,sss.no,&sss.bh,2,sss.writer,&sss.o);/ 将文档里面的数据格式化专业资料整理WORD格式读取到构造体数组里面s+;s=s-1;fclose(fp);return 0;/ 当操作全部正确时返回0int xzc(char no12,char key110,char key210,char name10)/ 读者注册函数int x=0; for(x=0;x<=i;x+)if(

35、!strcmp(no,stux.no)/ 判断读者输入的账号与构造体里面的账号是否一样return -21;break;if(x=i && strcmp(no,stux.no)/判断读者输入的账号与构造体里面的账号是否相同if(!strcmp(key1,key2)/ 判断读者两次输入的密码是否一致i=i+1;strcpy(,name);strcpy(stui.no,no);专业资料整理WORD格式strcpy(stui.key,key1);fp=fopen("reader.txt","a");/ 对文件以写的方式将注册的

36、信息保存到文件里面if(fp=NULL)return -16;elsefprintf(fp,"%stt%stt%sn",,stui.no,stui.key);fclose(fp);return 0;elsereturn -5;int exam(char no10,char key10,int n)/ 密码账号检验函数 int x;专业资料整理WORD格式if(n=0)/对读者的密码和账号信息进展检验专业资料整理WORD格式for(x=0;x<=i;x+)专业资料整理WORD格式if(!strcmp(no,stux.no)/ 判断该账号是否存在if(!

37、strcmp(key ,stux.key)/ 当账号存在时判断与之相应的密码是否一样return 0;break;elsereturn -4;break;if(x=i && strcmp(no,stux.no)专业资料整理WORD格式return -3;if(n=1)/对管理员的密码账号信息进展检验for(x=0;x<=i;x+)if(!strcmp(no,adx.no)/判断该账号是否存在if(!strcmp(key ,adx.key)/ 判断与之相应的密码是否存在return 0;break;elsereturn -4;break;if(x=j &&

38、strcmp(no,adx.no)return -3;int zj(struct book b)/管理员增加图书信息函数int x;for(x=0;x<=k;x+)if(bbx.bh=b.bh)/ 判断所增加的图书编号是否已存在return -13;break;if(!strcmp(,)&&!strcmp(b.writer,bbx.writer)/判断所增加的图书是否存在 return -17;专业资料整理WORD格式break;if(x=k)专业资料整理WORD格式if(strlen()=0)/ 判断文档的第一行是否为空k=k

39、;elsek=k+1;bbk.bh=b.bh;/ 将所增加的图书信息添加到构造体里面strcpy(,);strcpy(bbk.classic,b.classic);strcpy(bbk.writer,b.writer);bbk.zn=b.zn;bbk.jn=b.jn;fp=fopen("book.txt","a");/将增加的图书信息追加到文件里面if(fp=NULL)return -16;else专业资料整理WORD格式fprintf(fp,"%dt%-30st%-30st%-10st%dt%dn",bb

40、k.bh,,bbk.classic,bbk.writer, bbk.zn,bbk.jn);fclose(fp);return 0;int sc(int bh)/ 管理员删除图书信息函数int x; for(x=0;x<=k;x+)if(bbx.bh=bh)/ 判断所删除图书的编号是否存在if(bbx.jn!=0)return -22;for(x=x;x<=k-1;x+)bbx=bbx+1; /删除图书信息后将该图书信息后面的图书信息依次前移k-;fp=fopen("book.txt","w+"); / 将删除后的所有图书信息重

41、新写入文档 if(fp=NULL)专业资料整理WORD格式return -16;elsefor(x=0;x<=k;x+)fprintf(fp,"%dt%-30st%-30st%-10st%dt%dn",bbx.bh,,bbx.classic,bbx.writer, bbx.zn,bbx.jn);fclose(fp);return 0;break;int mp(char no12,char key110,char key210,char key310,int n) /密码修改函数int x;if(n=0)/读者密码修改for(x=0;x<=i;x+

42、)if(!strcmp(no,stux.no) /定位读者账号位置专业资料整理WORD格式if(!strcmp(stux.key,key1) /if(!strcmp(key2,key3)判断输入的原密码是否正确/ 判断两次输入的新密码是否一致专业资料整理WORD格式专业资料整理WORD格式strcpy(stux.key,key3);fp=fopen("reader.txt","w+"); /将修改后的信息保存在文件里面 if(fp=NULL)return -16;elsefor(x=0;x<=i;x+)fprintf(fp,"%stt%s

43、tt%sn",,stux.no,stux.key);fclose(fp);return 0;专业资料整理WORD格式elsereturn -5;elsereturn -11;if(n=1)/管理员密码修改for(x=0;x<=j;x+)if(!strcmp(no,adx.no)/定位管理员账号位置专业资料整理WORD格式if(!strcmp(key1,adx.key)/ 判断输入的原密码是否正确专业资料整理WORD格式if(!strcmp(key2,key3)/ 判断两次输入的新密码是否一致专业资料整理WORD格式strcpy(adx.key,key3);fp

44、=fopen("ad.txt","w+");/将修改后的信息保存在文件里面if(fp=NULL)return -16;elsefor(x=0;x<=j;x+)fprintf(fp,"%stt%stt%sn",,adx.no,adx.key);fclose(fp);return 0;elsereturn -5;elsereturn -11;专业资料整理WORD格式int xg(struct book b)/ 管理员修改图书信息函数int x;if(strlen()=0)/ 判断所输入的要修改的图书名字是

45、否为空return -7;elseif(strlen(b.writer)=0)/ 判断所输入的要修改的图书作者是否为空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.zn=b.zn;bbx.jn=b.jn;fp=fopen("book.txt","w+"); / 将修改后的所有信息 保存在文件里 if(fp=NULL)return -16;elsefor(x=0;x<=k;x+)fprintf(fp,"%dt%-30st%-30st%-10st%dt%dn",bbx.bh,b

温馨提示

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

评论

0/150

提交评论