个人银行账户管理程序_第1页
个人银行账户管理程序_第2页
个人银行账户管理程序_第3页
个人银行账户管理程序_第4页
个人银行账户管理程序_第5页
已阅读5页,还剩17页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、个人银行账户管理程序实验内容:设计一个程序,实现对个人银行账户的管理。银行账户有储蓄账户和信用账 户两类。储蓄账户不可以透支,利息每年结算一次;信用账户允许在一定额 度内透支,透支则需支付利息,并在每月 1日进行一次结算。实验要求:1. 程序要实现的功能:a)用户创建新账户需要提供基本的账号以及金额,如果是储蓄账户,还需 定义年利率,如果是信用账户,则还需定义信用额度,日利率,年费b)储蓄账户:在每年的1月1日结算利息,利息的计算:将一年中每天的 余额累积起来再除以一年总天数,得到日均余额,再乘以年利率c)信用账户:在每年的1月1日扣取年费,信用账户没有利息,但透支则需要支付利息,从透支那天开

2、始计算利息(日均欠费金额x利率),并在每 月的1日进行一次结算d)用户能查看账户信息以及账户余额的变动情况e)用户存取款需要提供日期和金额,取款失败应提示输出失败原因2. 设计类并写出每个类的详细描述(包括构造函数,成员变量,成员函数的含义)和画出UML类图(体现类之间的关系和类内成员的访问权限)3. 程序中使用的类应该做到类定义和实现分离(使用多文件结构)4. 设计测试用例对程序功能进行充分测试,并对运行结果进行截图实验分析:定义账户基类Account描述所有账户的共性,包含私有成员:账号id、余额balanee、账户总金额静态数据成员total ;保护成员:构造函数Account()、 记

3、账函数record()、错误信息报告常函数 error();公有成员:获取账号常函数 getld()、获取余额常函数 getBalance()、获取总金额静态函数 getTotal()、显 示账户信息show()。再从账户基类中公有派生出储蓄账户类Savi ngsAccou nt和信用账户类CreditAccou nt ,储蓄类账户中定义了私有成员:辅助计算利息的累加器acc、存款的年利率rate,公有成员:构造函数 SavingsAccount()、用于访问年利率 的常函数getRate()、存现金函数deposit()、取现金函数 withdraw。、利息结 算函数settle()。信用类

4、账户中定义了私有成员:辅助计算利息的累加器acc、信用额度 credit、欠款的日利率 rate、信用卡年费 fee、获得欠款项函数 getDebt();公有成员:构造函数CreditAccou nt()、获取信用额度常函数getCredit()、获取日利率常函数getRate()、获取年费常函数getFee()、获得可 用信用额度常函数 getAvailableCredit()、存现金函数deposit()、取现金函数 withdraw()、利息和年费结算函数 settle()。定义类Accumulator ,用于计算一项数值的按日累加之和的接口, 通过该类 计算利息,包含三个数据成员 表示

5、被累加数值上次变更日期的lastDate、被累加数值当前值value以及上次变更被累加数值为止的按日累加总和 sum, 该类同时包含四个函数成员 构造函数Accumulator。、用来计算到指定日期的累加结果的常函数 getSum ()、用来在指定日期更改数值的函数 cha nge() 以及用来将累加器清零并重新设定初始日期和数值的函数reset()。定义日期类 Date,该类的数据成员包含 year、mo nth、day和totalDays ,其中totalDays表示这一天的相对日期。该类的成员函数除了构造函数和用来获 得year、mon th、day的函数外,还包括用来得到当前月的天数

6、getMaxDay() 函数、用来判断当前年是否为闰年的isLeapYear()函数、用来将当前日期输出的 show()函数、用来判断当前日期与指定日期相差天数的distance()函数,这些函数都会被Date类的其他成员函数或SavingsAccount 类的函数调用。以上各个类之间的UML类图如下:word专业资料1程序代码:账户类定义头文件:/Acco un t.h#ifndef _ACCOUNT_H_#defi ne _ACCOUNT_H#in elude #in elude Date.h#in elude Accumulator.hclass Aeeo unt private:std

