java实现简单的ATM项目
本文实例为大家分享了java实现简单的ATM项目的具体代码,供大家参考,具体内容如下
首先要了解的是,这个ATM项目本身是一个轻量级的项目,只为了完成一些ATM具备的一些方法,并非是真正完成一个ATM的全部功能和需求
那么在这个轻量级的ATM项目中,我将完成添加储蓄账号,添加信用账户,提款,取款等基本功能。
适合新手查看,需要掌握java的继承,多态,封装等基本技术能力
那么,首先创建如下的对象类:Account(账户类),Bank(银行类),CreditAccount(信用账户),SavingAccount(储蓄账户类);
大家首先应该搞清楚,这些类文件中之间的关系,每个类之间需要用到什么样的方法;
那么我们先填写Account类
packagecom.atm.entity; /** *银行账户类 */ publicabstractclassAccount{ /** *账户帐号 */ privateStringaccountId; /** *账户姓名 */ privateStringaccountName; /** *账户密码 */ privateStringaccountPwd; /** *账户余额 */ privatedoubleaccountBalance; /** *账户身份证号 */ privateStringaccountPersonId; /** *账户邮箱 */ privateStringaccountEmail; /** *账户联系电话 */ privatelongaccountTelno; publicAccount(){ } publicAccount(StringaccountName,StringaccountPwd,StringaccountPersonId,longaccountTelno, StringaccountEmail){ this.accountName=accountName; this.accountPwd=accountPwd; this.accountPersonId=accountPersonId; this.accountTelno=accountTelno; this.accountEmail=accountEmail; } publicStringgetAccountId(){ returnaccountId; } publicvoidsetAccountId(StringaccountId){ this.accountId=accountId; } publicStringgetAccountName(){ returnaccountName; } publicvoidsetAccountName(StringaccountName){ this.accountName=accountName; } publicStringgetAccountPwd(){ returnaccountPwd; } publicvoidsetAccountPwd(StringaccountPwd){ this.accountPwd=accountPwd; } publicdoublegetAccountBalance(){ returnaccountBalance; } publicvoidsetAccountBalance(doubleaccountBalance){ this.accountBalance=accountBalance; } publicStringgetAccountPersonId(){ returnaccountPersonId; } publicvoidsetAccountPersonId(StringaccountPersonId){ this.accountPersonId=accountPersonId; } publicStringgetAccountEmail(){ returnaccountEmail; } publicvoidsetAccountEmail(StringaccountEmail){ this.accountEmail=accountEmail; } publiclonggetAccountTelno(){ returnaccountTelno; } publicvoidsetAccountTelno(longaccountTelno){ this.accountTelno=accountTelno; } /** *存款 * *@parammoney *存款金额 *@return返回账户余额 */ publicdoubledepoist(doublemoney){//money形式参数 if(money>0) this.accountBalance+=money; returnthis.accountBalance; } /** *取款 * *@parammoney *取款金额 *@return返回账户余额 */ publicabstractdoublewithdraw(doublemoney); /** *转账 * *@paramanotherAccount *转账的对方账户 *@parammoney *转账金额 *@return返回当前账户的余额 */ publicdoubletranferAccount(AccountanotherAccount,doublemoney){//形参 anotherAccount.accountBalance+=money; this.accountBalance-=money; returnthis.accountBalance; } }
之后填写信用账户类CreditAccount;我们应该明白,他是继承Account类的,但是,他又需要拥有自身独立的属性,我们可以添加一个最高透支额度的属性
这样来实现代码
/** *信用账户 * * */ publicclassCreditAccountextendsAccount{ //成员变量 privatedoublemaxOverdraw;//最高透支额度 //构造函数 publicCreditAccount(StringaccountName,StringaccountPwd,StringaccountPersonId,longaccountTelno,StringaccountEmail,doublemaxOverdraw){ super(accountName,accountPwd,accountPersonId,accountTelno,accountEmail); this.maxOverdraw=maxOverdraw; } //set,get publicvoidsetMaxOverdraw(doublemaxOverdraw){ this.maxOverdraw=maxOverdraw; } publicdoublegetMaxOverdraw(){ returnthis.maxOverdraw; } @Override publicdoublewithdraw(doublemoney){ //TODOAuto-generatedmethodstub return0; } }
同理 填写储蓄账户(SavingAccount)类文件
packagecom.atm.entity; /** *储蓄账户 * * */ publicclassSavingAccountextendsAccount{ publicSavingAccount(StringaccountName,StringaccountPwd,StringaccountPersonId,longaccountTelno,StringaccountEmail){ super(accountName,accountPwd,accountPersonId,accountTelno,accountEmail); } @Override publicdoublewithdraw(doublemoney){ //TODOAuto-generatedmethodstub if(money<=getAccountBalance()){ } else System.out.println("账户余额不足"); returngetAccountBalance(); } }
最重要的是填写Bank类的内容,在这个类中,我们要完成注册,产生银行账户,统计所有信用账户的最高透支额度的总和,统计所有账户的总余额,查询出所有信用账户中透支额度最高的账户,查询出所有储蓄账户中余额最高的账户等功能
我们这样填写
packagecom.atm.entity; importjava.text.SimpleDateFormat; importjava.util.Date; /** *银行类 * *@authorqianghj * *银行开户---->银行账户Accountaccount=bank.开户(...) * */ publicclassBank{ publicAccount[]accArray=newAccount[2000]; publicintcount=0;//表示银行账户的个数 /** *银行账户开户 * *@paramaccName *用户名称 *@paramaccPwd *用户密码 *@paramaccPersonId *用户身份证 *@paramaccTelno *用户手机号码 *@paramaccEmail *用户邮箱 *@paramaccountType *账户类型0:储蓄账户1:信用账户 *@parammaxOverdraw *信用账户的最高透支额度 *@return返回有效的银行账户 */ publicAccountregistAccount(StringaccName,StringaccPwd,StringaccPersonId,longaccTelno,StringaccEmail, intaccountType,doublemaxOverdraw){ Accountaccount=null; if(accountType==0) account=newSavingAccount(accName,accPwd,accPersonId,accTelno,accEmail); else account=newCreditAccount(accName,accPwd,accPersonId,accTelno,accEmail,maxOverdraw); account.setAccountId(generateNextAccountId()); accArray[count++]=account; returnaccount; } /** *产生银行账户帐号 * *@return返回下一个账户的帐号1,2,3,,4 */ publicStringgenerateNextAccountId(){ return"62223421"+newSimpleDateFormat("yyyyMMddHHmmssSSS").format(newDate()); } //统计所有信用账户的最高透支额度的总和(1050)2000,1050 publicdoublestatisticsCreditAccountMaxoverdrawSum(){ doublesum=0; for(inti=0;item){ tem=creditAccount.getMaxOverdraw(); } } } returntem; } //查询出所有储蓄账户中余额最高的账户 publicdoublemaxBalance(){ doubletem=0; for(inti=0;i tem){ tem=savingAccount.getAccountBalance(); } } } returntem; } }
最后测试类
packagetest; importorg.junit.Test; importcom.atm.entity.Account; importcom.atm.entity.Bank; importcom.atm.entity.CreditAccount; publicclassTestAccount{ @Test publicvoidtestRegist(){ Bankbank=newBank(); for(inti=0;i<1000;i++){ //0:储蓄账户1:信用账户 Accountacc=bank.registAccount("tom"+i,"abc123","2729382932",183923302L,"tom"+i+"@163.com", i%2,(i%2==0)?0:3000); if(i%2!=0){ CreditAccountcreditAcc=(CreditAccount)acc; System.out.println("所有信用账户的名字:"+creditAcc.getAccountName()+"和透支额度:"+creditAcc.getMaxOverdraw()); } } //1000个银行账户开户,500是信用账户,最高透支额度随机数赋值,再测试 //doublesum=bank.统计所有信用账户的最高透支额度的总和(); doublesum=bank.statisticsCreditAccountMaxoverdrawSum(); System.out.println("所有信用账户的最高透支额度的总和:"+sum); doublesum1=bank.aggregateAamount(); System.out.println("总余额为"+sum1); } }
测试类的内容不多写,大家有兴趣可以自行测试。这样,我们就完成了一个比较简单的ATM项目。希望对新学者有所帮助。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。