程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java 模仿銀行自助終端體系

Java 模仿銀行自助終端體系

編輯:關於JAVA

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 模仿銀行自助終端體系,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved