《Java程序设计教程》清华大学出版社北京交通大学出版社杨文军董玉涛主编第八章课后练习第7题某银行有许多储户,每个储户可以拥有一个或多个账号。现请你开发一个软件,管理银行储户与...
《Java程序设计教程》清华大学出版社 北京交通大学出版社 杨文军 董玉涛 主编
第八章 课后练习第7题
某银行有许多储户,每个储户可以拥有一个或多个账号。现请你开发一个软件,管理银行储户与账号业务。要求如下:
Bank类中有一个customers集合,用来存储所有的Customer(储户)对象,addCustomer()方法用语向该集合中添加储户,getCustomer()方法根据下标值获取某个储户,getNumOfCustomer()方法获取储户总数,getCustomers()方法返回储户列表,以便获得每个储户对象‘
Customer类有一个accounts集合,用来存储某个储户的所有Account(账号)对象,addAccount()方法用于向该集合中添加账号,getAccount()方法根据下标值获取该储户的某个账号,getNumOfAccounts()方法获取该储户的账号总数,getAccounts()方法返回该储户的账号Iterator,以便获得每个账号对象。
Account类是抽象类,有一个balance属性,代表余额。Deposit()方法表示存款,amount参数是存款额,Withdraw()方法表示取款,取款额amount如果超出了余额就会抛出透支异常,我们需要定义一个OverdraftException类来表示这个异常,当抛出异常时,不进行取款交易,并报告用户此项错误。
SavingsAccount类表示大额存款账号,继承Account,新增一个属性interestRate,代表利率。
CheckingAccount类表示大额存款账号,也继承Account,它有一个叫canOverdraft的属性,是一个boolean值,代表该账号能否透支(true——能,false——否);它还有一个叫maxOverdraft的属性,表示该账号允许的最大透支额。这个类的withdraw()方法(取款)需要考虑的因素比较多:在发生透支时,如果账号不允许透支(canOverdraft=false),则抛出异常并退出交易;如果允许透支(canOverdraft=true),但透支额(amount-balance)超出最大透支额的话,也抛出异常并退出交易;只有在不发生透支或透支额小于最大透支额时,交易才能正常进行。另外,在每次进行透支交易时,最大透支额(maxOverdraft)应作调整,以便使该账号的最大透支额随透支次数的增加而不断减少,从而避免透支的滥用,阻止信用膨胀。CheckingAccount类有两个构造方法,只带一个参数的构造方法用来初始化balance,同时设定canOverdraft=false,maxOverdraft=0.00.
CustomReport类用来显示每个储户的姓名及他所有的账号的类别和余额,以报表的形式输出。
根据以上描述,创建一个TestBanking类,并在其main方法中添加若干储户和账号,然后模拟存款,取款业务,并最终输出一张完整的报表。
要求:
1. 用文件来存储用户的所有信息。
2. 有用户图形界面。(最基本的:存钱、取钱、新增账号、新增账户,可以使用菜单来实现,也可以使用按钮来实现)。
采用以下表格进行模拟:
储户姓名 账号
Saving Account Checking Account
Jane Simms SavingsAccount(500.00,0.05) CheckingAccount(200.00,true,400.00)
Owen Bryant 无 CheckingAccount(200.00)
Tim Soley SavingsAccout(1500.00,0.05) CheckingAccount(300.00)
Maria Soley SavingsAccount(160.00,0.05) 与Tim Soley共享一个CheckingAccount
输出报表格式如下:
CUSTOMERS REPORT
储户姓名:Jane Simms
Savings Account:当前余额是¥****
Checking Account:当前余额是¥****
储户姓名:Owen Bryant
Checking Account:当前余额是¥****
储户姓名:Tim Soley
Savings Account:当前余额是¥****
Checking Account :当前余额是¥****
储户姓名:Maria Soley
Savings Account :当前余额是¥****
Checking Account :当前余额是¥****
展开