银行开户存款取钱

一、知识点:

1)static 修饰方法,静态方法,可以用类名直接调用

2)static修改属性,静态属性,属于类所有,所有的对象所共享

二、类图

实现过程:

(1)首先定义一个Bank类,并在其中添加一个静态属性String bankName,表示银行的名字:

public class Bank {
	public static String bankName; //静态成员变量,表示银行名称
	private String name;           //用户名
	private double balance;        //账户余额
	private String password;       //密码
}

(2)然后创建带参数一个构造方法Bank(String name,String password,double turnOver),以便创建实例。完成后的代码如下所示:

public class Bank {
	public static String bankName; //静态成员变量,表示银行名称
	private String name;           //用户名
	private double balance;        //账户余额
	private String password;       //密码
	/**
	 * 带参构造方法,完成开户功能
	 * @param name  用户名
	 * @param password 取款密码
	 * @param turnOver 交易金额
	 */
	public void Bank(String name,String password ,double turnOver){
		this.name = name;
		this.password = password;
		this.balance = turnOver;
	}
}
(3)然后实现其中的存钱成员方法。void deposit(double turnOver)

         /**
	 * 向账户中存入钱
	 * @param turnOver 交易金额
	 */
	public void deposit(double turnOver){
		this.balance += turnOver;
	}

(4)然后实现类的取钱方法:

	/**
	 * 取钱
	 * @param password 取钱密码
	 * @param turnOVer 交易金额
	 */
	public void withDrawal(String password, double turnOver){
		//判断密码是否相等
		if(password.equals(this.password)){
			//判断余额是否足够
			if(this.balance >= turnOver){
				this.balance = this.balance - turnOver;
				System.out.println("成功取钱:"+turnOver+"\t账户余额:"+this.balance);
			}
		}else{
			System.out.println("取款密码不对");
		}
	}
(5)接下来实现,欢迎和欢送方法,这两个方法通过静态方法来实现。

	/**
	 * 静态方法,可以通过类名直接调用
	 */
	public static void wellcome(){
		System.out.println("欢迎光临");
	}
	/**
	 * 静态方法,可以通过类名直接调用
	 */
	public static void goodBye(){
		System.out.println("欢迎下次光临");
	}

(6)最后的代码如下所示:

public class Bank {
	public static String bankName; //静态成员变量,表示银行名称
	private String name;           //用户名
	private double balance;        //账户余额
	private String password;       //密码
	/**
	 * 带参构造方法,完成开户功能
	 * @param name  用户名
	 * @param password 取款密码
	 * @param turnOver 交易金额
	 */
	public Bank(String name,String password ,double turnOver){
		this.name = name;
		this.password = password;
		this.balance = turnOver;
	}
	/**
	 * 向账户中存入钱
	 * @param turnOver 交易金额
	 */
	public void deposit(double turnOver){
		this.balance += turnOver;
	}
	
	/**
	 * 取钱
	 * @param password 取钱密码
	 * @param turnOVer 交易金额
	 */
	public void withDrawal(String password, double turnOver){
		//判断密码是否相等
		if(password.equals(this.password)){
			//判断余额是否足够
			if(this.balance >= turnOver){
				this.balance = this.balance - turnOver;
				System.out.println("成功取钱:"+turnOver+"\t账户余额:"+this.balance);
			}
		}else{
			System.out.println("取款密码不对");
		}
	}
	/**
	 * 静态方法,可以通过类名直接调用
	 */
	public static void wellcome(){
		System.out.println("欢迎光临");
	}
	/**
	 * 静态方法,可以通过类名直接调用
	 */
	public static void goodBye(){
		System.out.println("欢迎下次光临");
	}
}


三、Test类

Bank类的属性和方法都定义好了,接下来定义测试类,测试Bank类的功能。


(1)先定义个Test类

public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
	}
}

(2)调用Bank类的静态方法欢迎;银行欢送;

public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Bank.wellcome();
		Bank.goodBye();
	}
}

(3)然后,在欢迎和欢送之间,创建一个Bank对象,用户名:张三,密码:123,交易额:1000;

再进行存钱操作,取钱操作;

