c++实验报告同名12568文档格式.docx
- 文档编号:6047345
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:17
- 大小:144.09KB
c++实验报告同名12568文档格式.docx
《c++实验报告同名12568文档格式.docx》由会员分享,可在线阅读,更多相关《c++实验报告同名12568文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
//建立几个帐户
SavingsAccountsa1(date,"
s3755217"
0.015);
SavingsAccountsa2(date,"
02342342"
CreditAccountca(date,"
c5392394"
10000,0.0005,50);
Account*accounts[]={&
sa1,&
sa2,&
ca};
//账户总数
constintn=sizeof(accounts)/sizeof(Account*);
cout<
<
"
(d)deposit(w)withdraw(s)show(c)changeday(n)nextmonth(e)exit"
endl;
charcmd;
do{//显示日期和总金额
date.show();
\tTotal:
Account:
:
getTotal()<
\tcommand>
;
intindex,day;
doubleamount;
stringdesc;
cin>
>
cmd;
switch(cmd){
case'
d'
//存入现金
index>
amount;
getline(cin,desc);
accounts[index]->
deposit(date,amount,desc);
break;
case'
w'
//取出现金
withdraw(date,amount,desc);
s'
//查询各帐户信息
inti;
for(i=0;
i<
n;
i++){
["
]"
accounts[i]->
show();
}
c'
//改变日期
day;
if(day<
date.getDay())
cout<
Youcannotspecifyapreviousday"
elseif(day>
date.getMaxDay())
Invalidday"
elsedate=Date(date.getYear(),date.getMonth(),day);
n'
//进入下个月
if(date.getMonth()==12)
date=Date(date.getYear()+1,1,1);
else
date=Date(date.getYear(),date.getMonth()+1,1);
i++)
accounts[i]->
settle(date);
}while(cmd!
='
e'
);
return0;
}
account.cpp
cmath>
doubleAccount:
total=0;
//Account类的实现
Account(constDate&
date,conststring&
id)
id(id),balance(0)
{date.show();
\t#"
id<
created"
voidAccount:
record(constDate&
date,doubleamount,conststring&
desc){
amount=floor(amount*100+0.5)/100;
//保留小数点后面两位
balance+=amount;
total+=amount;
\t"
amount<
balance<
desc<
error(conststring&
msg)const
{cout<
Error(#"
):
msg<
//voidSavingsAccount:
deposit(constDate&
desc)
//{record(date,amount,desc);
show()const{
\tBlance"
balance;
//SavingsAccount类相关成员函数的实现
SavingsAccount:
SavingsAccount(constDate&
id,doublerate):
Account(date,id),rate(rate),acc(date,0){}
voidSavingsAccount:
record(date,amount,desc);
acc.change(date,getBalance());
withdraw(constDate&
{
if(amount>
getBalance())
error("
notenoughmoney"
{record(date,-amount,desc);
settle(constDate&
date)
{if(date.getMonth()==1){
doubleinterest=acc.getSum(date)*rate/(date-Date(date.getYear()-1,1,1));
//计算年息
if(interest!
=0)
record(date,interest,"
interest"
acc.reset(date,getBalance());
//CreditAccount类相关成员函数的实现
CreditAccount:
CreditAccount(constDate&
id,doublecredit,doublerate,doublefee)
Account(date,id),credit(credit),rate(rate),fee(fee),acc(date,0){}
voidCreditAccount:
{record(date,amount,desc);
acc.change(date,getDebt());
if(amount-getBalance()>
credit)
notenoughcredit"
{
doubleinterest=acc.getSum(date)*rate;
if(interest!
if(date.getMonth()==1)
record(date,-fee,"
annualfee"
acc.reset(date,getDebt());
Account:
\tAvailablecredit:
getAvailableCredit();
account.h
#ifndef_ACCOUNT_H_
#define_ACCOUNT_H_
date.h"
accumulator.h"
string>
classAccount{//账户类
private:
std:
stringid;
//账号
doublebalance;
//余额
staticdoubletotal;
//所有账户的总金额
protected:
//供派生类调用的构造函数,id为账户
Account(constDate&
date,conststd:
string&
id);
//记录一笔账,date为日期,account为金额,desc为说明
voidrecord(constDate&
date,doubleamount,conststd:
desc);
//报告错误信息
voiderror(conststd:
msg)const;
public:
conststd:
getId()const{returnid;
doublegetBalance()const{returnbalance;
staticdoublegetTotal(){returntotal;
//显示账户信息
virtualvoiddeposit(constDate&
date,doubleamount,conststd:
string&
desc)=0;
virtualvoidwithdraw(constDate&
virtualvoidsettle(constDate&
date)=0;
virtualvoidshow()const;
};
classSavingsAccount:
publicAccount
{//储蓄账户类
Accumulatoracc;
//辅助计算利息的累加器
doublerate;
//存储的年利率
//构造函数
SavingsAccount(constDate&
id,doublerate);
doublegetRate()const{returnrate;
//存入现金
voiddeposit(constDate&
//取出现金
voidwithdraw(constDate&
voidsettle(constDate&
date);
//结算利息,每年1月1日调用一次该函数
classCreditAccount:
publicAccount{//信用账户类
//辅助计算利息的累加器
doublecredit;
//信用额度
//欠款的日利率
doublefee;
//信用卡年费
doublegetDebt()const{//获得欠款额
doublebalance=getBalance();
return(balance<
0?
balance:
0);
//构造函数
CreditAccount(constDate&
id,doublecredit,doublerate,doublefee);
doublegetCredit()const{returncredit;
doublegetRate()const{returnrate;
doublegetFee()const{returnfee;
doublegetAvailableCredit()const{//获得可用信用额度
if(getBalance()>
0)
returncredit+getBalance();
returncredit;
voiddeposit(constDate&
//取出现金
//结算利息,每年1月1日调用一次该函数
voidshow()const;
#endif
accumulator.h
#ifndef_ACCUMULATOR_H_
#define_ACCUMULATOR_H_
classAccumulator{//将某个数值按日累加
DatelastDate;
//上次变更数值的日期
doublevalue;
//数值的当前值
doublesum;
//数值按日累加之和
//构造函数,date为开始累加的日期,value为初始值
Accumulator(constDate&
date,doublevalue):
lastDate(date),value(value),sum(0){}
//获得日期date的累加结果
doublegetSum(constDate&
date)const{returnsum+value*(date-lastDate);
//在date将数值变更为value
voidchange(constDate&
date,doublevalue)
{
sum=getSum(date);
lastDate=date;
this->
value=value;
//初始化,将日期变为date,数值变为value,累加器清零
voidreset(constDate&
date,doublevalue){
lastDate=date;
this->
sum=0;
date.cpp
cstdlib>
namespace{//namespace使下面的定义只在当前文件中有效
//存储平年中的某个月1日之前有多少天,为便于getMaxDay函数的实现,该数组多出一项
constintDAYS_BEFORE_MONTH[]={0,31,59,90,120,151,181,212,
243,273,304,334,365};
Date:
Date(intyear,intmonth,intday):
year(year),month(month),day(day)
=0||day>
getMaxDay())
Invaliddate:
show();
exit
(1);
intyears=year-1;
totalDays=years*365+years/4-years/100+years/400+
DAYS_BEFORE_MONTH[month-1]+day;
if(isLeapYear()&
&
month>
2)totalDays++;
intDate:
getMaxDay()
const{
month==2)
return29;
else
returnDAYS_BEFORE_MONTH[month]-DAYS_BEFORE_MONTH[month-1];
voidDate:
show()
getYear()<
-"
getMonth()<
getDay();
date.h
#ifndef_DATE_H_
#define_DATE_H_
classDate{//日期类
intyear;
//年
intmonth;
//月
intday;
//日
inttotalDays;
//该日期是从公元元年1月1日开始的第几天
Date(intyear,intmonth,intday);
//用年,月,日构造日期
intgetYear()const{returnyear;
intgetMonth()const{returnmonth;
intgetDay()const{returnday;
intgetMaxDay()const;
//获得当月有多少天
boolisLeapYear()const{//判断当年是否为闰年
returnyear%4==0&
year%100!
=0||year%400==0;
voidshow()const;
//输出当前日期
intoperator-(constDate&
date)const{//计算两个日期之间差多少天
returntotalDays-date.totalDays;
四.实验结果
、
五.实验总结
通过这次对C++课程设计的学习,我了解到了软件编程的基本操作,并感受到了学习编程的乐趣。
在此次学习中,我在老师的帮助下完成了对银行管理系统的编写,并成功运行。
尽管我的程序还很简单,也有很多漏洞,但是却是我尽心尽力编写完成的。
我的水平可能还不足以完成更加复杂和困难的程序,但是我会再接再厉,一直认真学习下去的。
六.参考资料
1.《C++程序设计课程设计》,机械工业出版社,刘振安,刘燕君,孙忱,2004
2.《Visual
C++课程设计案例精编(第二版)》,中国水利水电出版社,严华峰,2002.
3.《Visual
C++课程设计语系统开发案例》,清华大学出版社,伍俊良,2002.
4.《面向对象程序设计与VC++实践》,西安电子科技大学出版社,揣锦华,2005.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 实验 报告 同名 12568
![提示](https://static.bingdoc.com/images/bang_tan.gif)