7、:stri ng id;double bala nee;static double total;proteeted:Aeeo un t(e onst Date &date, const std:stri ng &id);void reeord(e onst Date &date, double amount, const std:stri ng &dese);void error(e onst Date &date, double amount, const std:stri ng &msg) const;public:const std:stri ng &getld() eon stretu

8、rn id;double getBala nce() eon stretur n bala nee;static double getTotal() return total;void show() con st;; class Savin gsAcco un t:public Acco unt private:Accumulator acc;double rate;public:Savi ngsAccou nt(c onst Date &date, const std:stri ng & id, double rate);double getRate() const return rate;

9、void deposit(c onst Date &date, double amount, const std:stri ng&desc);void withdraw(c onst Date &date, double amount, const std:stri ng&desc);void settle(c onst Date & date);class CreditAccou nt:public Acco untprivate:Accumulator acc;double credit;double rate;double fee;double getDebt() const doubl

10、e bala nee = getBala nce();retur n (bala nce0 ? bala nee : 0);public:CreditAcco un t(c onst Date &date, const std:stri ng &id, double credit, double rate, double fee);double getCredit() const return credit;double getRate() con streturn rate;double getFee()return fee;double getAvailableCredit() con s

11、tif(getBalance() 0)retur n credit + getBala nce();elsereturn credit;void deposit(c onst Date &date, double amount, const std:stri ng&desc);void withdraw onst Date &date, double amount, const std:stri ng &desc);void settle(c onst Date & date);void show() con st;#en dif账户类实现文件:/Acco un t.cpp#in clude

12、#in clude #i nclude #in elude Accou nt.h using n amespace std;double Acco un t:total = 0;Acco un t:Acco un t(c onst Date &date, const std:stri ng &id):id(id),bala nce(0)date.show();cout t# id is created endl;void Acco un t:record(c onst Date &date, double amount, const std:stri ng&desc)amount = floo

13、r(amount * 100 + 0.5) / 100;bala nee += amount;total += amount;date.show();cout t# id t setw (6) amou nt t setw(10) bala nee t desc en dl;void Acco un t:show() con stcout # id tBalance: balanee;void Acco un t:error(c onst Date &date, double amount, const stri ng&msg) con stdate.show();coutvv t# id t

