• 智能AI问答!更聪明、更完整、原创作!
  • 一款基于GPT的超级AI机器人,可以回答问题、聊天、创作、写文案!

使用C语言设计并实现一个图书管理系统的程序

发布于 2025-05-06 02:22:57

include#include#include#include#include#define STACK_INIT_SIZE 10#define OK 1#define TRUE 1#define FALSE 0#define ERROR 0struct student /定义学生类型,用于存放借出的书籍/{int carnum;char lendbook[10];}student[1000];struct employ /定义职工类型/{int employnum;char employname[15];int employage;char employsex[2];char employleve[10];long int employtage;}employ[50];struct book /定义书的类型/{int booknum;char bookname[10];char bookcreat[10];int turefalse; /用于借书和还书模块判断一本书是否借出的条件/}book[1000];struct car /借书卡的数据类型/{int carnum;char studentname[10];int studentclass;}car[100];huanbook() /还书函数/{FILE fp,fp2; /定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏/int i,n;int carnum;char lendbook[10];printf("请你输入你的卡号");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("请输入你要还的书的名字");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("还书完毕,按任意键返回");getch();return 1;}}printf("你没有借这样的书,任意键返回"); /出错提示/fclose(fp);getch();return 0;}}printf("系统没这样的卡,和管理员联系,按任意键返回"); /出错提示/fclose(fp);getch();}findbook(){FILE fp;char bookname[10];int ture,i;fp=fopen("book.txt","r");printf("请输入你要查找的书名");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("这本书的详细资料是:%d %s %s 此书现在无人借阅按任意键返回",book[i].booknum,book[i].bookname,book[i].bookcreat);}else {printf("这本书已经有人借出");fclose(fp);return 0;}fclose(fp);return FALSE;}}printf("没有你要查询的书籍");fclose(fp);return FALSE;}findbook1(){FILE fp;char bookcreat[10];int ture,i;fp=fopen("book.txt","r");printf("请输入你要查找的作者名");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("这本书的详细资料是:%d %s %s 此书现在无人借阅按任意键返回",book[i].booknum,book[i].bookname,book[i].bookcreat);}else {printf("这本书已经有人借出");fclose(fp);return 0;}fclose(fp);return FALSE;}}printf("没有你要查询的书籍");fclose(fp);return FALSE;}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("卡号:%d 借出的书籍:%s ",student[i].carnum,student[i].lendbook);n=n+1;}fclose(fp);printf("目前共有%d本书借出",n);printf("按任意键");getch();return n;}chabook(){char ch5;do{printf("---------------欢迎进入图书查询系统!--------------");printf(" 1:<按书名查找>");printf(" 2:<按作者查找>");printf(" 0:<返回>");printf("请输入0--2,其他输入非法!");scanf("%s",&ch5);switch(ch5){case ''1'':findbook();getch();break;case ''2'':findbook1();getch();break;case ''0'':break;default:printf("无此操作");getch();break;}}while(ch5!=''0'');return FALSE;}lendbook(){FILE fp,fp2;int i,n;int carnum;printf("请你输入你的卡号");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("请输入你要借阅的书的名字");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("对不起,此书有人借出,请借其他书");fclose(fp);getch();return;}elsefclose(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("借书完毕,按任意键返回");getch();return;}}printf("不存在这样的书,任意键返回");fclose(fp);getch();return;}}printf("你的卡号不存在,请申请新卡,按任意键返回");fclose(fp);getch();}carcount(){FILE fp;int i,n=0;fp=fopen("car.txt","r");for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++){printf("第%d张卡<卡号:%d 姓名:%s 班级:%d>",i+1,car[i].carnum,car[i].studentname,car[i].studentclass);n=n+1;}fclose(fp);printf("目前共有%d本书",n);printf("按任意键");getch();}delcar(){FILE fp,fp2;int i;int carnum;char choice;fp=fopen("car.txt","r");fp2=fopen("bookl.txt","w");printf("请输入你要删除的卡号");printf("如果你输入的卡号存在,系统自动删除该信息!如果不存在,系统不做任何改动");scanf("%d",&carnum);for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++){if(car[i].carnum!=carnum){fwrite(&car[i],sizeof(struct car),1,fp2);}}fclose(fp);fclose(fp2);printf("是否真的要删除该卡?删除后该书籍的所有信息将无法恢复《Y/N》");scanf("%s",&choice);if(choice==''y''||choice==''Y''){fp=fopen("car.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&car[i],sizeof(struct car),1,fp2)!=0;i++){fwrite(&car[i],sizeof(struct car),1,fp);}fclose(fp);fclose(fp2);fp2=fopen("bookl.txt","w");fclose(fp2);printf("按任意键返回");getch();return;}else{printf("按任意键返回");getch();return;}}addcar(){FILE *fp;int i=0;fp=fopen("car.txt","a+");printf("请你输入卡号");scanf("%d",&car[i].carnum);printf("请你输入学生姓名");scanf("%s",car[i].studentname);printf("请你输入班级");scanf("%d",&car[i].studentclass);fwrite(&car[i],sizeof(struct car),1,fp);fclose(fp);printf("输入完毕,任意键返回");getch();}

0 条评论

发布
问题

在线
客服