欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 模擬銀行自助終端系統(tǒng)

 更新時間:2016年10月11日 10:49:07   作者:熊貓卡洛斯  
本系統(tǒng)模擬銀行用戶使用ATM機開戶、查詢、存款、取款功能,要求使用java語言編程實現(xiàn)。這篇文章主要介紹了Java 模擬銀行自助終端系統(tǒng)的相關資料,需要的朋友可以參考下

一. 本系統(tǒng)模擬銀行用戶使用ATM機開戶、查詢、存款、取款功能,要求使用java語言編程實現(xiàn)。

說明:

1. 對于數(shù)據(jù)輸入異常,可使用java異常處理機制進行處理。

2. 評分將以功能實現(xiàn)與代碼規(guī)范性相結合的方式進行考核。

3. 如果對項目需求有疑問,可以隨時以QQ留言方式聯(lián)系我進行咨詢。

4. 國慶放假期間,每天都有老師在公司值班,10月4日是我在公司值班,10月7日正常上班,歡迎大家到公司來做項目。

二. 項目功能要求:

項目開始運行顯示主菜單為:

銀行自助終端系統(tǒng)

****************************

0.------開戶

1.------查詢

2.------存款

3.------取款

4.------退出

****************************

請選擇你要執(zhí)行的功能:

此時,用戶可以通過鍵盤輸入選擇自己要實現(xiàn)的功能,如果輸入不是0,1,2,3,4,則系統(tǒng)提示:

你選擇的菜單不存在!

請重新選擇:

要求用戶重新輸入數(shù)據(jù)進行菜單選擇!

當用戶輸入0時,則進入查詢功能:系統(tǒng)提示:

****************************

你選擇的為開戶功能

請輸入你的姓名:

此時用戶需要輸入姓名,輸入完畢后系統(tǒng)提示:

請輸入你的身份證號:

此時用戶需要輸入18位身份證號,輸入完畢如果驗證未通過要求繼續(xù)輸入,直到驗證通過后系統(tǒng)提示:

請輸入你的密碼:

此時用戶需要輸入6位純數(shù)字密碼,輸入完畢如果驗證未通過要求繼續(xù)輸入,驗證通過后系統(tǒng)提示:

開戶成功,謝謝使用!

銀行自助終端系統(tǒng)

****************************

0.------開戶

1.------查詢

2.------存款

3.------取款

4.------退出

****************************

請選擇你要執(zhí)行的功能:

當用戶輸入1時,則進入查詢功能:系統(tǒng)提示:

****************************

你選擇的為查詢功能

請輸入你要查詢的卡號:

此時用戶需要輸入查詢的卡號,系統(tǒng)對卡號進行檢測,如果卡號不存在,則提示: 你輸入的卡號不存在,請重新輸入:

請輸入你要查詢的卡號:

要求重新輸入卡號,當用戶輸入正確卡號后,則提示:

請輸入你的密碼:

此時用戶需要輸入6位純數(shù)字密碼,輸入完畢如果驗證未通過要求繼續(xù)輸入(最多3次),驗證通過后系統(tǒng)將顯示當前用戶賬號信息并進入主菜單:

你查詢的賬號信息為:

******************************

姓名 身份證號 卡號 金額

張三豐 420106198410112062 111111 12800.0

銀行自助終端系統(tǒng)

****************************

0.------開戶

1.------查詢

2.------存款

3.------取款

4.------退出

****************************

請選擇你要執(zhí)行的功能:

當用戶輸入2時,則進入存款功能:系統(tǒng)提示:

****************************

你選擇的為存款功能

請輸入你要存款的卡號:

此時用戶需要輸入存款的卡號,系統(tǒng)對卡號進行檢測,如果卡號不存在,則提示:

你輸入的卡號不存在,請重新輸入:

請輸入你要存款的卡號:

要求重新輸入卡號,當用戶輸入正確卡號后,則提示:

請輸入你的密碼:

此時用戶需要輸入6位純數(shù)字密碼,輸入完畢如果驗證未通過要求繼續(xù)輸入(最多3次),驗證通過后系統(tǒng)將顯示當前用戶賬號信息并進入主菜單:

你要存款的賬號信息為:

******************************

姓名 身份證號 卡號 金額

張三豐 420106198410112062 111111 12800.0

請輸入你要存入的金額:

