BAM銀行賬戶管理系統(tǒng)(java類)_第1頁
BAM銀行賬戶管理系統(tǒng)(java類)_第2頁
BAM銀行賬戶管理系統(tǒng)(java類)_第3頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、AM銀行賬戶管理系統(tǒng)(ATM管理系統(tǒng))本系統(tǒng)采用JAVA語言并在eclipse環(huán)境下編寫測(cè)試完成,涉及類的概念,以及面向?qū)ο?的幾大特性(繼承,封裝,多態(tài),抽象),也有異常處理機(jī)制,基本可以滿足大多數(shù)BAM系統(tǒng)的相關(guān)實(shí)現(xiàn),且代碼內(nèi)標(biāo)注大量注釋,讀者可以很輕松地理解相關(guān)邏輯,大家可以開心參考。系統(tǒng)簡(jiǎn)介:1、JAVA類的面相對(duì)象的應(yīng)用,擁有異常處理機(jī)制,不會(huì)因?yàn)檩斎脲e(cuò)誤而導(dǎo)致程序崩潰2、主要有5個(gè)類,即Account (賬戶類) SaveAccount (儲(chǔ)蓄賬戶類):不能透支 CreditAccou nt (信用賬戶類):可以透支 Bank (銀行類) ATM( ATM類)類的具體屬性級(jí)行為見代

2、碼3、各個(gè)類之間的相互關(guān)系,涉及繼承、封裝、多態(tài)、抽象,在多態(tài)中又涉及重載和重 寫,請(qǐng)讀者注意相關(guān)聯(lián)系(關(guān)注注釋)4、可以實(shí)現(xiàn)數(shù)據(jù)保存功能,數(shù)據(jù)將保存在文件中(即當(dāng)你注冊(cè)了一個(gè)賬戶,下次再登 陸系統(tǒng)時(shí),可以實(shí)現(xiàn)與上次最后的操作相銜接)5、賬戶號(hào)自動(dòng)生成,比較符合現(xiàn)實(shí)6、主要功能有:1.開戶2. 查詢賬戶余額3. 存款4. 取款5. 轉(zhuǎn)賬(一個(gè)賬戶到另一個(gè)賬戶)等7、運(yùn)行時(shí)界面簡(jiǎn)示1. 初始界面(賬戶登錄)言 Java - Eclipse SDKFfle Edit Navigate Search Project Run Window Mflp片Declaration拒 Problems Java

3、dloonsoleATM J a Via Appli catron C:Program FilesVaviajre7binjavaw,exe (2013-5-24 下午 7:呂&06)*迎使用XXX銀行摸擬ATM系統(tǒng),請(qǐng)按如下步瘵操作玄*士:L用已有賬戶登錄寰2 .沒有賬戶,幵戶退出請(qǐng)選擇:請(qǐng)輸入銀行卡號(hào):1 : 請(qǐng)輸入銀行密碼:2賬戶登錄后界面*歡迎使用XXX銀行模擬AT何系統(tǒng),請(qǐng)按如下步礫操作*1.查詢賬戶余額*2.1?款丈3 .馭款* 4轉(zhuǎn)賬玄5 退卡請(qǐng)選擇:注意事項(xiàng):1、本系統(tǒng)采用的編程環(huán)境是JDK1.7, jer7。所以,運(yùn)行代碼需要保持電腦上所裝的JDK為1.7以上版本,如

4、有報(bào)錯(cuò),只需換個(gè)高一點(diǎn)的版本即可。注意:第一次裝JDK要配置環(huán)境變量(請(qǐng)查閱相關(guān)資料,比較簡(jiǎn)單)2、本系統(tǒng)代碼涉及到包,所以如果報(bào)名不一致就會(huì)報(bào)錯(cuò),解決方法:修改一下包名即 可3、建議把各個(gè)類寫在同一個(gè)包下面,且每一個(gè)類單獨(dú)寫一個(gè)java文件,如下圖:導(dǎo) Java -氐lips日 SDKFile Edit Source Refactor Navigate Search Project Run Window HelpPackage Explorer誇BAMQ BAM027 BAM03* BAM04J 魯 arcd it? com.qx:Jj Accountjava.£ ATM.java

5、7| Bankjava2j C red itAcc o u nt J a vaJj Saving Account,java h J RE System Library jre7 _ account.txt4、在運(yùn)行程序前,需要在項(xiàng)目下面新建一個(gè)account.txt (用來保存數(shù)據(jù))文件(如上圖),并在其中寫入至少一個(gè)賬戶信息,(如下圖,其中每項(xiàng)代表的意思,請(qǐng)讀者參照代碼內(nèi)的注釋),否則在初始化的時(shí)候會(huì)因?yàn)檎也坏劫~戶信息,從而產(chǎn)生異常。File Edit Navigate Search Prcyect Run Window Help;r3 * Hj ®* q -i 酉田®虧

