Java項(xiàng)目實(shí)現(xiàn)模擬ATM機(jī)
本文實(shí)例為大家分享了Java實(shí)現(xiàn)模擬ATM機(jī)的具體代碼,供大家參考,具體內(nèi)容如下
項(xiàng)目名稱
模擬ATM機(jī)
項(xiàng)目描述
簡(jiǎn)單實(shí)現(xiàn)ATM機(jī)功能
代碼實(shí)現(xiàn)
測(cè)試類(lèi)
public class Test {
//模擬多功能ATM機(jī)
public static void main(String[] args) {
ATM atm = new ATM();
atm.opearte();
}
}
主類(lèi):實(shí)現(xiàn)主方法
public class ATM {
private Bank bank;
public ATM(){
bank = new Bank();
}
private void success(BankCard bankCard) {
while (true) {
System.out.println("請(qǐng)選擇:1、查詢余額,2、取款,3、存款,4、轉(zhuǎn)賬,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("請(qǐng)輸入取款金額:");
money = scanner.nextInt();
bankCard.withdraw(money);
break;
case 3:
System.out.println("請(qǐng)輸入存款金額:");
money = scanner.nextInt();
bankCard.deposit(money);
break;
case 4:
System.out.println("請(qǐng)輸入對(duì)方賬戶id:");
int id = scanner.nextInt();
BankCard card = bank.transfer(id);
if(card != null){
System.out.println("請(qǐng)輸入轉(zhuǎn)賬金額:");
money = scanner.nextInt();
if(money <= bankCard.getMoney()){
bankCard.withdraw(money);
card.deposit(money);
}else {
System.out.println("轉(zhuǎn)賬失敗");
}
}else {
System.out.println("未找到該賬戶");
}
break;
default:
}
}
}
private void login(){ //登錄
System.out.println("請(qǐng)輸入賬號(hào),密碼");
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("登錄失敗,請(qǐng)注冊(cè)");
}
}
private void register(){ //注冊(cè)
System.out.println("請(qǐng)輸入賬號(hào),密碼");
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("該賬號(hào)已存在,請(qǐng)直接登錄");
}else {
bank.addcard(id,password);
System.out.println("注冊(cè)成功");
}
}
public void opearte() {
while (true) {
System.out.println("請(qǐng)選擇:1、登錄,2、注冊(cè),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:
}
}
}
}
銀行類(lèi):一個(gè)銀行對(duì)應(yīng)多個(gè)ATM機(jī)
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){ //注冊(cè)
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;
}
}
銀行卡類(lèi):不同賬戶的操作
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;
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java實(shí)現(xiàn)銀行ATM管理系統(tǒng)
- Java實(shí)現(xiàn)基礎(chǔ)銀行ATM系統(tǒng)
- Java基于控制臺(tái)界面實(shí)現(xiàn)ATM系統(tǒng)
- Java簡(jiǎn)單實(shí)現(xiàn)銀行ATM系統(tǒng)
- 用Java實(shí)現(xiàn)簡(jiǎn)單ATM機(jī)功能
- java GUI實(shí)現(xiàn)ATM機(jī)系統(tǒng)(3.0版)
- java實(shí)現(xiàn)ATM機(jī)系統(tǒng)(2.0版)
- Java模擬實(shí)現(xiàn)ATM機(jī)
- Java使用嵌套循環(huán)模擬ATM機(jī)取款業(yè)務(wù)操作示例
- Java實(shí)現(xiàn)ATM機(jī)操作系統(tǒng)
相關(guān)文章
@Configuration保證@Bean單例語(yǔ)義方法介紹
這篇文章主要介紹了SpringBoot中的@Configuration與@Bean注解,在進(jìn)行項(xiàng)目編寫(xiě)前,我們還需要知道一個(gè)東西,就是SpringBoot對(duì)我們的SpringMVC還做了哪些配置,包括如何擴(kuò)展,如何定制,只有把這些都搞清楚了,我們?cè)谥笫褂貌艜?huì)更加得心應(yīng)手2023-01-01
Java并發(fā)編程學(xué)習(xí)之ThreadLocal源碼詳析
這篇文章主要給大家介紹了關(guān)于Java并發(fā)編程學(xué)習(xí)之源碼分析ThreadLocal的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06
Java的StringBuilder在高性能場(chǎng)景下的正確用法
StringBuilder?對(duì)字符串的操作是直接改變字符串對(duì)象本身,而不是生成新的對(duì)象,所以新能開(kāi)銷(xiāo)小.與StringBuffer相比StringBuilder的性能略高,StringBuilder則沒(méi)有保證線程的安全,從而性能略高于StringBuffer,需要的朋友可以參考下2023-05-05
Java使用jxl包寫(xiě)Excel文件適合列寬實(shí)現(xiàn)
用jxl.jar包,讀寫(xiě)過(guò)Excel文件。也沒(méi)有注意最適合列寬的問(wèn)題,但是jxl.jar沒(méi)有提供最適合列寬的功能,上次用到寫(xiě)了一下,可以基本實(shí)現(xiàn)最適合列寬。2013-11-11
Springboot公共字段填充及ThreadLocal模塊改進(jìn)方案
這篇文章主要為大家介紹了Springboot公共字段填充及ThreadLocal模塊改進(jìn)方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
SpringCloud Gateway HttpWebHandlerAdapter鏈路調(diào)用請(qǐng)求流程介
Spring Cloud Gateway旨在為微服務(wù)架構(gòu)提供一種簡(jiǎn)單有效的、統(tǒng)一的 API 路由管理方式。Spring Cloud Gateway 作為 Spring Cloud 生態(tài)系中的網(wǎng)關(guān),它不僅提供統(tǒng)一的路由方式,并且基于 Filter 鏈的方式提供了網(wǎng)關(guān)基本的功能,例如:安全、監(jiān)控/埋點(diǎn)和限流等2022-10-10

