您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 天津理工大学Java实验3实验报告
计算机科学与工程系天津理工大学计算机科学与工程学院实验报告2016至2017学年第一学期课程名称Java语言程序设计学号学生姓名年级2015级专业计算机科学与技术教学班号实验地点7-220实验时间2017年11月27日第5节至第6节主讲教师董玉涛辅导教师董玉涛计算机科学与工程系2实验(三)实验名称银行业务管理软件软件环境Windows8.1,JavaSE9,JDK8,Eclipse硬件环境PC机实验目的1.理解并掌握面向对象程序设计中类与对象的基本概念2.理解并掌握Java中定义类、创建对象、使用对象成员的方法3.理解并掌握Java中继承机制及实现方法4.掌握Java中接口用法5.掌握Java中多态的实现方法实验内容(应包括实验题目、实验要求、实验任务等)某银行有许多储户,每个储户可以拥有一个或多个帐号。现要求你开发一个软件,管理银行储户与帐号业务。见图1。Bank类中有一个customers集合,用来存储所有的Customer(储户)对象,addCustomer方法用于向该集合中加储户,getCustomer方法根据下标值取某个储户,getNumOfCustomers方法取储户总数,getCustomers方法返回储户的Iterator,以便获得每个储户对象。Customer类有一个accounts集合,用来存储某个储户的所有Account(帐号)对象,addAccount方法用于向该集合中加帐号,getAccount方法根据下标值取该储户的某个帐号,getNumOfAccounts方法取该储户的帐号总数,getAccounts方法返回该储户的帐号的Iterator,以便获得每个帐号对象。Account类是抽象类,有一个balance属性,代表余额。deposit方法表示存款,amount参数是存款额。withdraw方法表示取款,取款额amount如果超出了余额就会抛出透支异常,我们需要自己定义一个OverdraftException类来表示这个异常,当抛出透支异常时,不进行取款交易,并报告用户此项错误。SavingsAccount类表示存款帐号,继承Account,新增一个属性interestRate,代表利率。CheckingAccount类表示大额存款帐号,也继承Account,它有一个叫计算机科学与工程系3canOverdraft的属性,是一个boolean值,代表该帐号能否透支(true-能,false-否);它还有一个叫maxOverdraft的属性,表示该帐号允许的最大透支额。这个类的withdraw(取款)方法需要考虑的因素比较多:在发生透支时,如果帐号不允许透支(canOverdraft=false),则抛出OverdraftException异常并退出交易;如果允许透支(canOverdraft=true),但透支额(amount-balance)超过最大透支额的话,也抛出OverdraftException异常并退出交易;只有在不发生透支或透支额小于最大透支额时交易才能正常进行。另外,在每次进行透支交易时,最大透支额(maxOverdraft)应做调整,以便使该帐号的最大透支额随透支次数的增加而不断减少,从而可以避免透支的滥用,阻止信用膨胀。CheckingAccount类有两个构造方法,只带一个参数的构造方法用来初始化balance,同时设定canOverdraft=false,maxOverdraft=0.00。CustomerReport类用来显示每个储户的姓名以及他所持有的帐号的类别和余额,以报表的形式输出。根据以上描述,创建一个TestBanking类,并在其main方法中添加若干储户和帐号,然后模拟存款、取款业务,并最终输出一张完整的报表。采用下表中的数据进行模拟:储户姓名帐号SavingsAccountCheckingAccountJaneSimmsSavingsAccount(500.00,0.05)CheckingAccount(200.00,true,400.00)OwenBryant无CheckingAccount(200.00)TimSoleySavingsAccount(1500.00,0.05)CheckingAccount(300.00)MariaSoleySavingsAccount(150.00,0.05)与TimSoley共享一个CheckingAccount输出报表格式如下:CUSTOMERSREPORT==================储户姓名:JaneSimmsSavingsAccount:当前余额是¥XXXXCheckingAccount:当前余额是¥XXXX储户姓名:OwenBryantCheckingAccount:当前余额是¥XXXX储户姓名:TimSoleySavingsAccount:当前余额是¥XXXXCheckingAccount:当前余额是¥XXXX储户姓名:MariaSoleySavingsAccount:当前余额是¥XXXXCheckingAccount:当前余额是¥XXXX计算机科学与工程系4实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)一、实验步骤与算法描述(1)定义一个抽象基类Account(2)定义一个BANK类,在类中定义customers集合,用来存储所有的Customer对象。类中包含4个方法:addCustomer方法用于向该集合中加储户;getCustomer方法根据下标值取某个储户;getNumOfCustomers方法取储户总数;getCustomers方法返回储户的Iterator,以便获得每个储户对象。(3)定义一个CUSTOMER类,在类中定义一个accounts集合,用来存储某个储户的所有Account对象。类中包含4个方法:addAccount方法用于向该集合中加帐号;getAccount方法根据下标值取该储户的某个帐号;getNumOfAccounts方法取该储户的帐号总数;getAccounts方法返回该储户的帐号的Iterator,以便获得每个帐号对象。(4)定义一个SAVINGSACCOUNT类,继承Account,新增一个属性interestRate,代表利率。(5)定义一个CheckingAccount类,继承Account,按照题目要求相应在类中声明两个属性:canOverdraft与maxOverdraft的属性,(6)定义一个CustomerReport类,用来显示每个储户的姓名以及他所持有的帐号的类别和余额,以报表的形式输出。(7)创建TESTMAIN主类,调用上述各类的方法。并在其main方法中添计算机科学与工程系5加相应的储户和帐号,模拟存款、取款业务。二、实验结果:三、实验分析总结本次实验中,主要练习编译了跟抽象类有关的相关程序。其中主要包括已知抽象方法编写抽象类、抽象类抽象方法实现多态性、通过定义多个子类来实现对类的继承。通过本次实验,基本掌握了实现多态的方法,也练习了抽象类和抽象方法的定义和使用。以后也还需要多加练习,能更加熟悉。同时,编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查。直到最终搞清为止。附录(源程序清单)packageex3;publicabstractclassAccount{protecteddoublebalance;publicAccount(doubled){this.balance=d;}publicdoublegetBalance()计算机科学与工程系6{returnthis.balance;}publicvoidsetBalance(doublenewBalance){this.balance=newBalance;}protectedvoiddeposit(doubleamount){this.balance+=amount;}protectedvoidwithdraw(doubleamount)throwsOverdraftException{if(balanceamount){thrownewOverdraftException(取款超过余额);}this.balance-=amount;}}packageex3;importjava.util.*;publicclassBANK{ListCUSTOMERcustomers=newArrayListCUSTOMER();publicBANK(){}publicvoidaddCustomer(Stringfirst,Stringlast){CUSTOMERcstm=newCUSTOMER(first,last);customers.add(cstm);}publicCUSTOMERgetCustomer(inti){ListCUSTOMERlist=newArrayListCUSTOMER();IteratorCUSTOMERit=customers.iterator();while(it.hasNext()){CUSTOMERtemp=it.next();list.add(temp);}returnlist.get(i-1);}计算机科学与工程系7publicintgetNumOfCustomers(){ListCUSTOMERlist=newArrayListCUSTOMER();IteratorCUSTOMERit=customers.iterator();while(it.hasNext()){CUSTOMERtemp=it.next();list.add(temp);}returnlist.size();}publicIteratorCUSTOMERgetCustomers(){IteratorCUSTOMERit=customers.iterator();returnit;}}packageex3;publicclassCHECACCOUNTextendsAccount{publicCHECACCOUNT(doublebal){super(bal);canOverdraft=false;maxOverdraft=0.00;}publicCHECACCOUNT(doublebal,booleaninitcan,doubleinitmax){super(bal);canOverdraft=initcan;maxOverdraft=initmax;}protectedbooleancanOverdraft;protecteddoublemaxOverdraft;protectedvoiddeposit(doubleamount){this.balance+=amount;}publicvoidwithdraw(doubleamount)throwsOverdraftException{if(balanceamount&&canOverdraft==false){thrownewOverdraftException(不允许透支!);}计算机科学与工程系8if(canOverdraft==true&&maxOverdraft(amount-balance)){thrownewOverdraftException(超过透支限额!);}balance-=amount;if(balance0){maxOverdraft+=balance;}}}packageex3;importjava.util.*;publicclassCUSTOMER{StringfirstName;StringlastName;ListAccountaccounts=newArrayListAccount();publicCUSTOMER(Stringfirst,Stringlast){this.firstName=first;this.lastName=last;}Stri
本文标题:天津理工大学Java实验3实验报告
链接地址:https://www.777doc.com/doc-7230844 .html