版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
//Date,h
#ifndefDATEH_
^define_DATE_H_
classDate{
private:
intyear;
intmonth;
intday;
inttotalDays;
public:
Date(intyear,intmonth,intday);
intgetYear()const(
returnyear;
}
intgetMonth0const{
returnmonth;
}
intgetDay()const(
returnday;
}
intgetMaxDay()const;
boolisLeapYearOconst(
returnyeai'%4==C&&year%100!=0year%400==0;
}
voidshow()const;
〃計算兩個日期之間差多少天
intdistance(constDatc&date)const{
returntotalDays-date.totalDays;
}
};
#endif
“Accumulator,h
iiifndef_ACCUMULATOR」]
^define_ACCUMULATOR_H
^include"Date,h”
classAccumulator!
private:
DatelastDate;
doublevalue;
doublesum;
public:
〃構(gòu)造函數(shù),date開始累加的日期,value為初始值
Accumulator(constDaleSdate,doublevalue):lastDalc(date),value(value),sum(O){:
〃獲得U期date的累加結(jié)果
doublegctSum(constDate&datc)const{
returnsum+valu€*date.distance(lastDate);
}
〃在date將數(shù)值變更為value
voidchange(constDate&date,doublevalue){
sum=getSum(date);
lastDate=date;this->va1ue=va1ue;
}
voidreset(constDate&date,doublevalue){
lastDate=date;
this->va1ue=va1ue;
sum=0;
)
);
#endif
//Accout.h
#ifndef_ACC0UNT_H_
切efine_ACCOUNT_H_
#include"Date,h”
#include"Accumulator,h”
#include<string>
classAccount{
private:
std::stringid;
doublebalance;
staticdoubletotal;
protected:
〃供派生類調(diào)用的構(gòu)造函數(shù),id為賬戶
Account(constDate&date,conststd::string&id);
〃記錄一筆括賬,date為日期,amount為金額,desc為說明
voidrecord(constDate&date,doubleamount,conststd::string&desc);
〃報告錯誤信息
voiderror(conststd::string&msg)const;
public:
conststd::string&getld()const{returnid;}
doubIegetBalanceOconst{returnbalance:)
staticdoublegetTotal(){returntotal:)
〃顯示賬戶信息
voidshow()const:
};
classSavingsAccount:pub]icAccount{
private:
Accumulatoracc;
//doublecredit;
doublerate;
public:
〃構(gòu)造函數(shù)
SavingsAccount(constDate&date,conststd::string&id,doublerate);
doublegetRateOconst(returnrate;}
〃存入現(xiàn)金
voiddeposit(constDate&date,doubleamount,conststd::string&desc);
〃取出現(xiàn)金
voidwithdraw(constDate&date,doubleamount,conststd::string&desc);
voidsettle(constDace&date);
};
classCreditAccount:publicAccount{
private:
Accumulatoracc;
doublecredit;
doublerate;
doublefee;
doublegetDebt()const{
doublebalance=getBalance();
return(balance<O?balance:O);
}
public:
〃構(gòu)造函數(shù)
CreditAccount(constDate&date,conststd::string&id,doublecredit,doublerate,double
fee);
doublegetCredit()const{returncredit;}
doublegetRateOconst{returnrate;}
doublegetFeeO(returnfee;}
doublegetAvai1ableCredit()const{
if(getBalance()<0)
returncredit+getBalance();
else
returncredit;
}
〃存入現(xiàn)金
voiddeposit(constDate&datc,doubleamount,conststd::string&desc):
〃取出現(xiàn)金
voidwithdraw(constDate&datc,doubleamount,conststd::string&desc);
voidsettle(constDate&date);
voidshow()const;
}:
#endif
//Date.epp
#include"Date,h”
Sinclude<iostream>
^include<csidlib>
usingnamespacestd;
namespace{//namespace使卜面的定義只在當(dāng)前文件中有效
〃存儲半年中的某3個月1日之前有多少天,為便于getMaxDay函數(shù)的實現(xiàn),該數(shù)組多出一項
constintDAYS_BEF0R3_M0NTH[]=(0,31,59,90,120,15L181,212,243,273,304,334,365};
}
Date::Date(intyear,intnonth,intday):year(year),month(month),day(day){
if(day<=0day>geLMaxDay()){
cout?z,Invaliddate:";
show();
cout?endl;
exit(1);
}
intyears=year-l;
totalDays=ycars*365+ycars/4-ycars/l00+years/400+DAYS_BEFORE_MONTH[month-1]+day;
if(isLeapYeai'()&&month>2)
totalDays++;
}
intDate::getMaxDay()const{
if(isLeapYear()&&month==2)
return29;
else
returnDAYS_BEFORE_MONTH[month]-DAYS_BEFORE_MONTH[month-1];
}
voidDate::show()const{
cout?getYear()?z/*?getMonth0?*-z/?getDay0;
}
//Account.cpp
#include“Accout.h"
#include<cmalh>
#include<iostream>
usingnamespacestd;
doubleAccount::total=0;
〃Accounl類的實現(xiàn)
Account::Account(constDate&date,conststd:zstring&id):id(id),balance(0){
date,show();
cout"created”〈〈end1;
)
voidAccount::record(constDate&date,doubleamount,conststd::string&desc){
amount=floor(amount*100+0.5)/100;
balance+=amount;
total+=amount;
date.show();
cout?zz\t#/,?id?,,\t"?amount?,z\tz?balance<<"\tv?desc?endl;
)
voidAccount::show()const{cout?id<<~\tBalance:“〈〈balance;}
void?\ccount::error(conststring&msg)const{
cout<<MError(#",<<id<(//):*?msg?endl;
}
〃SavingsAccount類相關(guān)成員函數(shù)的實現(xiàn)
SavingsAccount::SavingsAccount(constDate&date,conststd:zstring&id,double
rate):Account(date,id),rate(rate),acc(date,0)(}
voidSavingsAccount::deposit(constDateftdate,doubleunount,conststring&dcsc){
record(date,amount,desc);
acc.change(date,gctBalanceO);
}
voidSavingsAccount::withdraw(constDate&date,doubleamount,conststring&desc)(
if(amount>getBalance()){
error(zznotenoughmoney");
}
else(
record(date,-ameunt,desc);
acc.change(date,getBalance());
}
voidSavingsAccount::settle(constDate&date){
doubleinterest=acc.getSum(dale)*rate/dalc.distance(Date(date.getYcar()-1,1,l)j;
if(interest!=0)
record(date,interest,"interest");
acc.reset(date,getBalanceO);
)
//CreditAccount類相關(guān)成員函數(shù)的實現(xiàn)
CreditAccount::CreditAccount(constDate&date,conststring&id,doublecredit,double
rate,doublefee):Account(date,id),credit(crcdit),rate(rate),fee(fec),acc(date,0){}
voidCreditAccount::deposit(constDatedelate,doubleamount,conststring&desc){
record(date,amount,desc);
acc.change(date,getDebt());
)
voidCreditAccount::withdraw(constDate&date,double£mount,conststring&desc){
if(amount-getBalanceO>credit)(
error(^notenoughcredit");
}
else{
record(date,-ameunt,desc);
acc.change(date,getDebt()):
}
)
voidCreditAccount::settle(constDate&date){
doubIeinterest=acc.getSum(date)*rate;
if(interest!=0)
record(date,interest,“interest");
if(date.getMonth()==l)
record(date,-fee,“annualfee");
acc.reset(date,getDebt()):
}
voidCreditAccount::show()const{
Account::show();
cout?w\tAvailablecredit:*?getAvailableCredit();
)
//Lab7_10
#include“Accout.h"
#include<iostream>
usingnamespacestd;
intmain(){
Datedate(2008,11,1);
〃建立幾個賬戶
SavingsAccountsal(date,*53755217",0.015):
SavingsAccountsa2
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 渠道培訓(xùn)合同范本
- 苗木維護(hù)合同范本
- 莫衡簽約協(xié)議書
- 認(rèn)股比例協(xié)議書
- 設(shè)備代理協(xié)議書
- 設(shè)備抵款協(xié)議書
- 設(shè)計無責(zé)協(xié)議書
- 評審費(fèi)合同范本
- 請教幫扶協(xié)議書
- 快手網(wǎng)紅協(xié)議書
- 核磁共振科管理制度
- 質(zhì)控醫(yī)師年度總結(jié)(3篇)
- 餐飲火鍋店管理手冊樣本
- 軍事理論-綜合版智慧樹知到期末考試答案章節(jié)答案2024年國防大學(xué)
- 辦公室裝修預(yù)算清單
- 《電力大件運(yùn)輸規(guī)范》
- 國開電大操作系統(tǒng)實驗2:進(jìn)程管理實驗報告
- 機(jī)械加工工序卡
- 人教部編版五年級語文上冊期末試卷(完整)
- 節(jié)能基本情況表(打印)
- 電動車轉(zhuǎn)讓合同協(xié)議書電子版
評論
0/150
提交評論