以下为《Java I 实训报告》的无排版文字预览,完整内容请下载
成 绩
批阅教师
薛某某、杨某某
日 期
2021.1.12
实训报告
课程名称: Java I实训
专业班级: 软件1911
学 号: 20***
学生姓名: 刘某某
教 师: 薛某某、杨某某
2021 年 1 月 12 日
目录
模块一、创建程序包、Account类 1
1.1创建程序包 1
1.2创建Account类 1
1.3TestBanking1测试类 1
1.4运行结果 2
模块二、添加Customer 类 2
2.1创建Customer类 2
2.2TestBanking2测试类 2
2.3运行结果 3
模块三、修改存款、提款方法 3
3.1修改Account类 3
3.2TestBanking3测试类 3
3.3运行结果 4
模块四、用数组表示多重性 4
4.1 创建bank类 4
4.2TestBanking4测试类 4
4.3运行结果 5
模块五、Account类的两个子类 5
5.1创建子类 5
5.2TestBanking5测试类 6
5.3运行结果 6
5.4扩展练习1运行结果 6
模块六、单例模式 6
6.1创建 CustomerReport 类 6
6.2TestBanking6测试类 7
6.3运行结果 7
模块七、自定义异常 8
7.1创建OverdraftException类 8
7.2TestBanking7测试类 8
7.3运行结果 9
模块八、集合框架 9
8.1修改bank类 9
8.2TestBanking8测试类 10
8.3运行结果展示 10
模块九、增加交易记录 10
9.1创建Transaction类 10
9.2TestBanking9测试类 11
9.3运行结果 11
模块十一、模拟ATM机 11
11.1解题思路 11
11.2运行结果 11
心得体会 12
模块一、创建程序包、Account类
1.1创建程序包
首先点击file,创建好一个新项目,在这个项目里,点击新建一个名为banking的package(包),之后所写的相关类和测试类都创建在同一个包里,方便修改和访问。
1.2创建Account类
按图要求,创建该Account类。
a. 声明一个私有对象属性:balance,这个属性保留了银行帐户的当前余额。
b. 声明一个带有一个参数(init_balance)的公有构造器,这个参数为 balance 属性赋值。
c. 声明一个公有方法 getBalance,该方法用于获取经常余额。
d. 声明一个公有方法 deposit,该方法向当前余额增加金额。
e. 声明一个公有方法 withdraw 从当前余额中减去金额。
部分代码:
public Account(double init_balance) {
this.balance=init_balance;}
public double getBalance() {
return this.balance;}
public void deposit(double amt) {
this.balance=balance+amt;}
public void withdraw(double amt) {
this.balance=balance-amt;}
1.3TestBanking1测试类
在该类中,创建好一个新的账户对象,该账户不断进行取钱存钱操作,最后输出该账户余额。
部分代码:
Account account=new Account(500);
System.out.println("Creating an account with a "+account.getBalance()+"balance");
System.out.println("Withdraw 150.00");
account.withdraw(150);
System.out.println("Deposit 22.50 ");
account.deposit(22.50);
System.out.println("Withdraw 47.62");
account.withdraw(47.62);
System.out.println("The account has a balance of
1.4运行结果
模块二、添加Customer 类
2.1创建Customer类
在banking包下的创建Customer类,该类中包含account对象。
a. 声明三个私有对象属性:firstName、lastName 和 account。
b. 声明一个公有构造器,这个构造器带有两个代表对象属性的参数。
c. 声明两个公有存取器来访问该对象属性,方法 getFirstName 和 getLastName 返回相应的属性。
d. 声明 setAccount 方法来对 account 属性赋值。
e. 声明 getAccount 方法以获取 account 属性。
2. 创建TestBanking2类,对Customer和Account进行测试。
部分代码:
public Customer(String f,String l) {
this.firstName=f;
this.lastName=l; }
public void setAccount(Account acct) {
this.account=acct; }
public Account getAccount() {
return account; }
2.2TestBanking2测试类
在该类中创建一个新的用户对象,在该用户对象中创建一个账户,然后不断进行取款存款操作,最后显示该用户的名字及账户所剩余额。
部分代码:
Customer customer=new Customer("smith","jane");
Account account=new Account(500);
customer.setAccount(account);
customer.getAccount().withdraw(150.00);
customer.getAccount().deposit(22.50);
customer.getAccount().withdraw(47.62);
System.out.print("Customer "+customer.getFirstName()+" "+customer.getLastName()+" has a balance of"+" "+customer.getAccount().getBalance());
2.3运行结果
模块三、修改存款、提款方法
3.1修改Account类
a. 修改 deposit 方法返回 true(意味所有存款是成功的)。
b. 修改 withdraw 方法来检查提款数目是否大于余额。如果amt小于 balance, 则从余额中扣除提款数目并返回 true,否则余额不变返回 false。
部分代码:
public boolean deposit(double amt) {
this.balance=balance+amt;
return true; }
public boolean withdraw(double amt) {
if(amt=amt) {
amt-=balance;
overdarftProtection-=amt;
this.balance=0;
return true;}
return false;} (CheckingAccount类)
public SavingAccount(double balance,double interest_rate) {
super(balance);
this.interestRate=interest_rate;}(SavingAccount类)
5.2TestBanking5测试类
部分代码:
CheckingAccount checkingAccount=new CheckingAccount(500,500);
Customer customer=new Customer("Smith","Jane");
customer.setAccount(checkingAccount);
System.out.println("Withdraw150.00:"+customer.getAccount().withdraw(500));
System.out.println("Creating["+customer.getFirstName()+","+customer.getLastName()+"]"+"has a balance of "+customer.getAccount().getBalance()+"\n");
5.3运行结果
5.4扩展练习1运行结果
模块六、单例模式
6.1创建 CustomerReport 类
a.在前面的银行项目练习中,“客户报告”嵌入在 TestBanking 应用程序的 main 方法中。在这个练习中,该代码被放在banking 包的 CustomerReport 类中。 修改TestBanking 类的代码,通过下面的代码来生成报表
report.generateReport();// Generate a report
b.修改Bank类,使其使用单一银行对象。
1.修改 Bank 类,创建名为 getBank() 的公有静态方法,它返回一个 Bank 类的实例。
2.单个的实例应是静态属性,且为私有。同样,Bank构造器也应该是私有的。
部分代码:
for (int cust_idx = 0; cust_idx < bank.getNumberOfCustomers(); cust_idx++) {
customer = bank.getCustomer(cust_idx);
System.out.println();
System.out.println("Customer: " + customer.getLastName() +",+customer.getFirstName());
for (int acct_idx = 0; acct_idx < customer.getNumOfAccounts(); acct_idx++) {
Account account = customer.gteAccount(acct_idx);
String account_type = " ";
if (account instanceof SavingAccount) {
account_type = "SavingAccount";}
if (account instanceof CheckingAccount) {
account_type = "CheckingAccount";}
System.out.println(account_type + ": current balance is "
+ currency_format.format(account.getBalance()));}
}
6.2TestBanking6测试类
部分代码:
Bank bank = Bank.getBank();
Customer customer;
CustomerReport report = new CustomerReport();
bank.addCustomers("Jane", "Simms");
customer = bank.getCustomer(0);
customer.addAccount(new SavingAccount(500.00, 0.05));
customer.addAccount(new CheckingAccount(200.00, 400.00));
report.generateReport();
6.3运行结果
模块七、自定义异常
7.1创建OverdraftException类
创建 OverdraftException 类
1.banking.domain包中建立一个公有类 OverdraftException. 这个类RuntimeException类。
2.添加一个 double 类型的私有属性 deficit.增加一个公有访问方法 getDeficit。
3 添加一个有两个参数的共有构造器。deficit 参数初始化 deficit 属性
修改 Account 类 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 stomer类以及transaction类的方法,用命令行实现查看账户余额、存款、取款、查看交易记录、退出账户等功能。
11.2运行结果
心得体会
在此次实训中,虽然时间紧凑,但还是完成了实训任务。理论和实践结合,其中的每一天都会收获一点东西。
在学习Java时,不能光听光看不去做,还是需要实践去做,毕竟实践才能出真知。第八章之前,我们学过的C语言的基本知识还能运用到Java中去做作业,但是第九章开始,对概念逐渐模糊,编程习题也不好下手去做,越来越难以理解。但是在此次实训过程中,通过实训模块要求,一点点的循序渐进,对类、继承、多态、方法重写、重载等有了新的认识。其中也遇到了不少问题,比如单例模式是怎样操作的;类的实例化,不实例化就会出现空指针异常等问题;还有异常、异常的处理等。虽然麻烦,但最后还是一一解决了。这次实训,我也初步掌握了类、继承、重写、重载等的知识,虽然还是不能去熟练的运用,但是把它学会了,也有了新的认识以及理解。
总而言之,实际操作才能对模糊的概念产生新的理解,自己也才能更好的去学习自己平时不会的东西,只有多看多练才能对这门课程越来越熟练,学的越来越好。
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《Java I 实训报告》的无排版文字预览,完整内容请下载
Java I 实训报告由用户“tiantianwlx”分享发布,转载请注明出处