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; } } } } }
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。