版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、java銀行項(xiàng)目分析SANY 標(biāo)準(zhǔn)化小組 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN# 項(xiàng)目名稱:BankAccou ntM anagementSys tem銀行賬戶管理系統(tǒng)簡(jiǎn)稱BAM項(xiàng)LI描述:這是一個(gè)銀行賬戶管理系統(tǒng),用戶可以操作自己的銀行賬戶.項(xiàng)LI實(shí)施方式:這是一個(gè)同步練習(xí),隨著Corejava課程的深入,這個(gè)項(xiàng)U將趨于完整,學(xué)員的任務(wù)是隨著 知識(shí)點(diǎn)的深入,完成每一個(gè)進(jìn)階的項(xiàng)目要求.練習(xí)1:(面向?qū)ο蠡A(chǔ)語(yǔ)法)創(chuàng)建entity包,編寫一個(gè)賬戶類(Account),屬性變量:id:賬戶號(hào)碼長(zhǎng)整數(shù)password:賬戶密碼name:真實(shí)姓名personld:身份證號(hào)碼字符串
2、類型balance:賬戶余額方法:deposit:存款方法,參數(shù)是double型的金額withdraw:取款方法,參數(shù)是double型的金額構(gòu)造方法:有參和無(wú)參,有參構(gòu)造方法用于設(shè)置必要的屬性Stepl: Account 類packageentity;publicclassAccount屬性變量privateiongid;privateStringpassword;privateStringname;privateStringpersonld;privatedoublebalance;構(gòu)造方法publicAccount0 publicAccount(longid, Stringname, St
3、ringpersonlD, Stringpassword, doublebalance)this, id二id;this name=name;this personId=personID;this password二password;this balance=balance;/成員方法/存款,參數(shù)是需要存入的金額,返回值可以是存后的金額,此時(shí)返回值類型為double,也可以無(wú)返回值,此時(shí)方法的返 回值類型為void。publicdoubledeposit(doublemoney)balance+=money;returnbalance;/取款,參數(shù)是需要存入的金額,返回值是boolean,是否
4、減款成功pub1i cboo1eanw i thdraw(doublemoney)if (balance>money) balance-=money;returntrue;else!System, out. printing取款數(shù)目過(guò)大");returnfalse;練習(xí)2:(封裝)/將Account類作成完全封裝,將各屬性變量定義為private類型,增加相應(yīng)的get, set方法publiclonggetldO returnid;publicvoidsetId(longid)this id二id;publicStringgetPasswordO returnpassword;
5、publicvoidsetPassword(Stringpassword) this password二password;publicStringgetName0 retumname;publicvoidsetXame(Stringname)this name=name;publicStringgetPersonldO returnpersonld;publicvoidsetPersonld(Stringpersonld) this personld=personld;publicdoublegetBalance 0returnbalance;publicvoidsetBalance(doub
6、lebalance)this balance=balance;練習(xí)3:(繼承,多態(tài))銀行的客戶分為兩類,儲(chǔ)蓄賬戶(SavingAccount)和信用賬戶(CreditAccount),區(qū)別在于儲(chǔ)蓄賬戶不允 許透支,而信用賬戶可以透支10000元在entity包中為這兩種用戶編寫相關(guān)的類。/很明顯,儲(chǔ)蓄賬戶(SavingAccount)和信用賬戶(CreditAccount)都是賬戶類的子類。packageentity;信用賬戶publicclassCreditAccountextendsAccount創(chuàng)建信用賬戶時(shí)我們希望可以通過(guò)輸入屬性變量,name, personlD等直接獲取個(gè)信用賬戶的
7、對(duì)象,所以,需要 構(gòu)建信用賬戶的有參構(gòu)造方法,為對(duì)象進(jìn)行初始化賦值。父類有參數(shù)的構(gòu)造力法不會(huì)自動(dòng)繼承,在了類的構(gòu)造方法中可以用super(參數(shù))來(lái)調(diào)用父類的構(gòu)造方法。 publicCreditAccount(longid, Stringname, StringpersonlD,Stringpassword, doublebalance)super(id, name, personlD, password, balance);/取款,對(duì)父類方法的重寫信用賬戶可以透支publicbooleanwithdraw(doub1emoney)if(money>super. getBalance 0
8、+10000) 取錢透支超過(guò)10000元returnfalse;else/將余額中的錢減少super setBalance(super getBalance 0-money);returntrue;同樣,對(duì)于儲(chǔ)蓄賬戶也是一樣的方法。packageentity;儲(chǔ)蓄賬戶publicclassSavingAccountextendsAccountpublicSavingAccount(longid, Stringname, StringpersonlD,Stringpassword, doublebalance) super(id, name, personlD, password, balanc
9、e);publicbooleanwithdraw(doub1emoney)if(money>super getBalance0)returnfalse;elsesuper setBalance(super getBalance 0-money);returntrue;同時(shí)要求創(chuàng)建biz (業(yè)務(wù))包,編寫B(tài)ank類,屬性:1. 當(dāng)前所有的賬戶對(duì)象的集合,存放在數(shù)組中2 當(dāng)前賬戶數(shù)量方法:1. 用戶開(kāi)戶,需要的參數(shù):id,密碼,密碼確認(rèn),姓名,身份證號(hào)碼,賬戶類型,返回新創(chuàng)建的Account對(duì)象 的賬號(hào),提示:用si. equals(s2)可以比較si, s2兩個(gè)字符串的值是否相等賬戶類型是
10、一個(gè)整數(shù),為0的 時(shí)候表示儲(chǔ)蓄賬戶,為1的時(shí)候表示信用賬戶2. 用戶登錄,參數(shù):id,密碼返回登錄賬戶的賬號(hào)3. 用戶存款,參數(shù):id,存款數(shù)額,返回void4. 用戶取款,參數(shù):id,取款數(shù)額,返回void5查詢余額,參數(shù):id,返回該賬戶的余額double用戶會(huì)通過(guò)調(diào)用Bank對(duì)象以上的方法來(lái)操作自己的賬戶,請(qǐng)分析各個(gè)方法需要的參數(shù)packagebiz;importentity. Account;publicclassBank/當(dāng)前所有的賬戶對(duì)象的集合,存放在數(shù)組中對(duì)數(shù)組聲明并初始化。也可以將初始化的步驟/放入構(gòu)造方法中。privateAccountaccounts1 =newAccoun
11、t20;/賬戶集合,Account是另外個(gè)包里的,所以需要引包importentity Account;privateintnumber; /賬戶數(shù)目publicBankO accounts=newAccount 20;/以后不足時(shí)和棧樣擴(kuò)容。num=0;/第一個(gè)方法,開(kāi)戶,對(duì)于用戶開(kāi)戶,如果在開(kāi)戶成功后返回一個(gè)Account類型的對(duì)象就比較好。并且題目 也要求返回新創(chuàng)建的Account對(duì)象的賬號(hào)。publicAccountopenAccount(longid, Stringpassl, Stringpass2, Stringname, StringpersonlD,inttype )創(chuàng)建個(gè)新
12、帳戶Accountacc=null;判斷兩次密碼是否i致if (passl. equals(pass2) /如果返回為真,則說(shuō)明密碼致賬戶類型是個(gè)整數(shù),為0的時(shí)候衣示儲(chǔ)蓄賬戶,為1的時(shí)候衣示信用賬戶if(type=l) acc=newCreditAccount(id, name, passl, personlD, 1);剛開(kāi)卡,可以定義balance=lelseacc=newSavingAccount (id, name, passl, personlD, 1);/注意:CreditAccount fll SavingAccount這兩個(gè)類在另外個(gè)包里,需要導(dǎo)入包 returnacc;else
13、/如果兩次密碼不致,則開(kāi)卡不成功,返回-個(gè)null。returnnull;可以進(jìn)一步優(yōu)化-下代碼。/if(pass1 equals(pass2) /引包/if (type=l)acc=newCreditAccount (id, name, passl, personlD, 1);/剛開(kāi)卡,可以定義balance=l/e1seacc=newSavingAccount(id, name, passl, personlD, 1);/returnacc;/到此為ll:,只是new個(gè)Account對(duì)象。并沒(méi)有將其放入帳戶數(shù)組accounts中。判斷存儲(chǔ)空間是否滿了,或者說(shuō)判斷數(shù)組是否滿了if(numbe
14、r>=accountslength)擴(kuò)容,新創(chuàng)建-個(gè)數(shù)組,容量是前個(gè)數(shù)組的2倍Accountnewaccounts1=newAccountaccountslength*2;將以前的數(shù)據(jù)拷貝過(guò)來(lái),arraycopy方法System. ar ray copy (ac c ount s, 0, newaccounts, 0, accountslength);/將newaccounts的引用賦給accountsac c oun t s =ne wac c oun t s;可以往里面放東西raccountsnumber=acc;Jelset/如果數(shù)組還有空間,可以直接往里而放元素accountsn
15、umber=acc;/小優(yōu)化/if(number>=accountslength)/擴(kuò)容/Accountnewaccounts=newAccountaccountslength*2;/將以前的數(shù)據(jù)拷貝過(guò)來(lái),ar ray copy方法/System. arraycopy(accounts, 0, newaccounts, 0, accountslength);/將newaccounts的引用賦給accounts/accounts=newaccounts;/可以往里面放東西了/ /accountsnumber二acc;number+;returnacc;/登錄,當(dāng)我們真實(shí)使用取款機(jī)的時(shí)候,沒(méi)
16、有手動(dòng)輸入卡號(hào)這個(gè)步驟,其實(shí)卡號(hào)的信息已經(jīng)在卡里 了,需要接受2個(gè)參數(shù),卡號(hào)和密碼。返回一個(gè)Account類型的對(duì)象。如何在數(shù)組中憑借卡號(hào)找到這個(gè)Account類型的對(duì)象呢?遍歷。publicAccountlogin(longid, Stringpassword)/遍歷數(shù)組Accountacu=null;for(inti=l;i<accountslength;i+)if (accounts iL getld 0 =id&&passwo:rd equals (accounts i getPasswordO) /如果用戶名和密碼都 對(duì),則找到該用戶如果從數(shù)組中找到相應(yīng)的卡號(hào)和
17、密碼,則返回整個(gè)對(duì)象acu=accountsi;break;/如果找到這個(gè)元素,則直接break,不用再找了returnacu;/如果卡號(hào)和密碼是不匹配的,則if是不會(huì)彼執(zhí)行的。acu=null/存款,根據(jù)id存款,所以id是參數(shù),還有個(gè)參數(shù)是金額publicvoidsaveMoneydongid, doublemoney) /剛才在Account中己經(jīng)寫好了存収款方法了,直接用Account對(duì)象調(diào)用就可以了但是用哪個(gè)Account對(duì)象呢?就需要根據(jù)id來(lái)找需要根據(jù)id,找到對(duì)應(yīng)的Account對(duì)象,往其中的余額中加入money»這時(shí)我們發(fā)現(xiàn)在bank這個(gè)類的很多方法中都要使用根據(jù)i
18、d獲取Account對(duì)象的方法,所以我們考慮單獨(dú)做個(gè)方法,可以讓其他的方法來(lái)調(diào)用它,這樣就避免了人量代碼的重復(fù)Accountac=selectAccountById(id);de.deposit(money);將其定義為private,是因?yàn)檫@個(gè)方法只在本類中使用 privateAccountselectAccountByld(longid)Accountacu=null;for(inti=l;i<accountslength;i卄)if (accounts i. getld()=id) /根據(jù) id 找到該用戶如果從數(shù)組中找到相應(yīng)的卡號(hào)和密碼,則返回整個(gè)對(duì)象acu=accountsi;
19、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)注銷了-個(gè)卡,就找不到了returnnull;lelsetif (acu. getPasswordO. equals (password) /判斷密碼是否相等returnacu;elsereturnnull;進(jìn)-步優(yōu)化if(acu!=nu11&&!
20、acu getPassword() equals(password)如果acu不為空,并且密碼不和等的時(shí)候,將acu=null acu=null;returnacu;取款,根據(jù)id取款,所以id是參數(shù)publicvoidoutputMoney(longid, doublemoney)Accountac=selectAccountById(id);de.withdraw(money);査詢余額,需要返回個(gè)double類型的數(shù)據(jù) publicdoubleselectMoney(longid)Accountac=selectAccountById(id);returnac getBalanceO ;
21、存款,根據(jù)idpublicvoidinputMoney(longid, doublemoney)Accountac=selectAccountById(id);ac deposit(money);練習(xí) 4(語(yǔ)言【苛級(jí)特性,三個(gè)修飾符)修改Accent類,銀彳'亍用戶材賬號(hào)(id)是自動(dòng)生成的,初始值為100000,第一個(gè)開(kāi)戶的用戶id為100001,第二個(gè)為100002,依此類推.提示:構(gòu)造對(duì)象的時(shí)候采用static屬性為id賦值A(chǔ)ccount 類中如果將 id 聲明為 static, publicstaticlongid;每個(gè)賬戶還需要有自己的id。所以我們將id分為2個(gè),一個(gè)是賬戶
22、自己的id,還有一個(gè)是系統(tǒng)分配給每個(gè)賬戶的id.privateiongid;publicstaticlongp/c/; /用來(lái)分配賬號(hào)的 id2. 對(duì)于Account類,有兩個(gè)方法,存款方法和取款方法,請(qǐng)修改這兩個(gè)方法.存款方法改為不允許子類修改取款方法根據(jù)不同的子類而不同,因此,改為抽象方法,在兩個(gè)子類中分別實(shí)現(xiàn)Account 類中將Bank類中的數(shù)組換為hashmapoprivateMapLong, Account>accounts;publicBank() accounts=newHashMap<Long, Account)();number=0;/不需要擴(kuò)容了開(kāi)戶方法的id
23、就不能由用戶輸入了。publicAccountopenAccount(Stringpassl, Stringpass2, Stringname, StringpersonlD, inttype) 創(chuàng)建一個(gè)新帳戶Accountacc=null;判斷兩次密碼是否致if(passl equals(pass2) 引包if(type=l)acc=newCreditAccount(Accounts pid中+, name, passl, personlD, 1);/剛開(kāi)卡,可以定義balance=lelseacc=newSavingAccount(Accounts pid十+,name, passl, p
24、ersonlD,1);判斷存儲(chǔ)空間是否滿了,或者說(shuō)判斷數(shù)組是否滿了accounts put (acc getldO, acc);number卄;returnacc;/如果密碼不相同的話,返回空clsereturnnull;私有的方法:selectAccountByld就可以省略了。HashMap已經(jīng)捉供者各方樂(lè)了,根據(jù)鍵來(lái)獲取值。存款,取款,查詢余額 等方法都要改動(dòng)。取款,根據(jù)id取款,所以id是參數(shù)publicvoidoutputMoney(longid, doublemoney)Accountac=accounts get(id);3C withdraw(money);査詢余額,需要返回個(gè)double類型的數(shù)據(jù)pu
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)理研究生教學(xué)實(shí)踐總結(jié)(3篇)
- 專題04 語(yǔ)言表達(dá)+綜合性學(xué)習(xí)(第2期)
- 專題07:環(huán)境描寫作用(講解)
- 中班幼兒語(yǔ)言教學(xué)活動(dòng)策劃方案五篇
- 幼兒園組織旅游活動(dòng)策劃方案五篇
- ktv房間租賃合同
- 幼兒園找春天主題活動(dòng)策劃方案五篇
- 10kV配電站房場(chǎng)地選擇與環(huán)境評(píng)估
- 個(gè)人擔(dān)保借款合同
- 政府采購(gòu)合同協(xié)議書(shū)
- 2025-2030年中國(guó)電動(dòng)高爾夫球車市場(chǎng)運(yùn)行狀況及未來(lái)發(fā)展趨勢(shì)分析報(bào)告
- 河南省濮陽(yáng)市2024-2025學(xué)年高一上學(xué)期1月期末考試語(yǔ)文試題(含答案)
- 長(zhǎng)沙市2025屆中考生物押題試卷含解析
- 2024年08月北京中信銀行北京分行社會(huì)招考(826)筆試歷年參考題庫(kù)附帶答案詳解
- 蘇教版二年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)教學(xué)設(shè)計(jì)
- 職業(yè)技術(shù)學(xué)院教學(xué)質(zhì)量監(jiān)控與評(píng)估處2025年教學(xué)質(zhì)量監(jiān)控督導(dǎo)工作計(jì)劃
- 金字塔原理與結(jié)構(gòu)化思維考核試題及答案
- 廣東省梅州市2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 基礎(chǔ)護(hù)理學(xué)導(dǎo)尿操作
- 標(biāo)牌加工風(fēng)險(xiǎn)防范方案
- 2015-2024北京中考真題英語(yǔ)匯編:閱讀單選CD篇
評(píng)論
0/150
提交評(píng)論