6、mm * v-J *打靈LT 100'舐可箜f 321323,0, 510.0K Package Explorer 貝IB才 Q BAM& BAM02心 BAM03G BAM04田 com.qxAccountjavaQ ATM,javaJ Bankjava31 CreditAcccuntjava7| Savi ngAccou nt.java tRE System Libi,iairy jjs 7-accouinrttxt系統(tǒng)源碼:Account類package com.qx;/ 包名/*賬戶類:包含兩種賬戶類型->1.儲(chǔ)蓄賬戶2.信用賬戶*/public abstract

7、 class Acco unt /屬性 protected protected protected protected protectedlong id;String password;String n ame;String pers onld;int acco un tType;protecteddouble bala nee;/構(gòu)造方法publicAcco un t()super ();publicAcco unt(long id, String password, String n ame. Stringpers onld,int accoutType, doublebala nee)

8、super ();this .id = id;this .password = password;this .n ame = n ame;this .pers onld = pers onld;this .acco un tType = acco un tType;this .bala nee = bala nee;/getXxx,setXxx 方法public long getld() return id;public void setId( long id) this .id = id;public String getPassword() retur npassword;public v

9、oid setPassword(Stri ng password) this .password = password;public String getName() return n ame;public void setName(Stri ng n ame) this .n ame = n ame;public String getPers onl d() retur npers onld;public voidsetPers onl d(Stri ng pers onld) this .pers onld = pers onld;public int getAcco un tType()

10、 retur nacco un tType;public voidsetAcco un tType(intacco un tType) this .acco un tType = acco un tType;public double getBala nce() retur nbala nee;public void setBala nce( double bala nee) this .bala nee = bala nee;*存款*/public void deposit( double mon ey)bala nee += money;/*取款(取款方式由賬戶類型決定,所以設(shè)為抽象方法,

11、相應(yīng)的Aeeou nt類應(yīng)設(shè)為抽*/publieabstraetvoid withdraw(double mon ey);象類)SavingAccoun類package eom.qx;/*儲(chǔ)蓄賬戶類*/public class Savin gAeeo unt/構(gòu)造函數(shù)publieSavin gAeeo un t() super ();exte nds Aeeo unt publieSavin gAeeo unt(long id, String password, String n ame,String pers aeeo un tType,doublebala nee) su

