.Word专业资料BAM银行账户管理系统(ATM管理系统)本系统采用JAVA语言并在eclipse环境下编写测试完成,涉及类的概念,以及面向对象的几大特性(继承,封装,多态,抽象),也有异常处理机制,基本可以满足大多数BAM系统的相关实现,且代码标注大量注释,读者可以很轻松地理解相关逻辑,大家可以开心参考。系统简介:1、JAVA类的面相对象的应用,拥有异常处理机制,不会因为输入错误而导致程序崩溃2、主要有5个类,即①Account(账户类)②SaveAccount(储蓄账户类):不能透支③CreditAccount(信用账户类):可以透支④Bank(银行类)⑤ATM(ATM类)类的具体属性级行为见代码3、各个类之间的相互关系,涉及继承、封装、多态、抽象,在多态中又涉及重载和重写,请读者注意相关联系(关注注释)4、可以实现数据保存功能,数据将保存在文件中(即当你注册了一个账户,下次再登陆系统时,可以实现与上次最后的操作相衔接)5、账户号自动生成,比较符合现实6、主要功能有:1.开户2.查询账户余额3.存款4.取款5.转账(一个账户到另一个账户)等……7、运行时界面简示1.初始界面(账户登录).Word专业资料2.账户登录后界面注意事项:1、本系统采用的编程环境是JDK1.7,jer7。所以,运行代码需要保持电脑上所装的JDK为1.7以上版本,如有报错,只需换个高一点的版本即可。注意:第一次装JDK,要配置环境变量(请查阅相关资料,比较简单)2、本系统代码涉及到包,所以如果报名不一致就会报错,解决方法:修改一下包名即可3、建议把各个类写在同一个包下面,且每一个类单独写一个java文件,如下图:4、在运行程序前,需要在项目下面新建一个account.txt(用来保存数据)文件(如上图),并在其中写入至少一个账户信息,(如下图,其中每项代表的意思,请读者参照代码的注释),否则在初始化的时候会因为找不到账户信息,从而产生异常。.Word专业资料系统源码:Account类package.qx;//包名/***账户类:包含两种账户类型--1.储蓄账户2.信用账户*/publicabstractclassAccount{//属性protectedlongid;protectedStringpassword;protectedStringname;protectedStringpersonId;protectedintaccountType;protecteddoublebalance;//构造方法publicAccount(){super();}publicAccount(longid,Stringpassword,Stringname,StringpersonId,intaccoutType,doublebalance){super();this.id=id;this.password=password;this.name=name;this.personId=personId;this.accountType=accountType;.Word专业资料this.balance=balance;}//getXxx,setXxx方法publiclonggetId(){returnid;}publicvoidsetId(longid){this.id=id;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=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;.Word专业资料}/***取款(取款方式由账户类型决定,所以设为抽象方法,相应的Account类应设为抽象类)*/publicabstractvoidwithdraw(doublemoney);}SavingAccount类package.qx;/***储蓄账户类*/publicclassSavingAccountextendsAccount{//构造函数publicSavingAccount(){super();}publicSavingAccount(longid,Stringpassword,Stringname,StringpersonId,intaccountType,doublebalance){super(id,password,name,personId,accountType,balance);}//对父类的withdraw()实现publicvoidwithdraw(doublemoney){if(balancemoney){System.out.println(对不起,账户余额不足!);}else{balance-=money;}}}CresitAccount类.Word专业资料package.qx;/***信用账户类,增加一个信用额度ceiling属性*/publicclassCreditAccountextendsAccount{privateintceiling;//构造函数publicCreditAccount(){super();}publicCreditAccount(longid,Stringpassword,Stringname,StringpersonId,intaccountType,doublebalance,intceiling){super(id,password,name,personId,accountType,balance);this.ceiling=ceiling;}//getXxx,setXxx方法publicintgetCeiling(){returnceiling;}publicvoidsetCeiling(intceiling){this.ceiling=ceiling;}//实现父类的withdraw()publicvoidwithdraw(doublemoney){if((balance+ceiling)money){System.out.println(对不起,已超出您的信用额度!);}else{balance-=money;}}}Bank类package.qx;.Word专业资料importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.util.Properties;/***Bank类*编写Bank类,属性:1.当前所有的账户对象的集合,存放在数组中2.当前账户数量方法:1.用户开户,需要的参数:id,密码,密码确认,姓名,身份证,账户类型,返回新创建的Account对象的账号,提示:用s1.equals(s2)可以比较s1,s2两个字符串的值是否相等.账户类型是一个整数,为0的时候表示储蓄账户,为1的时候表示信用账户2.用户登录,参数:id,密码返回登录账户的账号3.用户存款,参数:id,存款数额,返回void4.用户取款,参数:id,取款数额,返回void5.查询余额,参数:id,返回该账户的余额double用户会通过调用Bank对象以上的方法来操作自己的账户,请分析各个方法需要的参数*/publicclassBank{privateAccount[]accounts=newAccount[20];privateintnumber;//账户数目privateintid=1001;//确定银行账号从1001开始生成,即第一个账户的账号是1001//构造函数publicBank(){accounts=newAccount[20];//以后不足时扩容。number=0;BufferedReaderbufReader=null;Propertiesprops=System.getProperties();Stringpath=props.getProperty(user.dir);try{bufReader=newBufferedReader(newFileReader(newFile(path,account.txt)));Strings=bufReader.readLine();while(s!=null){String[]str=s.split(,);.Word专业资料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(NumberFormatExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(FileNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}finally{try{if(bufReader!=null){bufReader.close();}}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}//getXxx,setXxxpublicAccount[]getAccounts(){returnaccounts;.Word专业资料}publicvoidsetAccounts(Account[]accounts){this.accounts=accounts;}publicintgetNumber()