bam银行账户管理系统(java类)0001_第1页
bam银行账户管理系统(java类)0001_第2页
bam银行账户管理系统(java类)0001_第3页
bam银行账户管理系统(java类)0001_第4页
bam银行账户管理系统(java类)0001_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3.存款BAM银行账户管理系统(ATM管理系统)本系统采用JAVA语言并在eclipse环境下编写测试完成,涉及类的概念,以及面向对象的几大特性(继承,封装,多态,抽象),也有异常处理机制,基本可以满足大多数BAM系统的相关实现,且代码内标注大量注释,读者可以很轻松地理解相关逻辑,大家可以开心参考。系统简介:1、JAVA类的面相对象的应用,拥有异常处理机制,不会因为输入错误而导致程序崩溃2、 主要有5个类,即Account (账户类) SaveAccou nt (储蓄账户类):不能透支 CreditAccou nt(信用账户类):可以透支 Bank (银行类) ATM ( ATM 类)类的具体

2、属性级行为见代码3、各个类之间的相互关系,涉及继承、封装、多态、抽象,在多态中又涉及重载和重写,请读者注意相关联系(关注注释)4、可以实现数据保存功能,数据将保存在文件中(即当你注册了一个账户,下次再登陆系统时,可以实现与上次最后的操作相衔接)5、账户号自动生成,比较符合现实6、主要功能有:1.开户2.查询账户余额4. 取款5. 转账(一个账户到另一个账户)等7、运行时界面简示1. 初始界面(账户登录)Fule Edit Navigate Search Project Run Window Help12 J L Ivl找 Problems Javadoc 曉 Declaration匚oriso

