C++课程设计之图书馆管理系统_第1页
C++课程设计之图书馆管理系统_第2页
C++课程设计之图书馆管理系统_第3页
C++课程设计之图书馆管理系统_第4页
C++课程设计之图书馆管理系统_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论