📄 librarymanagementsystem.txt
字号:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include<graphics.h>
#include <math.h>
#include<time.h>
typedef struct BookList/**//*书的结构体*/
{
char num[20];
char name[20];
int price;
char person[20];
int yes;/**//*判断书是否存在或者已经借出,1存在,0借出*/
struct BookList *next;
}Book;
typedef struct MemberList
{
char name[20];
char sex[6];
int age;
struct MemberList *next;
}Member;
char save[4096];/**//*保存文本区域空间*/
char c[4096];/**//*清屏专用空间*/
int i,j;/**//*常用变量*/
/**//*//函数声明部分 */
void BookAdd();
void BookConsult();
void BookDel();
void BookBorrow();
void BookReturn();
void MemberAdd();
void MemberConsult();
void MemberDel();
void MemberBook();
/**//*12. bookfunction.c源程序*/
/**//*添加图书*/
void BookAdd()
{
FILE *fp;
Book consultbook;
fp=fopen("book.txt","rb");/**//*读方式打开文件*/
if(fp==NULL)
fp=fopen("book.txt","wb"); /**//*写方式打开文件*/
else/**//*如果有书就添加*/
{
fclose(fp);
fp=fopen("book.txt","ab");/**//*追加方式打开文件*/
}
clrscr();
printf("\nIntput new book num: ");/**//*逐个输入新图书的资料*/
gets(consultbook.num);
printf("\nInput new book name: ");
gets(consultbook.name);
printf("\nPlease input new book's price: ");
scanf("%d%*c",&consultbook.price);
strcpy(consultbook.person,"");
consultbook.yes=1;/**//*表示书存在未借出*/
consultbook.next=NULL;
fwrite(&consultbook,sizeof(Book),1,fp);
fclose(fp); /**//*关闭文件*/
clrscr();
}
/**//*图书查询*/
void BookConsult()
{
FILE *fp;
Book consultbook;
char bookname[20];
int flag=0,i=0;
clrscr();
printf("\nInput the book name: ");
gets(bookname); /**//*输入要查询的图书名*/
fp=fopen("book.txt","rb");
if(fp==NULL)/**//*没找到文件*/
{
clrscr();
printf("\nError!");
fclose(fp);
return;
}
else
while(!feof(fp))/**//*查询图书资料*/
{
fread(&consultbook,sizeof(Book),1,fp);
if(strcmp(consultbook.name,bookname)==0)/**//*如果查找到*/
{
clrscr();
printf("\nThis book %s information as follow:",consultbook.name);
printf("\nThis book num is %s",consultbook.num);
printf("\nThis book's price is %d",consultbook.price);
printf("\nThis book's is borrowed by %s",consultbook.person);
printf("\nThis book's state is %d",consultbook.yes);
i++;
flag=1; /**//*查找数据标志*/
}
}
if(flag==0)
{
clrscr();
printf("\nNo found this book");
}
fclose(fp);
printf( "\n\n\n\n\n\PRESS ANY KEY...\n");
getch();
clrscr();
}
/**//*删除图书资料*/
void BookDel()
{
FILE *fp;
Book *head,*p,*q;
char bookname[20];
fp=fopen("book.txt","rb");/**//*读方式打开文件*/
if(fp==NULL)/**//*没找到文件*/
{
printf("\nError!");
fclose(fp);
return;
}
head=p=q=(Book*)malloc(sizeof(Book));/**//*将文件内容放入链表*/
fread(p,sizeof(Book),1,fp); /**//*读第一条记录*/
while(!feof(fp))
{
q=p;
p=(Book*)malloc(sizeof(Book));
fread(p,sizeof(Book),1,fp); /**//*读记录*/
q->next=p;/**//*新记录插入到链表的尾*/
}
p->next=NULL;/**//*最后一个结点的后继为空*/
fclose(fp);
clrscr();
printf("\nInput the book name: ");
gets(bookname);
p=head;
while(p!=NULL)/**//*按名字查找要删除的图书*/
{
if(strcmp(p->name,bookname)==0)/**//*找到要删除的图书*/
{
if(p==head) /**//*如果是第一个结点*/
head=head->next;
else
q->next=p->next;/**//*不是第一个结点*/
break;
}
q=p; /**//*指针后移*/
p=p->next;
}
fp=fopen("book.txt","wb");/**//*删除后从链表的头开始重新保存*/
while(head!=NULL)
{
fwrite(head,sizeof(Book),1,fp);
head=head->next;
}
fclose(fp);
clrscr();
}
/**//*借书*/
void BookBorrow()
{
FILE *fp;
Book consultbook;
Member consultmember;
char bookname[20],membername[20];
int flag=0,mflag=0;
clrscr();
printf("\nInput the mermber name: ");
gets(membername); /**//*输入会员名*/
if((fp=fopen("member.txt","rb"))==NULL)/**//*没找到文件*/
{
printf("\nCannot open file !");
return;
}
else
while(!feof(fp))/**//*查询会员资料*/
{
fread(&consultmember,sizeof(Member),1,fp);
if(strcmp(consultmember.name,membername)==0)
{
mflag=1; /**//*是会员标志*/
break;
}
}
fclose(fp);
if(mflag==0)
{
printf("\nYou not is a member,please register!");/**//*不是会员不能借书*/
return;
}
printf("\nInput the book name: ");
gets(bookname);
clrscr();
if((fp=fopen("book.txt","rb+"))==NULL)
{
printf("\nCannot open file !");
return;
}
while(!feof(fp))/**//*查询图书资料*/
{
fread(&consultbook,sizeof(Book),1,fp);
if(strcmp(consultbook.name,bookname)==0)
{
if(consultbook.yes==0)/**//*图书已经借出的判断*/
{
printf("\nThis book has borrowed !");
break;
}
else
{
consultbook.yes=0; /**//*作借出标志*/
strcpy(consultbook.person,membername);/**//*登记借书会员*/
fseek(fp,-1L*sizeof(Book),1);/**//*从当前位置前移一条记录指针*/
fwrite(&consultbook,sizeof(Book),1,fp);/**//*写记录*/
printf("\nBorrowed successful!");
flag=1;/**//*借出书标志*/
break;
}
}
}
if(flag!=1)
{
clrscr();
printf("\nBorrowed fail! ");/**//*借书失败*/
}
fclose(fp);
printf( "\n\n\n\n\n\PRESS ANY KEY...\n");
getch();
clrscr();
}
/**//*还书*/
void BookReturn()
{
FILE *fp;
Book consultbook;
char bookname[20];
int flag=0;
clrscr();
if((fp=fopen("book.txt","rb+"))==NULL)
{
printf("\ncannot open file !");
return;
}
printf("\nInput the book name: ");
gets(bookname);
clrscr();
while(!feof(fp))/**//*查询图书资料*/
{
fread(&consultbook,sizeof(Book),1,fp);
if(strcmp(consultbook.name,bookname)==0)
{
if(consultbook.yes==0)/**//*图书已经借出的判断*/
{
consultbook.yes=1;/**//*作图书未借书标志,表示已还书*/
strcpy(consultbook.person,"");
fseek(fp,-1L*sizeof(Book),1);
fwrite(&consultbook,sizeof(Book),1,fp);
printf("\nReturn book succ!");
flag=1;
break;
}
}
}
if(flag!=1)
printf("\nReturn fail! ");
fclose(fp);
printf( "\n\n\n\n\n\PRESS ANY KEY...\n");
getch();
clrscr();
}
/**//*会员注册*/
void MemberAdd()
{
FILE *fp;
Member consultmember;
fp=fopen("member.txt","rb");
if(fp==NULL)/**//*如果没会员就新建*/
fp=fopen("member.txt","wb");
else/**//*如果有会员就添加*/
{
fclose(fp);
fp=fopen("member.txt","ab");/**//*追加方式打开*/
}
clrscr();
printf("\nIntput new member name: ");/**//*逐个输入会员的资料*/
gets(consultmember.name);
printf("\nInput member sex: ");
gets(consultmember.sex);
printf("\nPlease input member age: ");
scanf("%d%*c",&consultmember.age);
fwrite(&consultmember,sizeof(Member),1,fp);/**//*写入记录*/
fclose(fp);
clrscr();
}
/**//*查询会员*/
void MemberConsult()
{
FILE *fp;
Member consultmember;
char membername[20];
int flag=0;
clrscr();
printf("\nInput the member name: ");/**//*输入要查询的会员名*/
gets(membername);
fp=fopen("member.txt","rb");
if(fp==NULL)
{
clrscr();
printf("\nError!");
fclose(fp);
return;
}
while(!feof(fp))/**//*查询会员资料*/
{
fread(&consultmember,sizeof(Member),1,fp);
if(strcmp(consultmember.name,membername)==0)/**//*比较*/
{
clrscr();
printf("\nThis member %s information as follow:",consultmember.name);
printf("\nThis member'sex is %s",consultmember.sex);
printf("\nThis member 's age is %d",consultmember.age);
flag=1;
break;
}
}
if(flag==0)
{
clrscr();
printf("\nNo found this member!");
}
fclose(fp);
printf( "\n\n\n\n\n\PRESS ANY KEY...\n");
getch();
clrscr();
}
/**//*删除会员资料*/
void MemberDel()
{
FILE *fp;
Member *head,*p,*q;
char membername[20];
fp=fopen("member.txt","rb");
if(fp==NULL)/**//*没找到文件*/
{
printf("\nError!");
fclose(fp);
return;
}
head=p=q=(Member*)malloc(sizeof(Member));/**//*将文件内容放入链表*/
fread(p,sizeof(Member),1,fp);
while(!feof(fp))
{
q=p;
p=(Member*)malloc(sizeof(Member));
fread(p,sizeof(Member),1,fp);/**//*读记录*/
q->next=p;/**//*链入到链表的尾部*/
}
p->next=NULL;
fclose(fp);
clrscr();
printf("\nInput the member name: ");/**//*输入会员名*/
gets(membername);
p=head;
while(p!=NULL)/**//*按名字查找要删除的书*/
{
if(strcmp(p->name,membername)==0)/**//*查找会员*/
{
if(p==head)
head=head->next;/**//*如果是第一条记录*/
else
q->next=p->next;/**//*不是第一条记录*/
break;
}
q=p; /**//*没找到,则指针后移继续找*/
p=p->next;
}
fp=fopen("member.txt","wb");/**//*删除后重新保存*/
while(head!=NULL)
{
fwrite(head,sizeof(Member),1,fp);
head=head->next;
}
fclose(fp);
clrscr();
}
/**//*查询会员所借的图书*/
void MemberBook()
{
FILE *fp;
Book consultbook;
Member consultmember;
char bookname[20],membername[20];
int flag=0,mflag=0,i=0;
clrscr();
printf("\nInput the mermber name: ");/**//*输入会员名*/
gets(membername);
if((fp=fopen("member.txt","rb"))==NULL)/**//*没找到文件*/
{
printf("\nCannot open file !");
return;
}
else
while(!feof(fp))/**//*查询会员资料,确认会员*/
{
fread(&consultmember,sizeof(Member),1,fp);
if(strcmp(consultmember.name,membername)==0)
{
mflag=1;
break;
}
}
fclose(fp);
if(mflag==0)
{
printf("\nNot the member!");
return;
}
clrscr();
if((fp=fopen("book.txt","rb+"))==NULL)/**//*没找到文件*/
{
printf("\nCannot open file !");
return;
}
while(!feof(fp))/**//*查询图书资料*/
{
fread(&consultbook,sizeof(Book),1,fp);
printf("\nThis member %s has borrowed book as follow:",membername);
printf("********************************************");
if(strcmp(consultbook.person,membername)==0)/**//*借阅人比较*/
{
printf("\nBook name is %s",consultbook.name);
printf("\nThis book num is %s",consultbook.num);
printf("\nThis book's price is %d",consultbook.price);
printf("\n ");
i++;
flag=1;
}
}
if(flag!=1)
{
clrscr();
printf("\nno Borrow book! ");
}
else
{
printf("\n******total is %d*********",i);/**//*显示总数*/
}
fclose(fp);
printf( "\n\n\n\n\n\PRESS ANY KEY...\n");
getch();
clrscr();
}
main(void)
{char ch;
textbackground(WHITE); /* 背景颜色 */
textcolor(RED); /* 文字颜色 */
clrscr();
printf("\n\n\n\n\n\t\t********************************************\n"
"\t\t** BOOKS MANAGEMENT SYSTEM **\n"
"\t\t** design by Zhou Jiefei **\n"
"\t\t********************************************\n"
"\n\n\n\n\n\PRESS ANY KEY...\n");
getch();
clrscr();
while(1){ /*使循环永远为真,为后面break跳出时继续运行菜单而不会结束*/
printf("\n\n\n\n\n\t\t\t \n"
"\t\t\t** **\n"
"\t\t\t** 0 --EXIT **\n"
"\t\t\t** 1 --ADD BOOKS **\n"
"\t\t\t** 2 --CONSULT BOOKS **\n"
"\t\t\t** 3 --DELETE BOOKS **\n"
"\t\t\t** 4 --BORROW **\n"
"\t\t\t** 5 --RETURN **\n"
"\t\t\t** 6 --ADD MEMBERS **\n"
"\t\t\t** 7 --CONSULT MEMBERS **\n"
"\t\t\t** 8 --DELETE MEMBERS **\n"
"\t\t\t** 9 --BORROWED BOOKS **\n"
);
printf("\n\nPlease input your choice(0-9):");
ch=getch();
switch(ch)
{
case '1':BookAdd();break;
case '2':BookConsult();break;
case '3':BookDel();break;
case '4':BookBorrow();break;
case '5':BookReturn();break;
case '6':MemberAdd();break;
case '7':MemberConsult();break;
case '8':MemberDel();break;
case '9':MemberBook();break;
case '0': exit(0);
}}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -