欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

    BAM银行账户管理系统(java类).docx

    • 资源ID:12145132       资源大小:52.86KB        全文页数:26页
    • 资源格式: DOCX        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    BAM银行账户管理系统(java类).docx

    BAhM艮行账户管理系统(java类)个人收集整理,勿做商业用途作者:日期:AM银行账户管理系统(ATM管理系统)本系统采用JAVA语言并在eclipse环境下编写测试完成,涉及类的概念,以及面向对象 的几大特性(继承,封装,多态,抽象),也有异常处理机制,基本可以满足大多数BAM系统的相关实现,且代码内标注大量注释,读者可以很轻松地理解相关逻辑,大家可以开心参考。系统简介:1、JAVA类的面相对象的应用,拥有异常处理机制,不会因为输入错误而导致程序崩溃2、主要有5个类,即Account (账户类) SaveAccount (储蓄账户类):不能透支 CreditAccou nt (信用账户类):可以透支 Bank (银行类) ATM( ATM类)类的具体属性级行为见代码3、各个类之间的相互关系,涉及继承、封装、多态、抽象,在多态中又涉及重载和重写,请读者注意相关联系(关注注释)4、可以实现数据保存功能,数据将保存在文件中(即当你注册了一个账户,下次再陆系统时,可以实现与上次最后的操作相衔接)5、账户号自动生成,比较符合现实6、主要功能有:1.开户2. 查询账户余额3. 存款4. 取款5. 转账(一个账户到另一个账户)等7、运行时界面简示1. 初始界面(账户登录)吉 Java - Eclipse SDKFile Edit Navigate Search Pngjiert: Run Window H?lip3 0十电艷 Problems- ®avadoc 爲 DeclarationConsoleATM (2) Java Application C:Program FiIesJavajre7binXjavaw.exe C2O13-5-24 下午 卜次匚;土欢迎使用XXX银行模拟ATM系统,请按如下歩噪操彳尹牙k*!用已有账户登录寰2 没有账户,开户*3.退出谴选择:1请输入银行卡号:1C 31请输入银行密码:11|2账户登录后界面*欢迎使用XXX银行模Matm系统,请按如下步骤操作*1.查询账户余额*2.1?款丈3 取款* 4转账士5 退卡请选择:注意事项:1、 本系统采用的编程环境是JDK1.7, jer7。所以,运行代码需要保持电脑上所装的 JDK为1.7以上版本,如有报错,只需换个高一点的版本即可。注意:第一次装JDK要配置环境变量(请查阅相关资料,比较简单)2、本系统代码涉及到包,所以如果报名不一致就会报错,解决方法:修改一下包名即 可3、 建议把各个类写在同一个包下面,且每一个类单独写一个java文件,如下图:个人收集整理,勿做商业用途寺 Java - Edipse SDKFile Edit Source Reiactor Navigate Search Project Run Window Help燐*0 绻审 湮flj & *含“”谓 Package Explorer匸 口T 心 BAM2 BAM02J BAM03j TJ BAM 04$ 角 srcJ com.qxAccountjava.fi ATM.java2j Bankjava了C red itAcc u nt J a va jj SavingA匚匸酋h J RE System Library jre7为 accounttxt4、在运行程序前,需要在项目下面新建一个account.txt (用来保存数据)文件(如上图),并在其中写入至少一个账户信息,(如下图,其中每项代表的意思,请读者参照代码内的注释),否则在初始化的时候会因为找不到账户信息,从而产生异常。Java - BAM&4/a«-ountt5rt - Edipr SDKFile Edit Navigate Search Project Run Window Help当曲 O* 含 ¥ * n g* '* - *tS Package Explorer 貝 *£ accciunrLtctL001,1004 张可箜f 321323, 0, 510 * 00 8AM心 BAMD2& BAM03 胡 8AMQ4田 coffi.qjc詞 Accownitjarva目 ATM.java国 Barik.java31 CreditAccountJava 血 Savi ngAccou ntjava RE Systtm Ubrary ”兰7j acccunrttxt系统源码:Account类个人收集整理,勿做商业用途package com.qx;/ 包名->1.储蓄账户2信用账户*账户类:包含两种账户类型*/public abstract classAcco unt /属性protectedlong id;protectedString password;protectedString n ame;protectedString pers onld;protectedint acco un tType;protecteddouble bala nee;/构造方法publicAcco un t()super ();publicAcco unt(long id, String password, String n ame. Stringpers onld,int accoutType, doublebala nee) super ();this.id = id;this.password=password;this.n ame = n ame;this.pers onld =pers onld;this.acco un tType = acco un tType;this.bala nee =bala nee;/getXxx,setXxx 方法public long getld() return id;public void setld( long id) this .id = id;public String getPassword() retur npassword;public void setPassword(Stri ng password) this .password = password;public String getName() return n ame;public void setName(Stri ng n ame) this .n ame = n ame;public String getPers onl d() retur npers onld;public void setPers onl d(Stri ng pers onld) this .pers onld = pers onld;public intgetAcco un tType() retur nacco un tType;public void setAcco un tType(intacco un tType) this.acco un tType = acco un tType;public doublegetBala nce() retur nbala nee;public void setBala nce( double bala nee) this .bala nee = bala nee;*存款*/public void deposit( doublemon ey)bala nee += mon ey;/*取款(取款方式由账户类型决定,所以设为抽象方法,相应的 象类)*/Acco unt类应设为抽public abstractvoid withdraw( doublemon ey);SavingAccoun类package com.qx;/*储蓄账户类*/exte nds Acco unt public classSavin gAcco unt/构造函数publicSavin gAcco un t() super ();publicSavin gAcco unt(long id, String password, String n ame,String pers onld.int acco un tType,doublebala nee) super (id, password, name, personld, accountType, balanee);/对父类的withdraw。 实现 public void withdraw( double mon ey)if (balanee < money) System. out .println(”对不起,账户余额不足!");elsebala nee -= mon ey;CresitAccoun类packagecom.qx;/*信用账户类,增加一个信用额度ceili ng属性*/publicclassCreditAcco untexte ndsAcco untprivate int ceili ng;/构造函数publicCreditAccou nt()super ();public CreditAcco unt( long id, String password, String n ame,intString pers onld,int acco un tType,double bala nee,ceili ng)super (id, password, name, personld, accountType, balanee); this .ceili ng = ceili ng;getXxx,setXxx 方法 public intgetCeili ng() return ceili ng;public void setCeili ng( int ceili ng) this .ceili ng = ceili ng;/实现父类的 withdraw。public void withdraw( double if (balanee + ceiling) < money) System. out .println("elsebala nee -= mon ey;mon ey)对不起,已超出您的信用额度!")Bank 类package com.qx;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotF oun dExcepti on;import java.io.FileReader;import java.io.FileWriter;import java.i o.I OExcepti on;import java.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对象以上的方法来操作自己的账户,请分析各个方法需要的参数*/public class Bank private Acco un t acco unts = new Acco un t20;private int number;/ 账户数目private int id = 1001;/确定银行账号从1001开始生成,即第一个账户的账号是1001/构造函数public Ban k()accounts=new Account20; 以后不足时扩容。nu mber = 0;BufferedReader bufReader = nu II;Properties props=System.getProperties();String path=props.getProperty("user.dir");try bufReader =new BufferedReader( new FileReader( new File(path,"acco un t.txt"); String s = bufReader.readL in e();while(s != n ull)Strin g str = s.split(",");if(str4.equals("0")Acco unt sav in gAcc = new Savi ngAcco un t(L on g.parseL on g(str0), str1.toString(), str2.toString(), str3.toStri ng(),I nteger.parseI nt(str4), Double.parseDouble(str5);acco untsnu mber = savi ngAcc;elseAcco unt creditAcc = new CreditAcco un t(L on g.parseL on g(str0), str1.toString(), str2.toString(), str3.toStri ng(),I nteger.parseI nt(str4), Double.parseDouble(str5),5000);acco untsnu mber = creditAcc;nu mber +;id+;.s = bufReader.readL in e(); catch (NumberFormatExcepti on e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace(); catch (FileNotF oun dExcepti on e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace(); catch (IOExcepti on e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace();fin allytry if(bufReader != null)bufReader.close(); catch (IOExceptio n e) / TODO Auto-ge nerated catch block e.pri ntStackTrace();/getXxx,setXxxpublic Acco un t getAcco un ts() retur n acco un ts;public void setAcco un ts(Acco un t acco un ts) this.acco unts = acco un ts;public int getNumber() retur n nu mber;public void setNumber(i nt nu mber) this .nu mber = nu mber;public in t getId() return id;public void setId(i nt id) this.id = id;*开户*/public Acco unt ope nAcco un t(Stri ng passwdl. String passwd2. String n ame.String pers onld, int type)/创建一个新账户Acco unt acco unt = n ull;/判断两次密码是否一致if(passwd1.equals(passwd2)II若一致,再判断账户类型(根据 type的值)if(type = 1)II可令开始余额为10,信用额度为5000acco unt = new CreditAcco un t(id, passwdl, n ame, pers onld, type, 10, 5000);elseacco unt = new Savin gAcco un t(id, passwdl, n ame, pers onld, type, 10);II将账户存入账户数组accou nts中II判断是否超出存储空间if(nu mber >= acco unts.len gth) II扩容Acco un t n ewAcco unts = new Acco un taccou nts.le ngth*2;IIcopy原来的相关数据System.arraycopy(acco un ts, 0, n ewAcco un ts, 0, acco unts.len gth);II 将 newAccounts赋给 accountsacco unts = n ewAcco un ts;acco un ts nu mber = acco unt;elseacco un ts nu mber = acco unt;System.out.println("开户成功! !账户信息见下");System.out.println(” 您的卡号为:"+id+"n"+"您的密码为:"+passwd1+"n"+"您 的户名为:"+n ame+"n"+"您的身份证号为:"+personld+"in"+"您的账户类型为:"+type+"n”);acco un t.acco un tType = type;nu mber+;id+;return account;此时开户成功elseSystem.out.println(”对不起!您两次密码输入不匹配,开户失败! !");return null;此时开户失败/*/保存数据public void saveAcco un tDate()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(i nt i = 0;i < acco unts.len gth;i+)/若存在账户if(acco un tsi != n ull)/写入账户信息到account.txtbufWriter.write(accou ntsi.id+","); bufWriter.write(acco un tsi.getPassword()+","); bufWriter.write(accou ntsi.getName()+",");bufWriter.write(acco un 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!=null)bufWriter.close(); catch (IOExceptio n e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace();/* *登录验证*/public Acco unt verifyAcco un t(l ong id, String password)Acco unt acco unt = n ull;for(i nt i = 0;i < acco unts.len gth;i+)/若存在账户if(acco un tsi != nu II)/验证id号和passwordif(id = acco un tsi.getld() && password.equals(acco un tsi.getPassword() acco unt = acco un tsi; break;/* elsebreak;retur n acco unt;retur n acco unt; / ATM类,提供用户界面操作 */public class ATM /属性private Bank bank;/构造函数*转账*/public void tran sferAcco un t(Acco unt acco un t1, Acco unt acco un t2, double 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) acco un t.deposit(m on ey);/*取款*/public void withdraw(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;public ATM() bank = new Ban k();main方法public static void main( Stri ng args) ATM atm = new ATM(); 实例化 Bank bank = atm.ba nk;/标号,判断是否退出一级菜单 boolea n firstFlag = true;while(firstFlag)ATM/ 一级菜单System.out.pri ntln("*欢迎使用XXX银行模拟ATM系统,请按如下步骤操作 *");System.out.pri ntl n("System.out.pri ntl n("System.out.pri ntl n("*1.用已有账户登录");*2.没有账户,*3.退出");开户");Scanner sca nner = new Sca nn er(System.i n);System.out.print(” 请选择:”); try int choice1 = sca nner.n ext In t(); switch(choice1)case 1:sca nner = new Sca nn er(System.i n); System.out.print("请输入银行卡号:"); long id = sca nner.n ext In t();sca nner = new Sca nn er(System.i n); System.out.print("请输入银行密码:"); 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.pri ntln("*“、欢迎使用XXX银行模拟ATM系System.out.pri ntln(”System.out.pri ntln(”System.out.pri ntln(”System.out.pri ntln(”System.out.pri ntln(”*1.查询账户余额");*2.存款");*3.取款");*4.转账");*5.退卡");sca nner = new Sca nn er(System.i n);System.out.print("请选择:");try int choice2 = sea nner.n extl nt();switch(choice2)case 1:System.out.println(”您账户的当前余额为: "+acco un t.getBala nce();break;case 2:sca nner = new Sca nn er(System.i n);System.out.print(”请输入您的存款金额:”);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.print(”请输入您的取款金额:”);double mon ey2 = sca nner.n extDouble();ban k.withdraw(acco unt, mon ey2);break;case 4:sca nner = new Sca nn er(System.i n);System.out.print(”请输入您要转入账户的卡号:");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.print("请输入您要转入账户的金 额:”);double money = sca nner.n extL on g();if(money <= acco un t.bala nee)ban k.tra nsferAcco un t(acco unt,acco unt2,mon ey);System.out.println(” 转账成功! ! !");elseSystem.out.println(”抱歉,您账户没有足 够的金额!请查看后重新选择输入!");elseSystem.out.println(”抱歉,没有找到您要转入的账户信息!请核对后重新选择输入!”);break;case 5:sec on dFlag = false; break;default:System.out.println(”没有该选项,请重新选择!");break; catch (Excepti on e) System.out.println(”选择输入不合法,请重新选择! ");elseSystem.out.println(”没有此账户,请先开户!”);break;case 2:/账号id由银行自动提供(从 1001递增)sca nner = new Sca nn er(System.i n);System.out.print("请输入账户密码:");String passwd1 = sca nner.n ext();sca nner = new Sca nn er(System.i n);System.out.print("请再输入账户密码:”);String passwd2 = sca nner.n ext();sca nner = new Sca nn er(System.i n);System.out.print("请输入户主姓名:”);String n ame = sca nner.n ext();sca nner = new Sca nn er(System.i n);System.out.print("请输入户主身份证号码:”);String pers onld = sca nner.n ext();sca nner = new Sca nn er(System.i n);System.out.print("请输入账户类型(0储蓄,1信用):”);int type = sca nner.n ext In t();ban k.ope nAcco un t(passwd1, passwd2, n ame, pers onld, type);break;case 3:ban k.saveAcco un tDate();firstFlag = false;break;default :System.out.println(”没有该选项,请重新选择!”);break; catch (Exceptio n e) System.out.println(”选择输入不合法,请重新选择!");System.out.println("谢谢使用!");转账验证(方法的重载)*/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 un tsi.getld() acco unt = acco un tsi; break;elsebreak;

    注意事项

    本文(BAM银行账户管理系统(java类).docx)为本站会员(scccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开