下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、.BAM 銀行賬戶管理系統(tǒng)( ATM 管理系統(tǒng))本系統(tǒng)采用JAVA 語言并在eclipse 環(huán)境下編寫測試完成,涉及類的概念,以及面向?qū)ο蟮膸状筇匦裕ɡ^承,封裝,多態(tài),抽象),也有異常處理機制,基本可以滿足大多數(shù)BAM系統(tǒng)的相關(guān)實現(xiàn),且代碼標注大量注釋,讀者可以很輕松地理解相關(guān)邏輯,大家可以開心參考。系統(tǒng)簡介:1、JAVA 類的面相對象的應(yīng)用,擁有異常處理機制,不會因為輸入錯誤而導(dǎo)致程序崩潰2、主要有5 個類,即 Account (賬戶類) SaveAccount (儲蓄賬戶類) :不能透支CreditAccount (信用賬戶類) :可以透支Bank (銀行類)ATM ( ATM 類)類的具
2、體屬性級行為見代碼3、各個類之間的相互關(guān)系,涉及繼承、封裝、多態(tài)、抽象,在多態(tài)中又涉及重載和重寫,請讀者注意相關(guān)聯(lián)系(關(guān)注注釋)4、可以實現(xiàn)數(shù)據(jù)保存功能,數(shù)據(jù)將保存在文件中(即當你注冊了一個賬戶,下次再登陸系統(tǒng)時,可以實現(xiàn)與上次最后的操作相銜接)5、賬戶號自動生成,比較符合現(xiàn)實6、主要功能有:1.開戶2.查詢賬戶余額3.存款4.取款5.轉(zhuǎn)賬(一個賬戶到另一個賬戶)等 7、運行時界面簡示1.初始界面(賬戶登錄)Word 專業(yè)資料.2.賬戶登錄后界面注意事項:1、本系統(tǒng)采用的編程環(huán)境是JDK1.7,jer7 。所以, 運行代碼需要保持電腦上所裝的JDK為 1.7 以上版本,如有報錯,只需換個高一點
3、的版本即可。注意:第一次裝JDK,要配置環(huán)境變量(請查閱相關(guān)資料,比較簡單)2、本系統(tǒng)代碼涉及到包,所以如果報名不一致就會報錯,解決方法:修改一下包名即可3、建議把各個類寫在同一個包下面,且每一個類單獨寫一個java 文件,如下圖:4、在運行程序前,需要在項目下面新建一個account.txt (用來保存數(shù)據(jù))文件(如上圖),并在其中寫入至少一個賬戶信息,(如下圖,其中每項代表的意思,請讀者參照代碼的注釋),否則在初始化的時候會因為找不到賬戶信息,從而產(chǎn)生異常。Word 專業(yè)資料.系統(tǒng)源碼:Account 類package .qx;/ 包名/* 賬戶類 : 包含兩種賬戶類型->1. 儲蓄
4、賬戶2.信用賬戶*/public abstract class Account / 屬性protectedlong id;protectedString password;protectedString name;protectedString personId;protectedint accountType;protecteddouble balance;/ 構(gòu)造方法public Account()super();public Account( long id, String password, String name, String personId, int accoutType, d
5、ouble balance) super();this .id = id;this .password = password;this .name = name;this .personId = personId;this .accountType = accountType;Word 專業(yè)資料.this .balance = balance;/getXxx,setXxx方法public long getId() return id;public void setId( long id) this .id = id;public String getPassword() return pass
6、word;public void setPassword(String password) this .password = password;public String getName() return name;public void setName(String name) this .name = name;public String getPersonId() return personId;public void setPersonId(String personId) this .personId = personId;public int getAccountType() re
7、turn accountType;public void setAccountType( int accountType) this .accountType = accountType;public double getBalance() return balance;public void setBalance(doublebalance) this .balance = balance;/* 存款*/public void deposit( double money)balance += money;Word 專業(yè)資料./* 取款(取款方式由賬戶類型決定,所以設(shè)為抽象方法,相應(yīng)的Acco
8、unt 類應(yīng)設(shè)為抽象類)*/public abstract void withdraw(double money);SavingAccount 類package .qx;/* 儲蓄賬戶類*/public class SavingAccountextends Account / 構(gòu)造函數(shù)public SavingAccount() super();public SavingAccount( long id, String password, String name, String personId, int accountType, double balance) super(id, passw
9、ord, name, personId, accountType, balance);/ 對父類的 withdraw()實現(xiàn)public void withdraw(double money)if (balance < money)System.out .println(" 對不起,賬戶余額不足!");elsebalance -= money;CresitAccount 類Word 專業(yè)資料.package .qx;/* 信用賬戶類,增加一個信用額度ceiling 屬性*/public class CreditAccountextends Accountprivate
10、 int ceiling;/ 構(gòu)造函數(shù)public CreditAccount()super();public CreditAccount( long id, String password, String name,String personId, int accountType, double balance, int ceiling) super(id, password, name, personId, accountType, balance); this .ceiling = ceiling;/getXxx,setXxx方法public int getCeiling() retur
11、n ceiling;public void setCeiling( int ceiling) this .ceiling = ceiling;/ 實現(xiàn)父類的 withdraw()public void withdraw(double money)if (balance + ceiling) < money)System.out .println(" 對不起,已超出您的信用額度!");elsebalance -= money;Bank 類package .qx;Word 專業(yè)資料./* Bank 類* 編寫 Bank 類, 屬性 :1.當前所有的賬戶對象的集合,存放在數(shù)
12、組中2.當前賬戶數(shù)量方法 :1.用戶開戶 ,需要的參數(shù) :id, 密碼 ,密碼確認 ,姓名 ,身份證 ,賬戶類型 ,返回新創(chuàng)建的Account 對象的賬號 ,提示 : 用 s1.equals(s2) 可以比較s1,s2 兩個字符串的值是否相等.賬戶類型是一個整數(shù) ,為 0 的時候表示儲蓄賬戶 ,為 1 的時候表示信用賬戶2.用戶登錄 ,參數(shù) :id, 密碼 返回登錄賬戶的賬號3.用戶存款 ,參數(shù) :id, 存款數(shù)額 ,返回 void4.用戶取款 ,參數(shù) :id, 取款數(shù)額 ,返回 void5.查詢余額 ,參數(shù) :id ,返回該賬戶的余額double用戶會通過調(diào)用Bank 對象以上的方法來操作自
13、己的賬戶,請分析各個方法需要的參數(shù)*/public class Bank private Account accounts = new Account20;private int number;/賬戶數(shù)目private int id = 1001;/確定銀行賬號從1001 開始生成,即第一個賬戶的賬號是1001/ 構(gòu)造函數(shù)public Bank()accounts=new Account20;/以后不足時擴容。number = 0;BufferedReader bufReader = null;Properties props=System.getProperties();String pat
14、h=props.getProperty("user.dir");try bufReader=new BufferedReader(new FileReader(new File(path,"account.txt");String s = bufReader.readLine();while(s != null)String str = s.split(",");Word 專業(yè)資料.if(str4.equals("0")Account savingAcc = new SavingAccount(Long.parse
15、Long(str0),str1.toString(), str2.toString(),str3.toString(),Integer.parseInt(str4),Double.parseDouble(str5);accountsnumber = savingAcc;elseAccount creditAcc = new CreditAccount(Long.parseLong(str0),str1.toString(), str2.toString(),str3.toString(),Integer.parseInt(str4),Double.parseDouble(str5),5000)
16、;accountsnumber = creditAcc;number +;id+;s = bufReader.readLine(); catch (NumberFormatException e) / TODO Auto-generated catch block e.printStackTrace(); catch (FileNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); catch (IOException e) / TODO Auto-generated catch block e.p
17、rintStackTrace();finallytry if(bufReader != null)bufReader.close(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();/getXxx,setXxxpublic Account getAccounts() return accounts;Word 專業(yè)資料.public void setAccounts(Account accounts) this.accounts = accounts;public int getNumber(
18、) return number;public void setNumber(int number) this.number = number;public int getId() return id;public void setId(int id) this.id = id;/* 開戶*/public Account openAccount(String passwd1, String passwd2, String name, String personId, int type)/ 創(chuàng)建一個新賬戶Account account = null;/ 判斷兩次密碼是否一致if(passwd1.e
19、quals(passwd2)/ 若一致,再判斷賬戶類型(根據(jù)type 的值)if(type = 1)/ 可令開始余額為 10,信用額度為 5000account=newCreditAccount(id,passwd1, name,personId,type,10,5000);elseaccount = new SavingAccount(id, passwd1, name, personId, type, 10);/ 將賬戶存入賬戶數(shù)組 accounts 中/ 判斷是否超出存儲空間if(number >= accounts.length)/擴容Account newAccounts =
20、new Accountaccounts.length*2; /copy 原來的相關(guān)數(shù)據(jù)System.arraycopy(accounts, 0, newAccounts, 0, accounts.length); / 將 newAccounts 賦給 accountsWord 專業(yè)資料.accounts = newAccounts;accountsnumber = account;elseaccountsnumber = account;開戶成功!賬戶信息見下");您的卡號為: "+id+"n"+"您的密碼為: "+passwd1+&
21、quot;n"+"您的戶名為: "+name+"n"+" 您 的 身 份 證 號 為 : "+personId+"n"+"您 的 賬 戶 類 型 為 :"+type+"n");account.accountType = type;number+;id+;return account;/此時開戶成功else對不起!您兩次密碼輸入不匹配,開戶失??! ! "); return null;/ 此時開戶失敗/* 保存數(shù)據(jù)*/public void saveAccou
22、ntDate()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(int i = 0;i < accounts.length;i+)/ 若存在賬戶 if(accountsi != null)/ 寫入賬戶信息到 acco
23、unt.txt bufWriter.write(accountsi.id+","); bufWriter.write(accountsi.getPassword()+","); bufWriter.write(accountsi.getName()+","); bufWriter.write(accountsi.getPersonId()+","); bufWriter.write(accountsi.getAccountType()+","); bufWriter.write(Double.t
24、oString(accountsi.getBalance();Word 專業(yè)資料.bufWriter.newLine();elsebreak;bufWriter.flush();/清空緩存中的容 catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();finallytry if(bufWriter!=null)bufWriter.close(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace();/*
25、 登錄驗證*/public Account verifyAccount(long id, String password)Account account = null;for(int i = 0;i < accounts.length;i+)/ 若存在賬戶 if(accountsi != null)/ 驗證 id 號和 passwordif(id = accountsi.getId() && password.equals(accountsi.getPassword()account = accountsi;break;elsebreak;Word 專業(yè)資料.return
26、 account;/* 轉(zhuǎn)賬驗證(方法的重載)*/public Account verifyAccount(long id)Account account = null;for(int i = 0;i < accounts.length;i+)/ 若存在賬戶 if(accountsi != null)/ 驗證 id 號和 password if(id = accountsi.getId()account = accountsi;break;elsebreak;return account;/* 轉(zhuǎn)賬*/public void transferAccount(Account account
27、1, Account account2, double money) account1.withdraw(money);account2.deposit(money);/* 存款*/public void deposit(Account account, double money)account.deposit(money);/* 取款*/public void withdraw(Account account, double money)account.withdraw(money);Word 專業(yè)資料.ATM 類package .qx;/* ATM 類,提供用戶界面操作*/public c
28、lass ATM / 屬性private Bank bank;/ 構(gòu)造函數(shù)public ATM() bank = new Bank();/main方法public static void main(String args)ATM atm = new ATM();/實例化 ATMBank bank = atm.bank;/ 標號,判斷是否退出一級菜單boolean firstFlag = true;while(firstFlag)/ 一級菜單歡迎使用 XXX 銀行模擬 ATM 系統(tǒng),請按如下步驟操作 *");System.out.println("*1.用已有賬戶登錄 &qu
29、ot;);System.out.println("*2.沒有賬戶,開戶 ");System.out.println("*3.退出 ");Scanner scanner = new Scanner(System.in);System.out.print("請選擇: ");try int choice1 = scanner.nextInt();switch(choice1)case 1:scanner = new Scanner(System.in);Word 專業(yè)資料.請輸入銀行卡號:");long id = scanner.
30、nextInt();scanner = new Scanner(System.in);請輸入銀行密碼:");String password = scanner.next();Account account = bank.verifyAccount(id, password);if(account != null)/ 標號,判斷是否退出二級菜單 boolean secondFlag = true; while(secondFlag)/ 二級菜單歡迎使用 XXX 銀行模擬 ATM 系統(tǒng),請按如下步驟操作*");*1. 查詢賬戶余額");*2. 存款 ");*
31、3. 取款 ");*4. 轉(zhuǎn)賬 ");*5. 退卡 ");scanner = new Scanner(System.in);請選擇: ");try int choice2 = scanner.nextInt();switch(choice2)case 1:您賬戶的當前余額為:"+account.getBalance();break;case 2:scanner = new Scanner(System.in);請輸入您的存款金額:");double money1 = scanner.nextDouble();bank.deposit(
32、account, money1);break;case 3:scanner = new Scanner(System.in);請輸入您的取款金額:");double money2 = scanner.nextDouble();bank.withdraw(account, money2);break;case 4:scanner = new Scanner(System.in);請輸入您要轉(zhuǎn)入賬戶的卡號:");long id2 = scanner.nextLong();Word 專業(yè)資料.Account account2 = bank.verifyAccount(id2);if(account2 != null)scanne
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班組安全生產(chǎn)政策方案
- 班級綠植養(yǎng)護課程設(shè)計
- 2024年稀有金屬及稀土金屬材料項目申請報告范文
- 班會班級小活動方案
- 2024年中高壓及特殊性能玻璃鋼管項目立項申請報告
- 玻璃窗開閉機構(gòu)課程設(shè)計
- 玻璃安裝施工方案
- ?;u地面施工方案
- 愛心暑托班課程設(shè)計
- 爆炸應(yīng)急演練方案
- 第一單元中國特色社會主義的開創(chuàng)、堅持、捍衛(wèi)和發(fā)展單元測試-2023-2024學(xué)年中職高教版(2023)中國特色社會主義
- 產(chǎn)后尿潴留的預(yù)防及護理
- 世界學(xué)生日活動主題班會
- 校園垃圾收集清運方案
- 基因擴增實驗室常用儀器設(shè)備的正確操作
- 鐵道供電技術(shù)《1.2接觸網(wǎng)的組成》
- 遼寧省2023-2024學(xué)年普通高中學(xué)業(yè)水平合格性考試(1月)語文試卷(含答案)
- 洗車方案模板
- 北京市西城區(qū)2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)檢測卷(含答案)
- 2024年宣城寧國市從全市村社區(qū)“兩委”干部中擇優(yōu)鄉(xiāng)鎮(zhèn)街道事業(yè)單位招聘筆試沖刺題
- 溶血發(fā)生的應(yīng)急預(yù)案課件
評論
0/150
提交評論