C++课程设计图书馆管理系统.docx
- 文档编号:3730148
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:21
- 大小:18.87KB
C++课程设计图书馆管理系统.docx
《C++课程设计图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《C++课程设计图书馆管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
C++课程设计图书馆管理系统
//图书室管理系统
#include
#include
#include
usingnamespacestd;
constintMax_book=3000;//可保存图书数量的上限
constintMax_reader=1000;//可保存读者数量的上限
constintMax_bor_book=2;//读者借阅图书本数上限
classBook//图书类
{
private:
intID;//登录号
intnum;//设置书目编号
intflag;//设置删除标记
intonshelf;//判断图书是否再架
charbname[50];//设置图书书名
charw_name[10];//设置作者姓名
public:
Book(){}
intgetID(){returnID;}//获取登录号
intgetnum(){returnnum;}//获取图书编号
intgetflag(){returnflag;}//获取删除标记
char*getbname(){returnbname;}//获取图书书名
char*getw_name(){returnw_name;}//获取作者姓名
voidsetbname(charna[]){strcpy(bname,na);}//设置书名
voidsetwname(charna[]){strcpy(w_name,na);}//设置作者名字
voidAddbook(intID,intn,char*na,char*wname);//新增图书
intborrowbook();//借阅图书
voidretbook();//归还图书
voiddelbook(){flag=1;}//删除图书信息
voidshow();//输出图书信息
};
voidBook:
:
Addbook(intID,intn,char*na,char*wname)//新增图书信息
{
flag=0;
ID=ID;
num=n;
strcpy(bname,na);
strcpy(w_name,wname);
onshelf=1;
}
intBook:
:
borrowbook()//借阅图书
{
if(onshelf==1)
{
onshelf=0;
return1;
}
return0;
}
voidBook:
:
retbook()//归还图书
{
onshelf=1;
}
voidBook:
:
show()//输出图书详细信息
{
cout<<"图书状态:
"<<(onshelf==1?
"在架可借":
"本馆借出")<<""<<"作者姓名:
"< "<<"《"< cout<<"图书编号: "< } classBookdata//图书数据类 { private: intbook_total;//图书总共数目 Bookbook[Max_book];//图书记录数组 public: Bookdata(); intAddbook(intID,intn,char*na,char*wname);//新增图书 Book*search_ID(intID)//按登录号查找图书 { for(inti=0;i<=book_total;i++) if(book[i].getID()==ID&&book[i].getflag()==0) { return&book[i]; } returnNULL;} Book*search_bnum(intbook_num)//按图书编号查找图书 { for(inti=0;i<=book_total;i++) if(book[i].getnum()==book_num&&book[i].getflag()==0) { return&book[i]; } returnNULL; } Book*search_bname(charbname[50])//按图书书名查找图书 { for(inti=0;i<=book_total;i++) if(strcmp(book[i].getbname(),bname)==0&&book[i].getflag()==0) { return&book[i]; } returnNULL; } Book*search_wname(charwname[50])//按作者姓名查找图书 { for(inti=0;i<=book_total;i++) if(strcmp(book[i].getw_name(),wname)==0&&book[i].getflag()==0) { return&book[i]; } returnNULL; }//图书数据管理 voidbookdata();//图书数据管理 voidshow();//输出书籍信息 ~Bookdata()//析构函数 { fstreamfile("book.txt",ios: : out); for(inti=0;i<=book_total;i++) if(book[i].getflag()==0) file.write((char*)&book[i],sizeof(book[i])); file.close(); } }; Bookdata: : Bookdata()//构造函数 { Bookb; book_total=-1; fstreamfile("book.txt",ios: : in); while (1) { file.read((char*)&b,sizeof(b)); if(! file)break; book_total++; book[book_total]=b; } file.close(); } intBookdata: : Addbook(intID,intn,char*na,char*wname)//新增图书 { Book*p=search_bnum(n); if(NULL==p) { book_total++; book[book_total].Addbook(ID,n,na,wname); return1; } return0; } voidBookdata: : show() { for(inti=0;i<=book_total;i++) if(book[i].getflag()==0) { book[i].show(); cout< } } voidBookdata: : bookdata() { intchoice; charwname[10]; intID; charbname[50]; intbook_num; Book*b; while(choice! =0) { cout<<"\n"<<"***************************************************"< cout<<"\n图书管理"< cout<<"\n1新增图书信息"< cout<<"\n2图书信息更改"< cout<<"\n3删除图书信息"< cout<<"\n4图书信息显示"< cout<<"\n5搜索图书信息"< cout<<"\n0安全退出模块"< cout<<"\n"<<"***************************************************"< cout<<"请输入相对有的数字: "< do { cin>>choice; if(choice<0||choice>5) cout<<"对不起,输入有误,请查证后再输入! "< else break; }while (1); switch(choice) { case1: cout<<"请输入新增图书的书名: "< cin>>bname; cout<<"请输入新增图书的登录号: "< cin>>ID; cout<<"请输入新增图书作者姓名: "< cin>>wname; cout<<"请输入新增图书的编号: "< cin>>book_num; Addbook(ID,book_num,bname,wname); break; case2: cout<<"请输入需要修改的图书的登录号: "< cin>>ID; b=search_ID(ID); if(b==NULL) { cout<<"对不起,该图书不存在! "< break; } cout<<"请输入新的书名: "< cin>>bname; b->setbname(bname); cout<<"请输入图书作者新的名字: "< cin>>wname; b->setwname(wname); break; case3: cout<<"请输入需要删除的图书的登录号: "< cin>>ID; b=search_ID(ID); if(b==NULL) { cout<<"对不起,该图书不存在! "< break; } b->delbook(); break; case4: show(); break; case5: intselection; cout<<"按图书编号搜索->请按1"< cout<<"按图书登录号搜索->请按2"< cout<<"按图书书名搜索->请按3"< cout<<"按作者姓名搜索->请按4"< cin>>selection; if(selection==1) { cout<<"请输入需要查找的图书的编号: "< cin>>book_num; b=search_bnum(book_num); if(b==NULL) { cout<<"对不起,该图书不存在! "< break; } b->show(); break;} elseif(selection==2) { cout<<"请输入需要查找的图书的登录号: "< cin>>ID; b=search_ID(ID); if(b==NULL) { cout<<"对不起,该图书不存在! "< break; } b->show(); break; } elseif(selection==3) { cout<<"请输入需要查找的图书的书名: "< cin>>bname; char*p=bname; b=search_bname(bname); if(b==NULL) { cout<<"对不起,该图书不存在! "< break; } b->show(); break; } elseif(selection==4) { cout<<"请输入需要查找的作者的姓名: "< cin>>wname; char*q=wname; b=search_wname(wname); if(b==NULL) { cout<<"对不起,该图书不存在! "< b->show(); break;break; } } else cout<<"对不起,输入有误,请重新输入! "< } } } classReader//读者类 { private: intnum;//读者借阅证编号 charrname[10];//读者姓名 intborbook[Max_bor_book];//读者借阅的图书 intflag;//删除标记1: 已经删除0: 还未删除 public: Reader(){} intgetnum(){returnnum;}//获取读者借阅证编号 intretbook(intbookid);//归还图书 char*getrname(){returnrname;}//获取读者姓名 intgetflag(){returnflag;}//获取删除标记 voidsetname(charna[]);//设置姓名 voiddelbook(){flag=1;};//设置删除标记1: 已经删除0: 还未删除 voidaddreader(intn,char*na);//增加读者 voidborrowbook(intbookid);//借阅图书 voidshow();//输出读者详细信息 }; voidReader: : setname(charna[])//设置姓名 { strcpy(rname,na); } voidReader: : addreader(intn,char*na)//新增读者 { flag=0; num=n; strcpy(rname,na); for(inti=0;i borbook[i]=0; } voidReader: : borrowbook(intbook_num)//借阅图书 { for(inti=0;i { if(borbook[i]==0) { borbook[i]=book_num; return; } } } intReader: : retbook(intbook_num)//归还图书 { for(inti=0;i { if(borbook[i]==book_num) { borbook[i]=0; return1; } } return0; } voidReader: : show()//输出读者信息 { cout<<"读者编号: "< "< for(inti=0;i if(borbook[i]! =0) cout< } classReaderdata//读者数据类 { private: intreader_total;//读者总共数目 Readerreader[Max_reader];//读者信息记录 public: Readerdata();//构造函数 intaddreader(intn,char*na);//新增读者时先检察该读者是否已经存在 Reader*search_rnum(intreader_num)//按读者借阅证编号查找 { for(inti=0;i<=reader_total;i++) if(reader[i].getnum()==reader_num&&reader[i].getflag()==0) { return&reader[i]; } returnNULL; } Reader*search_rname(charreader_name[20])//按读者姓名查找读者 { for(inti=0;i<=reader_total;i++) for(inti=0;i<=reader_total;i++) if(strcmp(reader[i].getrname(),reader_name)==0&&reader[i].getflag()==0) { return&reader[i]; } returnNULL; } voidshow();//输出所有读者详细信息 voidreaderdata();//读者数据管理 ~Readerdata()//析构函数 { fstreamfile("reader.txt",ios: : out); for(inti=0;i<=reader_total;i++) if(reader[i].getflag()==0) file.write((char*)&reader[i],sizeof(reader[i])); file.close(); } }; Readerdata: : Readerdata()//构造函数 { ReaderR; reader_total=-1; fstreamfile("reader.txt",ios: : in);//打开一个输入文件 while (1) { file.read((char*)&R,sizeof(R)); if(! file)break; reader_total++; reader[reader_total]=R; } file.close(); } intReaderdata: : addreader(intn,char*na)//新增读者时先检察该读者是否已经存在 { Reader*p=search_rnum(n); if(p==NULL) { reader_total++; reader[reader_total].addreader(n,na); return1; } return0; } voidReaderdata: : show()//输出所有读者详细信息 { for(inti=0;i<=reader_total;i++) { reader[i].show(); cout< } } voidReaderdata: : readerdata() { intchoice; charreader_name[20]; intreader_num; Reader*r; while(choice! =0) { cout<<"\n"<<"***************************************************"< cout<<"\n读者管理"< cout<<"\n1新增读者信息"< cout<<"\n2读者信息更改"< cout<<"\n3删除读者信息"< cout<<"\n4读者信息显示"< cout<<"\n5搜索读者信息"< cout<<"\n0安全退出模块"< cout<<"\n***************************************************"< cout<<"请输入相对有的数字: "< do { cin>>choice; if(choice<0||choice>5) cout<<"对不起,输入有误,请查证后再输入! "< else break; }while (1); switch(choice) { case1: cout<<"请输入读者编号: "; cin>>reader_num; cout<<"请输入读者姓名: "; cin>>reader_name; addreader(reader_num,reader_name); break; case2: cout<<"请输入读者编号: "; cin>>reader_num; r=search_rnum(reader_num); if(r==NULL) { cout<<"对不起,该读者不存在! "< break; } cout<<"请输入新的姓名: "; cin>>reader_name; r->setname(reader_name); break; case3: cout<<"请输入读者编号: "; cin>>reader_num; r=search_rnum(reader_num); if(r=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 图书馆 管理 系统