版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、項(xiàng)目名稱(chēng):BankAccountManagementSystem銀行賬戶(hù)管理系統(tǒng)簡(jiǎn)稱(chēng)BAM項(xiàng)目描繪:這是一個(gè)銀行賬戶(hù)管理系統(tǒng),用戶(hù)能夠操作自己的銀行賬戶(hù).項(xiàng)目實(shí)行方式:這是一個(gè)同步練習(xí),跟著CoreJava課程的深入,這個(gè)項(xiàng)目將趨于完好,學(xué)員的任務(wù)是跟著知識(shí)點(diǎn)的深入,達(dá)成每一個(gè)進(jìn)階的項(xiàng)目要求.練習(xí)1:(面向?qū)ο蠡A(chǔ)語(yǔ)法)創(chuàng)立entity包,編寫(xiě)一個(gè)賬戶(hù)類(lèi)(Account),屬性變量:id:賬戶(hù)號(hào)碼長(zhǎng)整數(shù)password:賬戶(hù)密碼name:真切姓名personId:身份證號(hào)碼字符串種類(lèi)balance:賬戶(hù)余額方法:deposit:存款方法,參數(shù)是double型的金額withdraw:取款方法,參
2、數(shù)是double型的金額結(jié)構(gòu)方法:有參和無(wú)參,有參結(jié)構(gòu)方法用于設(shè)置必需的屬性Step1:Account類(lèi)packageentity;publicclassAccount屬性變量privateprivateprivateprivateprivatelongid;Stringpassword;Stringname;StringpersonId;doublebalance;/結(jié)構(gòu)方法publicpublicthisthisthisthisthisAccount()Account(longid,Stringname,StringpersonID,Stringpassword,.id=id;.name=
3、name;.personId=personID;.password=password;.balance=balance;doublebalance)/成員方法/存款,參數(shù)是需要存入的金額,返回值能夠是存后的金額,此時(shí)返回值種類(lèi)為double,也能夠無(wú)返回值,此時(shí)方法的返回值種類(lèi)為void。publicdoubledeposit(doublemoney)balance+=money;returnbalance;/取款,參數(shù)是需要存入的金額,返回值是publicbooleanwithdraw(doublebooleanmoney),能否減款成功if(balancemoney)balance-=mo
4、ney;returntrue;elseSystem.out.println(取款數(shù)目過(guò)大);returnfalse;/練習(xí)2:(封裝)/將Account類(lèi)作成完好封裝,將各屬性變量定義為private種類(lèi),增添相應(yīng)的get,set方法publiclongreturngetId()id;publicvoidsetId(longid)this.id=id;publicStringgetPassword()returnpassword;publicthisvoidsetPassword(Stringpassword).password=password;publicStringgetName()re
5、turnname;publicthisvoidsetName(Stringname).name=name;publicStringgetPersonId()returnpersonId;publicthisvoidsetPersonId(StringpersonId).personId=personId;publicdoublegetBalance()returnbalance;publicvoidsetBalance(doublebalance)this.balance=balance;練習(xí)3:(繼承,多態(tài))銀行的客戶(hù)分為兩類(lèi),積蓄賬戶(hù)(SavingAccount)和信譽(yù)賬戶(hù)(CreditA
6、ccount),差別在于積蓄賬戶(hù)不一樣意透支,而信譽(yù)賬戶(hù)能夠透支10000元在entity包中為這兩種用戶(hù)編寫(xiě)有關(guān)的類(lèi)。/很顯然,積蓄賬戶(hù)(SavingAccount)和信譽(yù)賬戶(hù)(CreditAccount)都是賬戶(hù)類(lèi)的子類(lèi)。packageentity;/信譽(yù)賬戶(hù)publicclassCreditAccountextendsAccount/創(chuàng)立信譽(yù)賬戶(hù)時(shí)我們希望能夠經(jīng)過(guò)輸入屬性變量,如id,name,personID等直接獲得一個(gè)信/用賬戶(hù)的對(duì)象,所以,需要建立信譽(yù)賬戶(hù)的有參結(jié)構(gòu)方法,為對(duì)象進(jìn)行初始化賦值。父類(lèi)有參數(shù)的結(jié)構(gòu)方法不會(huì)自動(dòng)繼承,在子類(lèi)的結(jié)構(gòu)方法中能夠用super(參數(shù))來(lái)調(diào)用父類(lèi)的
7、結(jié)構(gòu)方法。publicCreditAccount(longid,Stringname,StringpersonID,Stringpassword,doublebalance)super(id,name,personID,password,balance);取款,對(duì)父類(lèi)方法的重寫(xiě)信譽(yù)賬戶(hù)能夠透支publicbooleanwithdraw(doublemoney)if(moneysuper.getBalance()+10000)取錢(qián)透支超出10000元returnfalse;else將余額中的錢(qián)減少super.setBalance(returntrue;super.getBalance()-mon
8、ey);相同,關(guān)于積蓄賬戶(hù)也是相同的方法。packageentity;積蓄賬戶(hù)publicclassSavingAccountextendsAccountpublicSavingAccount(longid,Stringname,StringpersonID,Stringpassword,doublebalance)super(id,name,personID,password,balance);publicbooleanwithdraw(doublemoney)if(moneysuper.getBalance()returnfalse;elsesuper.setBalance(super.g
9、etBalance()-money);returntrue;同時(shí)要求創(chuàng)立biz(業(yè)務(wù))包,編寫(xiě)B(tài)ank類(lèi),屬性:1.目前全部的賬戶(hù)對(duì)象的會(huì)合,寄存在數(shù)組中2.目前賬戶(hù)數(shù)目方法:1.用戶(hù)開(kāi)戶(hù),需要的參數(shù):id,密碼,密碼確認(rèn),姓名,身份證號(hào)碼,賬戶(hù)種類(lèi),返回新創(chuàng)立的Account對(duì)象的賬號(hào),提示:用s1.equals(s2)能夠比較s1,s2兩個(gè)字符串的值能否相等.賬戶(hù)種類(lèi)是一個(gè)整數(shù),為0的時(shí)候表示積蓄賬戶(hù),為1的時(shí)候表示信譽(yù)賬戶(hù)2.用戶(hù)登錄,參數(shù):id,密碼返回登錄賬戶(hù)的賬號(hào)3.用戶(hù)存款,參數(shù):id,存款數(shù)額,返回void4.用戶(hù)取款,參數(shù):id,取款數(shù)額,返回void5.查問(wèn)余額,參數(shù):id
10、,返回該賬戶(hù)的余額double用戶(hù)會(huì)經(jīng)過(guò)調(diào)用Bank對(duì)象以上的方法來(lái)操作自己的賬戶(hù),請(qǐng)剖析各個(gè)方法需要的參數(shù)packagebiz;importentity.Account;publicclassBank/目前全部的賬戶(hù)對(duì)象的會(huì)合,寄存在數(shù)組中.對(duì)數(shù)組申明并初始化。也能夠?qū)⒊跏蓟牟襟E/放入結(jié)構(gòu)方法中。privateAccountaccounts=newAccount20;/賬戶(hù)會(huì)合,Account是此外一個(gè)包里的,所以需要引包importentity.Account;privateintnumber;/賬戶(hù)數(shù)目publicBank()accounts=newAccount20;/此后不足時(shí)和棧
11、相同擴(kuò)容。num=0;/第一個(gè)方法,開(kāi)戶(hù),關(guān)于用戶(hù)開(kāi)戶(hù),假如在開(kāi)戶(hù)成功后返回一個(gè)Account種類(lèi)的對(duì)象就比/較好。而且題目也要求返回新創(chuàng)立的Account對(duì)象的賬號(hào)。publicAccountopenAccount(longid,Stringpass1,Stringpass2,Stringname,StringpersonID,inttype)創(chuàng)立一個(gè)新帳戶(hù)Accountacc=null;判斷兩次密碼能否一致if(pass1.equals(pass2)/假如返回為真,則說(shuō)明密碼一致/賬戶(hù)種類(lèi)是一個(gè)整數(shù),為0的時(shí)候表示積蓄賬戶(hù),為1的時(shí)候表示信譽(yù)賬戶(hù)if(type=1)acc=newCredi
12、tAccount(id,name,pass1,personID,1);/剛開(kāi)卡,能夠定義balance=1elseacc=newSavingAccount(id,name,pass1,personID,1);/注意:CreditAccount和SavingAccount這兩個(gè)類(lèi)在此外一個(gè)包里,需要導(dǎo)入包returnacc;else/假如兩次密碼不一致,則開(kāi)卡不可功,返回一個(gè)null。returnnull;能夠進(jìn)一步優(yōu)化一下代碼。if(pass1.equals(pass2)/引包/if(type=1)acc=newCreditAccount(id,name,pass1,personID,1);/
13、balance=1/elseacc=newSavingAccount(id,name,pass1,personID,1);/剛開(kāi)卡,能夠定義returnacc;/到此為止,不過(guò)new出一個(gè)Account對(duì)象。并無(wú)將其放入帳戶(hù)數(shù)組accounts中。判斷儲(chǔ)存空間能否滿了,或許說(shuō)判斷數(shù)組能否滿了if(number=accounts.length)擴(kuò)容,新創(chuàng)立一個(gè)數(shù)組,容量是前一個(gè)數(shù)組的2倍Accountnewaccounts=newAccountaccounts.length*2;/將從前的數(shù)據(jù)拷貝過(guò)來(lái),arraycopy方法System.arraycopy(accounts,0,newaccou
14、nts,0,accounts.length);/將newaccounts的引用賦給accountsaccounts=newaccounts;能夠往里面放東西了accountsnumber=acc;else/假如數(shù)組還有空間,能夠直接往里面放元素accountsnumber=acc;小優(yōu)化/if(number=accounts.length)/擴(kuò)容/Accountnewaccounts=newAccountaccounts.length*2;/將從前的數(shù)據(jù)拷貝過(guò)來(lái),arraycopy方法/System.arraycopy(accounts,0,newaccounts,0,accounts.len
15、gth);/將newaccounts的引用賦給accounts/accounts=newaccounts;/能夠往里面放東西了/accountsnumber=acc;number+;returnacc;/登錄,當(dāng)我們真切使用取款機(jī)的時(shí)候,沒(méi)有手動(dòng)輸入卡號(hào)這個(gè)步驟,其實(shí)卡號(hào)的信息已經(jīng)在卡里了,需要接受2個(gè)參數(shù),卡號(hào)和密碼。返回一個(gè)Account種類(lèi)的對(duì)象。怎樣在數(shù)組中依靠卡號(hào)找到這個(gè)Account種類(lèi)的對(duì)象呢?遍歷。publicAccountlogin(longid,Stringpassword)遍歷數(shù)組Accountacu=null;for(inti=1;iaccounts.length;i+
16、)if(accountsi.getId()=id&password.equals(accountsi.getPassword()/假如用戶(hù)名和密碼都對(duì),則找到該用戶(hù)假如從數(shù)組中找到相應(yīng)的卡號(hào)和密碼,則返回整個(gè)對(duì)象acu=accountsi;break;/假如找到這個(gè)元素,則直接break,不用再找了returnacu;/假如卡號(hào)和密碼是不般配的,則if是不會(huì)被履行的。acu=null存款,依據(jù)id存款,所以id是參數(shù),還有個(gè)參數(shù)是金額publicvoidsaveMoney(longid,doublemoney)/方才在Account中已經(jīng)寫(xiě)好了存取款方法了,直接用Account對(duì)象調(diào)用就能夠了
17、/可是用哪個(gè)Account對(duì)象呢?就需要依據(jù)id來(lái)找/需要依據(jù)id,找到對(duì)應(yīng)的Account對(duì)象,往此中的余額中加入money,/這時(shí)我們發(fā)此刻bank這個(gè)類(lèi)的好多方法中都要使用依據(jù)id獲得Account對(duì)象的方法,所以我們考慮獨(dú)自做個(gè)方法,能夠讓其余的方法來(lái)調(diào)用它,這樣就防止了大批代碼的重復(fù)Accountac=selectAccountById(id);ac.deposit(money);將其定義為private,是由于這個(gè)方法只在本類(lèi)中使用privateAccountselectAccountById(longid)Accountacu=null;for(inti=1;iaccounts.
18、length;i+)if(accountsi.getId()=id)/依據(jù)id找到該用戶(hù)假如從數(shù)組中找到相應(yīng)的卡號(hào)和密碼,則返回整個(gè)對(duì)象acu=accountsi;break;/假如找到這個(gè)元素,則直接break,不用再找了returnacu;此時(shí)將登錄方法優(yōu)化publicAccountlogin(longid,Stringpassword)第二步,優(yōu)化后Accountacu=selectAccountById(id);if(acu=null)該id對(duì)應(yīng)的Account對(duì)象不存在,如你已經(jīng)注銷(xiāo)了一個(gè)卡,就找不到了returnnull;elseif(acu.getPassword().equal
19、s(password)/判斷密碼能否相等returnacu;elsereturnnull;/進(jìn)一步優(yōu)化if(acu!=null&!acu.getPassword().equals(password)/假如acu不為空,而且密碼不相等的時(shí)候,將acu=nullacu=null;returnacu;取款,依據(jù)id取款,所以id是參數(shù)publicvoidoutputMoney(longid,doublemoney)Accountac=selectAccountById(id);ac.withdraw(money);查問(wèn)余額,需要返回一個(gè)double種類(lèi)的數(shù)據(jù)publicdoubleselectMon
20、ey(Accountac=selectAccountById(id);returnac.getBalance();longid)存款,依據(jù)idpublicvoidinputMoney(longid,doublemoney)Accountac=selectAccountById(id);ac.deposit(money);練習(xí)4:(語(yǔ)言高級(jí)特征,三個(gè)修飾符)1.改正Account類(lèi),銀行用戶(hù)的賬號(hào)(id)是自動(dòng)生成的,初始值為100000,第一個(gè)開(kāi)戶(hù)的用戶(hù)id為100001,第二個(gè)為100002,依此類(lèi)推.提示:結(jié)構(gòu)對(duì)象的時(shí)候采納static屬性為id賦值A(chǔ)ccount類(lèi)中假如將id申明為sta
21、tic,publicstaticlongid;每個(gè)賬戶(hù)還需要有自己的id。所以我們將id分為2個(gè),一個(gè)是賬戶(hù)自己的id,還有一個(gè)是系統(tǒng)分派給每個(gè)賬戶(hù)的id.privatelongid;publicstaticlongpid;/用來(lái)分派賬號(hào)的id2.關(guān)于Account類(lèi),有兩個(gè)方法,存款方法和取款方法,請(qǐng)改正這兩個(gè)方法.存款方法改為不一樣意子類(lèi)改正取款方法依據(jù)不一樣的子類(lèi)而不一樣,所以,改為抽象方法,在兩個(gè)子類(lèi)中分別實(shí)現(xiàn)Account類(lèi)中將Bank類(lèi)中的數(shù)組換為hashmap。privateMapaccounts;publicBank()accounts=newHashMap();number=
22、0;/不需要擴(kuò)容了/開(kāi)戶(hù)方法的id就不可以由用戶(hù)輸入了。publicAccountopenAccount(Stringpass1,Stringpass2,Stringname,StringpersonID,inttype)創(chuàng)立一個(gè)新帳戶(hù)Accountacc=null;判斷兩次密碼能否一致if(pass1.equals(pass2)引包if(type=1)acc=newCreditAccount(Accounts.pid+,name,pass1,personID,1);剛開(kāi)卡,能夠定義balance=1elseacc=newSavingAccount(Accounts.pid+,name,pas
23、s1,personID,1);判斷儲(chǔ)存空間能否滿了,或許說(shuō)判斷數(shù)組能否滿了accounts.put(acc.getId(),acc);number+;returnacc;假如密碼不相同的話,返回空elsereturnnull;私有的方法:selectAccountById就能夠省略了。HashMap已經(jīng)供給者各方樂(lè)了,依據(jù)鍵來(lái)獲得值。存款,取款,查問(wèn)余額等方法都要變動(dòng)。取款,依據(jù)id取款,所以id是參數(shù)publicvoidoutputMoney(longid,doublemoney)Accountac=accounts.get(id);ac.withdraw(money);查問(wèn)余額,需要返回一個(gè)double種類(lèi)的數(shù)據(jù)publicdoubleselectMoney(Acc
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物標(biāo)志物在藥物臨床試驗(yàn)中的應(yīng)用案例
- 生物制品降解機(jī)制與穩(wěn)定性試驗(yàn)關(guān)聯(lián)研究
- 生物制劑在難治性?xún)和械倪x擇
- 生物制劑臨床試驗(yàn)中受試者依從性提升方案
- 深度解析(2026)《GBT 20564.3-2017汽車(chē)用高強(qiáng)度冷連軋鋼板及鋼帶 第3部分 高強(qiáng)度無(wú)間隙原子鋼》
- 油氣管網(wǎng)戰(zhàn)略規(guī)劃部總經(jīng)理管理能力測(cè)試題含答案
- 教育行業(yè)教育咨詢(xún)師面試題
- 快遞員服務(wù)面試題及答案
- 深度解析(2026)《GBT 19369-2003草皮生產(chǎn)技術(shù)規(guī)程》
- 深度解析(2026)《GBT 19356-2003熱噴涂 粉末 成分和供貨技術(shù)條件》
- T-CEPPEA 5002-2019 電力建設(shè)項(xiàng)目工程總承包管理規(guī)范
- 糖尿病診療的指南
- 2025年高考語(yǔ)文復(fù)習(xí)之文言文閱讀(全國(guó))12 選擇性必修下教材文言文挖空練習(xí)+重要知識(shí)點(diǎn)歸類(lèi)(含答案)
- 房屋出租安全免責(zé)協(xié)議書(shū)
- 2024《整治形式主義為基層減負(fù)若干規(guī)定》全文課件
- 2024年建筑繼續(xù)教育-建筑八大員(九大員)繼續(xù)教育筆試歷年真題薈萃含答案
- 慢性中耳炎教學(xué)查房
- (2023年基價(jià))井巷工程消耗量定額說(shuō)明
- 放射醫(yī)學(xué)技術(shù)職稱(chēng)考試 《相關(guān)專(zhuān)業(yè)知識(shí)》篇 考點(diǎn)匯總
- 地鐵資料城市軌道交通設(shè)備系統(tǒng)控制中心
- 企業(yè)數(shù)字化轉(zhuǎn)型發(fā)言稿
評(píng)論
0/150
提交評(píng)論