银行转账模块
银行转账分析设计
一、系统定义
银行转账系统是银行系统其中一个子系统,也是比较重要的模块,它实现了用户与其他用户、用户与自己其它本行账号或者其它行账号之间的金额交流,是银行货币流通的重要环节。它实现了由本人的活期账户中将款项转到自己或他人的活期账户或信用卡账户中。 输入账户金额,进行核对,核对通过后可进行交易;不通过则返回重新输入。确认后提交易,更改双方用户账户信息,返回给用户账户信息,记录交易内容。
银行转账系统又分为本行转账和它行转账,本行转账不需要收取手续费,外行转账则需要收取手续费并调用外行转账模块来处理转账。
1. 银行转账用例描述
银行转账用例包含以下几个: 1. 存款:存钱到自己账户里面
2. 取款:从账户里面取钱出来
3. 转账:由于转账既可以在同一银行之间进行,也可以在不同的银行之间进行,因此这里
用了二个用例,使用本行转账和跨行转账来描述。他行转账是将当前账户的金额转向其他银行自己或者他人的账户;本行转账是将当前账户的金额转向同行自己的其它账户或者同行他人的账户。
1.1用例中的类
1.2用例的业务逻辑
用例名:转账
前置条件:用户已登录账户,输入对方的账户信息和转账金额 后置条件:转账成功扣除账户的余额,并记录转账信息 事件流:
1.输入对方的账号 2.输入转账金额
3.检查用户账户余额是否充足,若充足则继续否则提示错误并回到第2步 4.检查对方的账户是否存在,若存在则继续否则提示错误并回到第1步 5.检查是行内转账还是外行转账 6.处理行内转账或外行转账 7.转账成功
转账用例的活动图如下
:
同一银行转账顺序图:
(1)用户在系统主界面请求转账操作,系统创建转账界面。 (2)用户输入转账信息
(3)数据库账户类确认是否存在该账户,并确认账户中的金额是否足够支付转账款项,如可足够支付则计算新的账户余额,更新数据库中该账户的信息,发送消息给转账类,创建转账交易记录,保存转账交易记录。
(4)转账信息传递给账户(转入),查询该账户是否存在。如存在计算账户余额,然后更新数据库的数据。发送消息给转账类,创建转账交易记录,保存转账交易记录。
不同银行转账顺序图:
(1)用户在系统主界面请求转账操作,系统创建转账界面。 (2)用户输入转账信息
(3)数据库的账户类确认是否存在该账户,并确认账户中的金额是否足够支付转账款项,如可足够支付则计算新的账户余额,更新数据库中该账户的信息,发送消息给转账类,创建转账交易记录,保存转账交易记录。 (4)最后,发送转账通知到另一家银行。
1.3需求描述术语表
类图描述:
账户:用户注册的账户,里面包含金额和其他基本信息 转账信息:用户转账的记录
二、概要设计 2.1体系结构
本系统采用MVC架构,表示层显示系统应用界面,逻辑层对用户的操作进行逻辑处理,数据库层对数据库进行读写操作。MVC架构的分层降低了耦合度使系统更加的内聚。
三、详细设计
银行转账模块将自己账户存款余额转到他人的账户余额上,要考虑到账户余额不足时可以存款,能实现行内转账和外行转账。 归纳功能点为: 1) 存款 2) 行内转账 3) 外行转账
3.1类图描述
3.2方法列表
3.3方法说明
四、程序代码
Account.java: package models;
public class Account { private String accountNumber;
private String password;
private String name;
private Double deposits;
public String getAccountNumber() { return accountNumber;
}
public void setAccountNumber(String accountNumber) { } }
this.accountNumber = accountNumber;
public String getPassword() {
return password;
public void setPassword(String password) { this.password = password; }
public String getName() { }
return name;
public void setName(String name) { this.name = name; }
public Double getDeposits() { return deposits;
}
public void setDeposits(Double deposits) { } }
this.deposits = deposits;
public Account(String accoutNumber, String password, String name,
Double deposits) {
this.accountNumber = accoutNumber; this.password = password; this.name = name;
this.deposits = deposits;
}
ITransfer.java: package models;
public interface ITransfer { public int transfer(Account a, Account b, Double amount); }
InTransfer.java: package models;
public class InTransfer implements ITransfer{ }
@Override
public int transfer(Account a, Account b, Double amount) { }
}
if(a.getDeposits()
Double deposits = b.getDeposits() + amount; b.setDeposits(deposits);
a.setDeposits(a.getDeposits() - amount); return 1;
AccountController.java: package controllers; import models.Account;
public class AccountController { public static void depositAction(Account account, Double money) { }
}
account.setDeposits(account.getDeposits() + money);
OutTransfer.java: package models;
public class OutTransfer implements ITransfer{ public int transfer(Account a, Account b, Double amount) { if(a.getDeposits()
TransferController.java: package controllers; import models.Account; import models.ITransfer;
public class TransferController { public static int transferAction(Account a, Account b, Double amount, ITransfer bank) {
}
return bank.transfer(a, b, amount); }
}
Double deposits = b.getDeposits() + amount; b.setDeposits(deposits);
a.setDeposits(a.getDeposits() - amount); return 1;
}
IndexView.java: package view;
import controllers.TransferController; import models.Account; import models.InTransfer;
import models.OutTransfer; public class IndexView { public static void main(String[] args) { }
}
Account x = new Account("62260000", "1", "林", 100D); Account y = new Account("62260001", "2", "王", 200D); Account z= new Account("62260002", "3", "李", 50D); InTransfer bank = new InTransfer(); //本行转账 TransferController.transferAction(x, y, 20D, bank);
OutTransfer bank2 = new OutTransfer(); //它行转账 TransferController.transferAction(x, z, 30D, bank2); System.out.println(a.getDeposits()); System.out.println(b.getDeposits()); System.out.println(c.getDeposits());