14、 setw(6) amount t setw(10) bala nee t Error:+msg getBala nce()error(date, amoun t, you not eno ugh mon ey); else record(date,-am oun t,desc);acc.cha nge(date,getBala nce();void Savin gsAcco un t:settle(c onst Date &date)double interest = acc.getSum(date) * rate / date.distance( Date(date.getYear()-1

15、,1,1);if(i nterest!=0)record(date,i nterest,i nterest);acc.reset(date,getBala nce();CreditAccou nt:CreditAcc oun t(co nst Date &date,c onst stri ng& id,double credit,double rate,doublefee):Accou nt(date,id),credit(credit),rate(rate),fee(fee),acc(date,O)void CreditAcco un t:deposit(c onst Date &date,

16、double amoun t,c onst stri ng &desc)record(date,amou nt,desc);acc.cha nge(date,getDebt();void CreditAcco un t:withdraw(c onst Date &date,double amoun t,c onst stri ng &desc)if(amou nt-getBala nce()credit)error(date, amoun t, you not eno ugh credit); elserecord(date,-am oun t,desc);acc.cha nge(date,g

17、etDebt();void CreditAcco un t:settle(c onst Date &date)double in terest=acc.getSum(date)*rate;if(i nterest!=0)record(date,i nterest,i nterest);if(date.getMo nth()=1)record(date,-fee,a nnual fee);acc.reset(date,getDebt();void CreditAcco un t:show() con stAcco un t:show();cout ttAvailable credit: getA

18、vailableCredit();日期类头文件:/Date.h#ifndef _DATE_H_#defi ne _DATE_H_class Date private:int year;int mon th;int day;int totalDays;public:Date(i nt year, i nt mon th, int day);int getYear() const retur n year;int getM on th() const return mon th;int getDay() const return day;int getMaxDay() con st;bool is

19、LeapYear() const return year%4=0 & year%100!=0 | year%400=0;int dista nce(c onst Date& date) const return totalDays - date.totalDays;void show() con st;#en dif日期类实现文件:/Date.cpp#i nclude #i nclude #in clude Date.h using n amespace std;n amespace const intDAYS_BEFORE_MONTH=0,31,59,90,120,151,181,212,2

20、43,273,304,334,365;Date:Date(i nt year,i nt mon th,i nt day):year(year),m on th(mo nth),day(day)if(day getMaxDay() cout Inv alid date:;show();cout 2)totalDays+;int Date:getMaxDay() con st if(isLeapYear() & mon th = 2)return 29;elsereturn DAYS_BEFORE_MONTHmo nth -DAYS_BEFORE_MONTHmo nth-1;void Date:s

21、how() const cout getYear() - getMo nth() - value = value;void reset(c onst Date &date, double value) lastDate = date;this-value = value;sum=0;#en dif测试用例及截图:/ma in .cpp#i nclude #i nclude #in elude Accou nt.husing n amespace std;int mai n() Date date(2016, 12, 22);cout建立账户endl;SavingsAccount sa1(dat

22、e, SA_2016, 0.015);SavingsAccount sa2(date, SA_2017, 0.015);CreditAccou nt ca(date, CA_2018, 10000, 0.0005, 100);coutvv所有账户的交易记录(存款、取款、结算)vvendl;coutvvTimettvvAccou nt_idtsetw (6)Amou nttsetw( 11)Bala ncetvvNotesve ndl;sa1.settle(Date(2017, 1, 1);sa2.settle(Date(2017, 1, 1);ca.settle(Date(2017, 1, 1

23、);sa1.deposit(Date(2017, 1,5), 5000, salary);ca.withdraw(Date(2017, 1, 15), 3000, buy a cell);sa2.deposit(Date(2017, 1,25), 10000, sell stock 0323);ca.settle(Date(2017, 2, 1);ca.settle(Date(2017, 3, 1);ca.settle(Date(2017, 4, 1);ca.deposit(Date(2017, 4, 1), 2018, repay the credit);ca.settle(Date(201

24、7, 5, 1);sa1.deposit(Date(2017, 5, 5), 5500, salary);ca.settle(Date(2017, 6, 1);ca.settle(Date(2017, 7, 1);ca.withdraw(Date(2017, 7, 10), 10000, do natio n); sa2.withdraw(Date(2017, 7, 20), 15000, buy a cell phone); ca.settle(Date(2017, 8, 1);ca.deposit(Date(2017, 8, 26), 1000, repay the credit);ca.

25、settle(Date(2017, 9, 1);ca.settle(Date(2017, 10, 1);ca.settle(Date(2017, 11, 1);ca.settle(Date(2017, 12, 1);sa1.settle(Date(2018, 1, 1);sa2.settle(Date(2018, 1, 1);ca.settle(Date(2018, 1, 1);cout所有账户信息endl;sa1.show();coute ndl;sa2.show();coute ndl;ca.show();coute ndl;cout所有账户总金额 Total : Account:getT

26、otal() endl; return 0;运行结果:建立胀户2016-12-22#Sft_291E iscreated2016-12-22hSft_2017 iscreated2016-12-220.2013 iscreated所有账户的交易记录(存款、取款、结算TimeAccount_idAmountBalaNotee2017-1-1ttCA 2618-iee-100annual fee2017-1-5WSA.201650005000salary2B1T-1-15ACA.2G18-3000-3188buy a cll2317-1-2510000sell stock 83232017-2-1MCA.2G18-27.05-3127.05interes

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论