《C语言作业图书信息管理系统最终源代码.doc》由会员分享,可在线阅读,更多相关《C语言作业图书信息管理系统最终源代码.doc(32页珍藏版)》请在三一办公上搜索。
1、C语言 图书信息管理系统 最终源代码中荷生医 #include<stdio.h>#include"string.h" struct book /* book2 是用来装用户要录入图书的信息*/long num,time;char name12,writer12,fenlei8,danwei10;int pay;stu100;struct book1long num,time;char name12,writer12,fenlei8,danwei10;int pay;stu1100;struct book2 /* book 是用来装cc.dat 文件中的图书信息
2、*/long num,time;char name12,writer12,fenlei8,danwei10;int pay;stu2100; denglu()char a15="drzhang",b15="29257966",c15,d15;L3:system("cls");printf(" 欢迎登陆图书管理系统 nn");printf("请输入姓名:");gets(c);printf("请输入密码:");gets(d);if(strcmp(a,c)=0&&s
3、trcmp(b,d)=0)return 0;elseprintf("输入错误请重新输入nn");printf("1.重新输入 2.退出系统 nn");printf("请输入.");switch(getch()case 49: goto L3;break;default: return 56;break; /*此功能实现的是 开始菜单 的显示和具体功能的选择*/start()printf("*"); 欢迎使用图书管理系统printf("* 功能目录: *");printf("* |*&q
4、uot;);printf("* | | *");printf("* | 1、图书查询 2、图书浏览 3、录入图书 4、删除与修改 5、备份与还原| *");printf("* | | *");printf("* | | *");printf("* | | *");printf("* |*");printf("* 使用说明:如要选择“图书查询”,直接输入:1 退出:0*"); printf("*");printf("你想要做什么
5、:");return getch(); /*输入选择对应功能的值,返回输入的值,即:用于判断选择的功能*/ /*实现备份功能,以防图书信息出错带来的麻烦,不必看懂*/beifen()FILE *fp1,*fp2;int i,a;jieshuo();system("cls");printf("nn请选择 备份(B)| 浏览备份(L) / 还原(H) / 退出(Q) / n");switch(getch()case B:case b:if(fp1=fopen("cc","r")=NULL)printf(&qu
6、ot;不能打开次文件n");exit(0);if(fp2=fopen("cc01","w")=NULL)printf("不能打开次文件n");exit(0);fscanf(fp1,"%d",&a);fprintf(fp2,"%dn",a);printf("nn确认备份吗?(Y/N)");switch(getch()case Y:case y:for(i=0;i<a;i+) fscanf(fp1,"%ld %s %s %s %s %ld %d&
7、quot;,&stui.num,stui.name,stui.writer,stui.fenlei,stui.danwei,&stui.time,&stui.pay); fprintf(fp2,"%ldt%st%st%st%st%ldt%dn",stui.num,stui.name,stui.writer,stui.fenlei,stui.danwei,stui.time,stui.pay);printf("nn备份成功!nn是否打开浏览备份文件?(Y/N)"); switch(getch()case Y:case y:fclos
8、e(fp1);fclose(fp2);liulan02();break; case N:case n:break;break;case N:case n:break;fclose(fp1);fclose(fp2);break;case H:case h:if(fp1=fopen("cc01","r")=NULL)printf("不能打开此文件n");exit(0);if(fp2=fopen("cc","w")=NULL)printf("不能打开此文件n");exit(0);f
9、scanf(fp1,"%d",&a);fprintf(fp2,"%dn",a);printf("nn确认还原吗?(Y/N)");switch(getch()case Y:case y:for(i=0;i<a;i+) fscanf(fp1,"%ld %s %s %s %s %ld %d",&stui.num,stui.name,stui.writer,stui.fenlei,stui.danwei,&stui.time,&stui.pay); fprintf(fp2,"
10、%ldt%st%st%st%st%ldt%dn",stui.num,stui.name,stui.writer,stui.fenlei,stui.danwei,stui.time,stui.pay);printf("nn还原成功!nn是否打开浏览还原文件?(Y/N)");switch(getch()case Y:case y:fclose(fp1);fclose(fp2);liulan();break;case N:case n:break;break; case N:case n:break;fclose(fp1);fclose(fp2);break;case
11、l:case L:liulan02();break;case Q:case q:break; /* 在屏幕上打印 查询菜单 */chaxun()jieshuo();system("cls");printf("*欢迎使用图书查询系统*");printf("* 查询方式: *");printf("*");printf("* 1、书名 2、作者名 3、出版时间 *");printf("*");printf("* 4、价格 5、分类号 6、出版单位 *");pri
12、ntf("*");printf("* 使用说明:如要选择“书名”,直接输入:1 退出:0*"); printf("*");printf("n请输入你要怎么查询:");chaxun01(); /*打印完毕后,进入chaxun()函数,执行用户需要的查询功能*/ /*此程序段实行查询的各种功能*/chaxun01()FILE *fp;char ch8;int a=0,i,j,k,n=0,c,d;long b; if(fp=fopen("cc","r")=NULL) /*说明:cc
13、.dat 文件装着图书的信息,*/printf("不能打开此文件n");exit(0); /*并且文件开记录的是图书的书量,后 */fscanf(fp,"%d",&a); /*从文件中读出图书数*/ /*面依次才是具体信息。 */for(i=0;i<a;i+) /*并用a记录下来,然后依次打录图书信息装到缓冲区的 stu 中,待用*/ fscanf(fp,"%ld %s %s %s %s %ld %d",&stui.num,stui.name,stui.writer,stui.fenlei,stui.danwei
14、,&stui.time,&stui.pay); strcpy(stu1i.name,stui.name);strcpy(stu1i.writer,stui.writer);strcpy(stu1i.fenlei,stui.fenlei);strcpy(stu1i.danwei,stui.danwei);strlwr(stu1i.name);strlwr(stu1i.writer);strlwr(stu1i.fenlei);strlwr(stu1i.danwei);L1:switch(getch() /*用switch()函数实现 查询方式 所提供的各种功能,getch()的返回
15、值是ASCII码*/case 48:break;case 49: printf("1nn请输入你要找的书名:");gets(ch); /*用户输入要找的书,下同*/strlwr(ch);printf("n");printf("你要找的书可能是:nn");printf("登录号 书名 作者 分类号 出版单位 出书时间 价格nn");for(i=0;i<a;i+) /* 查询的方法是像字符比较函数的方式一 */k=0; /* 样,一个一个地必须字母是否相同,直 */for(j=0;j<8;j+) /* 出现
16、不同时才停止比较,每比较一个字 */if(chj=stu1i.namej&&chj!= )/* 母相同,用k作计数器记下来,最后若 */k+; /* k>=4 就将能和用户要找的书名相同4个 */if(k>=4) /* 字母的图书打印出来。 按作者,分类号 */ /* 出版单位的查询方法相同。 */ printf("%ldt%st%st%st%st%ldt%dn",stui.num,stui.name,stui.writer,stui.fenlei,stui.danwei,stui.time,stui.pay);n+;if(n>0)prin
17、tf("n你要找的书共有%d本nnnnn",n);if(n=0) system("cls");printf("nn对不起,没有你要找的书!nn");break;case 50:printf("2nn请输入你要找的书的作者:");gets(ch);strlwr(ch);printf("n");printf("你要找的书可能是:nn");printf("登录号 书名 作者 分类号 出版单位 出书时间 价格nn");for(i=0;i<a;i+)k=0;f
18、or(j=0;j<8;j+)if(chj=stu1i.writerj)k+;if(k>=4) printf("%ldt%st%st%st%st%ldt%dn",stui.num,stui.name,stui.writer,stui.fenlei,stui.danwei,stui.time,stui.pay);n+; if(n>0)printf("n你要找的书共有%d本nnnnn",n); if(n=0) system("cls");printf("nn对不起,没有你要找的书!nn"); break
19、;case 51:printf("3nn请输入你要找的书的出版时间:");scanf("%ld",&b); /*用户输入要找书的出版时间*/printf("n");printf("你要找的书如下:nn");printf("登录号 书名 作者 分类号 出版单位 出书时间 价格nn");for(i=0;i<a;i+)if(b=stui.time) /*直接将用户输入的数和储存在缓冲区中的数据比较就可以了,下同*/ printf("%ldt%st%st%st%st%ldt%dn
20、",stui.num,stui.name,stui.writer,stui.fenlei,stui.danwei,stui.time,stui.pay);n+;if(n>0)printf("n你要找的书共有%d本nnnnn",n);if(n=0) system("cls");printf("nn对不起,没有你要找的书!nn"); break;case 52:printf("4nn请输入你要找的书的价格:");scanf("%d",&c);printf("n&qu
21、ot;);printf("你要找的书如下:nn");printf("登录号 书名 作者 分类号 出版单位 出书时间 价格nn");for(i=0;i<a;i+)if(c=stui.pay) printf("%ldt%st%st%st%st%ldt%dn",stui.num,stui.name,stui.writer,stui.fenlei,stui.danwei,stui.time,stui.pay);n+;if(n>0)printf("n你要找的书共有%d本nnnnn",n);if(n=0) syst
22、em("cls");printf("nn对不起,没有你要找的书!nn"); break;case 53:printf("5nn请输入你要找的书的分类号:");gets(ch);strlwr(ch);printf("n");printf("你要找的书可能是:nn");printf("登录号 书名 作者 分类号 出版单位 出书时间 价格nn");for(i=0;i<a;i+)k=0;for(j=0;j<8;j+)if(chj=stu1i.fenleij)k+;if(k
23、>=6) printf("%ldt%st%st%st%st%ldt%dn",stui.num,stui.name,stui.writer,stui.fenlei,stui.danwei,stui.time,stui.pay);n+; if(n>0)printf("n你要找的书共有%d本nnnnn",n); if(n=0) system("cls");printf("nn对不起,没有你要找的书!nn"); break; case 54:printf("6nn请输入你要找的书的出版单位:"
24、;); gets(ch); printf("n");printf("你要找的书可能是:nn");printf("登录号 书名 作者 分类号 出版单位 出书时间 价格nn");for(i=0;i<a;i+)k=0;for(j=0;j<8;j+)if(chj=stu1i.danweij)k+;if(k>=4) printf("%ldt%st%st%st%st%ldt%dn",stui.num,stui.name,stui.writer,stui.fenlei,stui.danwei,stui.time
25、,stui.pay);n+;if(n>0)printf("n你要找的书共有%d本nnnnn",n);if(n=0) system("cls");printf("nn对不起,没有你要找的书!nn"); break;default:printf("nn操作错误 按任意键返回n");getch();goto L1;break; /* 系统结束时的动画效果 */ jieshu()int i;for(i=0;i<20;i+)printf("*谢谢使用图书管理系统*");printf("
26、;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 谢谢使用图书管理系统1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 "); printf("2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 谢谢使用图书管理系统2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 "); printf("3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 谢谢使用图书管理系统3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 "); printf("5 5 5 5 5 5 5 5 5 5 5 5
27、 5 5 5 谢谢使用图书管理系统5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 "); printf("6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 谢谢使用图书管理系统6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 "); printf("7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 谢谢使用图书管理系统7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 ");printf("8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 谢谢使用图书管理系统8 8 8 8
28、8 8 8 8 8 8 8 8 8 8 8 "); printf("9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 谢谢使用图书管理系统9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 "); printf("0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 谢谢使用图书管理系统0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "); system("cls");printf("nnnn");printf(" TTTTTTT HHH HHH A NN N
29、 K KKn");printf(" T T T H H A A N N N K Kn");printf(" T H H A A N N N K Kn");printf(" T HHHHHH AAAAA N N N KK Kn");printf(" T H H A A A N N N K Kn");printf(" T H H A A N N N K Kn");printf(" TTT HHH HHH AA AA N NN K KKKn");printf("
30、n");printf(" YY YY OOOO U Un");printf(" Y Y O O U Un"); printf(" YYY O O U Un"); printf(" Y O O U Un"); printf(" Y O O U Un"); printf(" Y O O U Un"); printf(" YYY OOOO UUUUn"); printf("nnnn"); /*此程序实现的是 检索 开始进入程序时图书
31、馆内是否有图书,如果没有,很多功能不能实现*/jieshuo()FILE *fp;int n;char a;system("cls"); /*清掉前面显示在屏幕上的所有 /* 这部分的程序是实现检索的主体,首先,判断 */printf("NO");exit(0); /* 图书信息是否完整,若不完整,运行系统可能 */fscanf(fp,"%d",&n); /* 会出现乱码等一系列现象,所以主要判断文件*/fclose(fp);*/ /* 开头是否完整就可以了,一般情况下,图书不if(n>-32767&&n
32、<32768&&n!=0); /* 会太多,于是检索图书量是否在int范围 /* 若果图书信息不在int型范围 /* 就应该提示是否增加图书,以保 */case Y:printf("n");zengjia();break; /* 证系统能正常运行。 */case n: /* 选是 运行zengjia()函数增加 */case N:printf("n");break; /* 图书,否则,退出检索。 */ /*此程序实现的是程序开始时的开始动画*/kaishi()int i;system("cls");printf(
33、"nnnnnnnnnnn");printf(" # # # # # # # n");printf(" # # # # # # # # #n");printf(" # # # # # # # # # # # # #n");printf(" # # # # # # # # # #n");printf(" # # # # # # # # # # # # #n");printf(" # # # # # # # # #n");printf(" # # #
34、# #n");printf(" WELCOME TO . # # # # #n");printf(" .USE THE LIBRARY SYSTEM # # # # #nn");printf(" 题目: 图书管理系统nn");printf(" 成员:liukaihua zhangdongrui linxiaozhou nn");printf(" nn"); printf(" 编写语言:C 语言 工具:C-Free 4.1nn"); printf("nnn&
35、quot;);printf("按任意键进入.");getch();system("cls"); /*浏览菜单*/liulan()jieshuo();system("cls");printf("*"); 欢迎使用图书浏览系统printf("* 浏览方式: *");printf("*");printf("* 1、书名 2、直接浏览 *");printf("*");printf("* 使用说明:如要选择“书名”,直接输入:1 退出:Q *"); printf("*");printf("请选择你要浏览的方式:");liulan01(); /*浏览功能*/liulan01()FILE *fp; /* 将文件中的信息存到缓冲区,然后打印打屏幕上即可 */int i,a;if(fp=fope