您的位置:首页 > 编程语言 > C语言/C++

C++新手上路 程序实例,个人银行账户

2016-12-19 15:30 459 查看
#include "stdafx.h"

#include<cmath>//关于数学运算的文件,要添加复杂的数学运算要用到

#include<iostream>

using namespace std;

 

class SavingAccount {

private:

    int id;//账号

    double balance;//账户余额

    double rate;//存款的年利率

    int lastDate;//上次变更余额的时期

    double accumulation;//余额按日累加之和

    void record(int date,
double amount);//记录

    double accumulate(int date)const//获得到指定日期为止的存款金额按日累计值

    {

              return accumulation + balance * (date - lastDate);//计算公式,不必在意(就不能来个简单易懂的数学公式吗?我数学不好)

    }

public:

    SavingAccount(int date,
int id,
double rate);//构造函数

    int GetId() {
return id; }//获得账号id

    double GetBalance() {
return balance; }//获得账户余额

    double GetRate() {
return rate; }//获得年利率

    void Show();//显示账户信息函数的声明

    void Depossit(int date,
double amount);//存入现金的函数声明

    void Withdraw(int date,
double amount);//取出现金的函数声明

    void Settle(int date);//结算利息,每年1月1日调用一次该函数

};

//相关成员函数的实现

//构造函数地的实现

SavingAccount::SavingAccount(int date,
int id,
double rate):id(id), balance(0), rate(rate),
lastDate(date), accumulation(0)//初始化数据

{

      cout << date << "\t#" << id << "
is created " << endl;//\t 为制表符是数据看起来像是表格,产生空白 

}

 

//余额变动记录的函数实现

void SavingAccount::record(int date,
double amount)//amount 为取出或存入的金额

{

      accumulation = accumulate(date);//获得按日累计后的余额之和

      lastDate = date;//获得最后一次变动余额的时间

      amount = floor(amount * 100 + 0.5) / 100;//floor 是cmath中的函数,是向下取整函数//保留小数点后面两位(真是高端大气上档次的保留小数点的方法,我都不懂)

      balance += amount;//将取出和存入的金额与账户余额进行加减

      cout << date << "\t#" << id
<< "\t" << amount << "\t" << balance
<< endl;

 

}

//存款函数的实现

void SavingAccount::Depossit(int date,
double amount)

{

      record(date,
amount);//调用余额变动的函数

}

//取款的函数实现

void SavingAccount::Withdraw(int date,
double amount)

{

       //要先加判断是否取得数额大于余额

      if (amount > GetBalance())//调用GetBalance函数得到账户的余额

      {

              cout << "Error: not enough money" << endl;

      }

      else

      {

      record(date, -amount);//因为取钱时余额会少所以是负的,但用户操作时是正数

      }

}

//计算利息的函数实现

void SavingAccount::Settle(int date)

{

      double interest = accumulate(date)*rate / 365;//同样是不懂的数学公式,貌似这样就得到利息了??

      //将利息加到余额中

      if (interest != 0)//现在程序员的简便写法,真是越来越懒了

             record(date, interest);

      accumulation = 0;//将accumulation置为0

}

//显示账户信息的函数实现

void SavingAccount::Show()

{

         cout << "#" << id
<< "\tBalance" << balance;//井号就是个符号不要多想

}

 

int main(){                //函数有返回值

//创建两个账户

SavingAccount sa1(1, 20137659, 0.015);

SavingAccount sa2(1, 20137660, 0.015);

//几次存款操作和取款操作

sa1.Depossit(5, 5000);

sa2.Depossit(25, 10000);

sa1.Depossit(45, 5500);

sa2.Withdraw(60, 4000);//就是这里取款金额也是正数

//假设在开户后第90天结算利息

sa1.Settle(90);

sa2.Settle(90);

//输出各个账户的信息

sa1.Show(); cout << endl;//换行

sa2.Show(); cout << endl;

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++