




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第C++課程設(shè)計之圖書館管理系統(tǒng)本文實例為大家分享了C++課程設(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;//默認end為應(yīng)該還書的時間
intxj;//1表示已經(jīng)續(xù)借過,0時還未續(xù)借
intsy;//1時已經(jīng)還書,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();//用于續(xù)借時修改應(yīng)該還書的時間,即將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"""應(yīng)還書日期:"end"""是否續(xù)借過:"xj"""是否已還書:"syendl;
classBook
intid;//書號
stringname;//書名
stringpress;//出版社
Datepd;//出版日期
intsum,ln;//總冊數(shù),已借出
inti;
public:
vectorRecord
vectorRecord::iteratorit1;
multimapint,int//根據(jù)借閱人的學(xué)號建立
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é)號查詢
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;//返回的是這本書存儲的關(guān)于借閱人x的借閱記錄的下標值
}
elsereturn-1;
voidBook::display()
cout"書號:"id"""書名:"name"""出版社:"press"""出版日期:"pd"""總冊數(shù):"sum"""已借出:"lnendl;
if(v1.size()!=0)
{
dispRecord();
}
voidBook::display1()
cout"書號:"id"""書名:"name"""出版社:"press"""出版日期:"pd"""總冊數(shù):"sum"""已借出:"lnendl;
classUser
intid;
stringname;
stringmajor;
intmb,nb;//mb為最大借閱量,nb為當(dāng)前借閱量
intwj;//1為違紀過,此時無法借書;
inti;
public:
vectorRecord
vectorRecord::iteratorit2;
multimapint,int//根據(jù)所借書的書號建立
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"學(xué)號:"id"""姓名:"name"""專業(yè)班級:"major"""最大借閱量:"mb"""當(dāng)前借閱量:"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變?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"還書失??!"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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年河北外國語學(xué)院附屬中學(xué)教師招聘考試真題
- 高二升高三數(shù)學(xué)暑假作業(yè)04 導(dǎo)數(shù)的綜合應(yīng)用(證明不等式、恒成立、有解、零點、方程的根、雙變量、隱零點、極值點偏移)(解析版)
- 浙江省重點中學(xué)2025年英語八年級第二學(xué)期期末學(xué)業(yè)水平測試模擬試題含答案
- 12.5.1 分式方程的應(yīng)用 學(xué)案
- 農(nóng)業(yè)機器人應(yīng)用前景-洞察及研究
- 固體廢物造成的重大污染事件
- 心理調(diào)適與情緒管理在家庭教育中的應(yīng)用
- 營銷合作保密及風(fēng)險控制協(xié)議
- 皮革制品采購委托代理專項服務(wù)協(xié)議
- 近幾年浙江省高考非選擇題的非遺傳題分析
- 江蘇南通2025年公開招聘農(nóng)村(村務(wù))工作者筆試題帶答案分析
- 《公司法教學(xué)課件》課件
- 銀行客戶分類管理
- 造價咨詢保密管理制度
- 支吊架廠家抗震支架安裝規(guī)范圖集
- 2025年江蘇瑞海投資控股集團有限公司招聘筆試參考題庫含答案解析
- 醫(yī)療廢物應(yīng)急處理流程與方案
- 簡陽市2024-2025學(xué)年數(shù)學(xué)五下期末統(tǒng)考試題含答案
- 體檢中心投訴處理流程
- 2025山西焦煤集團公司招聘高頻重點模擬試卷提升(共500題附帶答案詳解)
- 2025年中國東方航空股份有限公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論