20##年第二阶段课程设计成果报告
实训项目: 程序设计技术课程设计
学号: 姓名: 专业:
实训日期:20##年6月 27 日至20##年7月8日
指导教师: 实训成绩:
江西财经大学信息管理学院
一、 问题概述
通过我们所学到的C语言基础知识,编写一个程序实现图书馆管理信息系统。并通过这次实训,提高我们对C语言在实际应用的了解。主要实现的功能有对图书信息的处理、查找图书、借书、还书和统计等。利用计算机,让读者和图书馆管理人员都得到便利。
二、 系统目标
通过C语言程序设计编写代码,实现对图书馆的信息处理。主要功能为:添加图书、删除图书、修改图书信息、在显示屏上显示图书信息、将图书信息显示在txt文档中、按图书编号查找图书、按图书名查找图书、按图书作者查找图书、借书、还书、统计超期图书数量、统计按期归还率等。
三、 设计的过程及步骤
1、需求分析
随着计算机的不断普及,各个领域在不同程度上都利用计算机使工作更加高效的运作,当然图书馆也不例外!运用计算机管理图书馆的信息,能更加高效便捷的完成图书馆的工作,不管是对读者还是图书馆管理者都是非常有用的!
图书馆的图书信息非常庞大,人工的操作费时又费力。计算机的出现成功的解决了这一问题。图书馆管理人员只要将图书信息输入计算机中,并通过图书馆管理系统进行有效的操作,让计算机帮助我们完成更多的工作。
2、设计文件结构
图书信息文件(book.red),主要存储图书的信息。
图书借还信息文件(sircula.red),主要存储读者借书和还书的信息。
索引是直接对图书信息文件盒图书借还信息文件进行操作,实现索引的功能。
3、设计系统功能图
(根据需求分析结果和文件结构,应用结构化分析与设计技术设计功能结构图,如下图所示)
4、函数设计
( 详细分析每一个子模块的子功能,定义主要的子函数原型,并对每一个函数的功能加以说明)
void chabook(); //按图书编号查找书
void scan(); //输入图书图书信息
void readrec(); //在显示屏显示图书所有信息
void readtxt (); //打印报表,生成txt文档显示所有图书信息
void addbook(); //增加图书
void deletebook(); //删除图书
void change(); //修改图书信息
void chabookm(); //按图书名查找图书
void chabookw(); //按图书作者查找图书
void chabookl(); //按图书类型查找图书
void borrowbook(); //借书
void backbook(); //还书
void chaoqi(); //统计超期的图书数量
void anqi(); //统计按期归还率
四、 实训成果
主要的操作界面如下:
1、系统主界面:
2、查找图书界面:
3、图书信息处理界面:
4、借书还书和统计:
5、成功查找图书:
6、在显示屏上输出图书信息:
7、将图书信息打印成txt文档:
8、借书:
9、成功借书:
10、还书:
11、统计超期图书册数:
五、 实训心得与体会
在这短短的十天中,第一天完全不知道怎么开始,不知道一个比较完整的程序应该要包含什么要素。在老师和同学的帮助下才把一行行的代码写了出来。
在我们编写程序的过程中,把我们平时所学的知识都运用到了!使我们对平时所学的知识得到了进一步的巩固,这是一次很好的锻炼。分组可以让我们遇到不懂的问题的时候能够互相帮助,有利于我们学会团结合作,相互学习。
在编程的过程中,经常会因为一个小小的问题需要调试很久,有的问题是技术问题,这是我们的能力所限制的,但是有的问题是因为不细心,没有良好的编程习惯所导致的问题!所以在学习编程的过程中,不仅要学会怎么编程,更需要养成良好的编程习惯!在调试的过程中要细心和耐心的查找错误!
虽然大部分的功能都实现了,但是还是不能运用到实际当中,因为这个程序还不是很完善,不是一个非常健壮的程序,只有按正确的步骤才能完成操作!对于不熟悉此系统的人,就很难操作,但是我们的要求是为了在实际中使用!功能也不是很全面,还有待提高!
当最后终于把大部分功能都实现的时候,我们每一个人都很高兴!刚开始听说要编写这么大的一个程序的时候,觉得这是不可思议的,我们怎么能写出来呢!但是经过将近十天的努力,我们还是做到了!
通过十天左右的实训,我们的收获很多,要想成功的编写一个程序,我们需要学习的东西还有很多。只有不断增加我们的知识,我们才能不断的提高!
六、 附录
(程序源代码:程序要求符合格式规范。为了便于阅读和理解,要求加上适当的注释说明。)#include <stdio.h>
#include <stdlib.h>
#include<string.h>
void start() ;
void menu();
void panduan();
void chabook(); //按图书编号查找书
void scan(); //输入图书图书信息
void readrec(); //在显示屏显示图书所有信息
void readtxt (); //在txt文档显示所有图书信息
void addbook(); //添加图书信息
void chabookm(); //按图书名查找图书
void chabookw(); //按图书作者查找图书
void chabookl(); //按图书类型查找图书
void deletebook(); //删除图书
void change(); //修改图书信息
void borrowbook(); //借书
void backbook(); //还书
void chaoqi(); //统计超期的图书数量
void anqi(); //统计按期归还率
struct{
long booknum; //图书编号
char bookname[100]; //图书名
char booktype[100]; //图书类型
char writer[100]; //作者
char publish[100]; //出版社
int number; //图书总册数
int yushu; //图书余数
int biaoji; //标记,作为判断是否读取的数据的标志。为"1"则读取,为"0"则不读取。
} book;
struct {
long shuhao; //图书书号
char lenddate[10]; //借书时间
char backdate[10]; //还书时间
char limitdate[10]; //应还时间
char studnum[8]; //读者学号
char name[20]; //读者姓名
int chaoqi; //是否超期("0"表示不超期,"1"表示超期)
int biaoji; //标记,作为判断是否还书的标志,为"1"则表示没有还书,为"0"表示此书已经还了并删除了记录。
} borrow;
/*========================================================================================================================*/
void main()
{ int j;
printf("\n\n\n\n ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅\n");
printf(" ┇ 欢迎进入图书管理信息系统 ┇\n");
printf(" ┇ ┇\n");
printf(" ┇ 对图书信息进行初始化请输入 1 ┇\n");
printf(" ┇ ┇\n");
printf(" ┇ 不对图书信息进行初始化请输入 0 ┇\n");
printf(" ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅");
printf("\n 请选择:");
scanf ("%d",&j);
if (j==1)
{scan();}
start();
menu(); /*调用主菜单*/
}
/*===========================================================================================================================*/
void menu() /*主菜单*/
{
for(;;)
{
int a,b,c,d;
printf("\n\n ================================================================\n");
printf(" |☆ 请选择所需要的操作: ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 0-----退出系统 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 1-----查找图书 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 2-----对图书信息进行处理 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 3-----借书还书和统计 ☆|\n");
printf(" ================================================================\n");
printf("\n 请选择:");
printf("\t");
scanf("%d",&a);
if(a==0)
{
system("cls");
printf("\n\n\n\n\n\n ☆☆☆☆--------欢迎下次使用本系统!!!!--------☆☆☆☆\n\n\n\n\n\n");
getchar();
exit(0);
}
if(a==1)
{
system("cls");
printf("\n\n ================================================================\n");
printf(" |☆ 请选择所需要的操作: ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 0-----退出系统 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 1-----按图书编号查找书籍 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 2-----按图书名查找图书 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 3-----按图书作者查 ☆|\n");
printf(" ================================================================\n");
printf("\n 请选择:");
printf("\t");
scanf("%d",&b);
switch(b) /*功能选择*/
{ case 0:
system("cls");
printf("\n\n\n\n\n\n ☆☆☆☆--------欢迎下次使用本系统!!!!--------☆☆☆☆\n\n\n\n\n\n");
getchar();
exit(0);
case 1: chabook(); panduan(); continue;
case 2: chabookm(); panduan(); continue;
case 3: chabookw(); panduan(); continue;
default:printf("\n错误!");
exit(0);
}
}
if (a==2)
{
system("cls");
printf("\n\n ================================================================\n");
printf(" |☆ 请选择所需要的操作: ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 0-----退出系统 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 1-----添加图书 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 2-----删除图书记录 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 3-----修改图书信息 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 4-----在显示屏输出图书的信息 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 5-----将图书信息输出在txt文件中 ☆|\n");
printf(" ================================================================\n");
printf("\n 请选择:");
printf("\t");
scanf("%d",&c);
switch(c) /*功能选择*/
{
case 0:
system("cls");
printf("\n\n\n\n\n\n ☆☆☆☆--------欢迎下次使用本系统!!!!--------☆☆☆☆\n\n\n\n\n\n");
getchar();
exit(0);
case 1: addbook(); panduan(); continue;
case 2: deletebook(); panduan(); continue;
case 3: change(); panduan(); continue;
case 4: readrec(); panduan(); continue;
case 5: readtxt(); panduan(); continue;
default:printf("\n错误!");
exit(0);
}
}
if(a==3)
{
system("cls");
printf("\n\n ================================================================\n");
printf(" |☆ 请选择所需要的操作: ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 0-----退出系统 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 1-----借书 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 2-----还书 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 3-----统计超期图书数量 ☆|\n");
printf(" |☆ ☆|\n");
printf(" |☆\t 4-----统计按期归还率 ☆|\n");
printf(" ================================================================\n");
printf("\n 请选择:");
printf("\t");
scanf("%d",&d);
switch(d) /*功能选择*/
{ case 0:
system("cls");
printf("\n\n\n\n\n\n ☆☆☆☆--------欢迎下次使用本系统!!!!--------☆☆☆☆\n\n\n\n\n\n");
getchar();
exit(0);
case 1: borrowbook(); panduan(); continue;
case 2: backbook(); panduan(); continue;
case 3: chaoqi(); panduan(); continue;
case 4:anqi(); panduan(); continue;
default:printf("\n错误!");
exit(0);
}
}
if(a<0||a>3)
{
printf("\n错误!请重新输入:");
exit(0);
}
}
}
/*=========================================================================================================*/
void start()//系统首页
{
system("cls");
printf("\n\n\n\n 欢迎使用图书管理系统\n");
printf("\n\n\n\n 按 enter 键 进 入 系 统 ...");
getchar();
system("cls");
}
void panduan()
{
char ch;
for(;;)
{
printf("是否继续进行操作(y/n):");
scanf("%c",&ch);
if(ch=='n')
{
system("cls");
printf("\n\n\n\n\n\n ☆☆☆☆--------欢迎下次使用本系统!!!!--------☆☆☆☆\n\n\n\n\n\n");
getchar();
exit(0);
}
if (ch=='y')
{
system("cls");
break;
}
}
}
/*===============================================================================================================*/
void scan() //输入图书信息
{
int i=1;
struct{
long booknum;
char bookname[100];
char booktype[100];
char writer[100];
char publish[100];
int number;
int yushu;
int biaoji;
} book[1000];
FILE *fp;
char numchr[80],ch='y';
if((fp=fopen("book.rec","wb"))==NULL)
{
printf("cannot open book.rec.\n");
exit(0);
}
system("cls");
while(ch=='y'||ch=='Y')
{
printf("请输入图书名编号(注意:图书编号为除1000的四位数,首位不能为0 ):");
scanf ("%ld",&book[i].booknum);
printf("请输入图书名:");
scanf("%s",book[i].bookname);
printf("请输入类型:");
scanf("%s",book[i].booktype);
printf("请输入作者:");
scanf("%s",book[i].writer);
printf("请输入出版社:");
scanf ("%s",book[i].publish);
printf("请输入总册数:");
scanf ("%d",&book[i].number);
printf("请输入余数:");
scanf("%d",&book[i].yushu);
book[i].biaoji=1;
fwrite(&book[i],sizeof(book[i]),1,fp);
do
{
printf("Have another books (y/n)?");
gets(numchr);ch=numchr[0];
}
while(!(ch=='y'||ch=='n'||ch=='Y'||ch=='N'));
}
fclose(fp);
}
/*===============================================================================================================*/
void chabook()//按书籍编号查找书籍
{
int i,j=1;
FILE *fp;
int booknum;
system("cls");
if ((fp=fopen("book.rec","rb"))==NULL)
{ printf ("can not open book.tec.\n");
exit (0);
}
printf ("\n\n\n 请输入图书编号:");
scanf ("%ld",&booknum);
for(i=1;j!=0;i++)
{ fread(&book,sizeof(book),1,fp);
if(book.biaoji==0) continue;
if(booknum==book.booknum)
{
printf(" 查找的图书信息为:\n");
printf("┌───┬─────┬─────┬─────┬─────┬───┬───┐\n");
printf("│ 编号 │ 图书名 │ 图书类型 │ 作者 │ 出版社 │总册数│ 余数 │\n");
printf("├───┼─────┼─────┼─────┼─────┼───┼───┤\n");
printf ("│%6ld│%10s│%10s│%10s│%10s│%6d│%6d│\n",book.booknum,book.bookname,book.booktype,book.writer,book.publish,book.number,book.yushu);
printf("└───┴─────┴─────┴─────┴─────┴───┴───┘\n\n");
j=0;
}
if(feof(fp)!=0)
{
printf("\n\n\n ☆☆☆☆---------没有找到所要查找的书籍!!--------☆☆☆☆\n\n\n\n\n");
break;
}
}
fclose(fp);
}
/*===============================================================================================================*/
void readrec ()//输出所有图书的信息
{
FILE *fp;
system("cls");
if ((fp=fopen("book.rec","rb"))==NULL)
{ printf ("can not open book.rec.\n");
exit(0);
}
printf("\n\n图书信息为:\n");
printf("┌───┬─────┬─────┬─────┬─────┬───┬───┐\n");
printf("│ 编号 │ 图书名 │ 图书类型 │ 作者 │ 出版社 │总册数│ 余数 │\n");
while (fread(&book,sizeof(book),1,fp)==1)
{
if(book.biaoji==0) continue;
printf("├───┼─────┼─────┼─────┼─────┼───┼───┤\n");
printf("│%6ld│%10s│%10s│%10s│%10s│%6d│%6d│\n",book.booknum,book.bookname,book.booktype,book.writer,book.publish,book.number,book.yushu);
}
printf("└───┴─────┴─────┴─────┴─────┴───┴───┘\n");
printf ("\n");
fclose (fp);
}
/*===============================================================================================================*/
void addbook()//输入添加的图书信息/
{
FILE *fp;
char numchr[80],ch='y';
system("cls");
if((fp=fopen("book.rec","a"))==NULL)
{
printf("cannot open book.rec.\n");
exit(0);
}
while(ch=='y'||ch=='Y')
{
printf("请输入图书名编号:");
scanf ("%ld",&book.booknum);
printf("请输入图书名:");
scanf("%s",book.bookname);
printf("请输入类型:");
scanf("%s",book.booktype);
printf("请输入作者:");
scanf("%s",book.writer);
printf("请输入出版社:");
scanf ("%s",book.publish);
printf("请输入总册数:");
scanf ("%d",&book.number);
printf("请输入余数:");
scanf("%d",&book.yushu);
book.biaoji=1;
fwrite(&book,sizeof(book),1,fp);
do
{
printf("Have another books (y/n)?");
gets(numchr);ch=numchr[0];
}
while(!(ch=='y'||ch=='n'||ch=='Y'||ch=='N'));
}
fclose(fp);
}
/*===============================================================================================================*/
void chabookm()//按书名查找书籍
{
FILE *fp;
char name[100];
int j=1;
system("cls");
if ((fp=fopen("book.rec","r"))==NULL)
{ printf ("can not open book.rec.\n");
exit (0);
}
printf ("请输入图书名:\n");
scanf ("%s",name);
while(fread(&book,sizeof(book),1,fp)==1)
{
if(book.biaoji==0)
continue;
if(strcmp(name,book.bookname)==0)
{
printf("┌───┬─────┬─────┬─────┬─────┬───┬───┐\n");
printf("│ 编号 │ 图书名 │ 图书类型 │ 作者 │ 出版社 │总册数│ 余数 │\n");
printf("├───┼─────┼─────┼─────┼─────┼───┼───┤\n");
printf ("│%6ld│%10s│%10s│%10s│%10s│%6d│%6d│\n",book.booknum,book.bookname,book.booktype,book.writer,book.publish,book.number,book.yushu);
printf("└───┴─────┴─────┴─────┴─────┴───┴───┘\n\n");
j=0;
}
}
if(j==1)
printf("\n\n ******没有找到所要查找的书籍!!******\n\n\n\n\n");
fclose(fp);
}
/*===============================================================================================================*/
void deletebook()//删除图书记录
{
int num,i,j=1,t;
FILE *fp;
system("cls");
printf("请输入要删除图书记录的图书编号:");
scanf("%ld",&num);
if((fp=fopen("book.rec","r+b"))==NULL)
{ printf("打不开 图书信息文件 !\n");
exit(0);
}
for(i=1;j!=0;i++)
{ fread(&book,sizeof(book),1,fp);
if(book.biaoji==0)
continue;
if(num==book.booknum)
{
system("cls");
printf("\n\n\n\n\n ═════════════════════════\n");
printf("║ ║\n");
printf("║ 确定删除请输入 1 ║\n");
printf("║ ║\n");
printf("║ 取消删除请输入 0 ║\n");
printf("║ ║\n");
printf(" ═════════════════════════\n");
printf("\n 请输入:");
scanf("%d",&t);
if(t==1)
{
book.biaoji=0;
fseek( fp,-(long)sizeof(book),1);
fwrite(&book,sizeof(book),1,fp);
system("cls");
printf("\n\n\n\n *********成功删除!!!!*********\n\n\n\n\n");
j=0;
}
if(t==0)
{
system("cls");
printf("\n\n\n\n *********图书没有删除!!返回主菜单!!********\n\n\n\n\n\n\n");
j=0;
}
}
if(feof(fp)!=0)
{
printf("\n\n\n\n\n\n ********没有找到所要删除的书籍!!返回主菜单!!********\n\n\n\n\n");
j=0;
}
}
fclose(fp);
}
/*===============================================================================================================*/
void change() //修改图书信息
{
int bianhao;
FILE *fp;
system("cls");
if ((fp=fopen("book.rec","r+b"))==NULL)
{ printf ("can not open book.rec.\n");
exit(0);
}
printf ("请输入所要修改的图书编号:");
scanf("%d",&bianhao);
for (;;)
{ fread(&book,sizeof(book),1,fp);
if(book.biaoji==0) continue;
if (bianhao==book.booknum)
{fseek(fp,-(long)sizeof(book),1);
printf(" 请输入修改后的图书信息:\n\n\n");
printf(" 请输入图书名编号:");
scanf ("%ld",&book.booknum);
printf(" 请输入图书名:");
scanf("%s",book.bookname);
printf(" 请输入类型:");
scanf("%s",book.booktype);
printf(" 请输入作者:");
scanf("%s",book.writer);
printf(" 请输入出版社:");
scanf ("%s",book.publish);
printf(" 请输入总册数:");
scanf ("%d",&book.number);
printf(" 请输入余数:");
scanf("%d",&book.yushu);
book.biaoji=1;
fwrite(&book ,sizeof(book ),1,fp);
printf("\n 修改成功!\n\n");
break;
}
if(feof(fp)!=0)
{ printf(" 没有找到所要修改的书籍!! \n\n");
break;
}
}
fclose (fp);
}
/*===============================================================================================================*/
void borrowbook() //借书系统
{ FILE *fp1,*fp2;
int t;
long bianhao,shuhao;
system("cls");
if ((fp1=fopen("borrow.rec","a+b"))==NULL)
{ printf ("can not open borrow.rec");
exit(0);
}
printf("请输入书号(注意:书号为七位数,后四位为编号。):");
scanf("%ld",&shuhao);
if ((fp2=fopen("book.rec","r+b"))==NULL)
{ printf("can not open book.rec");
exit(0);
}
bianhao=shuhao%10000;
for (;;)
{
fread(&book,sizeof(book),1,fp2);
if(book.biaoji==0)
continue;
if (bianhao==book.booknum)
{
printf ("所借书的信息为:");
printf("\n图书编号为:");
printf("%ld",book.booknum);
printf("\n图书名:" );
puts(book.bookname);
printf("\n类型:");
puts(book.booktype);
printf("\n作者:");
puts(book.writer);
printf("\n出版社: ");
puts(book.publish);
printf("\n总册数 : ");
printf("%d",book.number);
printf("\n\n余数为:");
printf("%d\n",book.yushu);
printf("\n\n\n 确定------1 取消------0\n\n\n");
printf(" 请输入:");
scanf("%d",&t);
if(t==1) //判断是否借书
{
system("cls");
borrow.shuhao=shuhao;
printf(" 请输入借书时间(xxxx-xx-xx):");
scanf("%s",borrow.lenddate);
printf(" 请输入应该还书的时间(xxxx-xx-xx):");
scanf("%s",borrow.limitdate);
printf(" 请输入读者学号:");
scanf("%s",borrow.studnum);
printf(" 请输入读者姓名:");
scanf("%s",borrow.name);
borrow.chaoqi=0;
borrow.biaoji=1;
fwrite(&borrow,sizeof(borrow),1,fp1);
book.yushu=book.yushu-1;
fseek(fp2,-(long)sizeof(book),1);
fwrite(&book,sizeof(book),1,fp2);
printf("\n\n *****借书成功!*****\n\n");
break;
}
if(t!=1)
{
printf("\n\n\n\n\n\n\n******************返回主菜单!!!******************\n\n\n\n\n\n\n\n");
break;
}
}
if(feof(fp2)!=0)
{
printf ("\n\n*************书号错误,没有找到这本书,返回主菜单!!***************\n\n\n\n");
break;
}
}
fclose(fp1);
fclose(fp2);
}
/*===============================================================================================================*/
void backbook()//还书系统
{
FILE *fp1,*fp2;
long shuhao,bianhao;
system("cls");
printf("请输入所要还书的书号(注意:书号为七位数,后四位为图书编号):");
scanf("%ld",&shuhao);
if ((fp1=fopen("borrow.rec","r+b"))==NULL)
{
printf ("can not open borrow.rec");
exit(0);
}
for(;;)
{
fread(&borrow,sizeof(borrow),1,fp1);
if(borrow.biaoji==0)
continue;
if(shuhao==borrow.shuhao)
{
printf("请输入还书时间(xxxx-xx-xx):");
scanf("%s",borrow.backdate);
borrow.biaoji=0;
if(strcmp(borrow.backdate,borrow.limitdate)>0)
borrow.chaoqi=1;
else
borrow.chaoqi=0;
fseek(fp1,-(long)sizeof(borrow),1);
fwrite(&borrow,sizeof(borrow),1,fp1);
bianhao=shuhao%10000;
if ((fp2=fopen("book.rec","r+b"))==NULL)
{
printf("can not open book.rec");
exit(0);
}
for(;;)
{
fread(&book,sizeof(book),1,fp2);
if(bianhao==book.booknum)
{
book.yushu=book.yushu+1;
fseek(fp2,-(long)sizeof(book),1);
fwrite(&book,sizeof(book),1,fp2);
printf("\n\n\n ***********还书成功!!!**********\n\n\n\n\n");
fclose(fp2);
break;
}
if(feof(fp2)!=0)
{
printf("\n\n ****输入错误!!返回主菜单从新选择需要的操作****\n\n");
break;
}
}
break;
}
if(feof(fp1)!=0)
{
printf ("\n\n***********书号错误,没有找到要还的书!!返回主菜单从新选择需要的操作!!************\n\n\n\n\n\n");
break;
}
}
fclose(fp1);
}
/*===============================================================================================================*/
void chaoqi()
{
FILE *fp;
int chao=0;
if ((fp=fopen("borrow.rec","r"))==NULL)
{
printf("can not open borrow.rec");
exit(0);
}
while(fread(&borrow,sizeof(borrow),1,fp))
{
if(strcmp(borrow.backdate,borrow.limitdate)>0)
chao=chao+1;
}
printf("\n\n\n 超期的图书册数为:%d\n\n\n\n\n",chao);
fclose(fp);
}
/*===============================================================================================================*/
void readtxt ()//输出所有图书的信息
{
FILE *fp1,*fp2;
system("cls");
if ((fp1=fopen("book.rec","rb"))==NULL)
{ printf ("can not open book.rec.\n");
exit(0);
}
if ((fp2=fopen("biaoge.txt","w"))==NULL)
{ printf ("can not open biaoge.txt.\n");
exit(0);
}
fputs("\n\n图书信息为:\n",fp2);
fputs("┌────┬──────┬──────┬──────┬──────┬────┬────┐",fp2);
fputs("\n",fp2);
fputs("│图书编号│ 图书名 │ 图书类型 │ 作者 │ 出版社 │ 总册数 │ 余数 │",fp2);
fputs("\n",fp2);
while (fread(&book,sizeof(book),1,fp1)==1)
{
if(book.biaoji==0)
continue;
fputs("├────┼──────┼──────┼──────┼──────┼────┼────┤",fp2);
fputs("\n",fp2);
fputs("│",fp2);
fprintf(fp2,"%8ld",book.booknum);
fputs("│",fp2);
fprintf(fp2,"%12s",book.bookname);
fputs("│",fp2);
fprintf(fp2,"%12s",book.booktype);
fputs("│",fp2);
fprintf(fp2,"%12s",book.writer);
fputs("│",fp2);
fprintf(fp2,"%12s",book.publish);
fputs("│",fp2);
fprintf(fp2,"%8d",book.number);
fputs("│",fp2);
fprintf(fp2,"%8d",book.yushu);
fputs("│",fp2);
fputs("\n",fp2);
}
fputs("└────┴──────┴──────┴──────┴──────┴────┴────┘",fp2);
fputs("\n",fp2);
printf ("\n");
printf("\n\n\n *******成功输出!!********\n\n\n\n");
fclose (fp1);
fclose (fp2);
}
/*===============================================================================================================*/
void anqi()
{
FILE *fp;
float ghl;
int chaoqi=0,jie=0;
system("cls");
if ((fp=fopen("borrow.rec","r"))==NULL)
{
printf("can not open borrow.rec");
exit(0);
}
while(fread(&borrow,sizeof(borrow),1,fp)==1)
{
if (borrow.chaoqi==1)
chaoqi=chaoqi+1;
jie++;
}
ghl=(jie-chaoqi)/jie;
printf("\n\n\n 按期归还率为:%f\n\n",ghl);
fclose(fp);
}
void chabookw()//按书名查找书籍
{
FILE *fp;
char writer[20];
int j=1;
system("cls");
if ((fp=fopen("book.rec","r"))==NULL)
{ printf ("can not open book.rec.\n");
exit (0);
}
printf ("请输入图书名:\n");
scanf ("%s",writer);
while(fread(&book,sizeof(book),1,fp)==1)
{
if(book.biaoji==0)
continue;
if(strcmp(writer,book.writer)==0)
{
printf("┌───┬─────┬─────┬─────┬─────┬───┬───┐\n");
printf("│ 编号 │ 图书名 │ 图书类型 │ 作者 │ 出版社 │总册数│ 余数 │\n");
printf("├───┼─────┼─────┼─────┼─────┼───┼───┤\n");
printf ("│%6ld│%10s│%10s│%10s│%10s│%6d│%6d│\n",book.booknum,book.bookname,book.booktype,book.writer,book.publish,book.number,book.yushu);
printf("└───┴─────┴─────┴─────┴─────┴───┴───┘\n\n");
j=0;
}
}
if(j==1)
printf("\n\n ******没有找到所要查找的书籍!!******\n\n\n\n\n");
fclose(fp);
}
void chabookl()//按书名查找书籍
{
FILE *fp;
char type[20];
int j=1;
system("cls");
if ((fp=fopen("book.rec","r"))==NULL)
{ printf ("can not open book.rec.\n");
exit (0);
}
printf ("请输入图书名:\n");
scanf ("%s",type);
while(fread(&book,sizeof(book),1,fp)==1)
{
if(book.biaoji==0)
continue;
if(strcmp(type,book.booktype)==0)
{
printf("┌───┬─────┬─────┬─────┬─────┬───┬───┐\n");
printf("│ 编号 │ 图书名 │ 图书类型 │ 作者 │ 出版社 │总册数│ 余数 │\n");
printf("├───┼─────┼─────┼─────┼─────┼───┼───┤\n");
printf ("│%6ld│%10s│%10s│%10s│%10s│%6d│%6d│\n",book.booknum,book.bookname,book.booktype,book.writer,book.publish,book.number,book.yushu);
printf("└───┴─────┴─────┴─────┴─────┴───┴───┘\n\n");
j=0;
}
}
if(j==1)
printf("\n\n ******没有找到所要查找的书籍!!******\n\n\n\n\n");
fclose(fp);
}