java銀行項目分析_第1頁
java銀行項目分析_第2頁
java銀行項目分析_第3頁
java銀行項目分析_第4頁
java銀行項目分析_第5頁
已閱讀5頁,還剩3頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、項目名稱:BankAccountManagementSystem銀行賬戶管理系統簡稱BAM項目描繪:這是一個銀行賬戶管理系統,用戶能夠操作自己的銀行賬戶.項目實行方式:這是一個同步練習,跟著CoreJava課程的深入,這個項目將趨于完好,學員的任務是跟著知識點的深入,達成每一個進階的項目要求.練習1:(面向對象基礎語法)創立entity包,編寫一個賬戶類(Account),屬性變量:id:賬戶號碼長整數password:賬戶密碼name:真切姓名personId:身份證號碼字符串種類balance:賬戶余額方法:deposit:存款方法,參數是double型的金額withdraw:取款方法,參

2、數是double型的金額結構方法:有參和無參,有參結構方法用于設置必需的屬性Step1:Account類packageentity;publicclassAccount屬性變量privateprivateprivateprivateprivatelongid;Stringpassword;Stringname;StringpersonId;doublebalance;/結構方法publicpublicthisthisthisthisthisAccount()Account(longid,Stringname,StringpersonID,Stringpassword,.id=id;.name=

3、name;.personId=personID;.password=password;.balance=balance;doublebalance)/成員方法/存款,參數是需要存入的金額,返回值能夠是存后的金額,此時返回值種類為double,也能夠無返回值,此時方法的返回值種類為void。publicdoubledeposit(doublemoney)balance+=money;returnbalance;/取款,參數是需要存入的金額,返回值是publicbooleanwithdraw(doublebooleanmoney),能否減款成功if(balancemoney)balance-=mo

4、ney;returntrue;elseSystem.out.println(取款數目過大);returnfalse;/練習2:(封裝)/將Account類作成完好封裝,將各屬性變量定義為private種類,增添相應的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;練習3:(繼承,多態)銀行的客戶分為兩類,積蓄賬戶(SavingAccount)和信譽賬戶(CreditA

6、ccount),差別在于積蓄賬戶不一樣意透支,而信譽賬戶能夠透支10000元在entity包中為這兩種用戶編寫有關的類。/很顯然,積蓄賬戶(SavingAccount)和信譽賬戶(CreditAccount)都是賬戶類的子類。packageentity;/信譽賬戶publicclassCreditAccountextendsAccount/創立信譽賬戶時我們希望能夠經過輸入屬性變量,如id,name,personID等直接獲得一個信/用賬戶的對象,所以,需要建立信譽賬戶的有參結構方法,為對象進行初始化賦值。父類有參數的結構方法不會自動繼承,在子類的結構方法中能夠用super(參數)來調用父類的

7、結構方法。publicCreditAccount(longid,Stringname,StringpersonID,Stringpassword,doublebalance)super(id,name,personID,password,balance);取款,對父類方法的重寫信譽賬戶能夠透支publicbooleanwithdraw(doublemoney)if(moneysuper.getBalance()+10000)取錢透支超出10000元returnfalse;else將余額中的錢減少super.setBalance(returntrue;super.getBalance()-mon

8、ey);相同,關于積蓄賬戶也是相同的方法。packageentity;積蓄賬戶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;同時要求創立biz(業務)包,編寫Bank類,屬性:1.目前全部的賬戶對象的會合,寄存在數組中2.目前賬戶數目方法:1.用戶開戶,需要的參數:id,密碼,密碼確認,姓名,身份證號碼,賬戶種類,返回新創立的Account對象的賬號,提示:用s1.equals(s2)能夠比較s1,s2兩個字符串的值能否相等.賬戶種類是一個整數,為0的時候表示積蓄賬戶,為1的時候表示信譽賬戶2.用戶登錄,參數:id,密碼返回登錄賬戶的賬號3.用戶存款,參數:id,存款數額,返回void4.用戶取款,參數:id,取款數額,返回void5.查問余額,參數:id

10、,返回該賬戶的余額double用戶會經過調用Bank對象以上的方法來操作自己的賬戶,請剖析各個方法需要的參數packagebiz;importentity.Account;publicclassBank/目前全部的賬戶對象的會合,寄存在數組中.對數組申明并初始化。也能夠將初始化的步驟/放入結構方法中。privateAccountaccounts=newAccount20;/賬戶會合,Account是此外一個包里的,所以需要引包importentity.Account;privateintnumber;/賬戶數目publicBank()accounts=newAccount20;/此后不足時和棧

