C++图书馆管理系统.docx
《C++图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《C++图书馆管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
C++图书馆管理系统
图书馆管理系统
//图书管理系统
#include
#include〈iomanip〉
#include〈string〉
#include〈fstream〉
usingnamespacestd;
constintMaxb=10000;//最多的图书
classBook//图书类
{
inttag;//删除标记1:
已删0:
未删
intno;//图书编号
charname[20];//书名
charauthor[10];//作者名
charno2[10];//输入分类号
chardan[20];//输入出版单位
chartime[20];//出版时间
intprice;//价格
public:
Book(){}
char*getname(){returnname;}//获取姓名
intgetno(){returnno;}//获取图书编号
intgettag(){returntag;}//获取删除标记
char*getauthor(){returnauthor;}//获取作者名
char*getno2(){returnno2;}//获取分类号
char*getdan(){returndan;}//获取出版单位
char*gettime(){returntime;}//获取出版时间
chargetprice(){returnprice;}//获取图书价格
voidsetname(charna[])//设置书名
{
strcpy(name,na);
}
voidsetauthor(charau[])//设置作者名
{
strcpy(author,au);
}
voidsetno2(charn[])//设置分类号
{
strcpy(no2,n);
}
voidsetdan(chard[])//设置出版单位
{
strcpy(dan,d);
}
voidsettime(chart[])//设置出版时间
{
strcpy(time,t);
}
voiddelbook(){tag=1;}//删除图书
voidaddbook(intn,char*na,char*au,char*n2,char*da,char*ti,intpr)//增加图书
{
tag=0;
no=n;
price=pr;
strcpy(name,na);
strcpy(author,au);
strcpy(no2,n2);
strcpy(dan,da);
strcpy(time,ti);
}
voiddisp()//输出图书
{
cout<〈〈setw(10)<}
};
classBDatabase//图书库类
{
inttop;//图书记录指针
Bookbook[Maxb];//图书记录
public:
BDatabase()//构造函数,将book.txt读到book[]中
{
Bookb;
top=-1;
fstreamfile(”book。
txt",ios:
:
in);
while
(1)
{
file。
read((char*)&b,sizeof(b));
if(!
file)break;
top++;
book[top]=b;
}
file.close();
}
voidclear()//全删
{
top=—1;
}
intaddbook(intn,char*na,char*au,char*n2,char*da,char*ti,intpr)//增加图书
{
Book*p=query(n);
if(p==NULL)
{
top++;
book[top].addbook(n,na,au,n2,da,ti,pr);
return1;
}
return0;
}
Book*query(intbookid)//查找图书
{
for(inti=0;i<=top;i++)
if(book[i]。
getno()==bookid&&
book[i].gettag()==0)
return&book[i];
returnNULL;
}
Book*query2(intbookid,char*name)//按书名查找图书
{
for(inti=0;i〈=top;i++)
if(strcmp(book[i].getname(),name)==0)
{bookid=book[i]。
getno();
return&book[i];
}
returnNULL;
}
Book*query3(intbookid,char*author)//按作者查找图书
{
for(inti=0;i<=top;i++)
if(strcmp(book[i].getauthor(),author)==0)
{bookid=book[i]。
getno();
return&book[i];
}
returnNULL;
}
voidbookdata();//图书库维护
voiddisp()
{
cout<〈setw(10)〈〈”图书编号"〈for(inti=0;i〈=top;i++)
if(book[i].gettag()==0)
book[i].disp();
}
~BDatabase()//析构函数,将book[]写入book.txt文件中
{
fstreamfile(”book。
txt",ios:
:
out);
for(inti=0;i〈=top;i++)
if(book[i]。
gettag()==0)
file.write((char*)&book[i],sizeof(book[i]));
file。
close();
}
};
voidBDatabase:
:
bookdata()
{
intchoice=1;
intchoice2=1;
intchoice3=1;
intchoice4=1;
charbname[40];
charbauthor[10];
charbno2[20];
charbdan[20];
charbtime[20];
intbprice;
intbookid;
Book*b;
while(choice!
=0)
{cout<〈endl<〈endl;
cout<<"************”<〈endl;
cout<<”*1添加信息*”〈〈endl;
cout〈<”*2修改信息*”〈cout〈<”*3删除信息*"<〈endl;
cout〈〈”*4信息查询*"<〈endl;
cout〈〈”*5显示信息*”<cout〈〈"*6全部删除*”<cout〈〈"*0退出*"〈cout<<"************"〈〈endl<cout〈";
cin>>choice;
//如果输入的编号在菜单里不存在的情况———在for循环内部如果出现这样的错的时候
while(choice!
=1&&choice!
=2&&choice!
=3&&choice!
=4&&choice!
=5&&choice!
=6&&choice!
=0){
cout<cout〈<”请选择您需要的操作:
”;
cin〉>choice;
}
switch(choice)
{
case1:
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<<"图书编号"<cin>〉choice4;
if(choice4==9)
choice=1;
elsechoice=5;
break;
case2:
cout<〈"输入图书编号:
”;
cin>〉bookid;
b=query(bookid);
if(b==NULL)
{
cout〈〈”该图书不存在”〈〈endl;
break;
}
cout<cout〈<”************”〈cout〈〈"*1书名*”<cout<〈"*2作者*"〈〈endl;
cout<〈"*3分类号*"<cout<〈"*4出版单位*”〈〈endl;
cout<<”*5出版时间*"〈〈endl;
cout〈<"*0退出系统*”〈〈endl;
cout〈<”************”〈〈endl<〈endl;
cout〈〈”请输入要更改的:
1书名2作者名3分类号4出版单位5出版时间0退出”;
cin>>choice2;
switch(choice2)
{
case1:
cout<<"输入新的书名:
”;//修改图书名
cin>〉bname;
b->setname(bname);
break;
case2:
cout<<”输入新的作者名:
”;//修改图书作者
cin>〉bauthor;
b->setauthor(bauthor);
break;
case3:
cout〈<”输入新的分类号:
”;//修改图书的分类号
cin〉>bno2;
b->setno2(bno2);
break;
case4:
cout<<”输入新的出版单位:
";//修改图书出版单位
cin>>bdan;
b->setdan(bdan);
break;
case5:
cout〈〈"输入新的出版时间:
”;
cin>〉btime;
b—〉settime(btime);//修改出版时间
break;
}
break;
case3:
cout〈〈"输入图书编号:
";
cin〉>bookid;
b=query(bookid);
if(b==NULL)
{
cout<〈”该图书不存在"〈break;
}
b-〉delbook();
break;
case4:
cout〈<"查找方式:
”<";
cin〉〉choice3;
switch(choice3)
{
case1:
{cout〈<"输入图书编号:
”;//按图书编号查询
cin>〉bookid;
b=query(bookid);
if(b==NULL)
{
cout<〈”该图书不存在"<〈endl;
break;
}
b->disp();
}
break;
case2:
{
cout<<”请输入图书名:
”;
cin>〉bname;
b=query2(bookid,bname);
if(b==NULL)
{
cout〈<”该图书不存在啊!
”<break;
}
b—〉disp();
}
break;
case3:
{
cout〈〈”请输入作者名:
”;
cin>>bauthor;
b=query3(bookid,bauthor);
if(b==NULL)
{
cout〈<”该作者不存在!
"〈〈endl;
break;
}
b—〉disp();
}
break;
}
break;
case5:
disp();
break;
case6:
clear();
break;
}
}
cout〈欢迎下次继续使用☆★"<};
voidmain()
{
BDatabaseBookDB;
Book*b;
intnb;
{
cout〈〈endl〈〈endl;
cout<〈"★☆☆★☆☆★☆☆★☆☆★☆☆★☆☆★"<〈endl;
cout〈〈”☆☆"〈〈endl;
cout〈<”☆☆"〈cout〈<”★欢迎使用图书馆信息管理系统★”〈cout〈〈”☆☆"〈cout〈〈”☆☆"<〈endl;
cout<〈”★☆☆★☆☆★☆☆★☆☆★☆☆★☆☆★"〈〈endl;
}
cout〈";
cin>>nb;
while(nb!
=1)
{cout<〈endl<〈"**您的输入有误**"<〈'\a'<cout<〈endl〈〈"输入1进入菜单:
”;
cin〉>nb;
}
if(nb==1)
BookDB.bookdata();
}
运行结果: