最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java項目實現(xiàn)模擬ATM機

 更新時間:2020年05月27日 09:46:05   作者:Sampson_S  
這篇文章主要為大家詳細介紹了Java項目實現(xiàn)模擬ATM機,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Java實現(xiàn)模擬ATM機的具體代碼,供大家參考,具體內(nèi)容如下

項目名稱

模擬ATM機

項目描述

簡單實現(xiàn)ATM機功能

代碼實現(xiàn)

測試類

public class Test {
    //模擬多功能ATM機
  public static void main(String[] args) {
    ATM atm = new ATM();
    atm.opearte();
  }
}

主類:實現(xiàn)主方法

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、轉(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("請輸入取款金額:");
          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("請輸入轉(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("請輸入賬號,密碼");
    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;
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • @Configuration保證@Bean單例語義方法介紹

    @Configuration保證@Bean單例語義方法介紹

    這篇文章主要介紹了SpringBoot中的@Configuration與@Bean注解,在進行項目編寫前,我們還需要知道一個東西,就是SpringBoot對我們的SpringMVC還做了哪些配置,包括如何擴展,如何定制,只有把這些都搞清楚了,我們在之后使用才會更加得心應手
    2023-01-01
  • Java阻塞隊列四組API介紹(小結(jié))

    Java阻塞隊列四組API介紹(小結(jié))

    這篇文章主要介紹了Java阻塞隊列四組API介紹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Java并發(fā)編程學習之ThreadLocal源碼詳析

    Java并發(fā)編程學習之ThreadLocal源碼詳析

    這篇文章主要給大家介紹了關(guān)于Java并發(fā)編程學習之源碼分析ThreadLocal的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-06-06
  • Java的StringBuilder在高性能場景下的正確用法

    Java的StringBuilder在高性能場景下的正確用法

    StringBuilder?對字符串的操作是直接改變字符串對象本身,而不是生成新的對象,所以新能開銷小.與StringBuffer相比StringBuilder的性能略高,StringBuilder則沒有保證線程的安全,從而性能略高于StringBuffer,需要的朋友可以參考下
    2023-05-05
  • 聊聊Mybatis反射之ObjectWrapper的使用

    聊聊Mybatis反射之ObjectWrapper的使用

    本文主要介紹了Mybatis反射之ObjectWrapper的使用,文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • SpringBoot整合junit與Mybatis流程詳解

    SpringBoot整合junit與Mybatis流程詳解

    這篇文章主要介紹了SpringBoot整合第三方技術(shù),包括整合Junit、整合Mybatis,本文通過實例代碼相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • Netty實戰(zhàn)源碼解析NIO編程

    Netty實戰(zhàn)源碼解析NIO編程

    這篇文章主要為大家介紹了Netty實戰(zhàn)源碼解析NIO編程的核心組件及關(guān)系詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Java使用jxl包寫Excel文件適合列寬實現(xiàn)

    Java使用jxl包寫Excel文件適合列寬實現(xiàn)

    用jxl.jar包,讀寫過Excel文件。也沒有注意最適合列寬的問題,但是jxl.jar沒有提供最適合列寬的功能,上次用到寫了一下,可以基本實現(xiàn)最適合列寬。
    2013-11-11
  • Springboot公共字段填充及ThreadLocal模塊改進方案

    Springboot公共字段填充及ThreadLocal模塊改進方案

    這篇文章主要為大家介紹了Springboot公共字段填充及ThreadLocal模塊改進方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • SpringCloud Gateway HttpWebHandlerAdapter鏈路調(diào)用請求流程介紹

    SpringCloud Gateway HttpWebHandlerAdapter鏈路調(diào)用請求流程介

    Spring Cloud Gateway旨在為微服務架構(gòu)提供一種簡單有效的、統(tǒng)一的 API 路由管理方式。Spring Cloud Gateway 作為 Spring Cloud 生態(tài)系中的網(wǎng)關(guān),它不僅提供統(tǒng)一的路由方式,并且基于 Filter 鏈的方式提供了網(wǎng)關(guān)基本的功能,例如:安全、監(jiān)控/埋點和限流等
    2022-10-10

最新評論

垫江县| 察隅县| 巨鹿县| 黑龙江省| 青阳县| 乐昌市| 邹城市| 阿拉善盟| 蛟河市| 化德县| 澳门| 紫金县| 富顺县| 蓝田县| 阿勒泰市| 张家港市| 房山区| 阳城县| 子洲县| 清镇市| 雅江县| 石河子市| 开江县| 庆云县| 木里| 黔西县| 阿坝县| 南溪县| 盐亭县| 门头沟区| 灌南县| 聂荣县| 周宁县| 仪征市| 孝昌县| 电白县| 拜城县| 乌拉特中旗| 老河口市| 故城县| 绥滨县|