简单实现Account账号类及ATM测试类(存款、取款、查询余额、转账)
程序员文章站
2024-03-12 20:06:26
...
账户类account,
拥有公开属性账号username、密码password、手机号phone、余额blance
拥有方法 存款 取款 查询余额 转账,及相应构造方法
public class Account {
//这里就不用get,set方法,属性直接用public修饰,main方法直接调用
public String username;//账号
public String password;//密码
public int phone; //手机
public double blance;//余额
//无参构造方法
public Account() {
}
//有参构造方法
public Account(String username, String password, int phone) {
this.username = username; //this.usename指的是全局中的username
this.password = password;
this.phone = phone;
}
//存钱方法
public void deposit(double money){
//每次存钱,卡里的余额就会变成本次存的钱+卡里本来的余额
blance = blance + money;
}
//取钱的方法 返回布尔类型,取钱时会先判断账户是否有钱,返回false、 或者true
public boolean withdraw(double money){
if(money>blance){
return false;
}
//若账户余额大于要取出的钱,则剩下的余额变成下列表达式
blance=blance-money;
return true;
}
//查询余额
public double getBalance(){
return blance;
}
//转账方法 (参数列表 转入的账号,和转入的金额)
public boolean transfer(Account account,double money){
boolean withdraw = withdraw(money);
if(withdraw){
account.deposit(money);
}
return withdraw;
}
}
简单实现 ATM自动取款测试类
import java.util.Scanner;
public class AtmTest {
public static void main(String[] args) {
// 创建两个测试对象账号
Account a = new Account("admin", "admin", 10086);
Account b = new Account("wangwu", "wangwu", 10010);
welcome();
while (true) { // 这里要套个循环,因为要重复操作
// 首先输入账号密码
System.out.println("请输入账号:");
// 调用下面的String类型方法
String username = scString();
System.out.println("请输入密码:");
// 调用下面的String类型方法
String password = scString();
// 然后判断a、b账号密码是否正确,或存在
if (username.equals(a.username) && password.equals(a.password)
|| username.equals(b.username) && password.equals(b.password)){// 如果账号密码正确,则开始进行账户操作
// 登录成功获取登录账号对象
Account loginAccount = a;
while (true) {
System.out.println("请输入选择:0取款,1存款,2查询,3转账,4退出");
// 调用下面的int类型方法
int choose = scInt();
if (choose == 0) { // 取款操作
System.out.println("请输入取款金额:");
Double money = scDouble();
// 调用登录账号取款方法 调用Account账户类取款方法
boolean withdraw = loginAccount.withdraw(money);
if(withdraw){
System.out.println("取款成功");
}else{
System.out.println("取款失败,账户余额不足");
}
}else if(choose==1){ //存款操作
System.out.println("请输入存款金额:");
Double money = scDouble();
//调用调用登录账号存款方法
loginAccount.deposit(money);//因为Account类中方法是无返回值的,所以这里无返回值类型
System.out.println("存款成功!");
}else if(choose==2){ //查询操作
//直接调用查询方法 然后打印在控制台
double balance = loginAccount.getBalance();
System.out.println("余额:" + balance);
}else if(choose==3){ //转账操作
System.out.println("请输入转入账户的账户");
//1.首先获取转入账号 直接调用String类型方法
String intoUserName = scString();
//2.然后判断一下账户是否存在
if(intoUserName.equals(b.username)){
//3.存在,则先声明个账户保存b账户信息
Account intoAccount =b;
//4.获取转入金额 控制台输入转账金额,double类型
System.out.println("请输入转账金额:");
int money1 = scInt();
//5.调用转账方法 注意用的是a账户进行转账操作
loginAccount.transfer(intoAccount, money1);
System.out.println("转账成功!");
}else{
System.out.println("账号不存在");
}
}else if (choose ==4){
System.out.println("账号已退出");
break;
}
}
}else{
System.out.println("输入账号或密码有误,登陆失败!");
}
}
}
// 欢迎方法
public static void welcome() {
System.out.println("欢迎来到Tim银行");
}
// 控制台输入方法String类型
public static String scString() {
Scanner sc = new Scanner(System.in);
return sc.nextLine();
}
//控制台输入方法int类型
public static int scInt() {
Scanner sc = new Scanner(System.in);
return sc.nextInt();
}
// 控制台输入方法double类型
public static double scDouble() {
Scanner sc = new Scanner(System.in);
return sc.nextDouble();
}
}
注:对于初学者来说的一个简单的程序,欢迎大家评价。