계좌를 생성해서 출금입금하고 목록을 보여주는 프로그램이다.

Account class


public class Account {
	private String no;
	private String name;
	private String date;
	private int balance; 
	private int balace;  

	public int getBalace() {
		return balace;
	}

	public void setBalace(int balace) {
		this.balace = balace;
	}

	public String getNo() {
		return no;
	}

	public void setNo(String no) {
		this.no = no;
	}
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public String getDate() {
		return date;
	}
	public void setDate(String date) {
		this.date = date;
	}
	public int getBalance() {
		return balance;
	}
	public void setBalance(int balance) {
		this.balance = balance;
	}

	@Override
	public String toString() {
		return no + "," + name + "," + date + "," + balance + ","+balace+ "\n";
	}
}

AccountDAO class


import java.io.*;
import java.util.*;

public class AccountDAO {
	
	File file = new File("c:/java/java2/account.txt");
	
	//입금
	public boolean input (String no, int money) {
		boolean success = false;
		
		try {
			 BufferedReader reader = new BufferedReader(new FileReader(file));
			 String line = "";
			 String newFile = "";
			 while((line = reader.readLine()) !=null) {
				 String[] item = line.split(",");
				 Account vo = new Account();
				 vo.setNo(item[0]);
				 vo.setName(item[1]);
				 vo.setDate(item[2]);
				 int balance = Integer.parseInt(item[4]);
				 if(no.equals(item[0])) {
					vo.setBalace(balance+money); 
				 }else {
					 vo.setBalace(balance);
				 }
				 newFile=newFile +vo.toString();
				}
				FileWriter writer = new FileWriter(file, false);
				writer.write(newFile);
				writer.flush();
				writer.close();	
				success=true;

			 
		 }catch (Exception e)  {
				System.out.println("input 오류:"+ e.toString());
		}
		return success; 
	}
	
	
	//출금
	public boolean output (String no, int money) {
		boolean success = false;
		
		try {
			 BufferedReader reader = new BufferedReader(new FileReader(file));
			 String line = "";
			 String newFile = "";
			 while((line = reader.readLine()) !=null) {
				 String[] item = line.split(",");
				 Account vo = new Account();
				 vo.setNo(item[0]);
				 vo.setName(item[1]);
				 vo.setDate(item[2]);
				 int balance = Integer.parseInt(item[4]);
				 if(no.equals(item[0])) {
					 	if(balance-money>0) {
						 vo.setBalace(balance-money); 
					 	} else{
					 		vo.setBalace(balance);
					 		System.out.println("출금불가 !");
					 	}
				 } else {
					 vo.setBalace(balance);
				 }
				 newFile=newFile +vo.toString();
				}
				FileWriter writer = new FileWriter(file, false);
				writer.write(newFile);
				writer.flush();
				writer.close();	
				success=true;
			 
		 }catch (Exception e)  {
				System.out.println("input 오류:"+ e.toString());
		}
		return success; 
	}
	
	
	
	//계좌 조회
	
	public Account read (String no) {
		Account vo = new Account();
		try {
			 BufferedReader reader = new BufferedReader(new FileReader(file));
			 String line = "";
			 while((line = reader.readLine()) !=null) {
				 String[] item = line.split(",");
				 if(no.equals(item[0])) {
					 vo.setNo(item[0]);
					 vo.setName(item[1]);
					 vo.setDate(item[2]);
					 vo.setBalance(Integer.parseInt(item[4]));
				 }
			 }
		 }catch (Exception e)  {
				System.out.println("read 오류:"+ e.toString());
		}
		return vo; 
	}
	
	//계좌목록
	public ArrayList<Account> list() {
		 ArrayList<Account> array = new  ArrayList<Account>();
		 try {
			 BufferedReader reader = new BufferedReader(new FileReader(file));
			 String line = "";
			 while((line = reader.readLine()) !=null) {
				 String[] item = line.split(",");
				 Account vo = new Account();
				 vo.setNo(item[0]);
				 vo.setName(item[1]);
				 vo.setDate(item[2]);
				 vo.setBalance(Integer.parseInt(item[4]));
				 array.add(vo);
			 }
			 
		 }catch (Exception e)  {
				System.out.println("insert 오류:"+ e.toString());
			}
		 return array;
	}
	
	//계좌생성
	public boolean insert(Account vo) {
		boolean success = false;
		try {
			FileWriter writer = new FileWriter(file,true);
			writer.write(vo.toString());
			writer.flush();
			writer.close();
			success=true;
		}catch(Exception e) {
			System.out.println("insert 오류:"+ e.toString());
		}
		return success;
	}
}

Main class

import java.text.*;
import java.util.*;

public class Main {

