《JAVA編程基礎》項目說明
一、項目名稱:
?? 基于JAVA控制臺版本銀行自動取款機
項目要求:
??? 實現銀行自動取款機的以下基本操作功能:讀卡、取款、查詢。(自動取款機中轉賬、修改密碼不作要求)
具體要求:
??? 讀卡:因不能使用真正的銀行卡,要求用戶輸入虛擬賬號,輸入密碼,程序判斷賬號密碼是否匹配,如果用戶輸入賬號密碼不匹配,提示用戶輸入不正確;如果用戶連續三次輸入錯誤,提示用戶賬號凍結。此時程序退出。
圖1:
??? 進入主界面:當用戶輸入正確的賬號密碼后,進入主取款機服務主界面。界面提示用戶可以使用的服務,如查詢、取款、轉賬(功能無需實現)、退卡。用戶可以選擇對應的服務編號,進入相應的操作界面。
圖2:
??? 取款:當用戶選擇取款,進入取款界面,提示用戶輸入取款金額。用戶輸入完畢回車,程序應該進行判斷用戶取款金額,如果取款金額在存款金額范圍之內,取款成功,并且將用戶存款更新;否則提示用戶余額不足,取款失敗。
圖3:
圖4:
??? 查詢:當用戶選擇余額查詢,顯示用戶當前可用余額。
圖5:
??? 退卡:用戶選擇退卡,則感謝用戶使用該服務,程序退出。
圖6:
其他要求:用戶在賬號密碼正確進入主界面后,只要不退卡,可以循環操作。具體循環操作次數不固定;用戶每選擇一項服務并操作完后,給出相應的提示,并提示用戶返回主界面。
二、測試代碼如下:
(1)用戶類:
package com.fs.demo;public class User {public String accountNumber;public String password;public double sum;public User(){this.accountNumber="1234";this.password="5678";this.sum=8888.0;}public User(String accountNumber,String password,double sum){this.accountNumber=accountNumber;this.password=password;this.sum=sum;}}
(2)測試類: (以下雖然能滿足項目需求,但此代碼不足。其實可以簡化:改成調用方法去處理每個模塊也能達到需求,這樣的目的就是當遇到比較大的項目時便于代碼的后期維護)
package com.fs.test;
import com.fs.demo.*;
import java.util.*;
public class Test01 {public static void main(String[] args) {Scanner sc =new Scanner(System.in);User user =new User();System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("** 請輸入你的賬號: **");String accountNum= sc.next();while(!accountNum.equals(user.accountNumber)){System.out.println("該賬號輸入有誤,請重新輸入正確賬號:");accountNum=sc.next();}System.out.println("** 請輸入你的密碼: **");String password=sc.next();int i=1;//記錄輸入錯誤密碼次數while(!password.equals(user.password)){if(i==1||i==2) {System.out.println("你已連續輸入錯誤密碼" + i + "次。若連續三次密碼輸入錯誤,該賬號將被凍結!");System.out.println("請你重新輸入正確密碼:");password = sc.next();if(!password.equals(user.password)) {i++;}}if(i==3){System.out.println("你已連續輸入錯誤密碼3次,該賬號將已被凍結!");break;}}if(accountNum.equals(user.accountNumber)&&password.equals(user.password)){System.out.println("銀行卡賬號登錄成功!");System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("** 1.查詢 2.取款 **");System.out.println("** 3.轉賬 4.退卡 **");System.out.println("請選擇您需要的服務:");int select=sc.nextInt();while(true) {if (select == 1) {System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("******** 查詢成功!! ********");System.out.println("您查詢的賬號的總余額為:" + user.sum + "元");System.out.println();System.out.println("********返回請選擇5****************");int flag1=sc.nextInt();if(flag1==5){System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("** 1.查詢 2.取款 **");System.out.println("** 3.轉賬 4.退卡 **");System.out.println("請選擇您需要的服務:");select=sc.nextInt();}}if (select == 2) {System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("** 請輸入您要取款的金額:");double sum = sc.nextDouble();System.out.println("******** 取款成功!! ********");System.out.println("您的賬號余額還剩:" + (user.sum - sum) + "元");System.out.println();System.out.println("********返回請選擇5****************");int flag1=sc.nextInt();if(flag1==5){System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("** 1.查詢 2.取款 **");System.out.println("** 3.轉賬 4.退卡 **");System.out.println("請選擇您需要的服務:");select=sc.nextInt();}}if (select == 3) {System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("** 請分別輸入您要轉賬的目的銀行卡的賬號和密碼:");User user1 = new User(sc.next(), sc.next(), 4000.0);System.out.println("** 請輸入您要轉賬的金額:");double sum = sc.nextDouble();System.out.println("******** 轉賬成功!! ********");System.out.println("您的賬號余額還剩:" + (user.sum - sum) + "元");System.out.println("目的銀行卡賬號:" + user1.accountNumber + ",的余額還剩:" + (user1.sum + sum) + "元");System.out.println();System.out.println("********返回請選擇5****************");int flag1=sc.nextInt();if(flag1==5){System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("** 1.查詢 2.取款 **");System.out.println("** 3.轉賬 4.退卡 **");System.out.println("請選擇您需要的服務:");select=sc.nextInt();}}if (select == 4) {System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("******** 退卡成功!! ********");return;}}}}
}
三、代碼運行結果:
(1) 當我們的用戶輸入的賬號與ATM里實際已經注冊好的賬號不匹配時:會提示輸入賬號有誤。(當然肯定還能更細節一點,此處可以隨項目需求去補充和刪改)而且當我們輸入的密碼錯誤三次,就會自動凍結賬號。(也就是結束程序運行的進程)
(2)其他測試,四種ATM取款機提供的服務均可以使用。
?
接著上面:
?
當我們的用戶選擇退卡時:就可以提示退卡成功,并結束進程。?
四、后期還可以對它進行改善,比如需求變更、簡化代碼、異常的捕獲處理、安全權限等等很多問題。