




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 車(chē)輛分期賠償合同協(xié)議
- 輕微受傷賠償協(xié)議書(shū)模板
- 國(guó)內(nèi)過(guò)橋資金借款合同
- 個(gè)人長(zhǎng)期租車(chē)合同
- 人力資源管理理論實(shí)踐試題庫(kù)
- 車(chē)飾合作協(xié)議書(shū)范本
- 溢價(jià)入股協(xié)議書(shū)
- 煙酒補(bǔ)償協(xié)議書(shū)
- 簽訂合同授權(quán)的委托書(shū)
- 基于物聯(lián)網(wǎng)技術(shù)的智能家居設(shè)備通信協(xié)議說(shuō)明
- 古詩(shī)漁歌子古詩(shī)閱讀賞析課件
- 痛經(jīng)(中醫(yī)婦科學(xué))
- 供應(yīng)商調(diào)查表模板及范文大全
- 2021年商品期權(quán)開(kāi)戶(hù)測(cè)試題庫(kù)
- 淺談小學(xué)體育課堂引入民間體育游戲的嘗試與創(chuàng)新
- 第二章 中國(guó)的自然環(huán)境《第四節(jié) 自然災(zāi)害》課件
- 有機(jī)合成工作總結(jié)模板
- 2024年上海市高考英語(yǔ)完形填空試題真題匯編(含答案詳解)
- 慢阻肺病人健康宣教課件
- 湯顯祖《牡丹亭·游園》品讀課件
- 物業(yè)安全生產(chǎn)培訓(xùn)
評(píng)論
0/150
提交評(píng)論