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

下載本文檔

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

文檔簡(jiǎn)介

-z.BAM銀行賬戶管理系統(tǒng)〔ATM管理系統(tǒng)〕本系統(tǒng)采用JAVA語(yǔ)言并在eclipse環(huán)境下編寫測(cè)試完成,涉及類的概念,以及面向?qū)ο蟮膸状筇匦浴怖^承,封裝,多態(tài),抽象〕,也有異常處理機(jī)制,根本可以滿足大多數(shù)BAM系統(tǒng)的相關(guān)實(shí)現(xiàn),且代碼標(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ǔ)蓄賬戶類〕:不能透支③CreditAccount〔信用賬戶類〕:可以透支④Bank〔銀行類〕⑤ATM〔ATM類〕 類的具體屬性級(jí)行為見代碼 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.初始界面〔賬戶登錄〕 2.賬戶登錄后界面考前須知:1、本系統(tǒng)采用的編程環(huán)境是JDK1.7,jer7。所以,運(yùn)行代碼需要保持電腦上所裝的JDK為1.7以上版本,如有報(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文件,如下列圖: 4、在運(yùn)行程序前,需要在工程下面新建一個(gè)account.t*t〔用來(lái)保存數(shù)據(jù)〕文件〔如上圖〕,并在其中寫入至少一個(gè)賬戶信息,〔如下列圖,其中每項(xiàng)代表的意思,請(qǐng)讀者參照代碼的注釋〕,否則在初始化的時(shí)候會(huì)因?yàn)檎也坏劫~戶信息,從而產(chǎn)生異常。系統(tǒng)源碼:Account類package.q*;//包名/***賬戶類:包含兩種賬戶類型-->1.儲(chǔ)蓄賬戶2.信用賬戶*/publicabstractclassAccount{ //屬性protectedlongid;protectedStringpassword;protectedStringname;protectedStringpersonId;protectedintaccountType;protecteddoublebalance; //構(gòu)造法publicAccount(){super(); }publicAccount(longid,Stringpassword,Stringname,StringpersonId,intaccoutType,doublebalance){super();this.id=id;this.password=password;=name;this.personId=personId;this.accountType=accountType;this.balance=balance; } //get***,set***法publiclonggetId(){returnid; }publicvoidsetId(longid){this.id=id; }publicStringgetPassword(){returnpassword; }publicvoidsetPassword(Stringpassword){this.password=password; }publicStringgetName(){returnname; }publicvoidsetName(Stringname){=name; }publicStringgetPersonId(){returnpersonId; }publicvoidsetPersonId(StringpersonId){this.personId=personId; }publicintgetAccountType(){returnaccountType; }publicvoidsetAccountType(intaccountType){this.accountType=accountType; }publicdoublegetBalance(){returnbalance; }publicvoidsetBalance(doublebalance){this.balance=balance; } /** *存款 */publicvoiddeposit(doublemoney){ balance+=money; } /** *取款〔取款式由賬戶類型決定,所以設(shè)為抽象法,相應(yīng)的Account類應(yīng)設(shè)為抽象類〕 */publicabstractvoidwithdraw(doublemoney);}SavingAccount類package.q*;/***儲(chǔ)蓄賬戶類*/publicclassSavingAccounte*tendsAccount{ //構(gòu)造函數(shù)publicSavingAccount(){super(); }publicSavingAccount(longid,Stringpassword,Stringname, StringpersonId,intaccountType,doublebalance){super(id,password,name,personId,accountType,balance); } //對(duì)父類的withdraw()實(shí)現(xiàn)publicvoidwithdraw(doublemoney){if(balance<money){ System.out.println("對(duì)不起,賬戶余額缺乏!"); }else { balance-=money; } }}CresitAccount類package.q*;/***信用賬戶類,增加一個(gè)信用額度ceiling屬性*/publicclassCreditAccounte*tendsAccount{privateintceiling; //構(gòu)造函數(shù)publicCreditAccount(){super(); }publicCreditAccount(longid,Stringpassword,Stringname, StringpersonId,intaccountType,doublebalance,intceiling){super(id,password,name,personId,accountType,balance);this.ceiling=ceiling; } //get***,set***法publicintgetCeiling(){returnceiling; }publicvoidsetCeiling(intceiling){this.ceiling=ceiling; } //實(shí)現(xiàn)父類的withdraw()publicvoidwithdraw(doublemoney){if((balance+ceiling)<money){ System.out.println("對(duì)不起,已超出您的信用額度!"); }else { balance-=money; } }}Bank類package.q*;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileNotFoundE*ception;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOE*ception;importjava.util.Properties;/***Bank類*編寫B(tài)ank類,屬性:1.當(dāng)前所有的賬戶對(duì)象的集合,存放在數(shù)組中2.當(dāng)前賬戶數(shù)量法:1.用戶開戶,需要的參數(shù):id,密碼,密碼確認(rèn),姓名,身份證,賬戶類型,返回新創(chuàng)立的Account對(duì)象的賬號(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ì)通過(guò)調(diào)用Bank對(duì)象以上的法來(lái)操作自己的賬戶,請(qǐng)分析各個(gè)法需要的參數(shù)*/publicclassBank{ privateAccount[]accounts=newAccount[20]; privateintnumber;//賬戶數(shù)目 privateintid=1001;//確定銀行賬號(hào)從1001開場(chǎng)生成,即第一個(gè)賬戶的賬號(hào)是1001 //構(gòu)造函數(shù) publicBank(){ accounts=newAccount[20];//以后缺乏時(shí)擴(kuò)容。 number=0; BufferedReaderbufReader=null; Propertiesprops=System.getProperties(); Stringpath=props.getProperty("user.dir"); try{ bufReader=newBufferedReader(newFileReader(newFile(path,"account.t*t"))); Strings=bufReader.readLine(); while(s!=null){ String[]str=s.split(","); if(str[4].equals("0")) { AccountsavingAcc=newSavingAccount(Long.parseLong(str[0]), str[1].toString(),str[2].toString(), str[3].toString(),Integer.parseInt(str[4]), Double.parseDouble(str[5])); accounts[number]=savingAcc; } else { AccountcreditAcc=newCreditAccount(Long.parseLong(str[0]), str[1].toString(),str[2].toString(), str[3].toString(),Integer.parseInt(str[4]), Double.parseDouble(str[5]),5000); accounts[number]=creditAcc; } number++; id++; s=bufReader.readLine(); } }catch(NumberFormatE*ceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(FileNotFoundE*ceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOE*ceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ try{ if(bufReader!=null) { bufReader.close(); } }catch(IOE*ceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } //get***,set*** publicAccount[]getAccounts(){ returnaccounts; } publicvoidsetAccounts(Account[]accounts){ this.accounts=accounts; } publicintgetNumber(){ returnnumber; } publicvoidsetNumber(intnumber){ this.number=number; } publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } /** *開戶 */ publicAccountopenAccount(Stringpasswd1,Stringpasswd2,Stringname, StringpersonId,inttype){ //創(chuàng)立一個(gè)新賬戶 Accountaccount=null; //判斷兩次密碼是否一致 if(passwd1.equals(passwd2)){ //假設(shè)一致,再判斷賬戶類型〔根據(jù)type的值〕 if(type==1){ //可令開場(chǎng)余額為10,信用額度為5000 account=newCreditAccount(id,passwd1,name,personId,type,10,5000); } else { account=newSavingAccount(id,passwd1,name,personId,type,10); } //將賬戶存入賬戶數(shù)組accounts[]中 //判斷是否超出存儲(chǔ)空間 if(number>=accounts.length) { //擴(kuò)容 Account[]newAccounts=newAccount[accounts.length*2]; //copy原來(lái)的相關(guān)數(shù)據(jù) System.arraycopy(accounts,0,newAccounts,0,accounts.length); //將newAccounts[]賦給accounts[] accounts=newAccounts; accounts[number]=account; } else { accounts[number]=account; } System.out.println("開戶成功?。?!賬戶信息見下"); System.out.println("您的卡號(hào)為:"+id+"\n"+"您的密碼為:"+passwd1+"\n"+"您的戶名為:"+name+"\n" +"您的身份證號(hào)為:"+personId+"\n"+"您的賬戶類型為:"+type+"\n"); account.accountType=type; number++; id++; returnaccount;//此時(shí)開戶成功 } else { System.out.println("對(duì)不起!您兩次密碼輸入不匹配,開戶失敗?。?!"); returnnull;//此時(shí)開戶失敗 } } /** *保存數(shù)據(jù) */ publicvoidsaveAccountDate(){ BufferedWriterbufWriter=null; try{Propertiesprops=System.getProperties(); Stringpath=props.getProperty("user.dir"); bufWriter=newBufferedWriter(newFileWriter(newFile(path,"account.t*t"))); for(inti=0;i<accounts.length;i++) { //假設(shè)存在賬戶 if(accounts[i]!=null) { //寫入賬戶信息到account.t*t bufWriter.write(accounts[i].id+","); bufWriter.write(accounts[i].getPassword()+","); bufWriter.write(accounts[i].getName()+","); bufWriter.write(accounts[i].getPersonId()+","); bufWriter.write(accounts[i].getAccountType()+","); bufWriter.write(Double.toString(accounts[i].getBalance())); bufWriter.newLine(); } else { break; } } bufWriter.flush();//清空緩存中的容 }catch(IOE*ceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ try{ if(bufWriter!=null){ bufWriter.close(); } }catch(IOE*ceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } /** *登錄驗(yàn)證 */ publicAccountverifyAccount(longid,Stringpassword){ Accountaccount=null; for(inti=0;i<accounts.length;i++) { //假設(shè)存在賬戶 if(accounts[i]!=null) { //驗(yàn)證id號(hào)和password if(id==accounts[i].getId()&&password.equals(accounts[i].getPassword())) { account=accounts[i]; break; } } else { break; } } returnaccount; } /** *轉(zhuǎn)賬驗(yàn)證〔法的重載〕 */ publicAccountverifyAccount(longid){ Accountaccount=null; for(inti=0;i<accounts.length;i++) { //假設(shè)存在賬戶 if(accounts[i]!=null) { //驗(yàn)證id號(hào)和password if(id==accounts[i].getId()) { account=accounts[i]; break; } } else { break; } } returnaccount; } /** *轉(zhuǎn)賬 */ publicvoidtransferAccount(Accountaccount1,Accountaccount2,doublemoney){ account1.withdraw(money); account2.deposit(money); } /** *存款 */ publicvoiddeposit(Accountaccount,doublemoney){ account.deposit(money); } /** *取款 */ publicvoidwithdraw(Accountaccount,doublemoney){ account.withdraw(money); }}ATM類package.q*;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.util.Properties;importjava.util.Scanner;/***ATM類,提供用戶界面操作*/publicclassATM{ //屬性 privateBankbank; //構(gòu)造函數(shù) publicATM(){ bank=newBank(); } //main法 publicstaticvoidmain(String[]args){ ATMatm=newATM();//實(shí)例化ATM Bankbank=atm.bank; //標(biāo)號(hào),判斷是否退出一級(jí)菜單 booleanfirstFlag=true; while(firstFlag) { //一級(jí)菜單 System.out.println("******歡送使用***銀行模擬ATM系統(tǒng),請(qǐng)按如下步驟操作******"); System.out.println(" *1.用已有賬戶登錄"); System.out.println(" *2.沒(méi)有賬戶,開戶"); System.out.println(" *3.退出"); Scannerscanner=newScanner(System.in); System.out.print("請(qǐng)選擇:"); try{ intchoice1=scanner.ne*tInt(); switch(choice1) { case1: scanner=newScanner(System.in); System.out.print("請(qǐng)輸入銀行卡號(hào):"); longid=scanner.ne*tInt(); scanner=newScanner(System.in); System.out.print("請(qǐng)輸入銀行密碼:"); Stringpassword=scanner.ne*t(); Accountaccount=bank.verifyAccount(id,password); if(account!=null) { //標(biāo)號(hào),判斷是否退出二級(jí)菜單 booleansecondFlag=true; while(secondFlag) { //二級(jí)菜單 System.out.println("******歡送使用***銀行模擬ATM系統(tǒng),請(qǐng)按如下步驟操作******"); System.out.println("*1.查詢賬戶余額"); System.out.println("*2.存款"); System.out.println("*3.取款"); System.out.println("*4.轉(zhuǎn)賬"); System.out.println("*5.退卡"); scanner=newScanner(System.in); System.out.print("請(qǐng)選擇:"); try{ intchoice2=scanner.ne*tInt(); switch(choice2) { case1: System.out.println("您賬戶的當(dāng)前余額為:"+account.getBalance()); break; case2: scanner=newScanner(System.in); System.out.print("請(qǐng)輸入您的存款金額:"); doublemoney1=scanner.ne*tDouble(); bank.deposit(account,money1); break; case3: scanner=newScanner(System.in); System.out.print("請(qǐng)輸入您的取款金額:"); doublemoney2=scanner.ne*tDouble(); bank.withdraw(account,money2); break; case4: scanner=newScanner(System.in); System.out.print("請(qǐng)輸入您要轉(zhuǎn)入賬戶的卡號(hào):"); longid2=scanner.ne*tLong(); Accountaccount2=bank.verifyAccount(id2); if(account2!=null) { scanner=newScanner(System.in); System.out.print("請(qǐng)輸入您要轉(zhuǎn)入賬戶的金額:"); doublemoney=scanner.ne*tLong(); if(money<=account.balance) { bank.transferAccount(account,account2,money); System.out.println("轉(zhuǎn)賬成功!?。?); } else { System.out.println("抱歉,您賬戶沒(méi)有足夠的金額!請(qǐng)查看后重新選擇輸入!"); } } else {

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論