实现一个简单的银行管理系统
项目需求:
实现多个银行卡账户的注册和登录,登录成功后,可以实现银行卡的存钱,取钱,转账,查询余额,退卡一系列功能。
要求:未注册的账户不能登录。
思路:
需要写4个类:人、银行、银行卡、主函数。
①人:类中需要写存钱、取钱、转账、查询余额和退卡五个功能
②银行:类中需要写用户登录、注册及退卡三个主要功能
③银行卡:银行卡的属性→卡号、密码、卡内的存款
④主函数:对上面三个函数进行调用。
代码:
1、Person类:
import java.util.Scanner;
public class Person {
Scanner scanner = new Scanner(System.in);
/**
* 存钱
* @param card
*/
public void save(BankCard card) {
System.out.print("请输入存款金额:");
double n = scanner.nextDouble();
if (n > 0) { //存款钱数大于0
System.out.println("存款成功!");
card.setMoney(card.getMoney() + n); //存款后的钱数=之前余额+存入的。
}else {
System.out.println("请正确输入!");
return;
}
}
/**
* 取钱
* @param card
*/
public void withdraw(BankCard card) {
System.out.print("请输入取款金额:");
double n1 = scanner.nextDouble(); //取出的钱数
double n2 = card.getMoney(); //卡内的钱数
if (n1 <= n2){ // 取钱数小于卡内的钱数
card.setMoney(n2-n1); //取款后的钱数= 卡内余额-取出的
System.out.println("取款成功!"+"本次取出:"+n1+"元");
}else {
System.out.println("余额不足!");
return;
}
}
/**
* 转账
* @param destCard 当前账户
*/
public void transfer(BankCard destCard,BankCard[] bankCards,int usedsize) {
int count = 1;
while (count <= 3) {
System.out.print("请输入对方账户ID:");
int id = scanner.nextInt(); //目的账户
for (int i = 0; i < usedsize; i++) {
if (bankCards[i].getId() == id && bankCards[i].getId() != destCard.getId()) { //对方账户必须是注册过的.并且不能给自己转
System.out.println("请输入转账金额:" );
double m = scanner.nextDouble();
if (m <= destCard.getMoney()) { //转账的钱小于卡内余额
destCard.setMoney(destCard.getMoney() - m);//转账后当前账户的余额
bankCards[i].setMoney(bankCards[i].getMoney() + m); //对方账户收到转账后的钱数
System.out.println("转账成功");
System.out.println("当前卡内余额为:" + destCard.getMoney());
return;
} else {
System.out.println("余额不足!");
}
}
}count++;
System.out.println("请输入对方正确的账户ID"+"您还有"+(3-count)+"次机会!");
}
}
/**
* 查询当前账户的余额
* @param Card
*/
public void getBalance(BankCard Card) {
System.out.println("当前银行卡余额:"+Card.getMoney());
}
}
2、Bank类:
import java.util.Arrays;
import java.util.Scanner;
public class Bank {
private BankCard[] bankCards; //一维数组:放银行卡 //BankCard类型的数组,存储id,password
private int usedSize; //计数!
public Bank() {
this(10); //初始为10
}
public Bank(int size) {
this.bankCards = new BankCard[size];
this.usedSize = 0;
}
/**
* 用户登录
* @param id
* @param password
* @return
*/
public BankCard login(int id, int password) {
for(int i = 0;i < this.bankCards.length;i++) { //登录
if(bankCards[i].getId() == id && bankCards[i].getPassword()==password) {
System.out.println("登录成功!");
return bankCards[i];
}
}
System.out.println("登录失败,系统没有这个账户或者账户密码错误!");
return null;
}
/**
* 用户注册
* @param id
* @param password
*/
public void register(int id,int password) {
//1、查看是否注册过!
for(int i = 0;i < this.usedSize; i++){
if(bankCards[i].getId()==id && bankCards[i].getPassword()== password){
System.out.println("这个账户注册过,请注册一个新的账户!");
return;
}
}
//2、查看当前银行卡数组是否已经注册满,满了则进行扩容
if(isFull()){
incBackCard();
}
this.bankCards[this.usedSize++] = new BankCard(id,password);
}
public boolean isFull() { //判满
if(this.bankCards.length == this.usedSize){
System.out.println("已满");
return true;
}
return false;
}
//如果满了 那么进行扩容 1
public void incBackCard() {
this.bankCards = Arrays.copyOf(this.bankCards,2*this.bankCards.length);
}
//登录成功的操作
public void operateLoginSuccess(Person person, int n, BankCard card){
switch (n) {
case 1:
person.save(card);
break;
case 2:
person.withdraw(card);
break;
case 3:
person.getBalance(card);
break;
case 4:
person.transfer(card,this.bankCards, this.usedSize);
break;
default: break;
}
}
public void operate(Person person) {
int count = 0;
while (count<2) {
System.out.println("========欢迎来到银行管理系统========");
System.out.println("1.登陆 2.注册 3.退出");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
if(n == 3){
return;
}
System.out.println("请输入账号:");
int id = scanner.nextInt();
System.out.println("请输入密码:");
int passwd = scanner.nextInt();
switch (n) {
case 1:
BankCard card = login(id, passwd);
if(card != null){//登陆成功
//登陆成功的操作内容
System.out.println("========登录成功========");
while (true) {
System.out.println("========请输入你的操作========");
System.out.println("1 存钱 2 取钱 3 查看余额 4 转账 5 退卡");
n = scanner.nextInt();
if(n == 5){
break;
}
operateLoginSuccess(person,n, card);
}
}else{//登陆失败
System.out.println("登录失败!");
count++;
}
break;
case 2:
register(id, passwd);
break;
}
}
}
}
3、BankCard类:
public class BankCard { //银行卡
private int id;//银行卡id
private int password;//银行卡密码
private double money;//卡内的钱
public BankCard (int id,int password) { //构造方法
this.id = id;
this.password = password;
}
//调用一系列的get、set方法进行初始化id,pw和money
public int getId() {
return id;
}
public void setId() {
this.id = id;
}
public int getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
4、Main:
public class Main {
public static void main(String[] args) {
Person person = new Person();
Bank bank = new Bank();
bank.operate(person);
}
}
实现:
1.注册
2.登录
3.操作