银行卡相关功能简要实现
生活随笔
收集整理的這篇文章主要介紹了
银行卡相关功能简要实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
阿婆主呢也是一個Java的初學者,這是最近復習面向對象的一個作業,希望點進來的看官們,不喜勿噴嗷,也希望看官們可以多多指導。
題目
定義一個銀行卡類:BankCard,定義如下屬性。(注:所有屬性類型和初始值自己確定。)
銀行卡序號( nextNo):每發一張卡,序號加1,不分哪家銀行。
所有卡累計余額(totalBalance):將所有卡的余額加一起。
銀行卡號 (cardNo)
客戶姓名 (name)
客戶身份證號 (personId)
卡上余額 (balance)
定義方法: 注:所有方法參數自己和返回類型自己確定,這里只給出方法名:
構造方法 BankCard()
取得所有卡累計余額 getTotalBalance
取得當前最后的卡號 getCurrentCardNo
取得下一個卡號 getNextCurrentNo
存款 deposit()
取款 withdraw()
取得本卡的余額 getBalance()
完整代碼
銀行卡類
/*** 銀行卡類* 屬性:* 銀行卡序號* 所有卡余額* 銀行卡號* 密碼* 卡上余額*/ public class BankCard {private int nextNo;//因為剛開始的時候沒有卡存在所以我在這就直接賦值為0;private double totalBalance = 0.0;private String cardNo;private String password;//余額也是因為剛創建生成的卡是沒有存款所以直接賦值為0private double balance = 0.0;//這里余額和所有卡的累計余額我都采用的是double類型,用BigInteger類型可能會更合適public BankCard() {}//這里我設定的是辦卡就只是辦卡,卡上余額隨存款取款改變,所以不在創建的時候賦值public BankCard(int nextNo, String cardNo, String password) {this.nextNo = nextNo;this.cardNo = cardNo;this.password = password;}客戶類
/*客戶姓名 name客戶身份證號 personId客戶電話號碼*/public class Client {private String name;private String personId;//銀行辦卡都需要預留手機號,所以添加了一個電話號碼的屬性private String phone;//因為是客戶擁有銀行卡所以將銀行卡作為客戶的一項屬性private BankCard bankCard;public Client() {}public Client(String name, String personId, String phone, BankCard bankCard) {this.name = name;this.personId = personId;this.phone = phone;this.bankCard = bankCard;}對銀行卡進行操作的操作類
/*** 銀行操作類*/import java.util.ArrayList; import java.util.Scanner;public class BankOperate {//將會頻繁使用到的對象定義在類體中,方便使用,不用多次創建Scanner sc = new Scanner(System.in);//定義在類體中以便能被所有的方法調用進行對數據的操作,也以免造成數據存儲混亂ArrayList<Client> clients = new ArrayList<>();//創建銀行卡類的對象,通過此對象進行來調用銀行卡類里的的set和get方法取值賦值BankCard bc = new BankCard();//創建一個下標,獲取登陸成功的客戶存儲的下標位置,方便客戶進行存取款的時候不會錯誤的操作。int cardIndex = -1;//銀行賬戶注冊public void loginMessage(){System.out.println("請輸入用戶姓名: ");String name = sc.next();System.out.println("請輸入身份證號碼: ");String personId = sc.next();System.out.println("請輸入電話號碼: ");String phone = sc.next();//對銀行卡的序號采用存放數據的數組長度加1的方式來賦值,確保每次創建新卡號時序號自動加1int nextNo = clients.size() + 1;//在這我對銀行卡號的設置是去得當前毫秒數的一部分以及身份證號的一部分然后使用+拼接在一起組成的String str1 = String.valueOf(System.currentTimeMillis()).substring(2);String str2 = personId.substring(6,14);String cardNo = str1 + str2;System.out.println("請輸入你的銀行卡密碼: ");String password = sc.next();BankCard bankCard = new BankCard(nextNo,cardNo,password);Client c = new Client(name,personId,phone,bankCard);clients.add(c);System.out.println(clients.toString());}//取得所有卡余額public void getTotalBalance(){//這里我是為了方便自己不會搞混所以定義了一歌變量來獲取卡的總余額來進行接下來的操作double totalBalance = bc.getTotalBalance();for (Client cc: clients) {double sum = Double.sum(totalBalance,cc.getBankCard().getBalance());bc.setTotalBalance(sum);}}//取得當前最后的卡號public void getCurrentCardNo(){//因為我覺得卡號不會憑空生成所以取得當前已經存在集合中創建好的賬戶的最后一個就可以了String s = clients.get(clients.size() - 1).getBankCard().getCardNo();System.out.println(s);}//取得下一個卡號public void getNextCurrentNo(){System.out.println("輸入當前卡號序號");int cardNo = sc.nextInt();//創建一個變量來獲取輸入的當前卡號序號存儲的位置,以便找到下一個卡號存儲的位置int index = -1;if (cardNo != 0 && cardNo != clients.get(clients.size() -1).getBankCard().getNextNo()){for (int i = 0;i < clients.size();i++){if (cardNo == clients.get(i).getBankCard().getNextNo()){index = i;break;}}System.out.println(clients.get(clients.size() - 1).getBankCard().getCardNo());}System.out.println("卡號" + cardNo + "不存在,或者已是最后卡號");}//用戶登錄public void login(){System.out.println("請輸入您的銀行卡號");String cardNo = sc.next();System.out.println("請輸入您的銀行卡密碼");String pwd = sc.next();if (cardNo != null){for (int i = 0;i < clients.size();i ++){if (cardNo.equals(clients.get(i).getBankCard().getCardNo())&& pwd.equals(clients.get(i).getBankCard().getPassword())){System.out.println("用戶登陸成功");//登錄成功后將該用戶的下標賦值給提前定義好的變量cardIndex = i;break;}else {System.out.println("用戶名或密碼錯誤,請重新登錄");}}}else{System.out.println("當前卡號不存在,請注冊后再進行此操作!");}}//存款public void deposit(){System.out.println("請輸入您的存款金額: ");double money = sc.nextDouble();double balance = clients.get(cardIndex).getBankCard().getBalance();double afterDeposit = Double.sum(balance,money);clients.get(cardIndex).getBankCard().setBalance(afterDeposit);}//取款public void withdraw(){System.out.println("請輸入您的取款金額: ");double money = sc.nextDouble();double balance = clients.get(cardIndex).getBankCard().getBalance();double afterWithdraw = balance - money;clients.get(cardIndex).getBankCard().setBalance(afterWithdraw);}//取得本卡的余額public void getBalance(){System.out.println(clients.get(cardIndex).getBankCard().getBalance());}//查詢所有客戶信息public void selectAll(){for (Client cc : clients){System.out.println(cc.toString());}}//查詢指定客戶信息public void selectOne(){System.out.println("輸入您想查找的客戶姓名: ");String name = sc.next();System.out.println("輸入您想查找的客戶卡號: ");String cardNo = sc.next();if (cardNo != null){for (int i = 0;i < clients.size();i ++){if (clients.get(i).getName().equals(name)&& clients.get(i).getBankCard().getCardNo().equals(cardNo)){System.out.println(clients.get(i).toString());}else {System.out.println("該客戶不存在或姓名與卡號有誤,請重新查找");}}}else {System.out.println("您的輸入有誤,請重新輸入");}}菜單界面
public void menu(){System.out.println("=============歡迎進入銀行管理系統=============");System.out.println("請問您的身份是: ");System.out.println("1、銀行工作人員");System.out.println("2、用戶");System.out.println("0、退出系統");int num = sc.nextInt();switch (num){case 1:menu1();break;case 2:menu2();break;default:System.out.println("歡迎您的使用,系統已退出");System.exit(0);}}private void menu1() {System.out.println("=============歡迎進入銀行信息管理系統=============");System.out.println("請問你要執行哪項功能: ");System.out.println("1、查詢所有客戶信息");System.out.println("2、查詢指定客戶信息");System.out.println("3、獲取所有卡號總余額");System.out.println("4、取得下一個卡號");System.out.println("5、取得當前最后的卡號");System.out.println("0、結束使用,返回上一級目錄");int num = sc.nextInt();switch (num){case 1:selectAll();menu1();break;case 2:selectOne();menu1();break;case 3:getTotalBalance();menu1();break;case 4:getNextCurrentNo();menu1();break;case 5:getCurrentCardNo();menu1();break;default:System.out.println("使用結束,返回上一級目錄");menu();}}private void menu2() {System.out.println("=============歡迎進入用戶操作系統=============");System.out.println("請問你要執行哪項功能: ");System.out.println("1、注冊賬號");System.out.println("2、登錄賬戶");System.out.println("0、結束使用,返回上一級目錄");int num = sc.nextInt();switch (num){case 1:loginMessage();menu2();break;case 2:login();menu3();break;default:System.out.println("使用結束,返回上一級目錄");menu();}}private void menu3() {System.out.println("=============金額存取管理系統=============");System.out.println("請問你要執行哪項功能: ");System.out.println("1、存款");System.out.println("2、取款");System.out.println("3、查詢賬戶余額");System.out.println("0、結束使用,返回上一級目錄");int num = sc.nextInt();switch (num){case 1:deposit();menu3();break;case 2:withdraw();menu3();break;case 3:getBalance();menu3();break;default:System.out.println("0、結束使用,返回上一級目錄");menu2();}}在此我將目錄分為了兩部分,一種是銀行對卡進行的相關操作,一部分是客戶的操作
以上就是我寫的所有內容了,可能有很多不足,在這謝謝各位看官的觀看了!!!
總結
以上是生活随笔為你收集整理的银行卡相关功能简要实现的全部內容,希望文章能夠幫你解決所遇到的問題。