图书馆管理系统C语言程序设计.docx
- 文档编号:5535120
- 上传时间:2022-12-19
- 格式:DOCX
- 页数:61
- 大小:56.90KB
图书馆管理系统C语言程序设计.docx
《图书馆管理系统C语言程序设计.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统C语言程序设计.docx(61页珍藏版)》请在冰豆网上搜索。
图书馆管理系统C语言程序设计
HUNANUNIVERSITY
C语言程序训练
报告
【设计目的】
图书信息包括:
读者登录号、管理员登录号、图书编号、作者名、种类、出版社、图书库存、图书借出数目等.
图书信息管理系统,使之能提供以下功能:
1)系统以菜单方式工作
2)读者注册功能
3)读者登录功能
4)读者借书还书功能
5)查询读者借阅记录
6)查询在管图书信息功能
7)修改密码功能
8)管理员登录功能
9)增加、修改、删除图书功能
10)查看图书信息功能
【设计思路】
根据题目要求,应当把图书信息用结构体形式输入,应该提供以下结构体和文件的输入等操作:
在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:
另外还需提供选择菜单实现功能,在运行时达到所要求的目的;管理员和读者登录界面及各自功能应有不同的实现。
【总体设计】
【详细设计】
1.主函数
主函数设计要求简洁,只提供部分提示语和函数的调用
源代码为
//rkou.c程序的入口
#include
#include
#include
#include
#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);
}
system("pause");
}
2.程序中全局变量声明定义,以及所有函数声明
源代码为
structbook//图书结构体声明
{charname[50],classic[10],writer[20];//书名,类别,作者
intjn;//借出数量
intzn;//在馆数量
intbh;//图书编号
};
structinformation//管理员和读者结构体声明
{charname[10],no[12],key[10];//姓名,账号,密码
};
structshow//图书借阅记录的结构体声明
{
charname1[10],name2[50],writer[20],no[12];//书名,读者姓名,书的作者,读者账号
intbh,o;//图书编号,借阅状况(未还,已还)
};
//以下为用到的全局变量
structbookbk;
structinformationaa,rr;
structinformationstu[100];
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]);//读者注册函数
intexam(charno[10],charkey[10],intn);//密码账号检验函数
intmp(charno[12],charkey1[10],charkey2[10],charkey3[10],intn);//密码修改函数
voidpaixu();//对图书按照编号从小到大的顺序进行排列
intsc(intbh);//管理员删除图书信息函数
intzj(structbookbb);//管理员增加图书信息函数
intxg(structbookbb);//管理员修改图书信息函数
intjs(intbh,charno[12]);//借书函数
inths(intbh,charno[12]);//还书函数
intbh1(intbh);//判断该编号的图书信息是否存在函数
voidbh2(intbh);//按照图书编号显示图书信息函数
intsm1(charname[50]);//判断是否存在该名字的图书信息函数
voidsm2(charname[50]);//按照图书名字显示图书信息函数
intzz1(charwriter[20]);//判断是否存在该作者的图书信息函数
voidzz2(charwriter[20]);//按照图书作者显示图书信息函数
voidlb(charclassic[10]);//按类别显示图书信息
intrck1(intbh);//判断该编号的图书的借书记录是否存在
voidrck2(intbh);//按编号显示图书借书情况
intgck21(charno[12]);//判断该账号读者的借书记录是否存在
voidgck22(charno[12]);//按读者显示借书情况2
voidgck12();//显示全部借书情况
voidgck23();//管理员查看所有书的信息
voidcopy(intbh);//按编图书编号将图书信息暂时保存在另外一个结构体里面
voidcopy2(charno[12]);//按管理员账号将管理员信息暂时保存在另外一个结构体里面
voidcopy3(charno[12]);//按读者账号将读者信息暂时保存在另外一个结构体里面
//pic()函数:
每个函数表示一个界面,conects函数将它们连接起来
voidpic0();
voidpic1();
voidpic2();
voidpic3();
voidpic4();
voidpic5();
voidpic6();
voidpic7();
voidpic8();
voidpic9();
voidpic10();
voidpic11();
voidpic12();
voidpic13();
voidpic14();
voidpic15();
voidpic16();
voidpic17();
voidpic18();
voidpic19();
voidpic20();
voidpic21();
voidpic22();
voidpic23();
voidpic24();
voidpic25();
voidpic26();
voidpic27();
voidpic29();
voidpic30();
voidpic31();
voidpic32();
voidpic33();
voidpic34();
voidpic35();
voidpic36();
voidpic37();
voidpic38();
voidpic39();
voidpic40();
voidpic41();
voidpic42();
voidpic43();
voidpic44();
voidpic45();
voidpic46();
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;
}
voidpassword(char*a,intb,intj)
{charc;
inti=0;
while((c=getch())!
='\r')
{if(c==8)
{printf("\b\b");
if(i>0)
i--;
}
elseif(i {if(b)printf("*"); elseprintf("%c",c); a[i]=c; i++; } if(i==j) {printf("\a"); } } a[i]='\0'; printf("\n"); } voidexamine(int*a,intb) {while(! scanf("%d",a)) {while(getchar()! ='\n'); 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; } else {i=mp(rr.no,c1,c2,c3,b); if(i) {eros(i);n=44; } elsen=43; } } voidinputs0() {inti=1; while(i==1) {printf("1.A类\n2.B类\n3.C类\n4.D类\n5.E类\n6.F类\n"); examine(&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; case5: strcpy(bk.classic,"E类");i=0;break; case6: strcpy(bk.classic,"F类");i=0;break; default: i=1; } } } voidinputs1(inta,intb,intc,intd,inte) {inti; switch(a) {case1: printf("请输入图书编号: \n");examine(&bk.bh,1); default: ; } switch(b) {case1: printf("请输入图书名称: \n");gets(bk.name); 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: ; } } voidinputs2(inta,intb,intc) {switch(a) {case1: printf("请输入账号: \n");password(aa.no,0,11); default: ; } switch(b) {case1: printf("请输入密码: \n");password(aa.key,1,9); default: ; } switch(c) {case1: printf("请输入姓名: \n");gets(aa.name); default: ; } system("cls"); } voidinputs3(inta,intb,intc) {switch(a) {case1: printf("请输入账号: \n");password(rr.no,0,11); default: ; } switch(b) {case1: printf("请输入密码: \n");password(rr.key,1,9); default: ; } switch(c) {case1: printf("请输入姓名: \n");gets(rr.name); 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; 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: ; } } voidconects(intj) {switch(j) {case0: pic0();break; case1: pic1();break; case2: pic2();break; case3: pic3();break; case4: pic4();break; case5: pic5();break; 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();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; 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();break; case44: pic44();break; case45: pic45();break; case46: pic46();break; case47: pic47();break; default: ; } } 4.文件操作各种函数 源代码为 //jiangzhuo1.h文件操作各种函数 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;//当文件打不开时返回-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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 管理 系统 语言程序设计