11、相同擴容。num=0;/第一個方法,開戶,關于用戶開戶,假如在開戶成功后返回一個Account種類的對象就比/較好。而且題目也要求返回新創立的Account對象的賬號。publicAccountopenAccount(longid,Stringpass1,Stringpass2,Stringname,StringpersonID,inttype)創立一個新帳戶Accountacc=null;判斷兩次密碼能否一致if(pass1.equals(pass2)/假如返回為真,則說明密碼一致/賬戶種類是一個整數,為0的時候表示積蓄賬戶,為1的時候表示信譽賬戶if(type=1)acc=newCredi

12、tAccount(id,name,pass1,personID,1);/剛開卡,能夠定義balance=1elseacc=newSavingAccount(id,name,pass1,personID,1);/注意:CreditAccount和SavingAccount這兩個類在此外一個包里,需要導入包returnacc;else/假如兩次密碼不一致,則開卡不可功,返回一個null。returnnull;能夠進一步優化一下代碼。if(pass1.equals(pass2)/引包/if(type=1)acc=newCreditAccount(id,name,pass1,personID,1);/

13、balance=1/elseacc=newSavingAccount(id,name,pass1,personID,1);/剛開卡,能夠定義returnacc;/到此為止,不過new出一個Account對象。并無將其放入帳戶數組accounts中。判斷儲存空間能否滿了,或許說判斷數組能否滿了if(number=accounts.length)擴容,新創立一個數組,容量是前一個數組的2倍Accountnewaccounts=newAccountaccounts.length*2;/將從前的數據拷貝過來,arraycopy方法System.arraycopy(accounts,0,newaccou

14、nts,0,accounts.length);/將newaccounts的引用賦給accountsaccounts=newaccounts;能夠往里面放東西了accountsnumber=acc;else/假如數組還有空間,能夠直接往里面放元素accountsnumber=acc;小優化/if(number=accounts.length)/擴容/Accountnewaccounts=newAccountaccounts.length*2;/將從前的數據拷貝過來,arraycopy方法/System.arraycopy(accounts,0,newaccounts,0,accounts.len

15、gth);/將newaccounts的引用賦給accounts/accounts=newaccounts;/能夠往里面放東西了/accountsnumber=acc;number+;returnacc;/登錄,當我們真切使用取款機的時候,沒有手動輸入卡號這個步驟,其實卡號的信息已經在卡里了,需要接受2個參數,卡號和密碼。返回一個Account種類的對象。怎樣在數組中依靠卡號找到這個Account種類的對象呢?遍歷。publicAccountlogin(longid,Stringpassword)遍歷數組Accountacu=null;for(inti=1;iaccounts.length;i+

16、)if(accountsi.getId()=id&password.equals(accountsi.getPassword()/假如用戶名和密碼都對,則找到該用戶假如從數組中找到相應的卡號和密碼,則返回整個對象acu=accountsi;break;/假如找到這個元素,則直接break,不用再找了returnacu;/假如卡號和密碼是不般配的,則if是不會被履行的。acu=null存款,依據id存款,所以id是參數,還有個參數是金額publicvoidsaveMoney(longid,doublemoney)/方才在Account中已經寫好了存取款方法了,直接用Account對象調用就能夠了

17、/可是用哪個Account對象呢?就需要依據id來找/需要依據id,找到對應的Account對象,往此中的余額中加入money,/這時我們發此刻bank這個類的好多方法中都要使用依據id獲得Account對象的方法,所以我們考慮獨自做個方法,能夠讓其余的方法來調用它,這樣就防止了大批代碼的重復Accountac=selectAccountById(id);ac.deposit(money);將其定義為private,是由于這個方法只在本類中使用privateAccountselectAccountById(longid)Accountacu=null;for(inti=1;iaccounts.

18、length;i+)if(accountsi.getId()=id)/依據id找到該用戶假如從數組中找到相應的卡號和密碼,則返回整個對象acu=accountsi;break;/假如找到這個元素,則直接break,不用再找了returnacu;此時將登錄方法優化publicAccountlogin(longid,Stringpassword)第二步,優化后Accountacu=selectAccountById(id);if(acu=null)該id對應的Account對象不存在,如你已經注銷了一個卡,就找不到了returnnull;elseif(acu.getPassword().equal

19、s(password)/判斷密碼能否相等returnacu;elsereturnnull;/進一步優化if(acu!=null&!acu.getPassword().equals(password)/假如acu不為空,而且密碼不相等的時候,將acu=nullacu=null;returnacu;取款,依據id取款,所以id是參數publicvoidoutputMoney(longid,doublemoney)Accountac=selectAccountById(id);ac.withdraw(money);查問余額,需要返回一個double種類的數據publicdoubleselectMon

20、ey(Accountac=selectAccountById(id);returnac.getBalance();longid)存款,依據idpublicvoidinputMoney(longid,doublemoney)Accountac=selectAccountById(id);ac.deposit(money);練習4:(語言高級特征,三個修飾符)1.改正Account類,銀行用戶的賬號(id)是自動生成的,初始值為100000,第一個開戶的用戶id為100001,第二個為100002,依此類推.提示:結構對象的時候采納static屬性為id賦值Account類中假如將id申明為sta

21、tic,publicstaticlongid;每個賬戶還需要有自己的id。所以我們將id分為2個,一個是賬戶自己的id,還有一個是系統分派給每個賬戶的id.privatelongid;publicstaticlongpid;/用來分派賬號的id2.關于Account類,有兩個方法,存款方法和取款方法,請改正這兩個方法.存款方法改為不一樣意子類改正取款方法依據不一樣的子類而不一樣,所以,改為抽象方法,在兩個子類中分別實現Account類中將Bank類中的數組換為hashmap。privateMapaccounts;publicBank()accounts=newHashMap();number=

22、0;/不需要擴容了/開戶方法的id就不可以由用戶輸入了。publicAccountopenAccount(Stringpass1,Stringpass2,Stringname,StringpersonID,inttype)創立一個新帳戶Accountacc=null;判斷兩次密碼能否一致if(pass1.equals(pass2)引包if(type=1)acc=newCreditAccount(Accounts.pid+,name,pass1,personID,1);剛開卡,能夠定義balance=1elseacc=newSavingAccount(Accounts.pid+,name,pas

23、s1,personID,1);判斷儲存空間能否滿了,或許說判斷數組能否滿了accounts.put(acc.getId(),acc);number+;returnacc;假如密碼不相同的話,返回空elsereturnnull;私有的方法:selectAccountById就能夠省略了。HashMap已經供給者各方樂了,依據鍵來獲得值。存款,取款,查問余額等方法都要變動。取款,依據id取款,所以id是參數publicvoidoutputMoney(longid,doublemoney)Accountac=accounts.get(id);ac.withdraw(money);查問余額,需要返回一個double種類的數據publicdoubleselectMoney(Acc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論