




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第C++课程设计之图书馆管理系统本文实例为大家分享了C++课程设计之图书馆管理系统的具体代码,供大家参考,具体内容如下
#includebits/stdc++.h
usingnamespacestd;
classDate
intyear,month,day;
public:
Date(intx,inty,intz):year(x),month(y),day(z){}
Date(){year=month=day=0;}
voidsetDate(intx,inty,intz){year=x;month=y;day=z;}
voidsetYear(intx){year=x;}
voidsetMonth(intx){month=x;}
voidsetDay(intx){day=x;}
intgetYear(){returnyear;}
intgetMonth(){returnmonth;}
intgetDay(){returnday;}
friendostreamoperator(ostreamout,Datet);
friendistreamoperator(istreamin,Date
booloperator(constDate
ostreamoperator(ostreamout,Datet)
outt.year"";
outt.month"";
outt.day;
returnout;
istreamoperator(istreamin,Datet)
int.yeart.montht.day;
returnin;
boolDate::operator(constDatet)
returnyear!=t.yearyeart.year:month!=t.monthmontht.month:dayt.day;
classRecord
intuid;
intbid;
Datestart;
Dateend;//默认end为应该还书的时间
intxj;//1表示已经续借过,0时还未续借
intsy;//1时已经还书,0时未还书
public:
Record(inta,intb,Datec):uid(a),bid(b),start(c)
{
inti,j,k;
i=start.getYear();
j=start.getMonth();
k=start.getDay();
if(j+2=12)
{
end.setDate(i,j+2,k);
}
else
end.setDate(i+1,j+2-12,k);
xj=0;sy=0;
}
Record(){}
intgetUid(){returnuid;}
intgetBid(){returnbid;}
DategetS(){returnstart;}
DategetE(){returnend;}
intgetxj(){returnxj;}
intgetsy(){returnsy;}
voidsetE();//用于续借时修改应该还书的时间,即将end再加两个月
voidsetxj(intx){xj=x;}
voidsetsy(intx){sy=x;}
friendostreamoperator(ostreamout,Recordr);
friendistreamoperator(istreamin,Record
voiddisplay();
voidRecord::setE()
inti,j,k;
i=end.getYear();
j=end.getMonth();
k=end.getDay();
if(j+2=12)
{
end.setDate(i,j+2,k);
}
else
end.setDate(i+1,j+2-12,k);
ostreamoperator(ostreamout,Recordr)
outr.uid"";
outr.bid"";
outr.start"";
outr.end"";
outr.xj"";
outr.sy"";
returnout;
istreamoperator(istreamin,Recordr)
inr.uidr.bidr.startr.endr.xjr.sy;
returnin;
voidRecord::display()
cout"借阅人:"uid"""书号:"bid"""借书日期:"start"""应还书日期:"end"""是否续借过:"xj"""是否已还书:"syendl;
classBook
intid;//书号
stringname;//书名
stringpress;//出版社
Datepd;//出版日期
intsum,ln;//总册数,已借出
inti;
public:
vectorRecord
vectorRecord::iteratorit1;
multimapint,int//根据借阅人的学号建立
multimapint,int::iteratormit1;
Book(inta,stringb,stringc,Dated,inte,intf):id(a),name(b),press(c),pd(d),sum(e),ln(f){i=v1.size();}
Book(){}
intgetId(){returnid;}
stringgetName(){returnname;}
stringgetPress(){returnpress;}
DategetPd(){returnpd;}
intgetSum(){returnsum;}
intgetLn(){returnln;}
voidsetSum(intx){sum=x;}
voidsetLn(intx){ln=x;}
voidaddRecord(Recordr);
voiddispRecord();
intsearch(intx);//根据借阅人的学号查询
voiddisplay();
voiddisplay1();
friendistreamoperator(istreamin,Book
friendostreamoperator(ostreamout,Book
istreamoperator(istreamin,Bookb)
inb.idb.pressb.pdb.sumb.lnb.i;
ints=0;
if(b.i!=0)
{
while(s!=b.i)
{
inb.v1[s];s++;
}
}
returnin;
ostreamoperator(ostreamout,Bookb)
outb.id""""b.press""b.pd""b.sum""b.ln""endl;
if(b.v1.size()!=0)
{
outb.v1.size()endl;
for(inti=0;ib.v1.size();i++)
{
outb.v1[i];
if(i!=b.v1.size()-1)
outendl;
}
}
else
outb.v1.size();
returnout;
voidBook::addRecord(Recordr)
inti;
v1.push_back(r);
i=v1.size();
m1.insert(make_pair(r.getUid(),i-1));
voidBook::dispRecord()
for(inti=0;iv1.size();i++)
v1[i].display();
intBook::search(intx)
mit1=m1.find(x);
if(mit1!=m1.end())
{
returnmit1-second;//返回的是这本书存储的关于借阅人x的借阅记录的下标值
}
elsereturn-1;
voidBook::display()
cout"书号:"id"""书名:"name"""出版社:"press"""出版日期:"pd"""总册数:"sum"""已借出:"lnendl;
if(v1.size()!=0)
{
dispRecord();
}
voidBook::display1()
cout"书号:"id"""书名:"name"""出版社:"press"""出版日期:"pd"""总册数:"sum"""已借出:"lnendl;
classUser
intid;
stringname;
stringmajor;
intmb,nb;//mb为最大借阅量,nb为当前借阅量
intwj;//1为违纪过,此时无法借书;
inti;
public:
vectorRecord
vectorRecord::iteratorit2;
multimapint,int//根据所借书的书号建立
multimapint,int::iteratormit2;
User(inta,stringb,stringc):id(a),name(b),major(c)
{
mb=10;nb=0;wj=0;i=v2.size();
}
User(){i=v2.size();}
intgetId(){returnid;}
stringgetName(){returnname;}
stringgetMajor(){returnmajor;}
intgetmb(){returnmb;}
intgetnb(){returnnb;}
intgetwj(){returnwj;}
voidsetmb(intx){mb=x;}
voidsetnb(intx){nb=x;}
voidsetwj(){wj=1;mb=0;}
voidaddRecord(Recordr);
voiddispRecord();
intsearch(intno);//通过书号查找
voiddisplay();
booloperator==(Useru)
{
if(this-id==u.getId())
return1;
elsereturn0;
}
Useroperator=(Useru)
{
id=u.id;
name=;
major=u.major;
mb=u.mb;
nb=u.nb;
wj=u.wj;
v2=u.v2;
m2=u.m2;
}
friendostreamoperator(ostreamout,User
friendistreamoperator(istreamin,User
ostreamoperator(ostreamout,Useru)
outu.id""""u.major""u.mb""u.nb""u.wj""endl;
if(u.v2.size()!=0)
{
outu.v2.size()endl;
for(inti=0;iu.v2.size();++i)
{
outu.v2[i];
if(i!=u.v2.size()-1)
outendl;
}
}
else
outu.v2.size();
returnout;
istreamoperator(istreamin,Useru)
inu.idu.majoru.mbu.nbu.wju.i;
ints=0;
if(u.i!=0)
{
while(s!=u.i)
{
inu.v2[s];s++;
}
}
returnin;
voidUser::addRecord(Recordr)
inti;
v2.push_back(r);
i=v2.size();
m2.insert(make_pair(r.getBid(),i-1));
voidUser::dispRecord()
for(inti=0;iv2.size();i++)
{
v2[i].display();
}
intUser::search(intno)
mit2=m2.find(no);
if(mit2!=m2.end())
{
returnmit2-second;
}
elsereturn-1;
voidUser::display()
cout"学号:"id"""姓名:"name"""专业班级:"major"""最大借阅量:"mb"""当前借阅量:"nb"""有无违纪:"wjendl;
if(v2.size()!=0)
{
dispRecord();
}
classClient
Useru;
vectorBook
vectorBook::iteratorit3;
multimapint,int
multimapint,int::iteratormit3;
vectorUser
vectorUser::iteratorit;
multimapint,int
multimapint,int::iteratormit;
public:
Client(intx)
{
load1();
load2(x);
}
~Client()
{
save1();
save2();
}
voidload1();
voidsave1();
voidload2(intx);
voidsave2();
voidqueryBook(intx);
voidborrow(intx,Datet);
voidback(intx);
voiddisplayu(){u.display();}
voiddisplayb(intx){mit3=m3.find(x);v3[mit3-second].display();}
voidClient::load1()
Bookb;
inti;
ifstreaminfile("d:\\20171750book.txt",ios::in);
if(!infile)return;
while(infileb)
{
v3.push_back(b);
i=v3.size();
m3.insert(make_pair(b.getId(),i-1));
}
infile.close();
voidClient::save1()
ofstreamoutfile("d:\\20171750book.txt",ios::out);
if(!outfile)return;
for(inti=0;iv3.size();i++)
{
outfilev3[i];
outfileendl;
}
outfile.close();
voidClient::load2(intx)
Useru;
inti;
ifstreaminfile("d:\\20171750stu.txt",ios::in);
if(!infile)return;
while(infileu)
{
v.push_back(u);
i=v.size();
m.insert(make_pair(u.getId(),i-1));
if(x==u.getId())
{
this-
}
}
infile.close();
voidClient::save2()
ofstreamoutfile("d:\\20171750stu.txt",ios::out);
if(!outfile)return;
for(it=v.begin();it!=v.end();it++)
{
outfile*it;
outfileendl;
}
outfile.close();
voidClient::queryBook(intx)
mit3=m3.find(x);
if(mit3!=m3.end())
{
v3[mit3-second].display1();
}
else
cout"未找到该书!"endl;
voidClient::borrow(intx,Datet)
mit3=m3.find(x);
inti,j,k;
i=mit3-second;
j=v3[i].getLn();
k=v3[i].getSum();
if(u.getwj()==0jku.getnb()u.getmb()mit3!=m3.end())
{
cout"借书成功!"endl;
Recordr(u.getId(),v3[i].getId(),t);
u.addRecord(r);
mit=m.find(u.getId());v[mit-second].addRecord(r);
v3[i].addRecord(r);
u.setnb(u.getnb()+1);
v[mit-second].setnb(u.getnb());
v3[i].setLn(j+1);
}
else
cout"借书失败!"endl;
voidClient::back(intx)
mit3=m3.find(x);
ints=u.v2.size();
intflag=0;
inti=mit3-second;
intj=v3[i].getLn();
if(s!=0)
{
for(inti=0;i++i)
{
if(x==u.v2[i].getBid())
flag=1;
}
}
if(mit3!=m3.end()flag==1)
{
cout"还书成功!"endl;//用户的nb-1√
书的ln-1√
用户和书的借阅记录的sy变为1
u.setnb(u.getnb()-1);
mit=m.find(u.getId());
v[mit-second].setnb(u.getnb());
v3[i].setLn(j-1);
v3[i].mit1=v3[i].m1.find(u.getId());
v3[i].v1[v3[i].mit1-second].setsy(1);
u.mit2=u.m2.find(x);
u.v2[u.mit2-second].setsy(1);
intk=mit-second;
v[k].mit2=v[k].m2.find(x);
v[k].v2[v[k].mit2-second].setsy(1);
}
else
cout"还书失败!"endl;
classManger
vectorUser
vectorUser::iteratorit4;
multimapint,int
multimapint,int::iteratormit4;
vectorBook
vectorBook::iteratorit5;
multimapint,int
multimapint,int::iteratormit5;
public:
Manger()
load1();
load2();
~Manger()
save1();
save2();
voidload1();
voidload2();
voidsave1();
voidsave2();
voidaddUser(Useru);
voidaddBook(Bookb);
voiddisplayU(intx);
voiddisplayB(intx);
voidManger::load1()
Useru;
inti;
ifstreaminfile("d:\\20171750stu.txt",ios::in);
if(!infile)return;
v4.clear();m4.clear();
i=0;
while(infileu)
{
v4.push_back(u);
m4.insert(make_pair(u.getId(),i));
i++;
}
infile.close();
voidManger::load2()
Bookb;
inti;
ifstreaminfile("d:\\20171750book.txt",ios::in);
if(!infile)
return;
v5.clear();m5.clear();
i=0;
while(infileb)
{
v5.push_back(b);
m5.insert(make_pair(b.getId(),i));
i++;
}
infile.close();
voidManger::save1()
ofstreamoutfile("d:\\20171750stu.txt",ios::out);
if(!outfile)
return;
for(it4=v4.begin();it4!=v4.end();it4++)
{
outfile*it4;
outfileendl;
}
outfile.close();
voidManger::save2()
ofstreamoutfile("d:\\20171750book.txt",ios::out);
if(!outfile)
return;
for(it5=v5.begin();it5!=v5.end();it5++)
{
outfile*it5;
outfileendl;
}
outfile.close();
voidManger::addUser(Useru)
intx;
x=u.getId();
mit4=m4.find(x);
if(mit4!=m4.end())
{
cout"添加用户失败,该用户已存在!"endl;
}
else
{
cout"添加用户成功!"endl;
inti;
v4.push_back(u);
i=v4.size();
m4.insert(make_pair(u.getId(),i-1));
}
voidManger::addBook(Bookb)
intx;
x=b.getId();
mit5=m5.find(x);
if(mit5!=m5.end())
{
cout"添加图书失败,该图书已存在!"endl;
}
else
{
cout"添加图书成功!"endl;
inti;
v5.push_back(b);
i=v5.size();
m5.insert(make_pair(b.getId(),i-1));
}
voidManger::displayU(intx)
mit4=m4.find(x);
v4[mit4-second].display();
voidManger::displayB(intx)
mit5=m5.find(x);
v5[mit5-second].display();
intmain()
//时间类测试
Datea(1999,4,27);
Dateb(2000,4,27);
coutaendl;
coutbend
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物质燃料特性与评价考核试卷
- 蚝油制造业的创业风险考核试卷
- 融资租赁市场风险管理策略与工具考核试卷
- 纤维原料的供应商选择与评估考核试卷
- 贸易便利化与远洋货物运输考核试卷
- 道路运输企业客户关系维护与提升考核试卷
- 人教部编版语文三年级上册7《听听秋的声音》第2课时练习卷
- 人教部编版三年级上册期未模拟测试语文试卷
- 置业顾问线上营销培训计划
- 部编人教版四年级语文下册作业设计计划
- 2019建筑排水管道安装塑料管道19S406
- KCA试题库完美版
- 2024年中国扁平吊装带市场调查研究报告
- 2024年10月自考中级财务会计试题及答案解析
- 妊娠合并HIV护理查房
- 图像叙事中的视觉修辞-洞察分析
- 钢结构屋顶安装高空作业协议
- 三年级上册语文按课文内容填空(附答案)
- 扬尘防治(治理)监理实施细则(范本)
- 《西方经济学》讲义教案完整版
- 2024年黑龙江省绥化市中考道德与法治试卷(含答案与解析)
评论
0/150
提交评论