一、 Java 类与对象的基本知识:
1. 类的定义
2. 方法重载
3. 构造方法
4. static 关键字
5. this 关键字
6. 包与import 语句
7. 访问权限
8. 对象的使用
二、实验内容
1. 创建两个包:
· com.mybank.domain;
· com.mybank.test;
这里不多赘述。
2. 创建 Account 类:
· 位于包: com.mybank.domain中;
· 向Account 类中添加 private 实例变量double balance, 用于维护客户的账户存款额;
· 添加具有一个公有构造方法: Account(double initBalance), 用于初始化账户存款额;
· 添加一个公有方法: deposit(double amt), 用于向账户存钱, 返回值是 boolean 型;
· 添加一个公有方法: withdraw(double amt), 用于从账户取钱, 需要根据账户的实际余
额做判断分析, 返回值是boolean 型;
· 添加一个公有方法: getBalance(), 用于返回 balance 的值, 返回值是 double 类型。
package com.mybank.domain;
public class Account {
private double balance;
public Account(double initBalance)
{
balance = initBalance;
}
public boolean deposit(double amt)
{
if(amt>=0)
{
balance = balance + amt;
return true;
}
else
return false;
}
public boolean withdraw(double amt)
{
if(amt<=balance&&amt>=0)//取的钱款必须小于等于余额,并且大于等于0元
{
balance = balance - amt;
return true;
}
else if(amt>balance)
{
System.out.println("You have no money!");
return false;
}
else
return false;
}
public double getBalance()
{
return balance;
}
}
3. 创建 Customer 类:
· 位于包: com.mybank.domain 中;
· 向 Customer 类添加四个private 实例变量: firstName, lastName, accounts( Account
对象数组) 和 numberOfAccounts( 记录实际的账户数目);
· 添加一个公有构造方法: 具有两个形式参数 firstName, lastname, 用于初始化客户姓
名; 同时初始化 accounts 数组(长度为10) 和 numberOfAccounts 变量( 初值为0) ;
· 添加一个公有方法: getFirstName() , 该方法返回客户的 firstName 实例变量;
· 添加一个公有方法: getLastName() , 该方法返回客户的 lastName 实例变量;
· 添加 addAccount 方法: 该方法具有一个形式参数: double amount, 数组的下标通过
实例变量 numberOfAccounts 实现递增, 同时将实例化出来的 Account 对象存储到
accounts 数组中;
· 添加重载的 addAccount(Account acc)方法: 该方法具有一个形式参数( 即 Account 类
型的对象 acc) , 数组的下标依然通过实例变量 numberOfAccounts 实现递增, 同时将
Account 对象 acc 存储到 accounts 数组中;
· 添加 getNumberOfAccounts 方法: 该方法返回 numberOfAccounts 实例变量;
· 添加 getAccount 方法: 该方法具有一个形式参数( 即 int 类型 index) , 根据传进来
的数组下标返回该下标对应的 Account 对象。
· 重写 toString() 方法, 将 Customer 对象以客户名字的字符串形式输出。
package com.mybank.domain;
public class Customer {
private String firstName;
private String lastName;
private Account[] accounts;
private int numberOfAccounts;
public Customer(String firstName,String lastName){
this.firstName = firstName;
this.lastName = lastName;
accounts = new Account[10];
numberOfAccounts = 0;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public void addAccount(double amt){
accounts[numberOfAccounts++]=new Account(amt);
}
public void addAccount(Account acc)
{
accounts[numberOfAccounts++]=acc;
}
public int getNumberOfAccounts()
{
return numberOfAccounts;
}
public Account getAccounts(int index) {
return accounts[index];
}
public String toString(){
return firstName+lastName;
}
}
4.创建 Bank 类:
· 位于包: com.mybank.domain 中;
· 向 Bank 类 添 加 两 个 静 态 变 量 : customers ( Customer 对 象 数 组 ) 和
numberOfCustomers( 记录实际客户数目);
· 添 加 一 个 静 态 初 始 化 块 : 用 于 初 始 化 customers 数 组 ( 长 度 为 10 ) 和
numberOfCustomers 变量;
· 添加静态方法 addCustomer: 该方法有两个形式参数( 即 firstName, lastName) , 数
组的下标通过实例变量 numberOfCustomers 实现递增, 同时将实例化出来的 Customer
对象存储到 customers 数组中;
· 添加静态方法 getNumberOfCustomers: 该方法返回 numberOfCustomers 的值;
· 添加静态方法 getCustomer: 该方法具有一个形式参数( 即 int 类型 index) , 根据传
进来的数组下标返回该下标对应的 Customers 对象。
package com.mybank.domain;
public class Bank {
private static Customer[] customers;
private static int numberOfCustomers;
static{
customers = new Customer[10];
numberOfCustomers = 0;
}
public static void addCustomer(String firstName,String lastName){
customers[numberOfCustomers++]=new Customer(firstName,lastName);
}
public static int getNumberOfCustomers() {
return numberOfCustomers;
}
public static Customer getCustomer(int index){
return customers[index];
}
}
5.创建 TestBanking 类, 该类有程序入口 main() 函数:
· 该类文件位于包: com.mybank.test中;
· 通过 Bank 类调用相应的静态方法, 为银行的每个客户( 最多10个客户) 及其账户开
户;
· 自行设计, 对客户的账户进行存取款操作, 并输出客户姓名及其每个账户的余额。
package com.mybank.test;
import java.util.*;
import com.mybank.domain.*;
public class TestBanking {
public static void menu() {
System.out.println("欢迎使用银行系统!以下为功能菜单:");
System.out.println("1.创建客户。");
System.out.println("2.创建账户。");
System.out.println("3.存款服务。");
System.out.println("4.取款服务。");
System.out.println("5.查看账户余额。");
System.out.println("6.退出系统。");
System.out.println("请选择您需要的功能:");
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int choice;
do {
TestBanking.menu();
choice = sc.nextInt();
sc.nextLine();
switch (choice) {
//添加客户,目前只能逐个开户
case 1: {
System.out.println("请输入客户姓氏:");
String fn = sc.nextLine();
System.out.println("请输入客户名字:");
String ln = sc.nextLine();
Bank.addCustomer(fn, ln);
System.out.println("客户开户成功!");
break;
}
//创建账户,根据数量可以批量开户
case 2: {
System.out.println("请输入客户编号:");
int num = sc.nextInt();
Customer customer = Bank.getCustomer(num);
System.out.println("客户姓名是:" + customer.getFirstName() +" "+ customer.getLastName());
System.out.println("请输入开户数量:");
int num1 = sc.nextInt();
for (int i = 0; i < num1; i++)
customer.addAccount(0);
System.out.println("客户账户开户成功!");
break;
}
case 3: {
System.out.println("请输入客户编号:");
int num = sc.nextInt();
System.out.println("客户姓名是:" + Bank.getCustomer(num).getFirstName() + " " + Bank.getCustomer(num).getLastName());
System.out.println("请输入想存款的账户编号:");
int num1 = sc.nextInt();
Account account = Bank.getCustomer(num).getAccounts(num1);
System.out.println("请输入存款金额:");
int num3 = sc.nextInt();
if (account.deposit(num3)) {
System.out.println("存款后的余额是:" + account.getBalance());
}
break;
}
case 4: {
System.out.println("请输入客户编号:");
int num = sc.nextInt();
System.out.println("客户姓名是:" + Bank.getCustomer(num).getFirstName() + " " + Bank.getCustomer(num).getLastName());
System.out.println("请输入想取款的账户编号:");
int num1 = sc.nextInt();
Account account = Bank.getCustomer(num).getAccounts(num1);
System.out.println("请输入取款金额:");
int num3 = sc.nextInt();
if (account.withdraw(num3)) {
System.out.println("取款后的余额是:" + account.getBalance());
}
break;
}
case 5: {
System.out.println("请输入客户编号:");
int num = sc.nextInt();
System.out.println("客户姓名是:" + Bank.getCustomer(num).getFirstName() + " " + Bank.getCustomer(num).getLastName());
System.out.println("请输入想查询余额的账户编号:");
int num1 = sc.nextInt();
Account account = Bank.getCustomer(num).getAccounts(num1);
System.out.println("该账户的余额是:" + Bank.getCustomer(num).getAccounts(num1).getBalance());
break;
}
case 6:{
System.exit(1);
}
default:{
System.out.println("无此功能,请重新选择!");
break;
}
}
} while (true);
}
}
仅供学习使用,禁止直接抄袭,请学弟学妹们对自己负责!