Java 模仿銀行自助終端體系。本站提示廣大學習愛好者:(Java 模仿銀行自助終端體系)文章只能為提供參考,不一定能成為您想要的結果。以下是Java 模仿銀行自助終端體系正文
一. 本體系模仿銀行用戶應用ATM機開戶、查詢、存款、取款功效,請求應用java說話編程完成。
解釋:
1. 關於數據輸出異常,可以使用java異常處置機制停止處置。
2. 評分將以功效完成與代碼標准性相聯合的方法停止考察。
3. 假如對項目需求有疑問,可以隨時以QQ留言方法接洽我停止征詢。
4. 國慶放假時代,天天都有先生在公司值班,10月4日是我在公司值班,10月7日正常下班,迎接年夜家到公司來做項目。
二. 項目功效請求:
項目開端運轉顯示主菜單為:
銀行自助終端體系
****************************
0.------開戶
1.------查詢
2.------存款
3.------取款
4.------加入
****************************
請選擇你要履行的功效:
此時,用戶可以經由過程鍵盤輸出選擇本身要完成的功效,假如輸出不是0,1,2,3,4,則體系提醒:
你選擇的菜單不存在!
請從新選擇:
請求用戶從新輸出數據停止菜單選擇!
當用戶輸出0時,則進入查詢功效:體系提醒:
****************************
你選擇的為開戶功效
請輸出你的姓名:
此時用戶須要輸出姓名,輸出終了後體系提醒:
請輸出你的身份證號:
此時用戶須要輸出18位身份證號,輸出終了假如驗證未經由過程請求持續輸出,直到驗證經由過程後體系提醒:
請輸出你的暗碼:
此時用戶須要輸出6位純數字暗碼,輸出終了假如驗證未經由過程請求持續輸出,驗證經由過程後體系提醒:
開戶勝利,感謝應用!
銀行自助終端體系
****************************
0.------開戶
1.------查詢
2.------存款
3.------取款
4.------加入
****************************
請選擇你要履行的功效:
當用戶輸出1時,則進入查詢功效:體系提醒:
****************************
你選擇的為查詢功效
請輸出你要查詢的卡號:
此時用戶須要輸出查詢的卡號,體系對卡號停止檢測,假如卡號不存在,則提醒: 你輸出的卡號不存在,請從新輸出:
請輸出你要查詢的卡號:
請求從新輸出卡號,當用戶輸出准確卡號後,則提醒:
請輸出你的暗碼:
此時用戶須要輸出6位純數字暗碼,輸出終了假如驗證未經由過程請求持續輸出(最多3次),驗證經由過程後體系將顯示以後用戶賬號信息並進入主菜單:
你查詢的賬號信息為:
******************************
姓名 身份證號 卡號 金額
張三豐 420106198410112062 111111 12800.0
銀行自助終端體系
****************************
0.------開戶
1.------查詢
2.------存款
3.------取款
4.------加入
****************************
請選擇你要履行的功效:
當用戶輸出2時,則進入存款功效:體系提醒:
****************************
你選擇的為存款功效
請輸出你要存款的卡號:
此時用戶須要輸出存款的卡號,體系對卡號停止檢測,假如卡號不存在,則提醒:
你輸出的卡號不存在,請從新輸出:
請輸出你要存款的卡號:
請求從新輸出卡號,當用戶輸出准確卡號後,則提醒:
請輸出你的暗碼:
此時用戶須要輸出6位純數字暗碼,輸出終了假如驗證未經由過程請求持續輸出(最多3次),驗證經由過程後體系將顯示以後用戶賬號信息並進入主菜單:
你要存款的賬號信息為:
******************************
姓名 身份證號 卡號 金額
張三豐 420106198410112062 111111 12800.0
請輸出你要存入的金額:
此時請求用戶輸出存款金額,體系對金額停止斷定,假如輸出的數據小於等於0,則提醒:
你輸出的數據有效,體系將主動加入!感謝應用
銀行自助終端體系
****************************
0.------開戶
1.------查詢
2.------存款
3.------取款
4.------加入
****************************
請選擇你要履行的功效:
假如用戶輸出數據正當,體系提醒存款勝利,並回到主菜單:
存款勝利,感謝應用!
銀行自助終端體系
****************************
0.------開戶
1.------查詢
2.------存款
3.------取款
4.------加入
****************************
請選擇你要履行的功效:
數據將存入用戶賬號,假如用戶再次停止數據查詢,則能看到曾經轉變後的賬戶金額。 (解釋:本體系應用文件停止數據存儲,是以假如用戶從新啟動法式,數據將從文件中讀取從新初始化到內存!此功效選做,可參考對象的序列化和反序列化或JSON)
當用戶輸出3時,則進入取款功效:體系提醒:
****************************
你選擇的為取款功效 請輸出你要取款的卡號:
此時用戶須要輸出取款的卡號,體系對卡號停止檢測,假如卡號不存在,則提醒:
你輸出的卡號不存在,請從新輸出:
請輸出你要取款的卡號:
請求從新輸出卡號,當用戶輸出准確卡號後,則提醒:
請輸出你的暗碼:
此時用戶須要輸出6位純數字暗碼,輸出終了假如驗證未經由過程請求持續輸出(最多3次),驗證經由過程後體系將顯示以後用戶賬號信息並進入主菜單:
你要取款的賬號信息為:
******************************
姓名 身份證號 卡號 金額
張三豐 420106198410112062 111111 12800.0
請輸出你要取款的金額:
此時請求用戶輸出取款金額,體系對金額停止斷定,假如輸出的數據小於0或年夜於賬號總金額,則提醒:
你輸出的數據有效,體系將主動加入!感謝應用
銀行自助終端體系
****************************
0.------開戶
1.------查詢
2.------存款
3.------取款
4.------加入
****************************
請選擇你要履行的功效:
假如用戶輸出數據正當,體系提醒取款勝利,並回到主菜單:
取款勝利,感謝應用!
銀行自助終端體系
****************************
0.------開戶
1.------查詢
2.------存款
3.------取款
4.------加入
****************************
請選擇你要履行的功效:
數據將從用戶賬號扣出,假如用戶再次停止數據查詢,則能看到曾經轉變後的賬戶金額。
當用戶輸出4時,體系將加入。
三.設計請求
(一)包一:com.bank.unionpay 表現銀聯,在該包下添加:
表現銀行卡的接口,包括查詢余額,存款,取款等籠統辦法。
表現ATM機的籠統類,應用銀行卡類型的對象作為屬性或參數,完成查詢余額,存款,取款等實例辦法,添加開戶為籠統辦法。
表現四年夜銀行的列舉類型:包括ABC,ICBC,CCB,BOC;分離代表農行,工行,建行,中行。
(二)包二:com.bank.abc 表現農行,在該包下添加:
以單例形式界說銀行類,包括屬性:銀行類型(列舉類型,常量=ABC),銀行稱號(String),銀行卡列表(聚集)等。
界說銀行卡的完成類-儲蓄卡,包括屬性:銀行類型(列舉類型=ABC),姓名,身份證號,卡號,暗碼,余額;完成查詢余額,存款,取款等辦法。
界說ATM機的子類,包括屬性:銀行類型(列舉類型,常量=ABC),完成開戶辦法,個中:只能創辦儲蓄卡,卡號為6位隨機數字,主動發生。新開戶的銀行卡添加到銀行的銀行卡列表中。
界說儲蓄卡的子類-信譽卡,增長屬性:透支額度,重寫取款辦法,掌握最年夜取款金額不克不及年夜於余額+透支額度的和。
(三)包三:com.bank.test 表現測試,在該包下添加帶main辦法的測試類,完成項目請求的模仿ATM機的功效。
以下功效選做:
以單態形式完成工商銀行,在測試類中默許添加多張銀行卡,在農行的ATM機上完成跨行查詢和存取款功效。
包一:com.bank.unionpay
1,銀行卡籠統類
package com.bank.unionpay; public interface Yinhangka { public void cun(); public void qu(); public void getyu(); }
2,列舉銀行類型
package com.bank.unionpay; public enum Yinhang { ABC("農行"),ICBC("工商"),CCB("建行"),BOC("中行"); private final String yinhang; //公有化結構辦法 private Yinhang(String yinhang) { this.yinhang=yinhang; } public String getname() { return this.yinhang; } }
3,ATM類
package com.bank.unionpay; import com.bank.abc.Yinhanglei; public abstract class ATM { private Yinhanglei yhl; //銀行類屬性 private double yue; //變量yue public double getYue() { return yue; } public void setYue(double yue) { this.yue = yue; } //查詢辦法 public void yue() { System.out.println("卡上余額為:" +this.yue); } //存款辦法 public void cun(double cun) { if(cun<0) { System.out.println("輸出有誤"); } else { this.yue+=cun; System.out.println("卡上余額為:"+this.yue); } } //取款辦法 public void qu(double qu) { if(qu>this.yue) { System.out.println("余額缺乏"); } else { this.yue-=qu; System.out.println("卡上余額為:"+this.yue); } } //界說開戶籠統辦法 public abstract void kaihu(); }
4,主界面類
package com.bank.unionpay; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Zujiemian { public void zhujiemian() { System.out.println("銀行自助終端體系 "); System.out.println(); System.out.println("****************************"); System.out.println(); List<String> li=new ArrayList<String>(); li.add("開戶"); li.add("查詢"); li.add("存款"); li.add("取款"); li.add("加入"); for(int i=0;i<5;i++) { System.out.println(i+"-----"+li.get(i)); } System.out.println(); System.out.println("****************************"); System.out.println(); System.out.println("請選擇你要履行的功效: "); } }
包二:com.bank.abc
1,ATM2開戶類
package com.bank.abc; import java.util.Random; import java.util.Scanner; import com.bank.unionpay.ATM; import com.bank.unionpay.Yinhang; public class ATM2 extends ATM{ private Yinhang yhl=Yinhang.ABC; @Override public void kaihu() { // 開戶辦法 //輸出姓名 Cuxuka cxk=new Cuxuka(); try{ Scanner sc1=new Scanner(System.in); System.out.println("請輸出你的姓名:"); String st=sc1.nextLine(); cxk.setName(st); //輸出身份證 System.out.println("請輸出你的身份證號:"); for(int ig=0;ig>=0;ig++) { Scanner sc2=new Scanner(System.in); String str=sc2.nextLine(); String st1="\\d{15}|\\d{17}[\\dxX]"; if(str.matches(st1)) { cxk.setShenfen(str); break; } else { System.out.println("輸出的身份證號不是18位身份號"); } } //設置賬戶暗碼 System.out.println("請輸出你的暗碼:"); for(int ig=0;ig>=0;ig++) { Scanner sc3=new Scanner(System.in); String pass=sc3.nextLine(); String mm="\\d{6}"; if(pass.matches(mm)) { cxk.setPassword(pass); break; } else { System.out.println("請輸出准確的6位數暗碼"); } } //生成6位數儲蓄卡號 Random a=new Random(); int[] ch=new int[6]; StringBuilder str=new StringBuilder(); String s; for(int i=0;i<6;i++) { ch[i]=a.nextInt(9); } for(Integer c:ch) { str.append(c); } s=str.toString(); cxk.setCard(s); //將生成的數據導入銀行卡list列表中 Yinhanglei.getYinhangLei().list.add(cxk.getCard()); //將生成的數據導入銀行卡Map列表中 Yinhanglei.getYinhangLei().map.put(cxk.getCard(), cxk); System.out.println("您的新卡號為:"+cxk.getCard()); System.out.println("開戶勝利,感謝應用"); }catch (Exception e) { System.out.println("輸出有誤"); } } }
2,儲蓄卡類
package com.bank.abc; import java.util.Scanner; import com.bank.unionpay.Yinhang; import com.bank.unionpay.Yinhangka; public class Cuxuka implements Yinhangka { //儲蓄卡屬性 private Yinhang yinhang; private String name; private String shenfen; private String card; private String password; private double balance; //生成toString (); @Override public String toString() { return "姓名=" + name + "\t\n"+ "身份證=" + shenfen + "\t\n"+"卡號=" +card + "\t\n"+" 賬戶金額=" + balance ; } //對屬性停止get set設置 public Yinhang getYinhang() { return yinhang=Yinhang.ABC; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getShenfen() { return shenfen; } public void setShenfen(String shenfen) { this.shenfen = shenfen; } public String getCard() { return card; } public void setCard(String card) { this.card = card; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; } //存款辦法 @Override public void cun() { Cuxuka cu1=new Cuxuka(); cu1.chaxun(); Scanner sc2=new Scanner(System.in); System.out.println("請輸出你要存入的金額:"); double cun=sc2.nextDouble(); // 完成存款辦法 if(cun<0) { System.out.println("你輸出的數據有效,體系將主動加入!感謝應用"); } else { this.balance+=cun; Yinhanglei.getYinhangLei().map.get(cu1.card).setBalance(balance); System.out.println("存款勝利,殘剩金額"+Yinhanglei.getYinhangLei().map.get(cu1.card).getBalance()); } } //查詢辦法 public void chaxun(){ while(true){ try{ Scanner sc=new Scanner(System.in); System.out.println("請輸出你要查詢的卡號:"); String s=sc.nextLine(); //遍歷Yinhanglei 的Map聚集 for(String temp:Yinhanglei.getYinhangLei().map.keySet()) { if(s.equals(temp)) { this.card=s; } } if(s.equals(card)) //驗證卡號 { int i=0; System.out.println("請輸出你的暗碼:"); while(true){ Scanner sc1=new Scanner(System.in); String st1=sc1.nextLine(); if(st1.equals(Yinhanglei.getYinhangLei().map.get(s).getPassword())) { System.out.println("你查詢的賬號信息為:"); System.out.println(); System.out.println("******************************"); System.out.println(); System.out.println("姓名 身份證號 卡號 金額"); System.out.println(); System.out.println(Yinhanglei.getYinhangLei().map.get(s)); break; } else { i++; if(i==3) { System.out.println("暗碼輸出毛病跨越3次"); break; } else { System.out.println("暗碼輸出有誤"); } } } } else { System.out.println("卡號輸出有誤請確認"); } }catch (Exception e) { System.out.println("輸出有誤"); } break; } } //取款辦法運算 @Override public void qu() { Cuxuka cu=new Cuxuka(); cu.chaxun(); Scanner sc1=new Scanner(System.in); System.out.println("請輸出你要取款的金額:"); double qu=sc1.nextDouble(); // 完成取款辦法 if(qu<balance) { this.balance-=qu; Yinhanglei.getYinhangLei().map.get(cu.card).setBalance(balance); System.out.println("取款勝利,殘剩金額:"+ Yinhanglei.getYinhangLei().map.get(cu.card).getBalance()); } else if(qu<0) { System.out.println("你輸出的數據有效,體系將主動加入!感謝應用");; } else { System.out.println("余額缺乏"); } } @Override public void getyu() { // 余額盤算 Cuxuka cu=new Cuxuka(); System.out.println("殘剩金額"+cu.getBalance()); } }
3,單例形式銀行類
package com.bank.abc; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.bank.unionpay.Yinhang; public class Yinhanglei { //銀行類屬性 private Yinhang yinhang=Yinhang.ABC; private String name; public List<String> list=new ArrayList<>(); public Map<String, Cuxuka> map=new HashMap<>(); //公有化結構辦法 private Yinhanglei() { super(); } private static Yinhanglei bank=new Yinhanglei(); public static Yinhanglei getYinhangLei() { return bank; } }
4,信譽卡類
package com.bank.abc; public class Xinyongka extends Cuxuka { //結構本身的屬性 private double touzhi; public double getTouzhi() { return touzhi; } public void setTouzhi(double touzhi) { this.touzhi = touzhi; } //重寫取款辦法 public void qu(double qu) { // 完成取款辦法 if((touzhi+getBalance())>=qu) { System.out.println("透支金額"+(qu-getBalance()));; } else { System.out.println("沒法取款跨越最年夜透支額度");; } } }
包三:com.bank.test
1,測試類
package com.bank.test; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import com.bank.abc.ATM2; import com.bank.abc.Cuxuka; import com.bank.unionpay.ATM; import com.bank.unionpay.Zujiemian; public class Test1 { public static void main(String[] args) { //主界面的制造 Cuxuka cxk=new Cuxuka(); //實例化主界面 Zujiemian zjm=new Zujiemian(); //拋出異常 try{ //創立逝世輪回 for(int i=0;i>=0;i++) { zjm.zhujiemian(); Scanner sc=new Scanner(System.in); int in=sc.nextInt(); //斷定輸出數字能否相符界面數字 if(in==0||in==1||in==2||in==3||in==4) { //開戶功效 if(in==0) { ATM2 atm2=new ATM2(); atm2.kaihu(); System.out.println("****************************"); System.out.println("你選擇的為開戶功效"); System.out.println(); continue; } //查詢功效 if(in==1) { System.out.println("****************************"); System.out.println("你選擇的為查詢功效"); cxk.chaxun(); continue; } //存款功效 if(in==2) { System.out.println("****************************"); System.out.println("你選擇的為存款功效"); cxk.cun(); continue; } //取款功效 if(in==3) { System.out.println("****************************"); System.out.println("你選擇的為取款功效"); cxk.qu(); continue; } //加入功效 if(in==4) { System.out.println("感謝應用!"); break; } } //不相符菜單內容打印 else { System.out.println("你選擇的菜單不存在!"); } } //異常拋出打印 }catch (Exception e) { System.out.println("輸出有誤"); } } }
成果:
以上所述是小編給年夜家引見的Java 模仿銀行自助終端體系,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!