此時要求用戶輸入存款金額,系統(tǒng)對金額進行判斷,如果輸入的數(shù)據(jù)小于等于0,則提示:

你輸入的數(shù)據(jù)無效,系統(tǒng)將自動退出!謝謝使用

銀行自助終端系統(tǒng)

****************************

0.------開戶

1.------查詢

2.------存款

3.------取款

4.------退出

****************************

請選擇你要執(zhí)行的功能:

如果用戶輸入數(shù)據(jù)合法,系統(tǒng)提示存款成功,并回到主菜單:

存款成功,謝謝使用!

銀行自助終端系統(tǒng)

****************************

0.------開戶

1.------查詢

2.------存款

3.------取款

4.------退出

****************************

請選擇你要執(zhí)行的功能:

數(shù)據(jù)將存入用戶賬號,如果用戶再次進行數(shù)據(jù)查詢,則能看到已經(jīng)改變后的賬戶金額。 (說明:本系統(tǒng)使用文件進行數(shù)據(jù)存儲,因此如果用戶重新啟動程序,數(shù)據(jù)將從文件中讀取重新初始化到內存!此功能選做,可參考對象的序列化和反序列化或JSON)

當用戶輸入3時,則進入取款功能:系統(tǒng)提示:

****************************

你選擇的為取款功能 請輸入你要取款的卡號:

此時用戶需要輸入取款的卡號,系統(tǒng)對卡號進行檢測,如果卡號不存在,則提示:

你輸入的卡號不存在,請重新輸入:

請輸入你要取款的卡號:

要求重新輸入卡號,當用戶輸入正確卡號后,則提示:

請輸入你的密碼:

此時用戶需要輸入6位純數(shù)字密碼,輸入完畢如果驗證未通過要求繼續(xù)輸入(最多3次),驗證通過后系統(tǒng)將顯示當前用戶賬號信息并進入主菜單:

你要取款的賬號信息為:

******************************

姓名 身份證號 卡號 金額

張三豐 420106198410112062 111111 12800.0

請輸入你要取款的金額:

此時要求用戶輸入取款金額,系統(tǒng)對金額進行判斷,如果輸入的數(shù)據(jù)小于0或大于賬號總金額,則提示:

你輸入的數(shù)據(jù)無效,系統(tǒng)將自動退出!謝謝使用

銀行自助終端系統(tǒng)

****************************

0.------開戶

1.------查詢

2.------存款

3.------取款

4.------退出

****************************

請選擇你要執(zhí)行的功能:

如果用戶輸入數(shù)據(jù)合法,系統(tǒng)提示取款成功,并回到主菜單:

取款成功,謝謝使用!

銀行自助終端系統(tǒng)

****************************

0.------開戶

1.------查詢

2.------存款

3.------取款

4.------退出

****************************

請選擇你要執(zhí)行的功能:

數(shù)據(jù)將從用戶賬號扣出,如果用戶再次進行數(shù)據(jù)查詢,則能看到已經(jīng)改變后的賬戶金額。

當用戶輸入4時,系統(tǒng)將退出。

三.設計要求

(一)包一:com.bank.unionpay 表示銀聯(lián),在該包下添加:

表示銀行卡的接口,包含查詢余額,存款,取款等抽象方法。
表示ATM機的抽象類,使用銀行卡類型的對象作為屬性或參數(shù),實現(xiàn)查詢余額,存款,取款等實例方法,添加開戶為抽象方法。
表示四大銀行的枚舉類型:包含ABC,ICBC,CCB,BOC;分別代表農(nóng)行,工行,建行,中行。

(二)包二:com.bank.abc 表示農(nóng)行,在該包下添加:

以單例模式定義銀行類,包含屬性:銀行類型(枚舉類型,常量=ABC),銀行名稱(String),銀行卡列表(集合)等。
定義銀行卡的實現(xiàn)類-儲蓄卡,包含屬性:銀行類型(枚舉類型=ABC),姓名,身份證號,卡號,密碼,余額;實現(xiàn)查詢余額,存款,取款等方法。

定義ATM機的子類,包含屬性:銀行類型(枚舉類型,常量=ABC),實現(xiàn)開戶方法,其中:只能開辦儲蓄卡,卡號為6位隨機數(shù)字,自動產(chǎn)生。新開戶的銀行卡添加到銀行的銀行卡列表中。

