银行卡相关功能简要实现
阿婆主呢也是一個(gè)Java的初學(xué)者,這是最近復(fù)習(xí)面向?qū)ο蟮囊粋€(gè)作業(yè),希望點(diǎn)進(jìn)來(lái)的看官們,不喜勿噴嗷,也希望看官們可以多多指導(dǎo)。
題目
定義一個(gè)銀行卡類:BankCard,定義如下屬性。(注:所有屬性類型和初始值自己確定。)
銀行卡序號(hào)( nextNo):每發(fā)一張卡,序號(hào)加1,不分哪家銀行。
所有卡累計(jì)余額(totalBalance):將所有卡的余額加一起。
銀行卡號(hào) (cardNo)
客戶姓名 (name)
客戶身份證號(hào) (personId)
卡上余額 (balance)
定義方法: 注:所有方法參數(shù)自己和返回類型自己確定,這里只給出方法名:
構(gòu)造方法 BankCard()
取得所有卡累計(jì)余額 getTotalBalance
取得當(dāng)前最后的卡號(hào) getCurrentCardNo
取得下一個(gè)卡號(hào) getNextCurrentNo
存款 deposit()
取款 withdraw()
取得本卡的余額 getBalance()
完整代碼
銀行卡類
/*** 銀行卡類* 屬性:* 銀行卡序號(hào)* 所有卡余額* 銀行卡號(hào)* 密碼* 卡上余額*/ public class BankCard {private int nextNo;//因?yàn)閯傞_(kāi)始的時(shí)候沒(méi)有卡存在所以我在這就直接賦值為0;private double totalBalance = 0.0;private String cardNo;private String password;//余額也是因?yàn)閯倓?chuàng)建生成的卡是沒(méi)有存款所以直接賦值為0private double balance = 0.0;//這里余額和所有卡的累計(jì)余額我都采用的是double類型,用BigInteger類型可能會(huì)更合適public BankCard() {}//這里我設(shè)定的是辦卡就只是辦卡,卡上余額隨存款取款改變,所以不在創(chuàng)建的時(shí)候賦值public BankCard(int nextNo, String cardNo, String password) {this.nextNo = nextNo;this.cardNo = cardNo;this.password = password;}客戶類
/*客戶姓名 name客戶身份證號(hào) personId客戶電話號(hào)碼*/public class Client {private String name;private String personId;//銀行辦卡都需要預(yù)留手機(jī)號(hào),所以添加了一個(gè)電話號(hào)碼的屬性private String phone;//因?yàn)槭强蛻魮碛秀y行卡所以將銀行卡作為客戶的一項(xiàng)屬性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;}對(duì)銀行卡進(jìn)行操作的操作類
/*** 銀行操作類*/import java.util.ArrayList; import java.util.Scanner;public class BankOperate {//將會(huì)頻繁使用到的對(duì)象定義在類體中,方便使用,不用多次創(chuàng)建Scanner sc = new Scanner(System.in);//定義在類體中以便能被所有的方法調(diào)用進(jìn)行對(duì)數(shù)據(jù)的操作,也以免造成數(shù)據(jù)存儲(chǔ)混亂ArrayList<Client> clients = new ArrayList<>();//創(chuàng)建銀行卡類的對(duì)象,通過(guò)此對(duì)象進(jìn)行來(lái)調(diào)用銀行卡類里的的set和get方法取值賦值BankCard bc = new BankCard();//創(chuàng)建一個(gè)下標(biāo),獲取登陸成功的客戶存儲(chǔ)的下標(biāo)位置,方便客戶進(jìn)行存取款的時(shí)候不會(huì)錯(cuò)誤的操作。int cardIndex = -1;//銀行賬戶注冊(cè)public void loginMessage(){System.out.println("請(qǐng)輸入用戶姓名: ");String name = sc.next();System.out.println("請(qǐng)輸入身份證號(hào)碼: ");String personId = sc.next();System.out.println("請(qǐng)輸入電話號(hào)碼: ");String phone = sc.next();//對(duì)銀行卡的序號(hào)采用存放數(shù)據(jù)的數(shù)組長(zhǎng)度加1的方式來(lái)賦值,確保每次創(chuàng)建新卡號(hào)時(shí)序號(hào)自動(dòng)加1int nextNo = clients.size() + 1;//在這我對(duì)銀行卡號(hào)的設(shè)置是去得當(dāng)前毫秒數(shù)的一部分以及身份證號(hào)的一部分然后使用+拼接在一起組成的String str1 = String.valueOf(System.currentTimeMillis()).substring(2);String str2 = personId.substring(6,14);String cardNo = str1 + str2;System.out.println("請(qǐng)輸入你的銀行卡密碼: ");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(){//這里我是為了方便自己不會(huì)搞混所以定義了一歌變量來(lái)獲取卡的總余額來(lái)進(jìn)行接下來(lái)的操作double totalBalance = bc.getTotalBalance();for (Client cc: clients) {double sum = Double.sum(totalBalance,cc.getBankCard().getBalance());bc.setTotalBalance(sum);}}//取得當(dāng)前最后的卡號(hào)public void getCurrentCardNo(){//因?yàn)槲矣X(jué)得卡號(hào)不會(huì)憑空生成所以取得當(dāng)前已經(jīng)存在集合中創(chuàng)建好的賬戶的最后一個(gè)就可以了String s = clients.get(clients.size() - 1).getBankCard().getCardNo();System.out.println(s);}//取得下一個(gè)卡號(hào)public void getNextCurrentNo(){System.out.println("輸入當(dāng)前卡號(hào)序號(hào)");int cardNo = sc.nextInt();//創(chuàng)建一個(gè)變量來(lái)獲取輸入的當(dāng)前卡號(hào)序號(hào)存儲(chǔ)的位置,以便找到下一個(gè)卡號(hào)存儲(chǔ)的位置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("卡號(hào)" + cardNo + "不存在,或者已是最后卡號(hào)");}//用戶登錄public void login(){System.out.println("請(qǐng)輸入您的銀行卡號(hào)");String cardNo = sc.next();System.out.println("請(qǐng)輸入您的銀行卡密碼");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("用戶登陸成功");//登錄成功后將該用戶的下標(biāo)賦值給提前定義好的變量cardIndex = i;break;}else {System.out.println("用戶名或密碼錯(cuò)誤,請(qǐng)重新登錄");}}}else{System.out.println("當(dāng)前卡號(hào)不存在,請(qǐng)注冊(cè)后再進(jìn)行此操作!");}}//存款public void deposit(){System.out.println("請(qǐng)輸入您的存款金額: ");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("請(qǐng)輸入您的取款金額: ");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("輸入您想查找的客戶卡號(hào): ");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("該客戶不存在或姓名與卡號(hào)有誤,請(qǐng)重新查找");}}}else {System.out.println("您的輸入有誤,請(qǐng)重新輸入");}}菜單界面
public void menu(){System.out.println("=============歡迎進(jìn)入銀行管理系統(tǒng)=============");System.out.println("請(qǐng)問(wèn)您的身份是: ");System.out.println("1、銀行工作人員");System.out.println("2、用戶");System.out.println("0、退出系統(tǒng)");int num = sc.nextInt();switch (num){case 1:menu1();break;case 2:menu2();break;default:System.out.println("歡迎您的使用,系統(tǒng)已退出");System.exit(0);}}private void menu1() {System.out.println("=============歡迎進(jìn)入銀行信息管理系統(tǒng)=============");System.out.println("請(qǐng)問(wèn)你要執(zhí)行哪項(xiàng)功能: ");System.out.println("1、查詢所有客戶信息");System.out.println("2、查詢指定客戶信息");System.out.println("3、獲取所有卡號(hào)總余額");System.out.println("4、取得下一個(gè)卡號(hào)");System.out.println("5、取得當(dāng)前最后的卡號(hào)");System.out.println("0、結(jié)束使用,返回上一級(jí)目錄");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("使用結(jié)束,返回上一級(jí)目錄");menu();}}private void menu2() {System.out.println("=============歡迎進(jìn)入用戶操作系統(tǒng)=============");System.out.println("請(qǐng)問(wèn)你要執(zhí)行哪項(xiàng)功能: ");System.out.println("1、注冊(cè)賬號(hào)");System.out.println("2、登錄賬戶");System.out.println("0、結(jié)束使用,返回上一級(jí)目錄");int num = sc.nextInt();switch (num){case 1:loginMessage();menu2();break;case 2:login();menu3();break;default:System.out.println("使用結(jié)束,返回上一級(jí)目錄");menu();}}private void menu3() {System.out.println("=============金額存取管理系統(tǒng)=============");System.out.println("請(qǐng)問(wèn)你要執(zhí)行哪項(xiàng)功能: ");System.out.println("1、存款");System.out.println("2、取款");System.out.println("3、查詢賬戶余額");System.out.println("0、結(jié)束使用,返回上一級(jí)目錄");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、結(jié)束使用,返回上一級(jí)目錄");menu2();}}在此我將目錄分為了兩部分,一種是銀行對(duì)卡進(jìn)行的相關(guān)操作,一部分是客戶的操作
以上就是我寫(xiě)的所有內(nèi)容了,可能有很多不足,在這謝謝各位看官的觀看了!!!
總結(jié)
以上是生活随笔為你收集整理的银行卡相关功能简要实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。