C++課程設(shè)計(jì)之圖書(shū)館管理系統(tǒng)_第1頁(yè)
C++課程設(shè)計(jì)之圖書(shū)館管理系統(tǒng)_第2頁(yè)
C++課程設(shè)計(jì)之圖書(shū)館管理系統(tǒng)_第3頁(yè)
C++課程設(shè)計(jì)之圖書(shū)館管理系統(tǒng)_第4頁(yè)
C++課程設(shè)計(jì)之圖書(shū)館管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第C++課程設(shè)計(jì)之圖書(shū)館管理系統(tǒng)本文實(shí)例為大家分享了C++課程設(shè)計(jì)之圖書(shū)館管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

#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;//默認(rèn)end為應(yīng)該還書(shū)的時(shí)間

intxj;//1表示已經(jīng)續(xù)借過(guò),0時(shí)還未續(xù)借

intsy;//1時(shí)已經(jīng)還書(shū),0時(shí)未還書(shū)

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();//用于續(xù)借時(shí)修改應(yīng)該還書(shū)的時(shí)間,即將end再加兩個(gè)月

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"""書(shū)號(hào):"bid"""借書(shū)日期:"start"""應(yīng)還書(shū)日期:"end"""是否續(xù)借過(guò):"xj"""是否已還書(shū):"syendl;

classBook

intid;//書(shū)號(hào)

stringname;//書(shū)名

stringpress;//出版社

Datepd;//出版日期

intsum,ln;//總冊(cè)數(shù),已借出

inti;

public:

vectorRecord

vectorRecord::iteratorit1;

multimapint,int//根據(jù)借閱人的學(xué)號(hào)建立

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);//根據(jù)借閱人的學(xué)號(hào)查詢(xún)

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;//返回的是這本書(shū)存儲(chǔ)的關(guān)于借閱人x的借閱記錄的下標(biāo)值

}

elsereturn-1;

voidBook::display()

cout"書(shū)號(hào):"id"""書(shū)名:"name"""出版社:"press"""出版日期:"pd"""總冊(cè)數(shù):"sum"""已借出:"lnendl;

if(v1.size()!=0)

{

dispRecord();

}

voidBook::display1()

cout"書(shū)號(hào):"id"""書(shū)名:"name"""出版社:"press"""出版日期:"pd"""總冊(cè)數(shù):"sum"""已借出:"lnendl;

classUser

intid;

stringname;

stringmajor;

intmb,nb;//mb為最大借閱量,nb為當(dāng)前借閱量

intwj;//1為違紀(jì)過(guò),此時(shí)無(wú)法借書(shū);

inti;

public:

vectorRecord

vectorRecord::iteratorit2;

multimapint,int//根據(jù)所借書(shū)的書(shū)號(hào)建立

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);//通過(guò)書(shū)號(hào)查找

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"學(xué)號(hào):"id"""姓名:"name"""專(zhuān)業(yè)班級(jí):"major"""最大借閱量:"mb"""當(dāng)前借閱量:"nb"""有無(wú)違紀(jì):"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"未找到該書(shū)!"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"借書(shū)成功!"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"借書(shū)失敗!"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"還書(shū)成功!"endl;//用戶(hù)的nb-1√

書(shū)的ln-1√

用戶(hù)和書(shū)的借閱記錄的sy變?yōu)?

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"還書(shū)失??!"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"添加用戶(hù)失敗,該用戶(hù)已存在!"endl;

}

else

{

cout"添加用戶(hù)成功!"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"添加圖書(shū)失敗,該圖書(shū)已存在!"endl;

}

else

{

cout"添加圖書(shū)成功!"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()

//時(shí)間類(lèi)測(cè)試

Datea(1999,4,27);

Dateb(2000,4,27);

coutaendl;

coutbend

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論