Java项目实现模拟ATM机
更新时间:2020年05月27日 09:46:05 作者:Sampson_S
这篇文章主要为大家详细介绍了Java项目实现模拟ATM机,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下
项目名称
模拟ATM机
项目描述
简单实现ATM机功能
代码实现
测试类
public class Test {
//模拟多功能ATM机
public static void main(String[] args) {
ATM atm = new ATM();
atm.opearte();
}
}
主类:实现主方法
public class ATM {
private Bank bank;
public ATM(){
bank = new Bank();
}
private void success(BankCard bankCard) {
while (true) {
System.out.println("请选择:1、查询余额,2、取款,3、存款,4、转账,5、退卡");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
if (choice == 5) {
return;
}
switch (choice) {
case 1:
int money = bank.printf(bankCard);
System.out.println("余额:" + money);
break;
case 2:
System.out.println("请输入取款金额:");
money = scanner.nextInt();
bankCard.withdraw(money);
break;
case 3:
System.out.println("请输入存款金额:");
money = scanner.nextInt();
bankCard.deposit(money);
break;
case 4:
System.out.println("请输入对方账户id:");
int id = scanner.nextInt();
BankCard card = bank.transfer(id);
if(card != null){
System.out.println("请输入转账金额:");
money = scanner.nextInt();
if(money <= bankCard.getMoney()){
bankCard.withdraw(money);
card.deposit(money);
}else {
System.out.println("转账失败");
}
}else {
System.out.println("未找到该账户");
}
break;
default:
}
}
}
private void login(){ //登录
System.out.println("请输入账号,密码");
Scanner scanner = new Scanner(System.in);
int id = scanner.nextInt();
int password = scanner.nextInt();
BankCard bankCard = bank.search(id,password);
if(bankCard != null){
System.out.println("登录成功");
success(bankCard);
}else {
System.out.println("登录失败,请注册");
}
}
private void register(){ //注册
System.out.println("请输入账号,密码");
Scanner scanner = new Scanner(System.in);
int id = scanner.nextInt();
int password = scanner.nextInt();
BankCard bankCard = bank.search(id,password);
if(bankCard != null){
System.out.println("该账号已存在,请直接登录");
}else {
bank.addcard(id,password);
System.out.println("注册成功");
}
}
public void opearte() {
while (true) {
System.out.println("请选择:1、登录,2、注册,3、退出");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
if (choice == 3) {
return;
}
switch (choice) {
case 1:
login();
break;
case 2:
register();
break;
default:
}
}
}
}
银行类:一个银行对应多个ATM机
public class Bank {
private BankCard[] bankCards;
private final int INITSIZE = 10;
private int size;
public Bank(){
bankCards = new BankCard[INITSIZE];
size = 0;
}
public BankCard search(int id,int password){ //搜索
BankCard[] bankCard = bankCards;
for(int i=0;i<size;i++){
if(bankCards[i].getId() == id && bankCards[i].getPassword() == password){
return bankCard[i];
}
}
return null;
}
public void addcard(int id,int password){ //注册
BankCard bankCard = new BankCard(id, password);
if (size == bankCards.length){
bankCards = Arrays.copyOf(bankCards,bankCards.length * 2);
}
bankCards[size++] = bankCard;
}
public int printf(BankCard bankCard){ //显示余额
return bankCard.getMoney();
}
public BankCard transfer(int id){
for(int i=0;i<size;i++){
if(bankCards[i].getId() == id){
return bankCards[i];
}
}
return null;
}
}
银行卡类:不同账户的操作
public class BankCard {
private int id;
private int password;
private int money;
private int size = 0;
public BankCard(int id,int password){
this.id = id;
this.password = password;
money = 0;
}
public int getId(){
return id;
}
public int getPassword(){
return password;
}
public int getMoney(){
return money;
}
public void withdraw(int money){ //取款
if(this.money >= money){
this.money -= money;
}else {
System.out.println("取款失败");
}
}
public void deposit(int money){ //存款
this.money += money;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Java的StringBuilder在高性能场景下的正确用法
StringBuilder 对字符串的操作是直接改变字符串对象本身,而不是生成新的对象,所以新能开销小.与StringBuffer相比StringBuilder的性能略高,StringBuilder则没有保证线程的安全,从而性能略高于StringBuffer,需要的朋友可以参考下2023-05-05
Springboot公共字段填充及ThreadLocal模块改进方案
这篇文章主要为大家介绍了Springboot公共字段填充及ThreadLocal模块改进方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-11-11
SpringCloud Gateway HttpWebHandlerAdapter链路调用请求流程介
Spring Cloud Gateway旨在为微服务架构提供一种简单有效的、统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,它不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全、监控/埋点和限流等2022-10-10


最新评论