3、leATM (2) Java Application C:Program FilesJavajrie7biniavaw.exe (2013-5-24 -FiF7:3&:061*I欢迎使用XXX银行模拟ATM系统,请按如下歩骤操作玄*a*1.用已有账户登录*2.S有账户,幵户 汰3 退出谴选择:1请输入银行卡号:1:请输入银行密码:77吉 Java - Eclipse SDK2.账户登录后界面*欢迎使用XXX银行模拟AT何系统,请按如下步骤操件*1.杳询账户余额*2.1?款丈3 .馭款* 4转账玄5 退卡请选择:注意事项:1、 本系统采用的编程环境是 JDK1.7,er7。所以,运行代码需要保持

4、电脑上所装的 JDK 为1.7以上版本,如有报错,只需换个高一点的版本即可。注意:第一次装JDK,要配置环 境变量(请查阅相关资料,比较简单)2、本系统代码涉及到包,所以如果报名不一致就会报错,解决方法:修改一下包名即Word专业资料3、建议把各个类写在同一个包下面,且每一个类单独写一个java文件,如下图:占 Java - Edipse SDKWord专业资料File Edit Source Refactor NavigateSearch Project Run Window Help Q 邀歪;白li Package Explorer0 Q Q弓ppp#BAMBAM02BAM03BAM 0

5、4 S? wd 丄 com.qxAccountjava丄 ATM.javaBankjava2j C red itAcc u nt J a vaJ Saving Account,java ft J RE System Library jre7 _ account.tzt4、在运行程序前,需要在项目下面新建一个acco un t.txt (用来保存数据)文件(如上图),并在其中写入至少一个账户信息, (如下图,其中每项代表的意思,请读者参照代码 内的注释),否则在初始化的时候会因为找不到账户信息,从而产生异常。二 Java - BAM04/accounttsrt - Edip?e SOKFile

6、Edrt Navigate S&arch Preyed Run Window Help殂i当出亏 * e is強書香 -accoijnrt.bd -器.tS Pocks gc Ewpli口=31(1001, 1001,张可箜F 321323, 0, 510 * 0心BAM心 BAIM02心 BAM03BAM04JB cem.qK:曲 Account,jwa j/| ATM.java J | BArnlLjiava7 CreditAccountjavaIM Savi n-gAccou nt.java *.剛E System Gbry ji -7 B acccuntiM系统源码:Acco unt

7、类Word专业资料package com.qx;/ 包名/*账户类:包含两种账户类型-1.储蓄账户2.信用账户*/public abstractclass Account /属性protectedlong id;protectedString password;protectedString n ame;protectedString pers onld;protectedint accountType;protected double bala nee;/构造方法public Acco un t()super ();public Account( long id, String passwo

8、rd, String name, String accoutType, double balanee) super ();this .id = id;this .password = password;this .name = name;this .personld = personld;this .accountType = accountType;this .balanee = balanee;/getXxx,setXxx 方法public long getld() return id;public void setld( long id) this .id =

9、id;public String getPassword() retur n password;public void setPassword(String password) this .password = password;public String getName() return n ame;public void setName(Stri ng n ame) this .name = name;public String getPers onl d() retur n pers onld;public void setPers onl d(Stri ng pers onld) th

10、is .personld = personld;public int getAccountType() retur n acco un tType;public void setAccountType(int accountType) this .accountType = accountType;public doublegetBala nce() retur n bala nee;public void setBalance( double balanee) this .balanee = balanee;*存款*/public void deposit( double money) ba

11、la nee += mon ey;类应设为抽*取款(取款方式由账户类型决定,所以设为抽象方法,相应的Account象类)*/public abstract void withdraw( double money);Savin gAcco unt类package com.qx;/*储蓄账户类*/public class SavingAccountextends Account /构造函数public Savin gAcco un t() super ();public Savin gAcco unt(long id, String password, String n ame,String pe

12、rsonld, int accountType,double balanee) super (id, password, name, personld, accountType, balanee);/对父类的withdraw。实现public void withdraw( doublemoney)if (bala nee mon ey)System. out .println(”对不起,账户余额不足!);elsebala nee -= mon ey;CresitAcco unt 类package com.qx;/*信用账户类,增加一个信用额度ceiling属性*/public class Cr

13、editAccountextendsAccountprivate int ceiling;/构造函数public CreditAccou nt()super ();public CreditAccount( long id, String password, String name,String personld,int accountType,double balanee, int ceiling)super (id, password, name, personld, accountType, balanee);this .ceiling = ceiling;getXxx,setXxx方法

14、public int getCeiling() return ceili ng;public void setCeiling( int ceiling) this .ceiling = ceiling;/实现父类的withdraw。public void withdraw( doublemoney)if (bala nee + ceili ng) = acco unts.len gth)/扩容Acco un t n ewAcco unts = new Acco un taccou nts.le ngth*2;/copy原来的相关数据System.arraycopy(acco un ts, 0,

15、 n ewAcco un ts, 0, acco unts.len gth);/ 将 newAccounts赋给 accountsacco unts = n ewAcco un ts;acco un ts nu mber = acco unt;elseacco un ts nu mber = acco unt;System.out.pri ntl n(开户成功! !账户信息见下);System.out.pri ntl n(您的卡号为:+id+n+您的密码为:+passwd1+n+您的户名为:+n ame+n+您 的身份证号为:+personld+n+您的账户 类型为:+type+n);acco

16、 un t.acco un tType = type;nu mber+;Word专业资料return accou nt;/此时开户成功id+;elseSystem.out.println(”对不起!您两次密码输入不匹配,开户失败! !);return n ull;此时开户失败*保存数据*/public void saveAcco un tDate()BufferedWriter bufWriter= null;try Properties props=System.getProperties();String path=props.getProperty(user.dir);FileWrite

17、r( newbufWriter= newBufferedWriter( newFile(path,accou nt.txt);for(i nt i = 0;i acco unts.len gth;i+)/若存在账户if(acco un tsi != n ull)Word专业资料/写入账户信息到account.txtbufWriter.write(accou ntsi.id+,);bufWriter.write(acco un tsi.getPassword()+,); bufWriter.write(accou ntsi.getName()+,);bufWriter.write(acco un

18、 tsi.getPerso nld()+,);bufWriter.write(acco un tsi.getAcco un tType()+,); bufWriter.write(Double.toStri ng(acco un tsi.getBala nce(); bufWriter. newL in e();elsebreak;bufWriter.flush();/ 清空缓存中的内容 catch (IOExcepti on e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace();fin allytry if(bufWriter!=

19、null)Word专业资料bufWriter.close(); catch (lOExceptio n e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace();*登录验证*/public Acco unt verifyAcco un t(l ong id, String passwordAcco unt acco unt = n ull;for(i nt i = 0;i acco unts.len gth;i+)/若存在账户if(acco un tsi != n ull)/ 验证 id 号和 password&if(id=acco u

20、n tsi.getld()password.equals(acco un tsi.getPassword()acco unt = acco un tsi;Word专业资料break;elsebreak;retur n acco unt;/*转账验证(方法的重载)*/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+)/若存在账户if(acco un tsi != n ull)/ 验证 id 号和 passwordif(id = acco

21、un tsi.getld() elsebreak;retur n acco unt;/*转账acco un t1,Acco untacco unt2.double*/public void tran sferAcco un t(Acco unt 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)Word专业资料acco un t.deposit(m on ey);/*取款*/public void w

22、ithdraw(Acco unt acco unt, 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

23、class ATM /属性private Bank bank;/构造函数 public ATM() bank = new Ban k();mai n 方法public static void main(String args)ATM atm = new ATM();实例化 ATMBank bank = atm.ba nk;/标号,判断是否退出一级菜单 boolea n firstFlag = true;while(firstFlag)/ 一级菜单欢迎使用XXX银行模拟ATM系统,请按如下步*1.用已有账户登录);*2.没有账户,开户);*3.退出);System.out.pri ntln(*)

24、;System.out.pri ntl n(System.out.pri ntl n(System.out.pri ntl n(Word专业资料Scanner sea nner = new Sea nn er(System.i n);System.out.pri nt(”请选择:”);try int choicel = sea nner.n ext In t();switch(choicel)case 1:sca nner = new Sca nn er(System.i n);System.out.pri nt(”请输入银行卡号:”);long id = sca nner.n ext In

25、t();sca nner = new Sca nn er(System.i n);System.out.pri nt(请输入银行密码:);String password = sca nner.n ext();Acco unt acco unt = ban k.verifyAcco un t(id, password);if(acco unt != n ull)/标号,判断是否退出二级菜单boolea n sec on dFlag = true;while(sec on dFlag)/二级菜单System.out.println(*欢迎使用 XXX 银行模拟 ATM系统,请按如下步骤操作*);S

26、ystem.out.println(”*1.查询账户余额”);Word专业资料System.out.pri ntl n(”*2.存款);System.out.pri ntl n(”*3.取款);System.out.pri ntl n(”*4.转账);System.out.pri ntl n(”*5.退卡);sca nner = new Sca nn er(System.i n);System.out.pri nt(请选择:);try int choice2 = sca nner.n extI nt();switch(choice2)case 1:System.out.println(” 您账

27、户的 当前余额为:+acco un t.getBala nce();break;case 2:sca nner = new Sca nn er(System.i n);System.out.pri nt(”请输入您的存款金额:);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);”);System.out.pri nt(”请输入您的取款金额:”);double mon ey2 = sca nner.n

28、 extDouble();ban k.withdraw(acco unt, mon ey2);break;case 4:sca nner = new Sca nn er(System.i n);System.out.pri nt(”请输入您要转入账户的卡号:long id2 = sca nner.n extL on g();Acco unt acco unt2 = ban k.verifyAcco un t(id2);if(acco unt2 != nu II)sca nner = new Sca nn er(System.i n);System.out.pri nt(请输入您要转入账户的金额

29、:”);double money = sca nner.n extL on g(); if(money = acco un t.bala nee)ban k.tra nsferAcco un t(acco unt,acco un t2, mon ey);System.out.println(”转账成功! !);elseSystem.out.pri ntl n(”抱歉,您账户没有足够的金额!请查看后重新选择输入!”);elseSystem.out.pri ntl n(”抱歉,没有找到您要转入的账户信息!请核对后重新选择输入!);break;case 5:sec on dFlag = false;break;def

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论