12、per (id, password, name, personld, aeeountType, balanee);/對(duì)父類的withdraw。 實(shí)現(xiàn) publie void withdraw( double mon ey)if (balanee < money) System. out .println(”對(duì)不起,賬戶余額不足!");elsebala nee -= mon ey;CresitAccoun類packagecom.qx;/*ceili ng屬性exte ndsAcco unt*信用賬戶類,增加一個(gè)信用額度*/public class CreditAcco unt p

13、rivate int ceili ng;/構(gòu)造函數(shù)publicCreditAccou nt()super ();public CreditAcco unt(long id, String password, String n ame,String pers acco un tType,doublebala nee,intceili ng)super (id, password, name, personld, accountType, balanee); this .ceili ng = ceili ng;/getXxx,setXxx 方法public intgetCeili

14、 ng() returnceili ng;public voidsetCeili ng(int ceili ng) this .ceili ng = ceili ng;/實(shí)現(xiàn)父類的 withdraw。public void withdraw( double mon ey)if (balanee + ceiling) < money)System. out .println(”對(duì)不起,已超出您的信用額度!"); elsebala nee -= mon ey;Bank 類package com.qx;import java.io.BufferedReader;import java

15、.io.BufferedWriter;import java.io.File;import java.io.FileNotF oun dExcepti on;import java.io.FileReader;import java.io.FileWriter;import java.i o.I OExcepti on;import java.util.Properties;* Bank 類*編寫B(tài)ank類,屬性:1. 當(dāng)前所有的賬戶對(duì)象的集合,存放在數(shù)組中2. 當(dāng)前賬戶數(shù)量方法:1. 用戶開戶,需要的參數(shù):id,密碼,密碼確認(rèn),姓名,身份證號(hào)碼,賬戶類型,返回新創(chuàng)建的Account 對(duì)象的賬

16、號(hào),提示:用s1.equals(s2)可以比較s1,s2兩個(gè)字符串的值是否相等.賬戶類型是一個(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ì)通過調(diào)用Bank對(duì)象以上的方法來操作自己的賬戶,請(qǐng)分析各個(gè)方法需要的參數(shù)*/public class Bank private Acco un t acco unts = new Acco un t20;private int numbe

17、r;/ 賬戶數(shù)目private int id = 1001;/確定銀行賬號(hào)從1001開始生成,即第一個(gè)賬戶的賬號(hào)是1001/構(gòu)造函數(shù)public Ban k()accounts=new Account20; 以后不足時(shí)擴(kuò)容。nu mber = 0;BufferedReader bufReader = nu II;Properties props=System.getProperties();String path=props.getProperty("user.dir");try bufReader =new BufferedReader( new FileReader(

18、new File(path,"acco un t.txt");String s = bufReader.readL in e();while(s != n ull)Strin g str = s.split(",");if(str4.equals("0")Acco unt sav in gAcc = new Savi ngAcco un t(L on g.parseL on g(str0), str1.toString(), str2.toString(),str3.toStri ng(),I nteger.parseI nt(str

19、4), Double.parseDouble(str5);acco untsnu mber = savi ngAcc;elseAcco unt creditAcc = new CreditAcco un t(L on g.parseL on g(str0), str1.toString(), str2.toString(),str3.toStri ng(),I nteger.parseI nt(str4),Double.parseDouble(str5),5000);acco untsnu mber = creditAcc;nu mber +;id+;s = bufReader.readL i

20、n e(); catch (NumberFormatExcepti on e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace(); catch (FileNotF oun dExcepti on e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace(); catch (IOExcepti on e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace();fin allytry if(bufReader != null)bu

21、fReader.close(); catch (IOExceptio n e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace();/getXxx,setXxxpublic Acco un t getAcco un ts() retur n acco un ts;public void setAcco un ts(Acco un t acco un ts) this.acco unts = acco un ts;public int getNumber() retur n nu mber;public void setNumber(i

22、nt nu mber) this .nu mber = nu mber;public in t getId() return id;public void setld(i nt id) this.id = id;*開戶*/public Acco unt ope nAcco un t(Stri ng passwd1. String passwd2. String n ame,String pers onld, int type)/創(chuàng)建一個(gè)新賬戶Acco unt acco unt = n ull;/判斷兩次密碼是否一致if(passwd1.equals(passwd2)II若一致,再判斷賬戶類型(

23、根據(jù) type的值)if(type = 1)II可令開始余額為10,信用額度為5000acco unt = new CreditAcco un t(id, passwdl, n ame, pers onld, type, 10, 5000);elseacco unt = new Savin gAcco un t(id, passwdl, n ame, pers onld, type, 10);II將賬戶存入賬戶數(shù)組accou nts中II判斷是否超出存儲(chǔ)空間if(nu mber >= acco unts.len gth) II擴(kuò)容Acco un t n ewAcco unts = new

24、 Acco un taccou nts.le ngth*2;IIcopy原來的相關(guān)數(shù)據(jù)System.arraycopy(acco un ts, 0, n ewAcco un ts, 0, acco unts.len gth);/ 將 newAccounts賦給 accounts acco unts = n ewAcco un ts;acco un ts nu mber = acco unt;elseacco un ts nu mber = acco unt;System.out.println("開戶成功! !賬戶信息見下");(” 您的卡號(hào)為:"+id+&quo

25、t;n"+"您的密碼為:"+passwd1+"n"+"您 的戶名為:"+n ame+"n"+"您的身份證號(hào)為:"+personld+"n"+"您的賬戶類型為:"+type+"n”);acco un t.acco un tType = type;nu mber+;id+;return account;此時(shí)開戶成功else(”對(duì)不起!您兩次密碼輸入不匹配,開戶失敗! !");return null;此時(shí)開戶失敗*保存數(shù)據(jù)*/pub

26、lic void saveAcco un tDate() BufferedWriter bufWriter= null;try Properties props=System.getProperties();String path=props.getProperty("user.dir");bufWriter= new BufferedWriter(new FileWriter(new File(path,"account.txt"); for(i nt i = 0;i < acco unts.len gth;i+)/若存在賬戶if(acco un

27、 tsi != n ull)/寫入賬戶信息到 account.txt bufWriter.write(accou ntsi.id+",");bufWriter.write(acco un tsi.getPassword()+","); bufWriter.write(accou ntsi.getName()+",");bufWriter.write(acco un tsi.getPerso nId()+","); bufWriter.write(acco un tsi.getAcco un tType()+&quo

28、t;,"); bufWriter.write(Double.toStri ng(acco un tsi.getBala nce();bufWriter. newLi ne();elsebreak;bufWriter.flush(); 清空緩存中的內(nèi)容 catch (lOExcepti on e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace();fin allytry if(bufWriter!=null) bufWriter.close(); catch (IOExceptio n e) / TODO Auto-ge ne

29、rated catch block e.pri ntStackTrace();*登錄驗(yàn)證*/public Acco unt verifyAcco un t(l ong id, String password)Acco unt acco unt = n ull;for(i nt i = 0;i < acco unts.len gth;i+)/若存在賬戶if(acco un tsi != n ull)/ 驗(yàn)證 id 號(hào)和 passwordif(id = acco un tsi.getld() && password.equals(acco un tsi.getPassword

30、() acco unt = acco un tsi;break;else break;retur n acco unt;/*轉(zhuǎn)賬驗(yàn)證(方法的重載)*/public Acco unt verifyAcco un t(l ong id) Acco unt acco unt = n ull;for(i nt i = 0;i < acco unts.len gth;i+) /若存在賬戶/驗(yàn)證id號(hào)和password if(id = acco un tsi.getld() acco unt = acco un tsi; break;if(acco un tsi != n ull) elsebrea

31、k;retur n acco unt;/*轉(zhuǎn)賬*/public void tran sferAcco un t(Acco unt acco un t1, Acco unt acco un t2, double mon ey) acco un t1.withdraw(m on ey);acco un t2.deposit(m on ey);/*存款*/public void deposit(Acco unt acco unt, double mon ey) acco un t.deposit(m on ey);/*取款*/public void withdraw(Acco unt acco un

32、t, double mon ey) acco un t.withdraw(m on ey);ATM類package com.qx;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.util.Properties;import java.util.Sca nner;* ATM類,提供用戶界面操作*/ public class ATM /屬性private Ban

33、k bank;/構(gòu)造函數(shù)public ATM() bank = new Ban k();main方法public static void main(String args) ATM atm = new ATM(); 實(shí)例化 Bank bank = atm.ba nk;/標(biāo)號(hào),判斷是否退出一級(jí)菜單 boolea n firstFlag = true;while(firstFlag)ATM/ 一級(jí)菜單System.out.pri ntln("*歡迎使用XXX銀行模擬ATM系統(tǒng),請(qǐng)按如下步驟操作 *");System.out.pri ntl n("System.out.

34、pri ntl n("System.out.pri ntl n("*1.用已有賬戶登錄”);*2.沒有賬戶,開戶");*3.退出");Scanner sca nner = new Sca nn er(System.i n);(” 請(qǐng)選擇:”);try int choice1 = sca nner.n ext In t();switch(choice1)case 1:sca nner = new Sca nn er(System.i n); System.out.print("請(qǐng)輸入銀行卡號(hào):");long id = sca nner.

35、n ext In t();sca nner = new Sca nn er(System.i n); System.out.print("請(qǐng)輸入銀行密碼:"); String password = sca nner.n ext();Acco unt acco unt = ban k.verifyAcco un t(id, password);統(tǒng),請(qǐng)按如下步驟操作if(acco unt != n ull)/標(biāo)號(hào),判斷是否退出二級(jí)菜單boolea n sec on dFlag = true;while(sec on dFlag)/二級(jí)菜單System.out.pri ntln(

36、"*“、.System.out.pri ntl n(" System.out.pri ntl n("System.out.pri ntl n(" System.out.pri ntl n("System.out.pri ntl n("歡迎使用XXX銀行模擬ATM系*1.查詢賬戶余額");*2.存款");*3.取款");*4.轉(zhuǎn)賬");*5.退卡");System.out.print("請(qǐng)選擇: try scanner = new Scann er(System.i n);&q

37、uot;);int choice2 = scanner.nextInt();switch(choice2)case 1:(”您賬戶的當(dāng)前余額為:"+acco un t.getBala nce();break;case 2:sca nner = new Sca nn er(System.i n);(”請(qǐng)輸入您的存款金額:”);double mon ey1 = sca nner.n extDouble();ban k.deposit(acco unt, mon ey1);break;case 3:sca nner = new Sca nn er(System.i n);(”請(qǐng)輸入您的取款金額:”);double mon ey2 = sca nner.n extDouble();ban k.withdraw(acco unt, mon ey2);break;case 4:sca nner = new Sca nn er(System.i n);(”請(qǐng)輸入您要轉(zhuǎn)入賬戶的卡號(hào):");long id2 = sca nner.n extL on g();Acco unt acco unt2 = ban k.verifyAcco un t(id2);if(acco unt2 != nu II)sca nne

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論