java面向對象練習---銀行業務模擬(數組+面向對象)

  1. 編程實現:
    a) 用戶類:賬號(int)、姓名(String)、密碼(int:6位數字)、地址(String)、存款餘額(double)、註冊時間(date)、開戶行(與銀行的名稱對應,String)
    b) 地址類:國家(String)、省份(String)、街道(String)、門牌號(String)
    c) 銀行類:能存儲100個用戶的庫([ ])、本銀行名稱(比如:中國工商銀行的昌平支行,String)
    i. 銀行功能
  2. 添加用戶(傳入參數:用戶,返回值:整型值(1:成功,2:用戶已存在,3:用戶庫已滿))
    a) 業務邏輯:先檢查該用戶的賬號在庫裏是否存在。若不存在則在用戶庫裏添加一個該用戶並返回代號1,若存在則返回代號2。另外在添加用戶的時候檢測用戶庫是否已註冊滿,若已滿則返回代號3
  3. 存錢(傳入值:用戶的賬號,存取的金額。返回值:布爾類型值)
    a) 業務邏輯:先根據傳入的賬號信息查詢用戶庫裏是否有該用戶。若沒有則返回false,若有,則將該用戶的金額存進去。
  4. 取錢(傳入值:用戶的賬號,用戶密碼,取錢金額。返回值:整型值(0:正常,1:賬號不存在,2:密碼不對,3:錢不夠))
    a) 業務邏輯:先根據賬號信息來查詢該用戶是否存在,若不存在,則返回代號1,若存在,則繼續判斷密碼是否正確,若不正確,則返回代號2。若賬號密碼都正確,則繼續判斷當前用戶的金額是否滿足要取出的錢,若不滿足,則返回代號3,若滿足,則將該用戶的金額減去。
  5. 轉賬(傳入值:轉出的賬號,轉入的賬號,轉出賬號的密碼,轉出的金額。返回值:0:正常,1:賬號不對,2密碼不對,3錢不夠)
    a) 業務邏輯:先查詢用戶庫是否存在轉出和轉入的賬號,若不存在則返回代號,1,若賬號都存在則繼續判斷轉出賬號的密碼是否正確,若不正確,則返回2,若正確則繼續判斷要轉出的金額是否足夠,若不夠則返回3,否則正常轉出,轉出的賬號金額要相對應的減少,轉入的金額相對應的增加。
  6. 查詢賬戶功能(傳入值:賬號,賬號密碼,返回值:空)
    a) 業務邏輯:先根據賬號判斷用戶庫是否存在該用戶,若不存在則打印提示信息:該不存在。否則繼續判斷密碼是否正確。若不正確則打印相對應的錯誤信息。若賬號和密碼都正確,則將該用戶的信息都打印出來,比如:當前賬號:xxxx,密碼:xxxxxx,餘額:xxxx元,用戶居住地址:xxxxxxxxxxxxx,當前賬戶的開戶行:xxxxxxxxxx.
    d) 界面類:在執行該入口程序時,就打印銀行業務選擇菜單:比如:
    i. java面向對象練習---銀行業務模擬(數組+面向對象)
    ii. 然後就開始處理各種輸入操作,直到業務處理完成!

答案:
1、地址類

class Address{
private String country;//國家
private String province;//省份
private String street;//街道
private String id;//門排號

public Address(){}
public Address(String country,String province,String street,String id){
    this.country = country;
    this.province = province;
    this.street = street;
    this.id = id;
}

public void setCountry(String country){
    this.country = country;
}

public String getCountry(){
    return this.country;
}

public void setProvince(String province){
    this.province = province;
}

public String getProvince(){
    return this.province;
}

public void setStreet(String street){
    this.street = street;
}

public String getStreet(){
    return this.street;
}

public void setId(String id){
    this.id = id;
}

public String getId(){
    return this.id;
}

}

2、用戶類

class User{
private int code;//賬號
private String name;//姓名
private int password;//密碼
private Address address;//地址
private double money;//存款餘額
private Date date;//註冊時間
private String openBankName;//開戶行

public User(){}

public User(int code,String name,int password,Address address,double money,Date date,String openBankName){
    this.code = code;
    this.name = name;
    this.password = password;
    this.address = address;
    this.money = money;
    this.date = date;
    this.openBankName = openBankName;
}

public void setCode(int code){
    this.code = code;
}

public int getCode(){
    return this.code;
}

public void setName(String name){
    this.name = name;
}

public String getName(){
    return this.name;
}

public void setPassword(int password){
    this.password = password;
}

public int getPassword(){
    return this.password;
}

public void setAddress(Address address){
    this.address = address;
}

public Address getAddress(){
    return this.address;
}

public void  setMoney(double money){
    this.money = money;
}

public double getMoney(){
    return this.money;
}

public void setDate(Date date){
    this.date = date;
}

public Date getDate(){
    return this.date;
}

public void setOpenBankName(String openBankName){
    this.openBankName = openBankName;
}

public String getOpenBankName(){
    return this.openBankName;
}

}

3、銀行類

class Bank{
private String bankName ;

static User[] users =  new User[10];

public Bank(){}

public Bank(String bankName){
    this.bankName = bankName;
}

public void setBankName(String bankName){
    this.bankName = bankName;
}

public String getBankName(){
    return this.bankName;
}

/**
    檢查用戶是否存在
*/
public boolean checkUser(int code){
    for (User u : users){
        if (u != null){
            if (u.getCode() == code){
                return true;
            }
        }
    }
    return false;
}

/**
    檢查用戶是否已滿
*/
public boolean isFullUser(){
    for (User user : users){
        if (user == null){
            return false;
        }
    }
    return true;
}

/**
    檢查用戶和密碼是否正確
*/
public boolean checkUserAndPassword(int userCode, int password){
    if (checkUser(userCode)){
        for (User u : users){
            if (u.getCode() == userCode){
                if (u.getPassword() == password){
                    return true;
                }
            }
        }
    }
    return false;
}

/**
    檢查錢是否夠
*/
public boolean checkMoney(int userCode,double money){
    for (User u : users){
        if (u.getCode() == userCode){
            if (u.getMoney() >= money){
                return true;
            }else{
                break;
            }
        }
    }
    return false;
}

/**
    添加用戶的方法
*/
public int  addUser(User user){
    if (checkUser(user.getCode())){
        return 2; 
    }else if (isFullUser()){
        return 3;
    }else{
        for (int i = 0;i < users.length ; i++){
            if (users[i] == null){
                users[i] = user;
                return 1;

// break;
}
}
}
return 1;
}

/**
    存錢方法
*/
public boolean saveMoney(int userCode,double money){
    if (!checkUser(userCode)){
        return false;
    }else{
        for (User u : users){
            if (u.getCode() == userCode){
                u.setMoney(u.getMoney() + money);
            }
        }
    }
    return true;
}

/**
    取錢方法
*/
public int takeMoney(int userCode,int password,double takeMoney){
    if (!checkUser(userCode)){
        return 1;
    }else if (!checkUserAndPassword(userCode,password)){
        return 2;
    }else if (!checkMoney(userCode,takeMoney)){
        return 3;
    }else{
        for (User u : users){
            if (u.getCode() == userCode){
                u.setMoney(u.getMoney() - takeMoney);
                break;
            }
        }
    }
    return 0;
}

/**
    轉賬方法
*/
public int transferMoney(int outCode,int inCode,int outpassword,double outMoney){
    if (!checkUser(outCode) && checkUser(inCode)){
        return 1;
    }else if (!checkUserAndPassword(outCode,outpassword)){
        return 2;
    }else if (!checkMoney(outCode,outMoney)){
        return 3;
    }else{
        saveMoney(inCode,outMoney);
        takeMoney(outCode,outpassword,outMoney);
    }
    return 0;
}

/**
    查詢賬戶
*/
public void selectUser(int userCode,int password){
    if (!checkUser(userCode)){
        System.out.println("該用戶不存在!");
    }else if (!checkUserAndPassword(userCode,password)){
        System.out.println("密碼錯誤!");
    }else{
        User u = null;
        Address address = null;
        for (User user : users){
            if (user.getCode() == userCode){
                u = user;
                address = u.getAddress();
                break;
            }
        }   
        System.out.println("當前賬戶爲:\t" + u.getName() + "\n賬號爲:" + userCode 
            + "\n密碼:" + password  + "\n餘額:" + u.getMoney() 
            + "\n用戶當前居住地址:\t" +  address.getCountry() + address.getProvince() + "市" 
            + address.getStreet() + address.getId() + "號!");
    }
}

}

4、頁面模擬類

class Page{
public static void welcomePage(){
System.out.println("**");
System.out.println(" 中國工商銀行 ");
System.out.println(" 賬戶管理系統 ");
System.out.println(" V1.0 ");
System.out.println("**");
System.out.println(" 1.開戶 ");
System.out.println(" 2.存錢 ");
System.out.println(" 3.取錢 ");
System.out.println(" 4.轉賬 ");
System.out.println(" 5.查詢 ");
System.out.println(" 6.bye! ");
System.out.println("**");
}
}

5、具體的測試類
import java.util.Date;
import java.util.Scanner;
public class Demo{
private static Scanner sc = new Scanner(System.in);
private static Bank bank = new Bank("中國工商銀行沙河支行");
public static void main(String[] args){
Page.welcomePage();
System.out.print("請輸入業務編號:");
int num = sc.nextInt();
if (num == 1){
System.out.print("請輸入賬戶號:");
int code = sc.nextInt();
System.out.print("\n請輸入用戶名:");
String name = sc.next();
System.out.print("\n請輸入密碼:");
int password = sc.nextInt();
System.out.print("\n請輸入輸入居住的地址,首先輸入國家:");
String country = sc.next();
System.out.print("\n請輸入省份:");
String province = sc.next();
System.out.print("\n請輸入街道:");
String street = sc.next();
System.out.print("\n請輸入門牌號:");
String id = sc.next();
System.out.print("\n請輸入您的賬戶的初始餘額:");
double money = sc.nextDouble();

        Address address = new Address(country,province,street,id);
        User user = new User(code,name,password,address,money,new Date(),bank.getBankName());
        int n = bank.addUser(user);
        if (n == 2){
            System.out.println("對不起,您輸入的賬戶已存在,無法開戶,請帶好證件到營業廳窗口辦理!");
        }else if (n == 3){
            System.out.println("對不起,當前銀行的用戶數已滿,請到其他銀行辦理業務!");
        }else if (n == 1){
            System.out.println("恭喜你,開戶成功下面是您的開戶信息:");
            bank.selectUser(code,password);
        }
    }else if (num == 2){

    }else if (num == 3){

    }else if (num == 4){

    }else if (num == 5){

    }else if (num == 6){
        System.out.println("Bye~~");
        System.exit(0);
    }
}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章