By GokiSoft.com| 18:19 09/05/2020|
Java Basic

Share Code - Quản lý ATM - Quản lý tài khoản ngân hàng

Share Code - Quản lý ATM - Quản lý tài khoản ngân hàng

https://gokisoft.com/java-basic-quan-ly-atm-quan-ly-tai-khoan-ngan-hang.html


#Account.java


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package overview.lession2;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 *
 * @author Diep.Tran
 */
public class Account implements IFileInfor{
    String fullname, stk, phoneNumber, address;
    int money;
    
    List<Receiver> receiverList = new ArrayList<>();
    List<Transfer> transferList = new ArrayList<>();

    public Account() {
    }

    public Account(String fullname, String stk, String phoneNumber, String address, int money) {
        this.fullname = fullname;
        this.stk = stk;
        this.phoneNumber = phoneNumber;
        this.address = address;
        this.money = money;
    }

    public String getFullname() {
        return fullname;
    }

    public void setFullname(String fullname) {
        this.fullname = fullname;
    }

    public String getStk() {
        return stk;
    }

    public void setStk(String stk) {
        this.stk = stk;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getAddress() {
        return address;
    }

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

    public int getMoney() {
        return money;
    }

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

    public List<Receiver> getReceiverList() {
        return receiverList;
    }

    public List<Transfer> getTransferList() {
        return transferList;
    }
    
    public void input() {
        Scanner scan = new Scanner(System.in);
        System.out.println("Nhap Ho & Ten: ");
        fullname = scan.nextLine();
        
        System.out.println("Nhap STK: ");
        stk = scan.nextLine();
        
        System.out.println("Nhap SDT: ");
        phoneNumber = scan.nextLine();
        
        System.out.println("Nhap dia chi: ");
        address = scan.nextLine();
        
        money = 0;
    }
    
    public void addReceiver() {
        Receiver receiver = new Receiver();
        receiver.input();
        
        receiverList.add(receiver);
        
        //Cong tien vao tai khoan
        money += receiver.getMoney();
    }
    
    public void transfer() {
        Transfer transfer = new Transfer();
        transfer.input(money);
        
        transferList.add(transfer);
        
        //Tru tien trong TK
        money -= transfer.getMoney();
    }
    
    public void displayReceiverHistory() {
        System.out.println("Lich su nhan tien: ");
        receiverList.forEach((receiver) -> {
            receiver.display();
        });
    }
    
    public void displayTransferHistory() {
        System.out.println("Lich su chuyen tien: ");
        transferList.forEach((transfer) -> {
            transfer.display();
        });
    }

    @Override
    public String toString() {
        return "Account{" + "fullname=" + fullname + ", stk=" + stk + ", phoneNumber=" + phoneNumber + ", address=" + address + ", money=" + money + '}';
    }
    
    public void display() {
        System.out.println(toString());
        
//        displayReceiverHistory();
//        
//        displayTransferHistory();
    }
    
    public static String getHeader() {
        return "Infor:";
    }
    
    @Override
    public String getFileInfor() {
        return fullname+","+stk+","+phoneNumber+","+address+","+money;
    }
    
    @Override
    public void putFileInfor(String str) {
        String[] param = str.split(",");
        fullname = param[0];
        stk = param[1];
        phoneNumber = param[2];
        address = param[3];
        money = Integer.parseInt(param[4]);
    }
}


#IFileInfor.java


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package overview.lession2;

/**
 *
 * @author Diep.Tran
 */
public interface IFileInfor {
    String getFileInfor();
    
    void putFileInfor(String data);
}


#Main.java


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package overview.lession2;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Diep.Tran
 */
public class Main {
    static Scanner scan = new Scanner(System.in);
    static Account account = null;
    
    public static void main(String[] args) {
        login();
        System.out.println("Next Step!!!");
        int choose;
        
        do {
            showMenu();
            choose = Integer.parseInt(scan.nextLine());
            
            switch(choose) {
                case 1:
                    account = new Account();
                    account.input();
                    break;
                case 2:
                    if(account != null) {
                        account.addReceiver();
                        
                        account.display();
                    } else {
                        System.err.println("TK khong ton tai");
                    }
                    break;
                case 3:
                    if(account != null) {
                        account.transfer();
                        account.display();
                    } else {
                        System.err.println("TK khong ton tai");
                    }
                    break;
                case 4:
                    if(account != null) {
                        account.displayReceiverHistory();
                    } else {
                        System.err.println("TK khong ton tai");
                    }
                    break;
                case 5:
                    
                    if(account != null) {
                        account.displayTransferHistory();
                    } else {
                        System.err.println("TK khong ton tai");
                    }
                    break;
                case 6:
                    saveFile();
                    break;
                case 7:
                    readFile();
                    break;
                case 8:
                    System.out.println("Thoat!!!");
                    break;
                default:
                    System.out.println("Nhap sai!!!");
                    break;
            }
        } while(choose != 8);
    }
    
    static void saveFile() {
        FileOutputStream fos = null;
        
        try {
            fos = new FileOutputStream("account.txt");
            
            //save thong tin tk
            //header
            String line = Account.getHeader() + "\n";
            fos.write(line.getBytes());
            //than
            line = account.getFileInfor() + "\n";
            fos.write(line.getBytes());
            
            //Luu lich su nhan tien
            line = Receiver.getHeader() + "\n";
            fos.write(line.getBytes());
            for (Receiver receiver : account.getReceiverList()) {
                line = receiver.getFileInfor()+ "\n";
                fos.write(line.getBytes());
            }
            
            //Luu lich su chuyen tien
            line = Transfer.getHeader() + "\n";
            fos.write(line.getBytes());
            for (Transfer transfer : account.getTransferList()) {
                line = transfer.getFileInfor()+ "\n";
                fos.write(line.getBytes());
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if(fos != null) {
                try {
                    fos.close();
                } catch (IOException ex) {
                    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
    
    static void readFile() {
        
    }
    
    static void showMenu() {
        System.out.println("1. Khoi tao TK");
        System.out.println("2. Nap tien");
        System.out.println("3. Chuyen tien");
        System.out.println("4. Xem lich su nap tien");
        System.out.println("5. Xem lich su chuyen tien");
        System.out.println("6. Luu");
        System.out.println("7. Doc du lieu");
        System.out.println("8. Thoat");
        System.out.println("Chon: ");
    }
    
    static void login() {
        System.out.println("===== WELCOME ======");
        System.out.println("User Name: ");
        String username = scan.nextLine();
        
        System.out.println("Password: ");
        String password = scan.nextLine();
        
        if(username.equalsIgnoreCase("dieptv") && password.equals("Gokisoft123")) {
            System.out.println("Login Success!!!");
        } else {
            System.err.println("Login Failed!!!");
            //de quy.
            login();
        }
    }
}


#Receiver.java


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package overview.lession2;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Diep.Tran
 */
public class Receiver implements IFileInfor{
    int money;
    String note;
    Date createdAt;

    public Receiver() {
    }

    public int getMoney() {
        return money;
    }

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

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public Date getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }
    
    public void input() {
        System.out.println("Nhap thong tin nap tien:");
        Scanner scan = new Scanner(System.in);
        
        System.out.println("Nhap so tien: ");
        money = Integer.parseInt(scan.nextLine());
        
        System.out.println("Nhap noi dung ghi chu: ");
        note = scan.nextLine();
        
        createdAt = new Date();
    }

    @Override
    public String toString() {
        return "Receiver{" + "money=" + money + ", note=" + note + ", createdAt=" + getCreatedAtString() + '}';
    }
    
    public String getCreatedAtString() {
        SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss dd/MM/yyyy");
        String str = format.format(createdAt);
        
        return str;
    }
    
    public void display() {
        System.out.println(toString());
    }

    public static String getHeader() {
        return "Receiver:";
    }

    @Override
    public String getFileInfor() {
        return money+","+note+","+getCreatedAtString();
    }

    @Override
    public void putFileInfor(String data) {
        try {
            String[] param = data.split(",");
            money = Integer.parseInt(param[0]);
            
            note = param[1];
            
            SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss dd/MM/yyyy");
            createdAt = format.parse(param[2]);
        } catch (ParseException ex) {
            Logger.getLogger(Receiver.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}


#Transfer.java


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package overview.lession2;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Diep.Tran
 */
public class Transfer implements IFileInfor{
    String transferStk, note;
    int money;
    Date createdAt;

    public Transfer() {
    }

    public String getTransferStk() {
        return transferStk;
    }

    public void setTransferStk(String transferStk) {
        this.transferStk = transferStk;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public int getMoney() {
        return money;
    }

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

    public Date getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }
    
    public void display() {
        System.out.println(toString());
    }
    
    public void input(int maxMoney) {
        System.out.println("Nhap thong tin nap tien:");
        Scanner scan = new Scanner(System.in);
        
        System.out.println("Nhap STK nhan: ");
        transferStk = scan.nextLine();
        
        for(;;) {
            System.out.println("Nhap so tien: ");
            money = Integer.parseInt(scan.nextLine());
            
            if(money <= maxMoney) {
                break;
            }
            System.err.println("So tien chuyen vuot qua so tien trong TK");
        }
        
        System.out.println("Nhap noi dung ghi chu: ");
        note = scan.nextLine();
        
        createdAt = new Date();
    }

    @Override
    public String toString() {
        return "Transfer{" + "transferStk=" + transferStk + ", note=" + note + ", money=" + money + ", createdAt=" + getCreatedAtString() + '}';
    }
    
    public String getCreatedAtString() {
        SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss dd/MM/yyyy");
        String str = format.format(createdAt);
        
        return str;
    }
    
    public static String getHeader() {
        return "Transfer:";
    }

    @Override
    public String getFileInfor() {
        return transferStk+","+money+","+note+","+getCreatedAtString();
    }

    @Override
    public void putFileInfor(String data) {
        try {
            String[] param = data.split(",");
            transferStk = param[0];
            
            money = Integer.parseInt(param[1]);
            
            note = param[2];
            
            SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss dd/MM/yyyy");
            createdAt = format.parse(param[3]);
        } catch (ParseException ex) {
            Logger.getLogger(Receiver.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}


Phản hồi từ học viên

5

(Dựa trên đánh giá ngày hôm nay)

ngô văn thoan [webbanhang_online]
ngô văn thoan

2023-05-22 03:11:37

Thầy ơi, sau khi loggin xong thì người dùng chọn các tính năng, nếu như người dùng ko gõ Number mà gõ Text  vd gõ "f "thì phần mềm báo lỗi Exception in thread "main" java.lang.NumberFormatException: For input string: "f" ;

Em xin hỏi cách Fix lỗi này thì ntn thầy nhỉ