public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Bank.wellcome();
		//创建银行示例,开户
		Bank bank = new Bank("张三","123",1000);
		bank.deposit(10.89);
		bank.withDrawal("abc", 200);
		bank.withDrawal("123", 120);
		Bank.goodBye();
	}
}
(3)程序执行结果如下所示:

要求编写程序模拟银行账户的存、取款操作。按要求完成以下步骤: 步骤1:编写程序Account.java,其定义银行账户类Account。该类中有账号、姓名、 存款余额等数据域,余额默认是0;有存款、取款、获取当前余额等方法。其账号为长度 为12位数字的字符串,姓名为字符串,存款余额为double。 步骤2:编写名为CreditAccount类的信用卡账户类。该类继承自Account类,增加一 个透支限额(double)数据域,透支限额默认为1000。同时该类账户取款时允许透支,但不 能超过透支限额。 步骤3:编写名为SavingAccount的储蓄账户类SavingAccount。该类继承自Account 类。该类账户取款时不允许透支。 步骤4:编写名为Bank的模拟银行类,其可以存储多个类型可能是信用卡账户或储 蓄账户的对象(可以用数组或ArrayList实现)。该类包含以下方法: 开户:即增加一个新的账户,注意:不允许两个账户的账号相同 销户:即删除一个已有的账户 查询账户:根据一个账号,查询有无该账号的账户 统计目前银行存款总余额的方法。 统计目前银行的信用卡账户总透支金额的方法。 统计目前总账户数。 统计目前信用卡账户数 统计目前储蓄卡账户数 步骤5:编写客户端类Client.java完成以下功能: 编写一个静态方法,创建一个银行对象,并随机生成10个账号从1000 0000 0000 0000到1000 0000 0000 0009,类型不同的账户。 main方法模拟几次开户操作。 main方法模拟几次销户操作。 模拟几个对指定账号的存款和取款操作。 输出银行的总账户数、总余额、总透支数、各类具体账户数。
以下是实现要求的银行账户管理类的代码: ```python class BankAccount: num_of_accounts = 0 # 类属性,开户数量 total_deposits = 0 # 类属性,总存款额 def __init__(self, name, deposit): self.name = name # 实例属性,户名 self.deposit = deposit # 实例属性,个人存款额 BankAccount.num_of_accounts += 1 # 开户数量增加 BankAccount.total_deposits += deposit # 总存款额增加 def withdraw(self, amount): if amount > self.deposit: print("余额不足,取款失败") else: self.deposit -= amount BankAccount.total_deposits -= amount print("已取出{}元,当前余额为{}元".format(amount, self.deposit)) def deposit_money(self, amount): self.deposit += amount BankAccount.total_deposits += amount print("已存入{}元,当前余额为{}元".format(amount, self.deposit)) @classmethod def increase_num_of_accounts(cls): cls.num_of_accounts += 1 print("当前开户数量为{}".format(cls.num_of_accounts)) @classmethod def decrease_num_of_accounts(cls): cls.num_of_accounts -= 1 print("当前开户数量为{}".format(cls.num_of_accounts)) @classmethod def increase_total_deposits(cls, amount): cls.total_deposits += amount print("当前总存款额为{}元".format(cls.total_deposits)) @classmethod def decrease_total_deposits(cls, amount): cls.total_deposits -= amount print("当前总存款额为{}元".format(cls.total_deposits)) def __str__(self): return "户名:{},个人存款额:{}元".format(self.name, self.deposit) ``` 接下来是一个简单的测试: ```python # 开户 account1 = BankAccount("张三", 1000) account2 = BankAccount("李四", 2000) print(account1) print(account2) # 存款 account1.deposit_money(500) account2.deposit_money(1000) # 取款 account1.withdraw(800) account2.withdraw(3000) # 类方法调用 BankAccount.increase_num_of_accounts() BankAccount.decrease_total_deposits(1000) ``` 运行结果: ``` 户名:张三,个人存款额:1000元 户名:李四,个人存款额:2000元 已存入500元,当前余额为1500元 已存入1000元,当前余额为3000元 已取出800元,当前余额为700元 余额不足,取款失败 当前开户数量为2 当前总存款额为4000元 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值