下面是用Java实现简单ATM机功能的完整攻略:
1. 需求分析
在实现ATM机功能前,我们首先需要对需求进行分析。
根据通常的ATM操作流程,我们可以将以下主要功能列出:
- 查询余额
- 取款
- 存款
- 转账
2. 设计思路
在完成需求分析后,我们需要进行设计思路。
我们需要为ATM机设计一个系统,包含以下实体:
- 用户
- 银行账号
- ATM机
我们可以通过面向对象的方式,创建以下类:
- 用户类:包括用户信息、账号信息,以及相关操作方法
- 银行账号类:包括账户余额等信息
- ATM类:包括ATM机信息、操作方法等
3. 编码实现
在设计好类之后,我们可以开始进行编码实现。
3.1 用户类
public class User {
private String name; // 用户名
private String password; // 密码
private Account account; // 账户信息
public User(String name, String password, Account account) {
this.name = name;
this.password = password;
this.account = account;
}
public void displayBalance() {
System.out.println("当前账户余额为:" + account.getBalance() + "元");
}
public void withdraw(double amount) {
account.setBalance(account.getBalance() - amount);
System.out.println("已取出" + amount + "元,当前账户余额为:" + account.getBalance() + "元");
}
// 其他操作方法
}
3.2 银行账号类
public class Account {
private String accountNumber; // 账户号码
private double balance; // 账户余额
public Account(String accountNumber, double balance) {
this.accountNumber = accountNumber;
this.balance = balance;
}
// getter/setter 略
public void deposit(double amount) {
balance += amount;
}
// 其他操作方法
}
3.3 ATM类
import java.util.HashMap;
import java.util.Map;
public class ATM {
private Map<String, User> users; // 用户名与用户实例的映射
private double balance; // ATM机目前的余额
public ATM() {
users = new HashMap<>();
}
// 管理员添加用户
public void addUser(String name, String password, String accountNumber, double balance) {
users.put(name, new User(name, password, new Account(accountNumber, balance)));
}
public void login(String name, String password) {
User user = users.get(name);
if (user == null || !user.getPassword().equals(password)) {
System.out.println("用户名或密码错误,请重新输入!");
return;
}
// 用户登录成功,显示操作菜单
displayMenu(user);
}
// 显示操作菜单
public void displayMenu(User user) {
System.out.println("请选择您要进行的操作:");
System.out.println("1. 查询余额");
System.out.println("2. 取款");
System.out.println("3. 存款");
System.out.println("4. 转账");
System.out.println("0. 退出");
int choice;
do {
Scanner scanner = new Scanner(System.in);
System.out.print("> ");
choice = scanner.nextInt();
switch (choice) {
case 0:
return;
case 1:
user.displayBalance();
break;
case 2:
System.out.println("请输入取款金额:");
double amount = scanner.nextDouble();
user.withdraw(amount);
break;
case 3:
System.out.println("请输入存款金额:");
amount = scanner.nextDouble();
user.getAcount().deposit(amount);
System.out.println("已成功存入" + amount + "元,当前账户余额为:" + user.getAcount().getBalance() + "元");
break;
case 4:
System.out.println("请输入对方账户名:");
String targetName = scanner.next();
User targetUser = users.get(targetName);
if (targetUser == null) {
System.out.println("未找到该账户,请重新输入!");
break;
}
System.out.println("请输入转账金额:");
amount = scanner.nextDouble();
user.getAcount().transferTo(targetUser.getAcount(), amount);
System.out.println("已成功转账" + amount + "元给" + targetName);
break;
default:
System.out.println("输入有误,请重新输入!");
}
} while (true);
}
}
4. 示例
4.1 管理员添加用户
ATM atm = new ATM();
atm.addUser("张三", "123456", "1234567890", 10000);
atm.addUser("李四", "654321", "2345678901", 20000);
4.2 用户登录
atm.login("张三", "123456");
4.3 用户操作
选择“查询余额”功能,输出:
当前账户余额为:10000.0元
选择“取款”功能,输入取款金额为2000,输出:
已取出2000.0元,当前账户余额为:8000.0元
选择“存款”功能,输入存款金额为3000,输出:
已成功存入3000.0元,当前账户余额为:11000.0元
选择“转账”功能,输入对方账户名为“李四”,转账金额为5000,输出:
已成功转账5000.0元给李四
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用Java实现简单ATM机功能 - Python技术站