	public static void main(String[] args) {
		AccountDAO adao = new AccountDAO();
		DecimalFormat df= new DecimalFormat("#,###원");
		Scanner scan = new Scanner(System.in);
		boolean run = true;
		while(run) {
			System.out.println("┌───────────────────────────────────────────┐");
			System.out.print("│1.계좌생성  ");
			System.out.print("2.계좌목록  ");
			System.out.print("3.예금  ");
			System.out.print("4.출금  ");
			System.out.print("5.조회  ");
			System.out.print("0.종료    │\n");
			System.out.println("└───────────────────────────────────────────┘");
			System.out.print("선택>");
			String menu = scan.nextLine();
			switch(menu) {
			case "1": 
				System.out.println("┌──────┐");
				System.out.println("│계좌생성│");
				System.out.println("└──────┘");
				Account vo = new Account();
				System.out.print("계좌번호>"); vo.setNo(scan.nextLine());
				System.out.print("계좌주>"); vo.setName(scan.nextLine());
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				String today = sdf.format(new Date());
				vo.setDate(today);
				System.out.print("초기입금액>"); String money=scan.nextLine();
				vo.setBalance(Integer.parseInt(money));
				System.out.println(vo.toString());
				
				boolean result =adao.insert(vo);
				if(result) {
					System.out.println("계좌 생성 성공");
				}else {
					System.out.println("계좌 생성 실패");
				}
				
				break;
			case "2": 
				System.out.println("┌──────┐");
				System.out.println("│계좌목록│");
				System.out.println("└──────┘");
				System.out.printf("%s\t%s\t%s\t\t\t%s\n","계좌번호","계좌주","생성일","잔액");
				System.out.println("───────────────────────────────────────────────");
				ArrayList<Account> array=adao.list();
				for(Account a:array) {
					
					String balance = df.format(a.getBalance());
					System.out.printf("%s\t%s\t%s\t%s\n"
							, a.getNo(),a.getName(),a.getDate(),balance);
				}
				break;
			case "3": 
				System.out.println("┌───┐");
				System.out.println("│예금│");
				System.out.println("└───┘");
				System.out.print("입금할 계좌번호>"); String no = scan.nextLine();
				vo = adao.read(no);
				if(vo.getName()==null) {
					System.out.println("해당 계좌가 없습니다!");
				}else {
					System.out.println("계좌주 :" +vo.getName());
					System.out.println("잔액 :" +df.format(vo.getBalance()));
					System.out.print("입금액>");
					money = scan.nextLine();
					result =adao.input(no,Integer.parseInt(money));
					if(result) 
						System.out.println("입금완료!");
					int balance = vo.getBalance() + Integer.parseInt(money);
					System.out.println("잔액:" + df.format(balance));

				}
				break;
			case "4": 
				System.out.println("┌───┐");
				System.out.println("│출금│");
				System.out.println("└───┘");
				System.out.print("출금할 계좌번호>"); no = scan.nextLine();
				vo = adao.read(no);
				if(vo.getName()==null) {
					System.out.println("해당 계좌가 없습니다!");
				}else {
					System.out.println("계좌주 :" +vo.getName());
					System.out.println("잔액 :" +df.format(vo.getBalance()));
					System.out.print("출금액>");
					money= scan.nextLine();
					boolean success =adao.output(no,Integer.parseInt(money));
					int balance = vo.getBalance() - Integer.parseInt(money);
					if(balance>0) {
							System.out.println("출금완료!");
							System.out.println("잔액:" + df.format(balance));
					}
				}
	
				break;
			case "5": 
				System.out.println("┌──────┐");
				System.out.println("│계좌조회│");
				System.out.println("└──────┘");
				System.out.print("계좌번호>"); no = scan.nextLine();
				vo = adao.read(no);
				if(vo.getName()==null) {
					System.out.println("해당 계좌가 없습니다!");
				}else {
					System.out.println("계좌주 :" +vo.getName());
					System.out.println("생성일 :" +vo.getDate());
					System.out.println("잔액 :" +df.format(vo.getBalance()));
					
				}
				
				break;
			case "0": 
				run=false;
				break;
			default:
				System.out.println("0~4번을 선택하세요!");
			}
		}
		System.out.println("프로그램 종료!");
	}
}
  1. Account 계좌번호, 이름, 생성일, 잔액 을 필드로 생성한다.

  2. AccountDAO

    • input 메서드 : 계좌번호와 돈을 입력받는다. 입력받은 값과 계좌번호가 일치하면 잔액+입금액을한다. 아니면 잔액 그대로 둔다. 그리고 새로운 파일에 누적해준다.
    • output 메서드 : 계좌번호와 돈을 입력받는다. 입력받은값과 계좌번호가 일치하고 잔액-입금액이 0보다크면 출력 한다. 아니다면 잔액을 그대로출력하고 출금불가를 출력한다.
    • read 메서드 : 버퍼생성해서. 한줄씩읽어 쪼개서 입력받은 계좌명과 들어가있는값이 일치하는지 확인한다. 일치하다면 저장된 값을 출력한디/
    • list 메서드 : ArrayList를 생성해서 어레이에 담아서 계좌목록을 보여준다.
    • insert 메서드 : 파일을 생성해서 계좌를 입력받는다.

댓글남기기