4.7.1类的设计

    设计一个银行账户管理程序,我们要让这个程序拥有基本的账户功能:存款;取款;余额查询;利息的结算;账户的创建。为了实现这些功能,我们需要设计账户的各种属性以及函数:账号;密码;年利率;创建账户的日期;上一次变更账户的日期;余额;利息。

#通过record()函数记录账户资金的变动,所有的账户资金的改变都通过这个函数来实现。
#通过accumulation()函数来计算余额按天累加的和,accumulate用于计算每日的利息和
#通过deposit()函数存款,用record函数记录资金变动
#通过withdrew()函数存款,用record函数记录资金变动

4.7.2源程序及其说明

解:

#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
const double rate = 0.0030;
class SavingAccount {private:long int id;//账户double balance;//余额double rate;//年利率int lastDate;//最后变更余额日期double accumulation;//余额按日累加的和double accumulate(int date) const { return accumulation + balance * (date - lastDate); };          //静态成员函数,用于计算存款金额按日累积值
public:SavingAccount(int date,long int id, double rate);int getid() { return id; };double getbalance() { return balance; };double getRate() { return rate; };void show();void record(int date,double amount);void deposite(int date, double amount);void withdraw(int date, double amount);void settle(int date);//结算利息
};
SavingAccount::SavingAccount(int date,long int id, double rate) :id(id), balance(0), rate(rate), lastDate(date), accumulation(0) {}
void SavingAccount::show() {cout << "余额为" << balance << endl;
};
void SavingAccount::deposite(int date, double amount) {cout << "本次存款金额为" << amount << endl;
};
void SavingAccount::withdraw(int date, double amount) {if (getbalance() >=(-amount)) {cout << "本次取款金额为" << amount << endl;balance += amount;}else if(-amount>getbalance()){cout << "抱歉,您的余额不足" << endl;}
};
void SavingAccount::settle(int date) {double interest = accumulate(date) * rate / 365;if (interest != 0) {record(date, interest);}cout << "您的利息为" <<std::fixed << interest << endl;accumulation = 0;
};
void SavingAccount::record(int date, double amount) {accumulation = accumulate(date);lastDate = date;balance += amount;cout << date << "\t" << id <<"\t"<< "账户变动金额为" << amount << endl;
};int main() {int flag = 0;int date;int lastDate;long int id;string choice;char keywords[30] = { 0 }; char passwords[30] = {0};char* k = NULL; char* p = NULL;double amount;cout << "\t欢迎来到BOSS银行" << endl;if (flag == 0) {cout << "您尚未创建银行账户" << endl;cout << "正在创建银行账户" << endl;cout << "请输入您的账号" << endl;cin >> id;cout << "请设置您的密码" << endl;getchar();gets_s( keywords); k = keywords;cout << "请输入今天的日期a" << endl;cin >> date;cout << date << "  " << id << "  " << "is created" << endl;flag = 1;}cout << "请输入今天的日期b" << endl;cin >> lastDate;cout << "请输入账号" << endl;cin >> id;cout << "请输入密码,按任意键继续" << endl; getchar();gets_s(passwords);cout << "请选择您要办理的业务,输入Q退出1" << endl;cout << "A存款" << endl;cout << "B取款" << endl;cout << "C余额查询" << endl;cout << "D结算利息" << endl;cout << "E开通帐户" << endl;cin >> choice;SavingAccount s(date, id, rate);if (choice == "Q") {goto flag2;}else {do {if (choice == "A") {cout << "请输入您要存款的金额" << endl;cin >> amount;s.deposite(lastDate, amount);s.record(date, amount);s.show();}else if (choice == "B") {cout << "请输入您要取款的金额" << endl;cin >> amount;s.withdraw(lastDate, -amount);s.show();}else if (choice == "C") {cout << "您的余额是" << s.getbalance() << endl;}else if (choice == "D") {s.settle(lastDate);s.show();}else if (choice == "E") {cout << "您正在创建银行账户" << endl;cout << "请输入您的账号" << endl;cin >> id;cout << "请设置您的密码" << endl;cin >> keywords;cout << "请输入今天的日期" << endl;cin >> date;cout << date << "  " << id << "  " << "is created" << endl;flag = 1;}cout << "请输入您所需要办理的业务2" << endl;cout << "A存款" << endl;cout << "B取款" << endl;cout << "C余额查询" << endl;cout << "D结算利息" << endl;cout << "E开通帐户" << endl;cin >> choice;} while (choice != "Q");}flag2:return 0;
}

//这里面的程序虽然设置了密码,但是我也不知道怎么验证,因为我用strcmp函数验证的时候,不管怎么输入都比较不了,如何都不相等,我也不会哈哈哈,会的人麻烦指点一下

C++第四章4.7综合实例----个人银行账户管理程序相关推荐

  1. 【Java数据结构与算法】第四章 栈实现综合计算器

    第四章 栈实现综合计算器 文章目录 第四章 栈实现综合计算器 一.栈 1.介绍 2.应用场景 3.思路 4.代码实现 二.综合计算器 v1.0 1.思路 2.代码实现 三.前缀.中缀和后缀表达式规则 ...

  2. 【无人机组装与调试】第四章 F450四轴装机实例-选择机型、需要的器材工具材料

    [无人机组装与调试]系列课程全集: 第一章 概述 第二章 关于新西达30A电调说明书的问题 第三章 舵机安装与调整 第四章 F450四轴装机实例-选择机型.需要的器材工具材料 第五章 无人机遥控器 第 ...

  3. 【C++ 第七章 个人银行账户管理程序案例】

    [第七章] 个人银行账户管理程序  案例实现 //account.cpp #include"account.h" #include<cmath> #include< ...

  4. 第四章-循环程序设计代码实例(C++蓝豹子)

    文章目录 例4.2 例4.3 例4.4 break使用 例4.6 continue使用 三层for循环输出A.B.C的全排列 例4.8 例4.9 例4.10 例4.11 例4.12 例4.13 例4. ...

  5. C++ 个人银行账户管理 综合实例62.10_date

    在网上找了很多例子,代码都不是循序渐进的,自己一点一点按章节把代码按照老师的要求都码好了,一点一点进步吧,因为一开始就去看别人整篇的代码实在很难,带给需要帮助的人,这是第六章第二个综合实例,加入Dat ...

  6. 贝叶斯统计 韦来生 课后题答案 第四章

    第四章贝叶斯统计推断 5.设某银行为一位顾客服务时间(单位:min)服从指数分布Exp(λ),其中参数的先验分布是均值为0.2.标准差为1.0的伽玛分布.如今对20位顾客服务进行观测,测得平均服务时间 ...

  7. IT项目管理总结:第四章 项目综合管理

    第四章 项目综合(Integration)管理 什么是项目综合管理 –它涉及在整个项目生命周期中协调所有其他项目管理的知识领域 –主要包括以下六个主要过程: A)制定项目章程(project char ...

  8. linux安全技术课程报告,综合实例一+linux平台WEB安全技术研究报告.doc

    综合实例一linux平台WEB安全技术研究报告 摘 要: 根据网络安全的"木桶理论",网络安全是由若干"木板"元素的安全决定,因此本文就Linux平台下WEB服 ...

  9. 信息安全工程师学习笔记《第四章》

    第四章 网络安全体系与网络安全模型 本章内容主要包括: 第一,讲述了网络安全体系的基本概念以及相关安全模型,主要包括机密性模型.完整性模型.信息流模型.信息保障模型.能力成熟度模型.纵深防御模型.分层 ...

  10. 高效能人士的七个习惯-第四章-阅读

    第四章 习惯二:以终为始(一) --自我领导的原则 太多人成功之后,反而感到空虚:得到名利之后,却发现牺牲了更可贵的事物.因此,我们务必掌握真正重要的愿景,然后勇往直前坚持到底,使生活充满意义. 身外 ...

最新文章

  1. python如何编写数据库_如何在几分钟内用Python编写一个简单的玩具数据库
  2. 寻找两个字符串相似度的代码
  3. 假期ACM训练计划表
  4. 利用SQL中的递归返回多行数据的连接
  5. Android之网络编程之网络通信几种方式实例分享
  6. 为何要清除浮动?如何清除?
  7. linux系统中 库分为静态库和,Linux系统中“动态库”和“静态库”那点事儿-【经典好文】...
  8. socket编程(九)
  9. netapp学习(三)---assign unowned disk
  10. 能给别人吗_《奇葩说》观点引热议:一种能看透别人心思的能力,你敢要吗?...
  11. 计算机一级考试自测题,计算机一级B考试自测题
  12. word手动设置编号起始值
  13. 使用selenium下载百度图片
  14. pe服务器注册表,注册表修复方法
  15. linux重装系统格式化挂载分区,Linux系统格式化新磁盘并挂载分区
  16. matlab海底地形数据,海底地形建模器
  17. 如何更换计算机cpu风扇,cpu风扇怎么拆下来 cpu风扇正确拆卸方法图解
  18. 为什么走线选择50欧姆阻抗
  19. CMDN创新应用:果库 - 帮助你发现喜欢的商品
  20. Android 是Google开发的基于Linux平台的开源手机操作系统

热门文章

  1. 只有1kb的清理软件_1kb文件夹快捷方式病毒专杀工具
  2. 3d Max修改器中英文对照表
  3. 强网杯2022——WEB
  4. 格局炸裂,程序员必看的十部纪录片
  5. 软考(网络工程师)-必备网络知识(笔记二)
  6. Delphi TStringList DBRichEdit 删除尾部多余换页符
  7. 衡是计算机科学与技术学院,郭华平
  8. JEP 379:将低暂停时间的垃圾收集器Shenandoah推向生产
  9. 概率论由相关性求数学期望和方差的公式_概率论笔记2--离散随机变量、数学期望和方差...
  10. html5 blockquote,HTML5 blockquote 标签