版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州電力職業(yè)技術(shù)學(xué)院《Office高級(jí)應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州財(cái)經(jīng)職業(yè)學(xué)院《路基路面B》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽幼兒師范高等??茖W(xué)?!墩彰髟O(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025湖北建筑安全員B證考試題庫附答案
- 2025廣東省安全員知識(shí)題庫及答案
- 貴陽康養(yǎng)職業(yè)大學(xué)《計(jì)量經(jīng)濟(jì)學(xué)基礎(chǔ)與應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州中醫(yī)藥大學(xué)《播音與主持基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025江西省安全員考試題庫及答案
- 2025安徽省安全員-C證考試(專職安全員)題庫附答案
- 廣州醫(yī)科大學(xué)《電影中的法律問題》2023-2024學(xué)年第一學(xué)期期末試卷
- 音樂制作基礎(chǔ)知識(shí)單選題100道及答案解析
- 2024至2030年大型儲(chǔ)油罐項(xiàng)目投資價(jià)值分析報(bào)告
- 2024幼師年終工作總結(jié)
- Unit 4 Plants around us Part A(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊(cè)
- 2024-2030年中國(guó)有機(jī)肥料行業(yè)需求狀況與投資前景預(yù)測(cè)報(bào)告
- 2025屆江蘇省南京師大附中物理高一上期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- “小城鎮(zhèn)建設(shè)”論文(六篇)
- 設(shè)備維護(hù)保養(yǎng)培訓(xùn)
- 三管三必須-新安法宣貫課件
- 農(nóng)戶種地合作協(xié)議書范本模板
- 2024年人教版八年級(jí)物理上冊(cè)期末考試卷(附答案)
評(píng)論
0/150
提交評(píng)論