bam银行账户管理系统java类docx.docx
- 文档编号:16615565
- 上传时间:2023-07-15
- 格式:DOCX
- 页数:49
- 大小:105.19KB
bam银行账户管理系统java类docx.docx
《bam银行账户管理系统java类docx.docx》由会员分享,可在线阅读,更多相关《bam银行账户管理系统java类docx.docx(49页珍藏版)》请在冰点文库上搜索。
bam银行账户管理系统java类docx
.
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(balance 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) 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,存款数额,返回void 4. 用户取款,参数: id,取款数额,返回void 5. 查询余额,参数: 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-generatedcatchblock e.printStackTrace(); } } } //getXxx,setXxx publicAccount[]getAccounts(){ returnaccounts; Word专业资料 . } 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){ //创建一个新账户 Accountaccount=null; //判断两次密码是否一致 if(passwd1.equals(passwd2)){ //若一致,再判断账户类型(根据type的值) if(type==1){ //可令开始余额为10,信用额度为5000 account=newCreditAccount(id,passwd1,name,personId,type,10, 5000); } else { account=newSavingAccount(id,passwd1,name,personId,type,10); } //将账户存入账户数组accounts[]中 //判断是否超出存储空间 if(number>=accounts.length) {//扩容 Account[]newAccounts=newAccount[accounts.length*2];//copy原来的相关数据 System.arraycopy(accounts,0,newAccounts,0,accounts.length);//将newAccounts[]赋给accounts[] Word专业资料 . accounts=newAccounts; accounts[number]=account; } else { accounts[number]=account; } System.out.println("开户成功! ! ! 账户信息见下"); System.out.println("您的卡号为: "+id+"\n"+"您的密码为: "+passwd1+"\n"+" 您的户名为: "+name+"\n" +"您的身份证号为: "+personId+"\n"+"您的账户类型为: "+type+"\n"); account.accountType=type; number++; id++; returnaccount;//此时开户成功 } else { System.out.println("对不起! 您两次密码输入不匹配,开户失败! ! ! ");returnnull;//此时开户失败 } } /** *保存数据 */ publicvoidsaveAccountDate(){ BufferedWriterbufWriter=null; try{ Propertiesprops=System.getProperties(); Stringpath=props.getProperty("user.dir"); bufWriter=newBufferedWriter(newFileWriter(newFile(path,"account.txt"))); for(inti=0;i {//若存在账户if(accounts[i]! =null) { //写入账户信息到account.txtbufWriter.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())); Word专业资料 . bufWriter.newLine(); } else { break; } } bufWriter.flush();//清空缓存中的容 }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ try{ if(bufWriter! =null){ bufWriter.close(); } }catch(IOExceptione){ //TODOAuto-generatedcatchblocke.printStackTrace(); } } } /** *登录验证 */ publicAccountverifyAccount(longid,Stringpassword){ Accountaccount=null; for(inti=0;i {//若存在账户if(accounts[i]! =null) {//验证id号和password if(id==accounts[i].getId()&&password.equals(accounts[i].getPassword())) { account=accounts[i]; break; } } else { break; } } Word专业资料 . returnaccount; } /** *转账验证(方法的重载) */ publicAccountverifyAccount(longid){ Accountaccount=null; for(inti=0;i {//若存在账户if(accounts[i]! =null) {//验证id号和passwordif(id==accounts[i].getId()) { account=accounts[i]; break; } } else { break; } } returnaccount; } /** *转账 */ publicvoidtransferAccount(Accountaccount1,Accountaccount2,doublemoney){account1.withdraw(money); account2.deposit(money); } /** *存款 */ publicvoiddeposit(Accountaccount,doublemoney){ account.deposit(money); } /** *取款 */ publicvoidwithdraw(Accountaccount,doublemoney){ account.withdraw(money); } Word专业资料 . } ATM类 package.qx; importjava.io.BufferedReader; importjava.io.BufferedWriter; importjava.io.File; importjava.io.FileReader; importjava.io.FileWriter; importjava.util.Properties; importjava.util.Scanner; /** *ATM类,提供用户界面操作 */ publicclassATM{ //属性 privateBankbank; //构造函数 publicATM(){ bank=newBank(); } //main方法 publicstaticvoidmain(String[]args){ ATMatm=newATM();//实例化ATM Bankbank=atm.bank; //标号,判断是否退出一级菜单 b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- bam 银行 账户 管理 系统 java docx