BAM银行账户管理系统java类.docx
《BAM银行账户管理系统java类.docx》由会员分享,可在线阅读,更多相关《BAM银行账户管理系统java类.docx(22页珍藏版)》请在冰豆网上搜索。
BAM银行账户管理系统java类
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.初始界面(账户登录)
2.账户登录后界面
注意事项:
1、本系统采用的编程环境是JDK1.7,jer7。
所以,运行代码需要保持电脑上所装的JDK为1.7以上版本,如有报错,只需换个高一点的版本即可。
注意:
第一次装JDK,要配置环境变量(请查阅相关资料,比较简单)
2、本系统代码涉及到包,所以如果报名不一致就会报错,解决方法:
修改一下包名即可
3、建议把各个类写在同一个包下面,且每一个类单独写一个java文件,如下图:
4、在运行程序前,需要在项目下面新建一个account.txt(用来保存数据)文件(如上图),并在其中写入至少一个账户信息,(如下图,其中每项代表的意思,请读者参照代码内的注释),否则在初始化的时候会因为找不到账户信息,从而产生异常。
系统源码:
Account类
packagecom.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;
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;
}
/**
*取款(取款方式由账户类型决定,所以设为抽象方法,相应的Account类应设为抽象类)
*/
publicabstractvoidwithdraw(doublemoney);
}
SavingAccount类
packagecom.qx;
/**
*储蓄账户类
*/
publicclassSavingAccountextendsAccount{
//构造函数
publicSavingAccount(){
super();
}
publicSavingAccount(longid,Stringpassword,Stringname,
StringpersonId,intaccountType,doublebalance){
super(id,password,name,personId,accountType,balance);
}
//对父类的withdraw()实现
publicvoidwithdraw(doublemoney){
if(balanceSystem.out.println("对不起,账户余额不足!
");
}
else
{
balance-=money;
}
}
}
CresitAccount类
packagecom.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类
packagecom.qx;
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(",");
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-generatedcatchblock
e.printStackTrace();
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(bufReader!
=null)
{
bufReader.close();
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
//getXxx,setXxx
publicAccount[]getAccounts(){
returnaccounts;
}
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[]
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.txt
bufWriter.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()));
bufWriter.newLine();
}
else
{
break;
}
}
bufWriter.flush();//清空缓存中的内容
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(bufWriter!
=null){
bufWriter.close();
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.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;
}
}
returnaccount;
}
/**
*转账验证(方法的重载)
*/
publicAccountverifyAccount(longid){
Accountaccount=null;
for(inti=0;i{//若存在账户
if(accounts[i]!
=null)
{//验证id号和password
if(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);
}
}
ATM类
packagecom.qx;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
impo