定義儲蓄卡的子類-信用卡,增加屬性:透支額度,重寫取款方法,控制最大取款金額不能大于余額+透支額度的和。

(三)包三:com.bank.test 表示測試,在該包下添加帶main方法的測試類,實現(xiàn)項目要求的模擬ATM機的功能。

以下功能選做:

以單態(tài)模式實現(xiàn)工商銀行,在測試類中默認添加多張銀行卡,在農(nóng)行的ATM機上實現(xiàn)跨行查詢和存取款功能。

包一: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("農(nóng)行"),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("銀行自助終端系統(tǒng) ");
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("請選擇你要執(zhí)行的功能: ");
}
}

包二: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位數(shù)密碼");
}
}
//生成6位數(shù)儲蓄卡號
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);
//將生成的數(shù)據(jù)導入銀行卡list列表中
Yinhanglei.getYinhangLei().list.add(cxk.getCard());
//將生成的數(shù)據(jù)導入銀行卡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();
// 實現(xiàn)存款方法
if(cun<0)
{
System.out.println("你輸入的數(shù)據(jù)無效,系統(tǒng)將自動退出!謝謝使用");
}
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();
// 實現(xiàn)取款方法
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("你輸入的數(shù)據(jù)無效,系統(tǒng)將自動退出!謝謝使用");;
}
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) {
// 實現(xiàn)取款方法
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{
//創(chuàng)建死循環(huán)
for(int i=0;i>=0;i++)
{
zjm.zhujiemian();
Scanner sc=new Scanner(System.in);
int in=sc.nextInt();
//判斷輸入數(shù)字是否符合界面數(shù)字
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 模擬銀行自助終端系統(tǒng),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • 解決SpringMvc中普通類注入Service為null的問題

    解決SpringMvc中普通類注入Service為null的問題

    這篇文章主要介紹了解決SpringMvc中普通類注入Service為null的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring Cloud Stream簡單用法

    Spring Cloud Stream簡單用法

    Spring cloud stream是為構建微服務消息驅動而產(chǎn)生的一種框架。Spring Cloud Stream基于Spring boot的基礎上,可創(chuàng)建獨立的、生產(chǎn)級別的Spring應用,并采用Spring Integration來連接消息中間件提供消息事件驅動,一起看看吧
    2021-07-07
  • Java五子棋單機版源碼分享

    Java五子棋單機版源碼分享

    這篇文章主要為大家分享了Java五子棋單機版源碼,JavaGUI編寫單機版五子棋,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 淺談java安全編碼指南之死鎖dead lock

    淺談java安全編碼指南之死鎖dead lock

    java中為了保證共享數(shù)據(jù)的安全性,我們引入了鎖的機制。有了鎖就有可能產(chǎn)生死鎖。死鎖的原因就是多個線程鎖住了對方所需要的資源,然后現(xiàn)有的資源又沒有釋放,從而導致循環(huán)等待的情況。通常來說如果不同的線程對加鎖和釋放鎖的順序不一致的話,就很有可能產(chǎn)生死鎖。
    2021-06-06
  • 淺談Mybatis樂觀鎖插件

    淺談Mybatis樂觀鎖插件

    這篇文章主要介紹了淺談Mybatis樂觀鎖插件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Springboot基于BCrypt非對稱加密字符串的實現(xiàn)

    Springboot基于BCrypt非對稱加密字符串的實現(xiàn)

    本文主要介紹了Springboot基于BCrypt非對稱加密字符串的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • java編程題之從上往下打印出二叉樹

    java編程題之從上往下打印出二叉樹

    這篇文章主要為大家詳細介紹了java編程題之從上往下打印出二叉樹,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • java 多線程-鎖詳解及示例代碼

    java 多線程-鎖詳解及示例代碼

    本文主要介紹 Java 多線程鎖的基礎知識,這里整理了相關資料及示例代碼有興趣的小伙伴可以參考下
    2016-09-09
  • Spring Boot 簡單使用EhCache緩存框架的方法

    Spring Boot 簡單使用EhCache緩存框架的方法

    本篇文章主要介紹了Spring Boot 簡單使用EhCache緩存框架的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • SpringBoot整合Security安全框架實現(xiàn)控制權限

    SpringBoot整合Security安全框架實現(xiàn)控制權限

    本文主要介紹了SpringBoot整合Security安全框架實現(xiàn)控制權限,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論