<table id="x8wkk"></table>
    <tr id="x8wkk"><strong id="x8wkk"></strong></tr>
    1. <table id="x8wkk"></table>

      溫馨提示×

      Java如何實現簡單控制臺版ATM系統

      發布時間:2022-05-27 16:31:16 來源:億速云 閱讀:53 作者:iii 欄目:開發技術

      本篇內容主要講解“Java如何實現簡單控制臺版ATM系統”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java如何實現簡單控制臺版ATM系統”吧!

      ATM系統項目

      ATM系統要實現的功能

      1.查詢:賬號必須存在,密碼(三次機會,不對就鎖卡)

      2.取款:賬號必須存在,密碼(三次機會,不對就鎖卡),取款金額不能大于存款

      3.存款:賬號必須存在,存款金額不能低于0

      4.轉帳:你的賬戶,轉款賬戶都必須存在,密碼(三次機會,不對就鎖卡),轉賬金額不能超過余額

      5.鎖卡:賬號必須存在,使用密碼凍結

      6.解卡:賬號必須存在,只能使用身份證號進行解鎖

      7.補卡:使用身份證進行補卡

      8.改密:愿密碼進行改密,也可以使用身份證進行改密

      9.退出: 保存數據

      項目分析

      可分為四個對象,第一個 銀行卡對象(Card 存儲銀行卡信息);第二個 用戶對象(Person 存儲用戶信息);第三個 功能對象( Controller 具體的操作功能類);視圖對象( Views 顯示操作界面)。從而可分為四個類

      代碼

      Card類

      封裝卡的屬性(卡號,密碼,余額,鎖卡狀態)

      public class Card {
         //封裝卡的屬性
         private String cardid;
         private String password;
         private double money;
         private boolean islock;
      
         //設置封裝的各屬性的set、get方法
         public String getCardid() {
          return cardid;
         }
      
         public void setCardid(String cardid) {
          this.cardid = cardid;
         }
      
         public String getPassword() {
          return password;
         }
      
         public void setPassword(String password) {
          this.password = password;
         }
      
         public double getMoney() {
          return money;
         }
      
         public void setMoney(double money) {
          this.money = money;
         }
      
         public boolean isIslock() {
          return islock;
         }
      
         public void setIslock(boolean islock) {
          this.islock = islock;
         }
         
         //重寫 to String方法
         @Override
          public String toString() {
              return "Card [cardid=" + cardid + ", password=" + password + ", money=" + money + ", islock=" + islock + "]";
          }
          
          //構造卡的無參和有參構造方法  
          public Card() {
              super();
              
          }
              
          public Card(String cardid, String password, double money, boolean islook) {
              super();
              this.cardid = cardid;
              this.password = password;
              this.money = money;
              this.islock = islock;
          }
         
      }

      Person類

      封裝用戶信息(用戶名,身份證號,手機號碼,卡)

      public class Person {
          private String name;
          private String userid;
          private String phone;
          private Card[] card;
          
          //設置封裝的各屬性的set、get方法
          public String getName() {
              return name;
          }
          public void setName(String name) {
              this.name = name;
          }
          public String getUserid() {
              return userid;
          }
          public void setUserid(String userid) {
              this.userid = userid;
          }
          public String getPhone() {
              return phone;
          }
          public void setPhone(String phone) {
              this.phone = phone;
          }
          public Card[] getCard() {
              return card;
          }
          public void setCard(Card[] card) {
              this.card = card;
          }
              
          //重寫 to String方法
          @Override
          public String toString() {
              return "Person [name=" + name + ", userid=" + userid + ", phone=" + phone + ", card=" + card+ "]";
          }
          //構造無參和有參方法  
          public Person() {
              super();
          }
          
          public Person(String name, String userid, String phone, Card[] card) {
              super();
              this.name = name;
              this.userid = userid;
              this.phone = phone;
              this.card = card;
          }    
      }

      Controller類

      創建三個默認賬戶信息,并構造操作方法

      public class Controller {
           Scanner sc = new Scanner(System.in);
           Card c = new Card() ; //生成卡
           
           //創建三組信息
           Card c1 = new Card("1","666666",1000,false);  //默認賬戶1
           Card c2 = new Card("2","666666",1500,false);  //默認賬戶2
           Card c3 = new Card("3","666666",1800,false);  //默認賬戶3
           public void regiser(String name,String userid,String phone,Card[] card) {
               //將Person類的屬性賦給對象p
               Person p = new Person(name,userid,phone,card);        
           }
           
           public void query(Person p) {
               
               System.out.println(p);
           }
           
           public boolean verify(String cardid,String password) {
               if(cardid.equals("1")&&password.equals("666666")) {  //如果輸入的是賬戶1的賬戶密碼,就得到賬戶1屬性
                   c.setMoney(c1.getMoney());
                   c.setPassword(c1.getPassword());
                   
                   if(!c.isIslock()) {       //判斷賬戶1是否被鎖
                       return true;
                   }else {
                       System.out.println("抱歉,該卡已被鎖");
                       return false;
                   }
               }
               
               if(cardid.equals("2")&&password.equals("666666")) { //如果輸入的是賬戶2的賬戶密碼,就得到賬戶2屬性
                   c.setMoney(c2.getMoney());
                   c.setPassword(c2.getPassword());
                   
                   //判斷該卡是否被鎖
                   if(!c.isIslock()) {     //判斷賬戶2是否被鎖
                       return true;
                   }
               }
               
               if (cardid.equals("3")&&password.equals("666666")) { //如果輸入的是賬戶3的賬戶密碼,就得到賬戶3屬性
                   c.setMoney(c3.getMoney());
                   c.setPassword(c3.getPassword());
                   
                   if(!c.isIslock()) {        //判斷賬戶3是否被鎖
                       return true;
                   }
               }
               
               return false;       //一個賬戶信息都沒對上,重新輸入
               
           }
              
           //構造查詢方法
           public void query(String cardid) {
               
               if(cardid.equals("1")) {                           //查詢賬戶1
                   System.out.println(c.getMoney());
               }else if(cardid.equals("2")) {                     //查詢賬戶2
                   System.out.println(c.getMoney());
               }else if(cardid.equals("3")) {                     //查詢賬戶3
                   System.out.println(c.getMoney());
               }else {
                   System.out.println("輸入有誤");
               }
               
           }
           
           //構造取錢方法
           public void putMoney() {
               System.out.print("請輸入需要取出的金額(將金額再確認一遍):");
               double money = sc.nextDouble();
              //判斷錢夠不夠
               if(money<=c.getMoney()) {
                   money = c.getMoney()-money;
                   c.setMoney(money);                        //錢夠取出并更新賬戶余額
                   System.out.println("已取出"+sc.nextDouble()+"元");
                   System.out.println("賬戶余額為:"+money+"元");
               }else {
                   System.out.println("對不起,賬戶余額不足");
               }
           }
           
           //構造存錢方法
           public void addMoney() {
      
               System.out.println("請將紙幣放于存鈔口(將金額再確認一遍)");
      
               double money = sc.nextDouble();
      
                money = c.getMoney()+money;
      
               c.setMoney(money);                               //存錢并更新賬戶余額      
               
               System.out.println("已存入"+sc.nextDouble()+"元");
              System.out.println("賬戶余額為:"+money+"元");         
               
      
           }
           
         //構造轉錢方法
           public void saveMoney() {
               System.out.println("請輸入需要轉入賬戶名:");
               String name = sc.next();
               System.out.print("請輸入轉入金額(將金額再確認一遍):");
               double money = sc.nextDouble();
               
               //判斷錢夠不夠
               if(c.getMoney()>=money) {
                   money = c.getMoney()-money;
                   c.setMoney(money);                             //錢夠轉錢 更新賬戶余額
                   System.out.println("已轉出"+sc.nextDouble()+"元");
                   System.out.println("賬戶余額為:"+money+"元");
               }else {                                            //錢不夠返回
                   System.out.println("對不起,賬戶余額不足");
               }
           }
           
           //構造鎖卡方法
           public void lock() {
               c.setIslock(true);
               System.out.println("該卡已被鎖");
           }
           
           //構造解卡方法
           public void unlock() {
               c.setIslock(false);
               System.out.println("該卡可正常使用");
           }
           
           //構造補卡方法
           public void newCard() {
               System.out.println("請輸入您的姓名:");
               String name = sc.nextLine();
              
               System.out.println("請輸入您的身份證號碼:");
               String userid = sc.nextLine(); 
              
               Person p = new Person(name,userid,null,null);  
               
               
               System.out.println("請輸入重辦賬戶號碼:");         
               String cardid = sc.nextLine();
               
               System.out.println("請輸入要設置的密碼(數字):");
               String  password = sc.nextLine();
           
               //限制密碼位數
               if(password.length()==6) {
                   System.out.println("密碼設置成功");
               }else {
                   System.out.println("密碼限制6位,請重新選擇功能");             
               }
               
           }        
      
           
           //構造改密方法
           public void changePwd() {
               System.out.println("請輸入密碼:");
               String password = sc.next();
               
               if(password.equals(c.getPassword())){
                   System.out.println("請輸入更改后的密碼:");
                   String newpassword = sc.next();
                   System.out.println("再輸入一次密碼:");
                   String newpassword1 = sc.next();
                   
                  if(newpassword.equals(newpassword1)) {
                   System.out.println("密碼修改成功!");
                   c.setPassword(newpassword1);
                  }else {
                   System.out.println("兩次密碼輸入不一致,請重新輸入");
                   changePwd();
                  }
             }else {     
                 System.out.println(c.getPassword());
                 System.out.println("密碼輸入錯誤");
             }
           }
           
           //構造退出方法
           public void save() {
               System.exit(0);
           }
      }

      View類

      實現歡迎界面以及各操作界面

      public class View {
          Scanner s = new Scanner(System.in);
          private int count = 3;
          Card c =new Card();
          Controller co = new Controller();
          
          public static void main(String[] args) {
              View v = new View();
              v.show();
          }
          
          public void show() {
              System.out.println("=============歡迎使用使用本行存取一體機=============");
              System.out.println("請輸入卡號:");
              String cardid = s.nextLine();
              
              System.out.println("請輸入密碼:");
              String  password =s.nextLine();
              
              //登錄界面,賬戶密碼錯三次就鎖卡
              if(!co.verify(cardid, password)) {
                  count--;
                  if(count == 0) {
                      co.lock();   //調用lock
                      System.out.println("密碼輸入錯誤"+c.isIslock());
                      System.out.println("請重新輸入:");
                  }
                  
                  System.out.println("你還有"+count+"次輸入機會,");
                  System.out.println("輸入機會用完后,將會鎖卡");
                  show();
              }
              //如果賬戶密碼正確就進入功能界面
              if(co.verify(cardid, password)) {
                  while(true) {
                      System.out.println("請按相應的序號選擇功能:1.取款    2.存款    3.查詢余額    4.轉賬   5.修改密碼    6.鎖卡    7.解卡   8.補卡  9.退出");
                      
                      switch(s.nextInt()) {
                      case 1:   //取款
                          co.putMoney();
                          break;
                      case 2:  //存錢
                          co.addMoney();
                          break;
                      case 3:  //查詢
                          co.query(cardid);
                          break;
                      case 4:  //轉錢
                          co.saveMoney();
                          break;
                      case 5:  //改密
                          co.changePwd();
                          break;
                      case 6:  //鎖卡
                          co.lock();
                          break;
                      case 7:  //解卡
                          co.unlock();
                          break;
                      case 8:  //補卡
                          co.newCard();
                          break;
                      case 9:  //退出
                          System.out.println("感謝使用,歡迎下次光臨");
                          co.save();
                          break;
                          
                      default:  //輸入指令錯誤
                          System.out.println("輸入有誤");
                          break;
                      }
                  }
              }
          }
      }

      到此,相信大家對“Java如何實現簡單控制臺版ATM系統”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

      推薦內容:java連接MySQL。ATM

      免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

      免費撥打  400 100 2938 免費撥打 400 100 2938
      24小時售后技術支持 24小時售后技術支持
      返回頂部 返回頂部
      国产农村妇女野外牲交视频

        <table id="x8wkk"></table>
        <tr id="x8wkk"><strong id="x8wkk"></strong></tr>
        1. <table id="x8wkk"></table>