⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 061420984.cpp

📁 简单的图书管理系统! 可实现基本的功能!
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include<stdio.h> 
#include<string.h> 
#include<conio.h> 
#include<stdlib.h> 
#include<ctype.h> 
#define STACK_INIT_SIZE 10 
#define OK 1 
#define TRUE 1 
#define ERROR 0

/*定义学生类型,用于存放借出的书籍*/ 
struct student { 
int carnum; 
char lendbook[10]; 
}student[1000];

 /*定义书的类型*/ 
struct book
{ 
int booknum; 
char bookname[20]; 
float bookprice;
char bookcreat[20]; 
int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/ 
}book[1000];

/*借书卡的数据类型*/ 
struct car 
{ 
int carnum; 
char sex[5];
char studentname[20]; 
int studentclass; 
}car[1000];
//////////////////////////////////查询图书信息模块//////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
//////(1)按书名查找
findbook()
{ 
FILE *fp; 
char bookname[10]; 
int i; 
fp=fopen("book.txt","r"); 
printf("请输入你要查找的书名:\n"); 
scanf("%s",bookname); 
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) 
{ 
   if(strcmp(bookname,book[i].bookname)==0) 
   { 
    if(book[i].turefalse==1) 
     
    {
	printf(" 书号      书名      作者 \n %d      %s     %s \n",book[i].booknum,book[i].bookname,book[i].bookcreat);
	printf("此书现在无人借阅\n按任意键返回\n"); } 
    else {printf("这本书已经有人借出\n");fclose(fp);return 0;} 
    fclose(fp); 
    return 0; 
   } 
} 
printf("没有你要查询的书籍!\n"); 
fclose(fp); 
return 0; 
}
//////////(2)按作者查找
findbook1()
{ 
FILE *fp; 
char bookcreat[10]; 
int i; 
fp=fopen("book.txt","r"); 
printf("请输入你要查找的作者名:\n"); 
scanf("%s",bookcreat); 
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) 
{ 
   if(strcmp(bookcreat,book[i].bookcreat)==0) 
   { 
    if(book[i].turefalse==1) 
    { 
     printf(" 书号  书名  作者 \n %d    %s    %s \n",book[i].booknum,book[i].bookname,book[i].bookcreat); 
    printf("此书现在无人借阅\n按任意键返回\n");
	} 
    else {printf("这本书已经有人借出!\n");
	fclose(fp);
	return 0;
	} 
    fclose(fp); 
    return 0; 
   } 
} 
printf("没有你要查询的书籍\n"); 
fclose(fp); 
return 0; 
}
chabook()/////查找图书主模块 
{ 
char ch5; 
do 
{ 
printf("◎◎◎欢迎进入图书查询系统◎◎◎\n"); 
printf(" 1: 按书名查找 \n"); 
printf(" 2: 按作者查找 \n"); 
printf(" 0: 返回 \n"); 
printf("请输入0━2:\n"); 
ch5=getch(); 
switch(ch5) 
   { 
    case '1':findbook();getch();break; 
    case '2':findbook1();getch();break; 
    case '0':break; 
    default:printf("无此操作!\n");getch();break; 
   } 
}while(ch5!='0');
return 0; 
}
/////////////////////////////////////////////////////////////////
//////////借书与还书模块
/////(1).借书模块
lendbook() 
{ 
FILE *fp,*fp2; 
int i,n; 
int carnum; 
system("cls");
printf("\t\t◎◎◎欢迎进入借书系统◎◎◎\n\n");
printf("请输入借书人的:\n卡号:\n"); 
scanf("%d",&carnum); 
fp=fopen("car.txt","r"); 
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) 
{ 
   if(car[i].carnum==carnum) 
   { 
    n=i; 
    fclose(fp); 
    printf("书名:\n"); 
    scanf("%s",student[n].lendbook); 
    fp=fopen("book.txt","r"); 
    for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) 
    { 
     if(strcmp(book[i].bookname,student[n].lendbook)==0) 
     { 
      if(book[i].turefalse==0) {printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return 0;} 
      else 
      fclose(fp); 
      fp=fopen("record.txt","a+"); 
      student[n].carnum=carnum; 
      fwrite(&student[n],sizeof(struct student),1,fp); 
      fclose(fp); 
      fp=fopen("book.txt","r"); 
      fp2=fopen("bookl.txt","w"); 
      for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) 
      { 
       if(strcmp(book[i].bookname,student[n].lendbook)==0) 
       { 
        book[i].turefalse=0; 
        fwrite(&book[i],sizeof(struct book),1,fp2); 
        continue; 
       } 
       fwrite(&book[i],sizeof(struct book),1,fp2); 
      } 
      fclose(fp); 
      fclose(fp2); 
      fp=fopen("book.txt","w"); 
      fp2=fopen("bookl.txt","r"); 
      for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++) 
      { 
       fwrite(&book[i],sizeof(struct book),1,fp); 
      } 
      fclose(fp); 
      fclose(fp2); 
      fopen("bookl.txt","w"); 
      fclose(fp2); 
      printf("借书完毕,按任意键返回...\n"); 
      getch(); 
      return 0; 
     } 
    } 
    printf("不存在这样的书,任意键返回...\n"); 
    fclose(fp); 
    getch(); 
    return 0; 
   } 
} 
printf("你的卡号不存在,请申请新卡,按任意键返回...\n"); 
fclose(fp); 
getch(); 
return 0;}
///////(2).还书函数
huanbook() 
{ 
FILE *fp,*fp2; /*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/ 
int i,n; 
int carnum; 
char lendbook[10]; 
system("cls");
printf("\t\t◎◎◎欢迎进入还书界面◎◎◎");
printf("\n请你输入你的\n卡号:\n"); 
scanf("%d",&carnum); 
fp=fopen("car.txt","r"); /*读取卡号记录*/ 
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) /*for循环判断卡号是否存在*/ 
{ 
   if(car[i].carnum==carnum) /*卡号存在,进入下一循环*/ 
   { 
    n=i; 
    fclose(fp); 
    printf("请输入你要还的书的名字:\n"); 
    scanf("%s",lendbook); 
    fp=fopen("record.txt","r"); 
    for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) /*判断是否借阅了输入的书*/ 
    { 
     if(strcmp(student[i].lendbook,lendbook)==0) /*借阅了该书,进入下一循环,否则出错显示*/ 
     { 
      fclose(fp); 
      fp=fopen("record.txt","r"); 
      fp2=fopen("bookl.txt","w"); 
      for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) 
      { 
       if(strcmp(student[i].lendbook,lendbook)==0) 
       { 
        continue; /*删除还掉的书的借书记录*/ 
       } 
       fwrite(&student[i],sizeof(struct student),1,fp2); /*写入原来没还的书的记录*/ 
      } 
      fclose(fp); 
      fclose(fp2); 
      fp=fopen("record.txt","w"); 
      fp2=fopen("bookl.txt","r"); 
      for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++) 
       { 
        fwrite(&student[i],sizeof(struct student),1,fp); /*将借书记录信息写回*/ 
       } 
      fclose(fp); 
      fclose(fp2); 
      fopen("bookl.txt","w"); /*清临时文件的记录*/ 
      fclose(fp2); 
      fp=fopen("book.txt","r"); 
      fp2=fopen("bookl.txt","w"); 
      for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) /*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/ 
      { 
       if(i==n) 
       { 
        book[i].turefalse=1; 
        fwrite(&book[i],sizeof(struct book),1,fp2); /*将还的书的原来状态设为无人借阅的*/ 
        continue; 
       } 
       fwrite(&book[i],sizeof(struct book),1,fp2); 
      } 
      fclose(fp); 
      fclose(fp2); 
      fp=fopen("book.txt","w"); 
      fp2=fopen("bookl.txt","r"); 
      for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++) 
      { 
       fwrite(&book[i],sizeof(struct book),1,fp); /*将临时文件写回*/ 
      } 
      fclose(fp); 
      fclose(fp2); 
      fopen("bookl.txt","w"); /*清临时文件*/ 
      fclose(fp2); 
      printf("还书完毕,按任意键返回...\n"); 
      getch(); 
      return 1; 
     } 
    } 
    printf("你没有借这样的书,任意键返回...\n"); /*出错提示*/ 
    fclose(fp); 
    getch(); 
    return 0; 
   } 
} 
printf("没这样的卡,和管理员联系,按任意键返回...\n"); /*出错提示*/ 
fclose(fp); 
getch(); 
return 0;}
////////(3).借书统计
lendcount() 
{ 
FILE *fp; 
int i,n=0; 
fp=fopen("record.txt","r"); 
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) 
{ 
   printf("卡号      借出的书籍     \n"); 
   printf("%d       %s \n",student[i].carnum,student[i].lendbook); 
   n=n+1; 
} 
fclose(fp); 
printf("目前共有%d本书借出\n",n); 
printf("按任意键...\n"); 
getch();
return n; 
}
//////////////////////////////////会员卡管理模块/////
//////////(1).增加会员卡
addcar() 
{ 
FILE *fp; 
int i=0; 
fp=fopen("car.txt","a+"); 
printf("卡号:\n"); 
scanf("%d",&car[i].carnum); 
printf("性别:\n");
scanf("%s",car[i].sex);
printf("姓名:\n"); 
scanf("%s",car[i].studentname); 
printf("班级:\n"); 
scanf("%d",&car[i].studentclass); 
fwrite(&car[i],sizeof(struct car),1,fp); 
fclose(fp); 
printf("输入完毕,任意键返回...\n"); 
getch(); 
}
//////////(2).删除会员卡
delcar() 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -