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

上传人:b****1 文档编号:1928626 上传时间:2023-05-02 格式:DOCX 页数:27 大小:148.34KB
下载 相关 举报
BAM银行账户管理系统java类.docx_第1页
第1页 / 共27页
BAM银行账户管理系统java类.docx_第2页
第2页 / 共27页
BAM银行账户管理系统java类.docx_第3页
第3页 / 共27页
BAM银行账户管理系统java类.docx_第4页
第4页 / 共27页
BAM银行账户管理系统java类.docx_第5页
第5页 / 共27页
BAM银行账户管理系统java类.docx_第6页
第6页 / 共27页
BAM银行账户管理系统java类.docx_第7页
第7页 / 共27页
BAM银行账户管理系统java类.docx_第8页
第8页 / 共27页
BAM银行账户管理系统java类.docx_第9页
第9页 / 共27页
BAM银行账户管理系统java类.docx_第10页
第10页 / 共27页
BAM银行账户管理系统java类.docx_第11页
第11页 / 共27页
BAM银行账户管理系统java类.docx_第12页
第12页 / 共27页
BAM银行账户管理系统java类.docx_第13页
第13页 / 共27页
BAM银行账户管理系统java类.docx_第14页
第14页 / 共27页
BAM银行账户管理系统java类.docx_第15页
第15页 / 共27页
BAM银行账户管理系统java类.docx_第16页
第16页 / 共27页
BAM银行账户管理系统java类.docx_第17页
第17页 / 共27页
BAM银行账户管理系统java类.docx_第18页
第18页 / 共27页
BAM银行账户管理系统java类.docx_第19页
第19页 / 共27页
BAM银行账户管理系统java类.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《BAM银行账户管理系统java类.docx》由会员分享,可在线阅读,更多相关《BAM银行账户管理系统java类.docx(27页珍藏版)》请在冰点文库上搜索。

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

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;

ﻩprotectedString name;

ﻩprotectedStringpersonId;

ﻩprotected intaccountType;

protecteddoublebalance;

//构造方法

ﻩpublicAccount(){

super();

ﻩ}

public Account(longid,Stringpassword,Stringname,StringpersonId,

ﻩintaccoutType,double balance){

ﻩsuper();

ﻩthis。

id = id;

this。

password=password;

this。

name = name;

ﻩthis.personId=personId;

this.accountType= accountType;

ﻩthis.balance=balance;

ﻩ}

ﻩ//getXxx,setXxx方法

public long getId(){

ﻩreturn id;

ﻩ}

ﻩpublicvoidsetId(longid){

ﻩthis.id=id;

ﻩpublicStringgetPassword(){

ﻩreturn password;

ﻩpublicvoidsetPassword(Stringpassword) {

ﻩthis.password= password;

publicString getName(){

ﻩreturnname;

ﻩpublicvoidsetName(Stringname) {

ﻩthis.name= name;

ﻩ}

ﻩpublicString getPersonId(){

ﻩreturnpersonId;

}

public voidsetPersonId(StringpersonId){

ﻩthis.personId=personId;

ﻩpublicintgetAccountType(){

returnaccountType;

ﻩpublicvoid setAccountType(intaccountType) {

ﻩthis。

accountType =accountType;

ﻩ}

publicdouble getBalance(){

ﻩreturnbalance;

}

ﻩpublic voidsetBalance(double balance){

ﻩthis.balance=balance;

ﻩ}

ﻩ/**

*存款

*/

public void deposit(doublemoney){

ﻩbalance+= money;

ﻩ}

ﻩ/**

ﻩ*取款(取款方式由账户类型决定,所以设为抽象方法,相应的Account类应设为抽象类)

*/

publicabstractvoid withdraw(doublemoney);

}

SavingAccount类

packagecom.qx;

/**

*储蓄账户类

*/

publicclassSavingAccountextendsAccount {

//构造函数

ﻩpublicSavingAccount(){

ﻩsuper();

ﻩ}

publicSavingAccount(long id,String password,Stringname,

ﻩString personId,intaccountType,double balance){

ﻩsuper(id, password,name, personId,accountType, balance);

ﻩ}

ﻩ//对父类的withdraw()实现

ﻩpublicvoid withdraw(double money){

ﻩif(balance 〈money){

ﻩﻩSystem。

out.println("对不起,账户余额不足!

");

ﻩﻩ}

ﻩﻩelse

ﻩﻩ{

balance-= money;

ﻩ}

ﻩ}

CresitAccount类

packagecom。

qx;

/**

 *信用账户类,增加一个信用额度ceiling属性

*/

publicclassCreditAccount extendsAccount{

privateintceiling;

ﻩ//构造函数

ﻩpublic CreditAccount(){

ﻩsuper();

publicCreditAccount(longid,Stringpassword,Stringname,

ﻩStringpersonId,intaccountType,doublebalance,intceiling){

ﻩsuper(id,password,name,personId,accountType,balance);

ﻩﻩthis.ceiling =ceiling;

}

//getXxx,setXxx方法

publicintgetCeiling() {

returnceiling;

}

public voidsetCeiling(intceiling){

this.ceiling=ceiling;

}

//实现父类的withdraw()

ﻩpublic voidwithdraw(double money){

if((balance +ceiling)

ﻩSystem。

out.println("对不起,已超出您的信用额度!

”);

}

ﻩelse

ﻩ{

ﻩﻩﻩbalance-=money;

ﻩ}

Bank类

packagecom.qx;

importjava.io.BufferedReader;

importjava。

io.BufferedWriter;

import java.io.File;

import java.io。

importjava.io.;

import java。

io。

;

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(new (new,"account.txt")));

ﻩString s =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= new CreditAccount(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—generated catchblock

ﻩe.printStackTrace();

ﻩﻩ}catch(e){

ﻩﻩ//TODOAuto-generatedcatch block

ﻩﻩe。

printStackTrace();

}catch (IOExceptione) {

ﻩ//TODO Auto-generatedcatchblock

ﻩﻩe.printStackTrace();

ﻩ}finally{

ﻩtry {

ﻩﻩﻩif(bufReader!

=null)

ﻩ{

ﻩﻩﻩﻩbufReader。

close();

ﻩﻩﻩﻩ}

ﻩﻩ}catch(IOExceptione) {

ﻩﻩﻩﻩ//TODOAuto—generatedcatchblock

ﻩe。

printStackTrace();

ﻩﻩ}

ﻩﻩ}

//getXxx,setXxx

ﻩpublic Account[]getAccounts(){

return accounts;

ﻩ}

ﻩpublic void setAccounts(Account[]accounts){

this。

accounts= accounts;

ﻩpublic intgetNumber(){

ﻩreturnnumber;

}

ﻩpublicvoid setNumber(intnumber){

this。

number=number;

ﻩ}

publicintgetId() {

ﻩreturnid;

publicvoid setId(intid){

ﻩthis.id=id;

ﻩ}

/**

*开户

ﻩ*/

ﻩpublicAccount openAccount(Stringpasswd1, String passwd2,Stringname,

ﻩﻩStringpersonId,inttype){

ﻩ//创建一个新账户

ﻩAccount account= null;

ﻩﻩ//判断两次密码是否一致

ﻩif(passwd1.equals(passwd2)){

ﻩﻩﻩ//若一致,再判断账户类型(根据type的值)

ﻩﻩif(type ==1){

ﻩﻩ//可令开始余额为10,信用额度为5000

ﻩﻩaccount=new CreditAccount(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("对不起!

您两次密码输入不匹配,开户失败!

!

");

ﻩﻩreturn null;//此时开户失败

ﻩ}

ﻩ/**

*保存数据

ﻩ*/

publicvoidsaveAccountDate(){

ﻩﻩBufferedWriterbufWriter=null;

ﻩﻩtry{

ﻩﻩﻩProperties props=System.getProperties();

ﻩStringpath=props。

getProperty("user.dir");

ﻩﻩbufWriter=newBufferedWriter(new(new,”account。

txt")));

for(int i =0;i〈 accounts。

length;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—generatedcatch block

ﻩe.printStackTrace();

}finally{

ﻩﻩtry{

ﻩif(bufWriter!

=null){

ﻩﻩﻩbufWriter。

close();

ﻩﻩ}

} catch(IOExceptione){

ﻩﻩ//TODOAuto-generated catchblock

ﻩﻩﻩe.printStackTrace();

}

ﻩ}

ﻩ}

ﻩ/**

*登录验证

ﻩ*/

public AccountverifyAccount(longid,String password){

ﻩAccount account=null;ﻩ

ﻩﻩfor(inti=0;i< accounts.length;i++)

{//若存在账户

ﻩﻩif(accounts[i]!

=null)

{ﻩ//验证id号和password

if(id == accounts[i]。

getId()&& password.equals(accounts[i].getPassword()))

ﻩﻩ{

ﻩﻩaccount = accounts[i];

ﻩﻩﻩbreak;

ﻩﻩﻩ}

ﻩﻩelse

ﻩﻩ{

ﻩﻩbreak;

ﻩﻩ}

ﻩﻩ}

ﻩreturn account;

ﻩ}

/**

ﻩ *转账验证(方法的重载)

*/

publicAccountverifyAccount(longid){

Accountaccount=null;

ﻩﻩfor(inti=0;i< accounts。

length;i++)

ﻩﻩ{//若存在账户

ﻩﻩﻩif(accounts[i]!

= null)

ﻩ{//验证id号和password

ﻩif(id==accounts[i]。

getId())

ﻩﻩ{

ﻩﻩﻩaccount=accounts[i];

ﻩﻩbreak;

ﻩﻩ}

ﻩ}

ﻩﻩelse

ﻩ{

ﻩbreak;

ﻩﻩﻩ}

ﻩ}

ﻩreturnaccount;

ﻩ/**

ﻩ *转账

ﻩ */

publicvoidtransferAccount(Accountaccount1,Accountaccount2,double money){

ﻩﻩaccount1。

withdraw(money);

ﻩaccount2.deposit(money);

ﻩ}

ﻩ/**

*存款

ﻩ*/

publicvoiddeposit(Accountaccount, doublemoney){

ﻩﻩaccount.deposit(money);

/**

ﻩ *取款

ﻩ */

public voidwithdraw(Accountaccount,doublemoney){

account.withdraw(money);

ﻩ}

}

ATM类

packagecom.qx;

import java.io.BufferedReader;

import java。

io.BufferedWriter;

importjava。

io.File;

importjava.io。

;

importjava.io.;

importjava。

util.Properties;

import java.util.Scanner;

/**

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2