📄 book.txt
字号:
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
#include<string.h>
//using namespace std;
const int Maxb=10000; //最多的图书
const int Maxr=100; //最多的读者
const int Maxbor=5; //每位读者最多借五本书
//------------------------------------------------------------------------------
class Book //图书类
{
int tag; //删除标记 1:已删 0:未删
int no; //图书编号
char name[20]; //书名
char author[10]; //作者名
char no2[10]; //输入分类号
char dan[20]; //输入出版单位
char time[20]; //出版时间
int price; //价格
int onshelf; //是否在架1:在架0:已借
public:
Book(){}
char *getname(){return name;} //获取书名
int getno(){return no;} //获取图书编号
int gettag(){return tag;} //获取删除标记
char *getauthor(){return author;} //获取作者名
char *getno2(){return no2;} //获取分类号
char *getdan(){return dan;} //获取出版单位
char *gettime(){return time;} //获取出版时间
int getprice(){return price;} //获取图书价格
void setname(char na[]){strcpy(name,na);} //设置书名
void setauthor(char au[]){strcpy(author,au);} //设置作者名
void setno2(char n[]){strcpy(no2,n);} //设置分类号
void setdan(char d[]){strcpy(dan,d);} //设置出版单位
void settime(char t[]){strcpy(time,t);} //设置出版时间
void setprice(int p){price=p;}
void delbook(){tag=1;} //删除图书 1:已删 0:未删
void addbook(int n,char*na,char*au,char*n2,char*da,char*ti,int pr)//增加图书
{
tag=0;
no=n;
price=pr;
strcpy(name,na);
strcpy(author,au);
strcpy(no2,n2);
strcpy(dan,da);
strcpy(time,ti);
onshelf=1;
}
int borrowbook() //借书操作
{
if(onshelf==1)
{
onshelf=0;
return 1;
}
return 0;
}
void retbook(){onshelf=1;} //还书操作
void disp() //输出图书
{
cout<<setw(10)<<no<<setw(10)<<name<<setw(10)<<setw(10)
<<author<<setw(10)<<no2<<setw(10)<<dan<<setw(10)<<time
<<setw(10)<<price;
if(onshelf==1)cout<<setw(10)<<"在架";
else cout<<setw(10)<<"已借出"<<endl;
}
};
//------------------------------------------------------------------------------
class BDatabase //图书库类
{
int top; //图书数量记录指针
Book book[Maxb]; //图书记录
public:
BDatabase() //构造函数,将book.txt读到book[]中
{
Book b;
top=-1;
fstream file("book.txt",ios::in);
while(1)
{
file.read((char*)&b,sizeof(b));
if(!file)break;
top++;
book[top]=b;
}
file.close();
}
void clear(){top=-1;} //全删
int addbook(int n,char*na,char*au,char*n2,char*da,char*ti,int pr)//增加图书
{
Book *p=query(n);//调用函数
if(p==NULL)
{
top++;
book[top].addbook(n,na,au,n2,da,ti,pr);
return 1;
}
return 0;
}
Book *query(int bookid) //查找图书
{
for(int i=0;i<=top;i++)
{
if(book[i].getno()==bookid&&book[i].gettag()==0)
return &book[i];
}
return NULL;
}
Book *query2(int bookid,char *name)//按书名查找图书
{
for(int i=0;i<=top;i++)
{
if(strcmp(book[i].getname(),name)==0)
{
bookid=book[i].getno();
return &book[i];
}
}
return NULL;
}
Book *query3(int bookid,char *author) //按作者查找图书
{
for(int i=0;i<=top;i++)
{
if(strcmp(book[i].getauthor(),author)==0)
{
bookid=book[i].getno();
return &book[i];
}
}
return NULL;
}
void bookdata(); //图书库维护
void disp() //输出图书
{
cout<<setw(10)<<"图书编号"<<setw(10)<<"图书名字"
<<setw(10)<<"图书作者"<<setw(10)<<"图书分类"
<<setw(10)<<"出版单位"<<setw(10)<<"出版时间"
<<setw(10)<<"价格"<<setw(10)<<"借还信息"<<endl;
for(int i=0;i<=top;i++)
{
if(book[i].gettag()==0)
book[i].disp();
}
}
~BDatabase() //析构函数,将book[]写入book.txt文件中
{
fstream file("book.txt",ios::out);
for(int i=0;i<=top;i++)
{
if(book[i].gettag()==0)
file.write((char*)&book[i],sizeof(book[i]));
}
file.close();
}
};
void BDatabase::bookdata()
{
int bookid; //图书编号
char bname[40]; //图书名
char bauthor[10]; //图书作者
char bno2[20]; //图书分类
char bdan[20]; //出版单位
char btime[20]; //出版时间
int bprice; //图书价格
Book *b;
int choice=1;
int choice2=1;
int choice3=1;
while(choice!=0)
{
cout<<"\t\t\t图书信息维护\n";
cout<<"\t\t\t1.添加信息\n";
cout<<"\t\t\t2.修改信息\n";
cout<<"\t\t\t3.删除信息\n";
cout<<"\t\t\t4.信息查询\n";
cout<<"\t\t\t5.显示信息\n";
cout<<"\t\t\t6.全部删除\n";
cout<<"\t\t\t0.退出图书信息维护\n";
cout<<"请选择:";
cin>>choice;
switch(choice)
{
case 1:
{
cout<<"添加图书操作:\n";
cout<<"请输入图书编号:";
cin>>bookid;
cout<<"请输入书名:";
cin>>bname;
cout<<"请输入图书作者:";
cin>>bauthor;
cout<<"请输入图书分类:";
cin>>bno2;
cout<<"请输入出版单位:";
cin>>bdan;
cout<<"请是输入出版时间:";
cin>>btime;
cout<<"请输入图书价格:";
cin>>bprice;
addbook(bookid,bname,bauthor,bno2,bdan,btime,bprice);
cout<<"图书编号"<<bookid<<"添加成功\n";
break;
}
case 2:
{
cout<<"修改图书信息操作:\n";
cout<<"请输入图书编号:";
cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"图书不存在,无法修改\n";
break;
}
cout<<"请输入要更改的:1.书名 2.作者名 3.分类 4.出版单位 5.出版时间 6.图书价格";
cin>>choice2;
switch(choice2)
{
case 1:
{
cout<<"请输入书名:";
cin>>bname;
b->setname(bname);
cout<<"修改书名成功\n";
break;
}
case 2:
{
cout<<"请输入作者名:";
cin>>bauthor;
b->setauthor(bauthor);
cout<<"修改作者名成功\n";
break;
}
case 3:
{
cout<<"请输入分类号:";
cin>>bno2;
b->setno2(bno2);
cout<<"修改分类成功\n";
break;
}
case 4:
{
cout<<"请输入出版单位:";
cin>>bdan;
b->setdan(bdan);
cout<<"修改出版单位成功\n";
break;
}
case 5:
{
cout<<"请输入出版时间:";
cin>>btime;
b->settime(btime);
cout<<"修改出版时间成功\n";
break;
}
case 6:
{
cout<<"请输入图书价格:";
cin>>bprice;
b->setprice(bprice);
cout<<"修改图书价格成功\n";
break;
}
}
break;
}
case 3:
{
cout<<"删除图书操作:\n";
cout<<"请输入图书编号:";
cin>>bookid;
b=query(bookid);
if(b==NULL){cout<<"不存在该图书,无法删除\n";}
b->delbook();
cout<<"删除图书成功\n";
break;
}
case 4:
{
cout<<"图书信息查询操作:\n";
cout<<"1.按图书编号查询 2.按图书作者查询 3.按图书名字查询\n";
cout<<"请选择查询方式:";
cin>>choice3;
switch(choice3)
{
case 1:
{
cout<<"请输入图书编号:";
cin>>bookid;
b=query(bookid);
if(b==NULL){cout<<"你要查询的图书不存在\n";break;}
b->disp();
break;
}
case 2:
{
cout<<"请输入图书作者:";
cin>>bauthor;
b=query3(bookid,bauthor);
if(b==NULL){cout<<"你要查询的图书不存在\n";break;}
b->disp();
break;
}
case 3:
{
cout<<"请输入图书名:";
cin>>bname;
b=query2(bookid,bname);
if(b==NULL){cout<<"你要查询的图书不存在\n";break;}
b->disp();
break;
}
}
break;
}
case 5:
{
disp();
break;
}
case 6:
{
clear();
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -